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 :: ResourceUnsafeLoader

Yapı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:

  1. Tahmin, gerçek değer üzerinde bir üst sınırı temsil etmelidir.
  2. Yüklemeden önce tahmin, herhangi bir belirli cihaz örneğine bağlı olmayan kaynakları, örneğin iki GPU'dan birindeki RAM'i içerebilir.
  3. 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.
  4. 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

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ç).

Yükleyici "yeni" duruma dönmek gerekmez (yani Load () sonra çağrılamaz Unload () ).

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 () .