Thời gian chạy TensorFlow là một thư viện đa nền tảng. Kiến trúc hệ thống làm cho sự kết hợp quy mô này trở nên linh hoạt. Chúng tôi đã quen thuộc cơ bản với các khái niệm lập trình TensorFlow như biểu đồ tính toán, hoạt động và phiên.
Các bài viết liên quan:
Một số thuật ngữ cần được hiểu trước để hiểu kiến trúc TensorFlow. Các thuật ngữ là TensorFlow có thể phục vụ, Luồng có thể phục vụ, Mô hình TensorFlow, Bộ tải, Nguồn, Trình quản lý và Core. Thuật ngữ và chức năng của chúng trong kiến trúc của TensorFlow được mô tả bên dưới.
Kiến trúc TensorFlow thích hợp để đọc và sửa đổi mã TensorFlow cốt lõi.
TensorFlow Servable
Đây là các đơn vị chưa hoàn thành trung tâm trong phục vụ TensorFlow. Các dịch vụ là các đối tượng mà máy khách sử dụng để thực hiện tính toán.
Kích thước của một dịch vụ là linh hoạt. Một dịch vụ duy nhất có thể bao gồm bất kỳ thứ gì từ bảng tra cứu đến một mô hình duy nhất trong một loạt các mô hình giao diện. Có thể phục vụ phải thuộc bất kỳ loại và giao diện nào, cho phép linh hoạt và các cải tiến trong tương lai như:
- Truyền trực tuyến kết quả
- Các chế độ hoạt động không đồng bộ.
- API thử nghiệm
Servable Versions
Máy chủ TensorFlow có thể xử lý một hoặc nhiều phiên bản của các dịch vụ, trong suốt thời gian tồn tại của bất kỳ phiên bản máy chủ đơn lẻ nào. Nó mở ra cánh cửa cho các cấu hình thuật toán mới, trọng số và dữ liệu khác có thể được tải theo thời gian. Họ cũng có thể cho phép tính phí nhiều phiên bản của một dịch vụ cùng một lúc. Chúng cũng cho phép tải đồng thời nhiều phiên bản của một dịch vụ, hỗ trợ triển khai và thử nghiệm dần dần.
Servable Streams
Một chuỗi các phiên bản của bất kỳ dịch vụ nào được sắp xếp theo số phiên bản ngày càng tăng.
TensorFlow Models
Một phục vụ đại diện cho một mô hình trong một hoặc nhiều dịch vụ. Mô hình máy học bao gồm một hoặc nhiều thuật toán và tra cứu các bảng nhúng. Một dịch vụ có thể phục vụ cũng giống như một phần nhỏ của một mô hình; ví dụ, một ví dụ, một bảng tra cứu lớn được phục vụ như nhiều trường hợp.
TensorFlow Loaders
Máy xúc lật quản lý vòng đời của một dịch vụ. API trình tải cho phép cơ sở hạ tầng chung độc lập với các trường hợp sử dụng sản phẩm, dữ liệu hoặc thuật toán học cụ thể có liên quan.
Sources in TensorFlow Architecture
Nói một cách dễ hiểu, nguồn là các mô-đun tìm và cung cấp có thể phục vụ được. Mỗi tham chiếu cung cấp không hoặc nhiều luồng có thể phục vụ tại một thời điểm. Đối với mỗi luồng có thể phục vụ, một nguồn chỉ cung cấp một phiên bản trình tải cho mỗi luồng có thể phục vụ.
Mỗi nguồn cũng cung cấp không hoặc nhiều luồng có thể phục vụ. Đối với mỗi luồng có thể phục vụ, nguồn chỉ cung cấp một phiên bản trình tải và có sẵn để tải.
TensorFlow Managers
Người quản lý TensorFlow xử lý toàn bộ vòng đời của Servables, bao gồm:
- Loading Servables
- Serving Servables
- Unloading Servables
Người quản lý quan sát các nguồn và theo dõi tất cả các phiên bản. Trình quản lý cố gắng thực hiện các nguyên nhân, nhưng nó có thể từ chối tải phiên bản Không mong muốn.
Người quản lý cũng có thể hoãn việc “dỡ hàng”. Ví dụ: người quản lý có thể đợi để tải xuống cho đến khi phiên bản mới hơn hoàn tất quá trình tải, dựa trên chính sách để đảm bảo rằng ít nhất một phiên bản được tải mọi lúc.
Ví dụ, GetServableHandle (), để khách hàng truy cập các phiên bản dịch vụ được tải.
TensorFlow Core
Điều này quản lý các khía cạnh dưới đây của các dịch vụ:
- Lifecycle
- Metrics
- TensorFlow serving core satisfaction và loaders opaque objects.
Life of a Servable
Kiến trúc kỹ thuật TensorFlow:
- Các nguồn tạo bộ tải cho các Phiên bản có thể phục vụ, sau đó các bộ tải được gửi dưới dạng phiên bản Mong muốn tới Trình quản lý, sẽ tải và phục vụ chúng cho các yêu cầu của khách hàng.
- Trình tải chứa siêu dữ liệu và nó cần tải dịch vụ.
- Nguồn sử dụng một cuộc gọi lại để truyền đạt phiên bản Trình quản lý Không mong muốn.
- Người quản lý áp dụng chính sách phiên bản hiệu quả để xác định hành động tiếp theo cần thực hiện.
- Nếu Trình quản lý xác định rằng nó cung cấp cho Trình tải để tải phiên bản mới, khách hàng yêu cầu Trình quản lý cung cấp dịch vụ và chỉ định phiên bản một cách rõ ràng hoặc yêu cầu phiên bản hiện tại. Trình quản lý trả về một xử lý để có thể sửa chữa được. Trình quản lý động áp dụng hành động phiên bản và quyết định tải phiên bản mới hơn của nó.
- Trình quản lý động ra lệnh cho Trình tải rằng có đủ bộ nhớ.
- Máy khách yêu cầu một xử lý cho phiên bản mới nhất của mô hình và Trình quản lý động trả về một xử lý cho phiên bản mới của có thể phục vụ.
TensorFlow Loaders
TensorFlow là một trong những thuật toán phụ trợ như vậy. Ví dụ: chúng tôi sẽ triển khai một trình tải mới để tải, cung cấp quyền truy cập và dỡ bỏ một phiên bản của loại mô hình học máy mới có thể phục vụ được.
Batcher trong kiến trúc TensorFlow
Việc gộp các yêu cầu TensorFlow vào một ứng dụng có thể làm giảm đáng kể chi phí khi thực hiện suy luận, đặc biệt là khi có sự hiện diện của bộ tăng tốc phần cứng và GPU. Phân phát TensorFlow có một thiết bị phân phối xác nhận quyền sở hữu chấp thuận cho khách hàng để phân chia hàng loạt giả định theo loại cụ thể của họ ngoài yêu cầu thành hàng loạt một cách nhanh chóng. Và yêu cầu hệ thống thuật toán có thể xử lý hiệu quả hơn.