tensör akışı:: hizmet veren:: yükleyici
Bu soyut bir sınıftır.#include <loader.h>
Bir sunulabilir öğenin yaşam döngüsünü, yükleme ve boşaltma dahil olmak üzere yöneten bir nesne için standartlaştırılmış bir soyutlama.
Özet
Sunulabilir öğeler, zorunlu olmamakla birlikte, genellikle makine tarafından öğrenilen bir model kullanan algoritmalara veya verilere hizmet eden isteğe bağlı nesnelerdir.
Bir Loader bir Sunulabilir nesne için Sunulabilir sürümleri genellikle taze eğitim verilerinden öğrenilen güncellenen model parametrelerini temsil eden bütün (örneğin, "my_servable") ortak adı paylaşan ve artan sürüm numaraları, akışı bir örneğini temsil etmektedir.
Bir Loader hiçbir iş işlemleri gerçekleştirmek için hazırlamak için yapılmış, yani yüklenmemiş bir durumda başlamalıdır. Henüz yüklenmemiş tipik bir örnek, yalnızca verilerinin yüklenebileceği bir konuma (örneğin bir dosya sistemi yolu veya ağ konumu) yönelik bir işaretçi içerir. Örneklerin inşası ve imhası oldukça ucuz olmalıdır. Pahalı başlatma işlemleri yapılmalıdır Yük () .
Alt sınıfları, isteğe bağlı olarak bir işaretçi saklayabilir kaynağı , belirli bir kodun sunulabilir akımı içinde birden çok Sunulabilir nesneler arasında paylaşılan durum erişmek için, bu ortaya çıkmıştır.
Uygulamaların, ortaya koydukları yöntemlerin iş parçacığı açısından güvenli olduğundan emin olmaları veya doğruluğu sağlamak için iş parçacığı güvenlik özelliklerini istemcileriyle dikkatli bir şekilde belgelemesi ve/veya koordine etmesi gerekir. Servables eşzamanlı yürütülmesi konusunda endişe gerekmez () Yük arayan bunun olmaması sağlayacaktır olarak / Boşaltma ().
Miras
Bilinen Altsınıflar Doğrudan: tensorflow :: hizmet :: ResourceUnsafeLoaderYapıcılar ve Yıkıcılar | |
---|---|
~Loader () Yıkıcı bir çağrıda asla Yükleyici olan Sunulabilir anda yüklenir, yani |
Kamu işlevleri | |
---|---|
EstimateResources (ResourceAllocation *estimate) const =0 | virtual Status Yayınlanabilir bir öğenin kullanacağı kaynakları tahmin eder. |
Load () | virtual Status İhtiyaçları tarafından döndürülen servable kullanmadan önce yüklenebilir bu verileri döndürür servable () . |
LoadWithMetadata (const Metadata & metadata) | virtual Status Yukarıdaki yönteme benzer şekilde, ancak alır Meta veri uygun bir yükleyici uygulama ile kullanılabilen bir param olarak. |
Unload ()=0 | virtual void Frees sırasında ayrılan tüm kaynakları Yük () (hala diğer aktif olanlar için gerekli olan servables arasında paylaşılan kaynaklar için belki hariç). |
servable ()=0 | virtual AnyPtr Temeldeki sunulabilir nesneye opak bir arabirim döndürür. |
yapılar | |
---|---|
tensorflow :: hizmet veren :: Loader :: Meta Verileri | Meta veriler ServableId'den oluşur. |
Kamu işlevleri
TahminiKaynaklar
virtual Status EstimateResources( ResourceAllocation *estimate ) const =0
Yayınlanabilir bir öğenin kullanacağı kaynakları tahmin eder.
ÖNEMLİ: Bu yöntemin uygulanması, hizmet veren sistemin hangi hizmet verilebilir öğelerin güvenli bir şekilde yüklenebileceği konusunda doğru şekilde akıl yürütmesini sağlayan aşağıdaki gereksinimlere uymalıdır:
- Tahmin, gerçek değer üzerinde bir üst sınırı temsil etmelidir.
- Yüklemeden önce tahmin, herhangi bir belirli cihaz örneğine bağlı olmayan kaynakları, örneğin iki GPU'dan birindeki RAM'i içerebilir.
- Yüklenirken, birden çok örneğe (örneğin iki GPU) sahip herhangi bir cihaz için tahmin, her kaynağın bağlı olduğu örneği belirtmelidir.
- Tahmin monoton olarak artmayan olmalıdır, yani zamanla artamaz. Potansiyel olarak zamanla azalmasının nedenleri
İadeler hizmetin yüklendikten sonra tüketeceği kaynakların tahmini. Sunulabilir öğe zaten yüklenmişse, gerçek kaynak kullanımının bir tahminini döndürür.
Yük
virtual Status Load()
İhtiyaçları tarafından döndürülen servable kullanmadan önce yüklenebilir bu verileri döndürür servable () .
Tahmini tarafından bildirilen daha fazla kaynak kullanabilir miyim EstimateResources () .
Uygulanması halinde ) (Load , geçersiz kılmak gerekmez LoadWithMetadata () .
LoadWithMetadata
virtual Status LoadWithMetadata( const Metadata & metadata )
Yukarıdaki yönteme benzer şekilde, ancak alır Meta veri uygun bir yükleyici uygulama ile kullanılabilen bir param olarak.
Eğer geçersiz kılma ediyorsanız LoadWithMetadata () uygun şekilde meta verileri kullanabilir, çünkü sen geçersiz kılma atlayabilirsiniz yükleyin () .
boşaltmak
virtual void Unload()=0
servis edilebilir
virtual AnyPtr servable()=0
Temeldeki sunulabilir nesneye opak bir arabirim döndürür.
Arayan, onu fiili olarak kullanabilmek için arayüzün kesin türünü bilmelidir. Örneğin:
: Uygulama CustomLoader
class CustomLoader : public Loader { public: ... Status Load() override { servable_ = ...; } AnyPtr servable() override { return servable_; } private: CustomServable* servable_ = nullptr; };
Kullanıcı isteği Porsiyon:
ServableHandle<CustomServable> handle = ... CustomServable* servable = handle.get(); servable->...
Eğer Sunulabilir () başarılı sonra denir Yük () ve daha önce Unload () , geçerli bir, boş olmayan AnyPtr nesnesi döndürür. Başarılı önce denilen olursa Yük () çağrısı veya sonrasında Unload () , boş AnyPtr döndürür.
~Yükleyici
virtual ~Loader()=default
Yıkıcı bir çağrıda asla Yükleyici olan Sunulabilir anda yüklenir, yani
arasında (başarılı) çağrıları için yükleyin () ve Boşaltma () .