dòng chảy :: phục vụ :: BasicManager
Đây là một lớp trừu tượng.#include <basic_manager.h>
Giúp quản lý vòng đời của các dịch vụ bao gồm tải, phục vụ và dỡ chúng ra.
Bản tóm tắt
Người quản lý chấp nhận các dịch vụ dưới dạng Máy xúc.
Chúng tôi bắt đầu quản lý một dịch vụ thông qua một trong các phương thức ManageServable *. Bạn có thể tiếp tục tải các thể phân phát sau này bằng cách gọi LoadServable () . Việc tải cũng sẽ làm cho dịch vụ có sẵn để phục vụ. Khi bạn quyết định dỡ bỏ nó, bạn có thể gọi UnloadServable () vào nó, mà sẽ làm cho nó không có sẵn để phục vụ, sau đó dỡ bỏ các thể phân phát.
Servables được giữ lại cho đến khi StopManagingServable () được gọi. Điều này cho phép người quản lý cấp cao hơn có nhiều thông tin hơn để quyết định thời điểm an toàn nếu bạn quên một dịch vụ.
BasicManager theo dõi các nguồn lực (ví dụ RAM) được sử dụng bởi servables nạp, và chỉ cho phép tải servables mới phù hợp trong hệ thống tài nguyên chung.
BasicManager có thể được cấu hình để sử dụng một thread-pool để làm điều đó của tải và dỡ tải. Điều này làm cho LoadServable () và UnloadServable () phương pháp sắp xếp tải / unloads hơn là thực hiện chúng đồng bộ. Nếu có nhiều luồng tải / dỡ đang chờ xử lý hơn luồng trong nhóm luồng, chúng sẽ được xử lý theo thứ tự FIFO.
Khi có trình tải ước tính quá mức nhu cầu tài nguyên của các dịch vụ của họ và / hoặc chỉ liên kết tài nguyên của các dịch vụ của họ với các phiên bản thiết bị, đồng thời tải / dỡ tải có thể được giảm xuống dưới kích thước nhóm luồng. Đó là bởi vì chúng tôi có thể phải đợi quá trình tải / dỡ hàng của một dịch vụ hoàn tất để giảm khả năng cung cấp tài nguyên cho việc tải một dịch vụ khác.
ĐÒI HỎI:
- Trình tự các cuộc gọi phương pháp - ManageServable () (và các biến thể) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
- Không lập lịch trình tải và dỡ đồng thời của cùng một dịch vụ.
- Không gọi tải hoặc dỡ tải nhiều lần trên cùng một dịch vụ.
Lớp này an toàn theo luồng.
Ví dụ sử dụng:
const ServableId id = {kServableName, 0}; std::unique_ptr<Loader> loader = ...; ... BasicManager manager; TF_CHECK_OK(manager.ManageServable( CreateServableData(id, std::move(loader)))); TF_CHECK_OK(manager.LoadServable(id)); ... TF_CHECK_OK(manager.GetServableHandle( ServableRequest::Latest(kServableName), &handle)); ... TF_CHECK_OK(manager.UnloadServable(id)); TF_CHECK_OK(manager.StopManagingServable(id));
Di sản
Inherits từ: tensorflow :: phục vụ :: Quản lýNgười xây dựng và Người phá hủy | |
---|---|
~BasicManager () Nếu được định cấu hình để sử dụng một nhóm luồng tải / dỡ tải, hãy đợi cho đến khi tất cả các lần tải và dỡ hàng theo lịch trình kết thúc và sau đó hủy tập hợp các luồng. |
Các loại công khai | |
---|---|
DoneCallback | sử dụngstd::function< void(const Status &status)> Gọi lại được gọi vào cuối {Load, Unload} Servable (). |
PreLoadHook | sử dụngstd::function< void(const ServableId &)> |
Lớp học bạn bè | |
---|---|
test_util::BasicManagerTestAccess | friend class |
Các chức năng tĩnh công khai | |
---|---|
Create ( Options options, std::unique_ptr< BasicManager > *manager) | Status |
Chức năng công cộng | |
---|---|
CancelLoadServableRetry (const ServableId & id) | void Hủy bỏ thử lại tải trọng thể phân phát trong LoadServable () . |
GetAdditionalServableState (const ServableId & id) | T * |
GetAvailableUntypedServableHandles () const override | virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > |
GetManagedServableNames () const | std::vector< string > |
GetManagedServableStateSnapshot (const ServableId & id) | optional< ServableStateSnapshot< T > > |
GetManagedServableStateSnapshots (const string & servable_name) const | std::vector< ServableStateSnapshot< T > > |
GetUntypedServableHandle (const ServableRequest & request, std::unique_ptr< UntypedServableHandle > *untyped_handle) override | virtual Status |
ListAvailableServableIds () const override | virtual std::vector< ServableId > Nhận danh sách tất cả các id dịch vụ có sẵn, tức là |
LoadServable (const ServableId & id, DoneCallback done_callback) | void Tải dịch vụ bằng id này và cập nhật cả bản đồ phục vụ. |
ManageServable (ServableData< std::unique_ptr< Loader >> servable) | Status Bắt đầu quản lý dịch vụ. |
ManageServableWithAdditionalState (ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state) | Status Tương tự như phương pháp trên, nhưng người gọi, thường là những người quản lý khác được xây dựng trên phương pháp này, có thể liên kết trạng thái bổ sung với dịch vụ. |
StopManagingServable (const ServableId & id) | Status Yêu cầu người quản lý ngừng quản lý dịch vụ này. |
UnloadServable (const ServableId & id, DoneCallback done_callback) | void Dỡ dịch vụ có id này và cập nhật cả bản đồ phục vụ. |
Cấu trúc | |
---|---|
tensorflow :: phục vụ :: BasicManager :: Tùy chọn | Tùy chọn cấu hình và các đối tượng pluggable sẽ được sử dụng bởi các BasicManager . |
Các loại công khai
DoneCallback
std::function< void(const Status &status)> DoneCallback
Gọi lại được gọi vào cuối {Load, Unload} Servable ().
Chúng tôi chuyển trạng thái của hoạt động cho cuộc gọi lại.
PreLoadHook
std::function< void(const ServableId &)> PreLoadHook
Lớp học bạn bè
test_util :: BasicManagerTestAccess
friend class test_util::BasicManagerTestAccess
Các chức năng tĩnh công khai
Tạo ra
Status Create( Options options, std::unique_ptr< BasicManager > *manager )
Chức năng công cộng
CancelLoadServableRetry
void CancelLoadServableRetry( const ServableId & id )
Hủy bỏ thử lại tải trọng thể phân phát trong LoadServable () .
Không có gì nếu dịch vụ không được quản lý.
Nếu quá trình thử lại bị hủy, dịch vụ sẽ chuyển sang trạng thái phụ thuộc vào Tải cuối cùng () được gọi trên đó. Nếu lần tải cuối cùng () thành công, nó sẽ ở trạng thái kReady, khác ở trạng thái kError.
GetAdditionalServableState
T * GetAdditionalServableState( const ServableId & id )
YÊU CẦU: Người quản lý này lẽ ra đã quản lý được dịch vụ này rồi, nếu không, chúng tôi trả về nullptr.
Thông tin chi tiết | |
---|---|
Lợi nhuận | trạng thái bổ sung cho dịch vụ. Trả về nullptr nếu không có thiết lập trạng thái bổ sung hoặc nếu có kiểu không khớp giữa những gì đã thiết lập và những gì đang được yêu cầu. |
GetAvailableUntypedServableHandles
virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > GetAvailableUntypedServableHandles() const override
GetManagedServableNames
std::vector< string > GetManagedServableNames() const
Thông tin chi tiết | |
---|---|
Lợi nhuận | tên của tất cả các dịch vụ được quản lý bởi người quản lý này. Các tên sẽ không trùng lặp và không theo bất kỳ thứ tự cụ thể nào. |
GetManagedServableStateSnapshot
optional< ServableStateSnapshot< T > > GetManagedServableStateSnapshot( const ServableId & id )
YÊU CẦU: Người quản lý này lẽ ra đã quản lý được dịch vụ này rồi, nếu không, chúng tôi trả về nullopt.
Thông tin chi tiết | |
---|---|
Lợi nhuận | ảnh chụp nhanh trạng thái của một id có thể phục vụ cụ thể do người quản lý này quản lý nếu có. |
GetManagedServableStateSnapshots
std::vector< ServableStateSnapshot< T > > GetManagedServableStateSnapshots( const string & servable_name ) const
T là kiểu trạng thái bổ sung, nếu có.
Thông tin chi tiết | |
---|---|
Lợi nhuận | ảnh chụp nhanh trạng thái của tất cả các dịch vụ của một luồng cụ thể, do người quản lý này quản lý. |
GetUntypedServableHandle
virtual Status GetUntypedServableHandle( const ServableRequest & request, std::unique_ptr< UntypedServableHandle > *untyped_handle ) override
ListAvailableServableIds
virtual std::vector< ServableId > ListAvailableServableIds() const override
Nhận danh sách tất cả các id dịch vụ có sẵn, tức là
mỗi cái trong số này có thể được truy xuất bằng GetServableHandle.
LoadServable
void LoadServable( const ServableId & id, DoneCallback done_callback )
Tải dịch vụ bằng id này và cập nhật cả bản đồ phục vụ.
Cuộc gọi done_callback với ok iff thể phân phát đã được nạp thành công, lợi nhuận khác một trạng thái lỗi.
Nếu sử dụng một nhóm luồng, phương thức này sẽ chuyển khai thác có thể phục vụ sang trạng thái kLoading, lập lịch tải và trả về, nếu không, nó sẽ hoàn thành tải trước khi quay trở lại.
YÊU CẦU: quản lý này lẽ ra phải được quản lý thể phân phát này rồi, cho nó được nạp, nếu không chúng ta gọi là done_callback với một trạng thái lỗi. Không gọi điều này nhiều lần trên cùng một dịch vụ. Chỉ một trong số đó sẽ thành công và phần còn lại sẽ thất bại với trạng thái lỗi.
ManageServable
Status ManageServable( ServableData< std::unique_ptr< Loader >> servable )
Bắt đầu quản lý dịch vụ.
Trả về lỗi nếu cung cấp một dịch vụ đang được quản lý.
Nếu thể phân phát là trong tình trạng lỗi, phương pháp này không trả lại một lỗi. Thay vào đó, người quản lý chấp nhận dịch vụ, đặt nó ở trạng thái kError (với thông báo được gửi đến bus sự kiện), rồi ngay lập tức ngừng quản lý nó. Hành vi này tạo điều kiện cho việc xử lý thống nhất các lỗi xảy ra trong các nguồn (ví dụ: đường dẫn tệp không hợp lệ đến dữ liệu có thể phục vụ) và các lỗi xảy ra trong trình quản lý (ví dụ: không đủ tài nguyên để tải dịch vụ).
ManageServableWithAdditionalState
Status ManageServableWithAdditionalState( ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state )
Tương tự như phương pháp trên, nhưng người gọi, thường là những người quản lý khác được xây dựng trên phương pháp này, có thể liên kết trạng thái bổ sung với dịch vụ.
Trạng thái bổ sung có thể là ACL hoặc siêu dữ liệu lâu dài cho khả năng phục vụ đó. Quyền sở hữu của nhà nước được chuyển giao cho giai cấp này.
StopManagingServable
Status StopManagingServable( const ServableId & id )
Yêu cầu người quản lý ngừng quản lý dịch vụ này.
Yêu cầu rằng dịch vụ hiện đang được quản lý và trạng thái của nó là một trong {kNew, kError, kDisabled}.
UnloadServable
void UnloadServable( const ServableId & id, DoneCallback done_callback )
Dỡ dịch vụ có id này và cập nhật cả bản đồ phục vụ.
Cuộc gọi done_callback với ok iff thể phân phát được bốc dỡ thành công, lợi nhuận khác một trạng thái lỗi.
Nếu sử dụng thread-pool, phương thức này sẽ chuyển khai thác có thể phục vụ sang trạng thái kQuiescing, lập lịch trình dỡ tải và trả về, nếu không, nó sẽ hoàn thành việc dỡ bỏ trước khi quay trở lại.
YÊU CẦU: quản lý này nên đã tải và làm cho thể phân phát có sẵn này, cho nó được bốc dỡ, các cuộc gọi khác done_callback với một trạng thái lỗi. Không gọi điều này nhiều lần trên cùng một dịch vụ. Chỉ một trong số đó sẽ thành công và phần còn lại sẽ thất bại với trạng thái lỗi.
~ BasicManager
~BasicManager() override
Nếu được định cấu hình để sử dụng một nhóm luồng tải / dỡ tải, hãy đợi cho đến khi tất cả các lần tải và dỡ hàng theo lịch trình kết thúc và sau đó hủy tập hợp các luồng.