tensör akışı:: hizmet veren:: Temel Yönetici

Bu soyut bir sınıftır.

#include <basic_manager.h>

Yükleme, sunma ve boşaltma dahil olmak üzere sunulabilir öğelerin yaşam döngüsünü yönetmeye yardımcı olur.

Özet

Yönetici, sunulanları Yükleyiciler biçiminde kabul eder.

Bir sunulabilir dosyayı ManageServable* yöntemlerinden biri aracılığıyla yönetmeye başlarız. Sen arayarak bundan sonra Sunulamaz yüklemek için gidebilirsiniz LoadServable () . Yükleme ayrıca sunulabilir olanı hizmete hazır hale getirecektir. Bunu boşaltmaya karar verdikten sonra çağırabilirsiniz UnloadServable () sonra Sunulamaz boşaltmak, kullanılamaz hizmet etmek yapacak, üzerinde.

Servables kadar muhafaza edilmektedir () StopManagingServable olarak adlandırılır. Bu, daha fazla bilgiye sahip daha üst düzey bir yöneticinin, sunulabilir bir şeyi ne zaman unutmanın güvenli olduğuna karar vermesine olanak tanır.

BasicManager yüklü servables tarafından kullanılan kaynaklar (örneğin RAM) izler ve sadece genel kaynak havuzuna sığacak yeni servables yüklenirken verir.

BasicManager 's yükü ve kaldırır yapmak için bir iş parçacığı havuzu kullanmak üzere yapılandırılabilir. Bu da LoadServable () ve UnloadServable () eş zamanlı olarak bunları yürütme yerine yükleme / kaldırır zamanlama yöntem. İplik havuzunda iş parçacıklarından daha fazla bekleyen yükleme/boşaltma varsa, bunlar FIFO sırasına göre işlenir.

Hizmet verilebilirlerinin kaynak ihtiyaçlarını olduğundan fazla tahmin eden ve/veya yalnızca hizmet verilebilirlerinin kaynaklarını aygıt örneklerine bağlayan yükleyicilerin varlığında, yükleme/boşaltma eşzamanlılığı iş parçacığı havuzu boyutunun altına düşürülebilir. Bunun nedeni, başka bir sunulabilir öğeyi yüklemek için kaynak kullanılabilirliğini saptamak için bir hizmet verilebilirin yükleme/boşaltma işleminin bitmesini beklememiz gerekebileceğidir.

GEREKLİLİKLER:

  1. Yöntem çağrıları al - ManageServable () (ve varyantları) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
  2. Aynı sunulabilir öğenin eşzamanlı yükleme ve boşaltmalarını programlamayın.
  3. Aynı sunulabilir üzerinde birden çok kez yükleme veya boşaltma çağrısı yapmayın.

Bu sınıf iş parçacığı için güvenlidir.

Örnek kullanım:

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));  

Miras

Dan devralır: tensorflow :: hizmet :: Yöneticisi

Yapıcılar ve Yıkıcılar

~BasicManager ()
Bir yükleme/boşaltma iş parçacığı havuzu kullanacak şekilde yapılandırılmışsa, tüm zamanlanmış yüklemeler ve boşaltmalar bitene kadar bekler ve ardından iş parçacığı kümesini yok eder.

Genel türler

DoneCallback kullanarak
std::function< void(const Status &status)>
{Load,Unload}Servable() sonunda çağrılan geri arama.
PreLoadHook kullanarak
std::function< void(const ServableId &)>

arkadaş sınıfları

test_util::BasicManagerTestAccess
friend class

Genel statik işlevler

Create ( Options options, std::unique_ptr< BasicManager > *manager)
Status

Kamu işlevleri

