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:

  1. Urutan metode panggilan - ManageServable () (dan varian) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
  2. Jangan menjadwalkan pemuatan dan pembongkaran secara bersamaan dari servable yang sama.
  3. 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 :: Manajer

Konstruktor 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 menggunakan
std::function< void(const Status &status)>
Panggilan balik dipanggil di akhir {Load,Unload}Servable().
PreLoadHook menggunakan
std::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.