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:
- Yöntem çağrıları al - ManageServable () (ve varyantları) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
- Aynı sunulabilir öğenin eşzamanlı yükleme ve boşaltmalarını programlamayın.
- 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öneticisiYapı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 | kullanarakstd::function< void(const Status &status)> {Load,Unload}Servable() sonunda çağrılan geri arama. |
PreLoadHook | kullanarakstd::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.