CancelLoadServableRetry (const ServableId & id)
void
Sırasında Sunulabilir yük yeniden denemeden iptal 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 >
Mevcut tüm sunulabilir kimliklerin bir listesini alır, yani
LoadServable (const ServableId & id, DoneCallback done_callback)
void
Sunulabilir olanı bu kimlikle yükler ve sunum haritasını da günceller.
ManageServable (ServableData< std::unique_ptr< Loader >> servable)
Status
Sunulabilir olanı yönetmeye başlar.
ManageServableWithAdditionalState (ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state)
Status
Yukarıdaki yönteme benzer, ancak arayanlar, genellikle bunun üzerine kurulu diğer yöneticiler, ek durumu sunulabilir ile ilişkilendirebilir.
StopManagingServable (const ServableId & id)
Status
Yöneticiye bu sunulabilirliği yönetmeyi bırakmasını söyler.
UnloadServable (const ServableId & id, DoneCallback done_callback)
void
Bu kimlikle sunulabilir olanı kaldırır ve sunum haritasını da günceller.

yapılar

tensorflow :: hizmet veren :: BasicManager :: Seçenek

Yapılandırma seçenekleri ve tarafından kullanılacak takılabilir nesneler BasicManager .

Genel türler

BittiGeri arama

std::function< void(const Status &status)> DoneCallback

{Load,Unload}Servable() sonunda çağrılan geri arama.

İşlemin durumunu geri aramaya geçiyoruz.

ÖnYükleme Kancası

std::function< void(const ServableId &)> PreLoadHook

arkadaş sınıfları

test_util::BasicManagerTestErişim

friend class test_util::BasicManagerTestAccess

Genel statik işlevler

Yaratmak

Status Create(
  Options options,
  std::unique_ptr< BasicManager > *manager
)

Kamu işlevleri

İptalYükSunulabilirYeniden Dene

void CancelLoadServableRetry(
  const ServableId & id
)

Sırasında Sunulabilir yük yeniden denemeden iptal LoadServable () .

Sunulabilir yönetilmezse hiçbir şey yapmaz.

Yeniden denemeler iptal edilirse, sunulabilir, üzerinde çağrılan son Load()'a bağlı bir duruma geçer. Son Load() başarılı olduysa, kReady durumunda, yoksa kError durumunda olacaktır.

GetAdditionalServableState

T * GetAdditionalServableState(
  const ServableId & id
)

GEREKTİRİR: Bu yönetici bu sunulabilir dosyayı zaten yönetiyor olmalıydı, aksi takdirde nullptr döndürürüz.

Detaylar
İadeler
sunulabilir için ek durum. Ek durum kurulumu yoksa veya kurulum ile istenen arasında bir tür uyuşmazlığı varsa nullptr döndürür.

GetAvailableUntypedServableHandles

virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > GetAvailableUntypedServableHandles() const override

GetManagedServableNames

std::vector< string > GetManagedServableNames() const 

Detaylar
İadeler
bu yönetici tarafından yönetilen tüm sunulabilirlerin adları. İsimler yinelenmeyecek ve belirli bir sırada olmayacak.

GetManagedServableStateSnapshot

optional< ServableStateSnapshot< T > > GetManagedServableStateSnapshot(
  const ServableId & id
)

GEREKTİRİR: Bu yöneticinin bu sunulabilir dosyayı zaten yönetmesi gerekirdi, aksi takdirde nullopt döndürürüz.

Detaylar
İadeler
varsa, bu yönetici tarafından yönetilen belirli bir sunulabilir kimliğin durum anlık görüntüsü.

GetManagedServableStateAnlık Görüntüler

std::vector< ServableStateSnapshot< T > > GetManagedServableStateSnapshots(
  const string & servable_name
) const 

T, varsa, ek durum türüdür.

Detaylar
İadeler
bu yönetici tarafından yönetilen belirli bir akışın tüm yayınlanabilirlerinin durum anlık görüntüleri.

GetUntypedServableHandle

virtual Status GetUntypedServableHandle(
  const ServableRequest & request,
  std::unique_ptr< UntypedServableHandle > *untyped_handle
) override

ListAvailableServableIds

virtual std::vector< ServableId > ListAvailableServableIds() const override

Mevcut tüm sunulabilir kimliklerin bir listesini alır, yani

