aliran tensor:: porsi:: Manajer Dasar
Ini adalah kelas abstrak.#include <basic_manager.h>
Membantu mengelola siklus hidup servable termasuk memuat, menyajikan, dan membongkarnya.
Ringkasan
Manajer menerima servable dalam bentuk Loader.
Kami mulai mengelola servable melalui salah satu metode ManageServable*. Anda dapat pergi untuk memuat servable setelah ini dengan memanggil LoadServable () . Memuat juga akan membuat servable tersedia untuk ditayangkan. Setelah Anda memutuskan untuk membongkar itu, Anda dapat menghubungi UnloadServable () di atasnya, yang akan membuatnya tersedia untuk melayani, kemudian membongkar servable tersebut.
Servables dipertahankan sampai StopManagingServable () dipanggil. Ini memungkinkan manajer tingkat yang lebih tinggi dengan lebih banyak informasi untuk memutuskan kapan aman untuk melupakan servable.
BasicManager melacak sumber daya (misalnya RAM) yang digunakan oleh servables dimuat, dan hanya memungkinkan memuat servables baru yang sesuai dalam kolam sumber daya secara keseluruhan.
BasicManager dapat dikonfigurasi untuk menggunakan benang-kolam untuk melakukan load dan unloads itu. Hal ini membuat LoadServable () dan UnloadServable () metode menjadwalkan beban / unloads daripada mengeksekusi mereka serempak. Jika ada lebih banyak pemuatan/pembongkaran yang tertunda daripada utas di kumpulan utas, mereka diproses dalam urutan FIFO.
Dengan adanya loader yang memperkirakan kebutuhan sumber daya servable mereka secara berlebihan dan/atau hanya mengikat sumber daya servable mereka ke instance perangkat, konkurensi muat/bongkar dapat dikurangi di bawah ukuran kumpulan thread. Itu karena kita mungkin harus menunggu pemuatan/pembongkaran satu servable selesai untuk menentukan ketersediaan sumber daya untuk memuat servable lain.
MEMERLUKAN:
- Urutan metode panggilan - ManageServable () (dan varian) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
- Jangan menjadwalkan pemuatan dan pembongkaran secara bersamaan dari servable yang sama.
- Jangan panggil memuat atau membongkar beberapa kali pada servable yang sama.
Kelas ini aman untuk thread.
Contoh penggunaan:
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));
Warisan
Mewarisi dari: tensorflow :: melayani :: ManajerKonstruktor dan Destructor | |
---|---|
~BasicManager () Jika dikonfigurasi untuk menggunakan kumpulan utas muat/bongkar, tunggu hingga semua pemuatan dan pembongkaran terjadwal selesai, lalu musnahkan kumpulan utas. |
Tipe publik | |
---|---|
DoneCallback | menggunakanstd::function< void(const Status &status)> Panggilan balik dipanggil di akhir {Load,Unload}Servable(). |
PreLoadHook | menggunakanstd::function< void(const ServableId &)> |
Kelas teman | |
---|---|
test_util::BasicManagerTestAccess | friend class |
Fungsi statis publik | |
---|---|
Create ( Options options, std::unique_ptr< BasicManager > *manager) | Status |
Fungsi publik | |
---|---|
CancelLoadServableRetry (const ServableId & id) | void Membatalkan mencoba lagi beban servable selama 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 > Mendapat daftar semua id yang dapat dilayani, yaitu |
LoadServable (const ServableId & id, DoneCallback done_callback) | void Memuat yang dapat diservis dengan id ini, dan memperbarui peta penyajian juga. |
ManageServable (ServableData< std::unique_ptr< Loader >> servable) | Status Mulai mengelola servable. |
ManageServableWithAdditionalState (ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state) | Status Mirip dengan metode di atas, tetapi pemanggil, biasanya manajer lain yang dibangun di atas metode ini, dapat mengaitkan status tambahan dengan servable. |
StopManagingServable (const ServableId & id) | Status Memberitahu manajer untuk berhenti mengelola servable ini. |
UnloadServable (const ServableId & id, DoneCallback done_callback) | void Membongkar servable dengan id ini, dan memperbarui peta penyajian juga. |
Struktur | |
---|---|
tensorflow :: melayani :: BasicManager :: Pilihan | Opsi-opsi konfigurasi dan benda-benda pluggable yang akan digunakan oleh BasicManager . |
Tipe publik
Panggilan balik selesai
std::function< void(const Status &status)> DoneCallback
Panggilan balik dipanggil di akhir {Load,Unload}Servable().
Kami meneruskan status operasi ke panggilan balik.
PraPemuatanHook
std::function< void(const ServableId &)> PreLoadHook
Kelas teman
test_util::BasicManagerTestAccess
friend class test_util::BasicManagerTestAccess
Fungsi statis publik
Membuat
Status Create( Options options, std::unique_ptr< BasicManager > *manager )
Fungsi publik
BatalkanLoadServableCoba lagi
void CancelLoadServableRetry( const ServableId & id )
Membatalkan mencoba lagi beban servable selama LoadServable () .
Tidak melakukan apa pun jika yang dapat ditayangkan tidak dikelola.
Jika percobaan ulang dibatalkan, servable masuk ke status bergantung pada Load() terakhir yang dipanggil. Jika Load() terakhir berhasil, itu akan dalam status kReady, yang lain di kError.
GetAdditionalServableState
T * GetAdditionalServableState( const ServableId & id )
MEMBUTUHKAN: Manajer ini seharusnya sudah mengelola servable ini, jika tidak, kami mengembalikan nullptr.
rincian | |
---|---|
Kembali | status tambahan untuk yang dapat dilayani. Mengembalikan nullptr jika tidak ada pengaturan status tambahan atau jika ada jenis ketidakcocokan antara apa yang disiapkan dan apa yang diminta. |
GetAvailableUntypedServableHandles
virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > GetAvailableUntypedServableHandles() const override
GetManagedServableNames
std::vector< string > GetManagedServableNames() const
rincian | |
---|---|
Kembali | nama semua servable yang dikelola oleh manajer ini. Nama-nama tersebut akan bebas duplikat dan tidak dalam urutan tertentu. |
GetManagedServableStateSnapshot
optional< ServableStateSnapshot< T > > GetManagedServableStateSnapshot( const ServableId & id )
MEMBUTUHKAN: Manajer ini seharusnya sudah mengelola servable ini, jika tidak, kami mengembalikan nullopt.
rincian | |
---|---|
Kembali | snapshot status dari id-servable tertentu yang dikelola oleh manajer ini jika tersedia. |
GetManagedServableStateSnapshots
std::vector< ServableStateSnapshot< T > > GetManagedServableStateSnapshots( const string & servable_name ) const
T adalah tipe status tambahan, jika ada.
rincian | |
---|---|
Kembali | snapshot status semua servable dari aliran tertentu, yang dikelola oleh manajer ini. |
GetUntypedServableHandle
virtual Status GetUntypedServableHandle( const ServableRequest & request, std::unique_ptr< UntypedServableHandle > *untyped_handle ) override
ListAvailableServableIds
virtual std::vector< ServableId > ListAvailableServableIds() const override
Mendapat daftar semua id yang dapat dilayani, yaitu
masing-masing dapat diambil menggunakan GetServableHandle.
LoadServable
void LoadServable( const ServableId & id, DoneCallback done_callback )
Memuat yang dapat diservis dengan id ini, dan memperbarui peta penyajian juga.
Panggilan done_callback dengan ok IFF servable itu dimuat berhasil, kembali lagi status kesalahan.
Jika menggunakan kumpulan utas, metode ini mentransisikan harness yang dapat diservis ke status kLoading, menjadwalkan pemuatan dan pengembalian, jika tidak maka akan menyelesaikan pemuatan sebelum kembali.
MEMBUTUHKAN: Manajer ini harus telah mengelola servable ini sudah, untuk itu harus dimuat, yang lain kita sebut done_callback dengan status kesalahan. Jangan panggil ini beberapa kali pada servable yang sama. Hanya satu dari mereka yang akan berhasil dan sisanya akan gagal dengan status kesalahan.
KelolaServable
Status ManageServable( ServableData< std::unique_ptr< Loader >> servable )
Mulai mengelola servable.
Mengembalikan kesalahan jika diberikan servable yang sudah dikelola.
Jika servable dalam keadaan error, metode ini tidak kembali kesalahan. Sebaliknya, manajer menerima servable, menempatkannya dalam status kError (dengan pemberitahuan yang dikirim ke bus acara), dan kemudian segera berhenti mengelolanya. Perilaku ini memfasilitasi penanganan kesalahan yang seragam yang terjadi pada sumber (misalnya jalur file yang tidak valid ke data yang dapat disajikan) dan yang terjadi pada pengelola (misalnya sumber daya yang tidak mencukupi untuk memuat yang dapat disajikan).
ManageServableWithAdditionalState
Status ManageServableWithAdditionalState( ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state )
Mirip dengan metode di atas, tetapi pemanggil, biasanya manajer lain yang dibangun di atas metode ini, dapat mengaitkan status tambahan dengan servable.
Status tambahan mungkin ACL atau metadata seumur hidup untuk servable tersebut. Kepemilikan negara ditransfer ke kelas ini.
StopManagingServable
Status StopManagingServable( const ServableId & id )
Memberitahu manajer untuk berhenti mengelola servable ini.
Mengharuskan bahwa servable saat ini sedang dikelola dan statusnya adalah salah satu dari {kNew, kError, kDisabled}.
BongkarServable
void UnloadServable( const ServableId & id, DoneCallback done_callback )
Membongkar servable dengan id ini, dan memperbarui peta penyajian juga.
Panggilan done_callback dengan ok IFF servable itu dibongkar berhasil, kembali lagi status kesalahan.
Jika menggunakan kumpulan utas, metode ini mentransisikan harness yang dapat diservis ke status kQuiescing, menjadwalkan pembongkaran dan pengembalian, jika tidak, metode ini akan menyelesaikan pembongkaran sebelum kembali.
MEMBUTUHKAN: Manajer ini seharusnya dimuat dan tersedia servable ini, untuk itu harus dibongkar, panggilan lain done_callback dengan status kesalahan. Jangan panggil ini beberapa kali pada servable yang sama. Hanya satu dari mereka yang akan berhasil dan sisanya akan gagal dengan status kesalahan.
~Manajer Dasar
~BasicManager() override
Jika dikonfigurasi untuk menggunakan kumpulan utas muat/bongkar, tunggu hingga semua pemuatan dan pembongkaran terjadwal selesai, lalu musnahkan kumpulan utas.