bunların her biri GetServableHandle kullanılarak alınabilir.

Yüklenebilir

void LoadServable(
  const ServableId & id,
  DoneCallback done_callback
)

Sunulabilir olanı bu kimlikle yükler ve sunum haritasını da günceller.

Sunulabilir bir hata durumunu başarıyla yüklendi başka döner edildi IFF Aramalar Tamam ile done_callback.

Bir iş parçacığı havuzu kullanılıyorsa, bu yöntem kullanılabilir kablo demetini kLoading durumuna geçirir, yükü ve geri dönüşü programlar, aksi takdirde geri dönmeden önce yükü tamamlar.

GEREKTİRİR: Bu yönetici bu yüklenmesi için, başka biz bir hata durumu ile done_callback diyoruz, zaten bu Sunulamaz yöneten olması gerekirdi. Bunu aynı sunulabilir üzerinde birden çok kez aramayın. Bunlardan sadece biri başarılı olacak ve geri kalanı bir hata durumuyla başarısız olacak.

Yönetilebilir

Status ManageServable(
  ServableData< std::unique_ptr< Loader >> servable
)

Sunulabilir olanı yönetmeye başlar.

Halihazırda yönetilmekte olan bir sunulabilir verilirse bir hata döndürür.

Sunulabilir bir hata durumundaysa, bu yöntem bir hata döndürmez. Bunun yerine, yönetici sunulabilir olanı kabul eder, onu kError durumuna koyar (olay veriyoluna gönderilen bir bildirimle) ve ardından onu yönetmeyi hemen durdurur. Bu davranış, kaynaklarda (örneğin, sunulabilir verilere geçersiz dosya yolu) ve yöneticide (örneğin, sunulabilir verileri yüklemek için yetersiz kaynaklar) oluşan hataların tek tip olarak işlenmesini kolaylaştırır.

ManageServableWithAdditionalState

Status ManageServableWithAdditionalState(
  ServableData< std::unique_ptr< Loader >> servable,
  std::unique_ptr< T > additional_state
)

Yukarıdaki yönteme benzer, ancak arayanlar, genellikle bunun üzerine kurulu diğer yöneticiler, ek durumu sunulabilir ile ilişkilendirebilir.

Ek durum, bu sunulabilir için ACL veya ömür boyu meta veriler olabilir. Devletin mülkiyeti bu sınıfa geçer.

StopManagingServable

Status StopManagingServable(
  const ServableId & id
)

Yöneticiye bu sunulabilirliği yönetmeyi bırakmasını söyler.

Sunulabilir öğenin şu anda yönetiliyor olmasını ve durumunun {kNew, kError, kDisabled} durumunda olmasını gerektirir.

Kaldırılabilir

void UnloadServable(
  const ServableId & id,
  DoneCallback done_callback
)

Bu kimlikle sunulabilir olanı kaldırır ve sunum haritasını da günceller.

Sunulabilir bir hata durumunu başarıyla yüksüz başka döner edildi IFF Aramalar Tamam ile done_callback.

Bir iş parçacığı havuzu kullanılıyorsa, bu yöntem kullanılabilir kablo demetini kQuiescing durumuna geçirir, boşaltmayı ve geri dönmeyi programlar, aksi takdirde geri dönmeden önce boşaltmayı tamamlar.

GEREKTİRİR: Bu yönetici yüklü ve yüksüz olması için, başka çağrılar bir hata durumu ile done_callback, bu Sunulabilir hazır olması gerekirdi. Bunu aynı sunulabilir üzerinde birden çok kez aramayın. Bunlardan sadece biri başarılı olacak ve geri kalanı bir hata durumuyla başarısız olacak.

~Temel Yönetici

 ~BasicManager() override

Bir yükleme/boşaltma iş parçacığı havuzu kullanacak şekilde yapılandırılmışsa, tüm zamanlanmış yüklemeler ve boşaltmalar bitene kadar bekler ve ardından iş parçacığı kümesini yok eder.