TensorFlow Hizmet Verme, üretim ortamları için tasarlanmış, makine öğrenimi modelleri için esnek, yüksek performanslı bir hizmet sistemidir. TensorFlow Serving, aynı sunucu mimarisini ve API'leri korurken yeni algoritmaları ve deneyleri dağıtmayı kolaylaştırır. TensorFlow Hizmet Verme, TensorFlow modelleriyle kullanıma hazır entegrasyon sağlar, ancak diğer model türlerine hizmet etmek için kolayca genişletilebilir.
Anahtar kavramlar
TensorFlow Serving'in mimarisini anlamak için aşağıdaki temel kavramları anlamanız gerekir:
servis edilebilirler
Sunulabilir öğeler , TensorFlow Serving'deki merkezi soyutlamadır. Sunulabilir öğeler, istemcilerin hesaplama yapmak için kullandığı temel nesnelerdir (örneğin, bir arama veya çıkarım).
Bir Sunulabilir'in boyutu ve ayrıntı düzeyi esnektir. Tek bir Sunulabilir, bir arama tablosunun tek bir parçasından tek bir modele ve bir dizi çıkarım modeline kadar her şeyi içerebilir. Sunulabilir öğeler, herhangi bir türde ve arabirimde olabilir, bu da esneklik ve aşağıdakiler gibi gelecekteki iyileştirmeleri sağlar:
- akış sonuçları
- deneysel API'ler
- asenkron çalışma modları
Sunulabilir öğeler kendi yaşam döngülerini yönetmezler.
Tipik sunulabilir öğeler şunları içerir:
- bir TensorFlow SavedModelBundle (
tensorflow::Session
) - gömme veya kelime aramaları için bir arama tablosu
Sunulabilir Sürümler
TensorFlow Sunma, tek bir sunucu örneğinin ömrü boyunca bir sunulabilir öğenin bir veya daha fazla sürümünü işleyebilir. Bu, yeni algoritma yapılandırmalarının, ağırlıkların ve diğer verilerin zaman içinde yüklenmesini sağlar. Sürümler, bir sunulabilir dosyanın birden fazla sürümünün aynı anda yüklenmesini sağlayarak aşamalı kullanıma sunma ve denemeyi destekler. Hizmet verme zamanında, müşteriler belirli bir model için en son sürümü veya belirli bir sürüm kimliğini isteyebilir.
Sunulabilir Akışlar
Sunulabilir bir akış , artan sürüm numaralarına göre sıralanmış, sunulabilir bir sürüm dizisidir.
Modeller
TensorFlow Sunma, bir modeli bir veya daha fazla sunulabilir olarak temsil eder. Makine tarafından öğrenilen bir model, bir veya daha fazla algoritma (öğrenilmiş ağırlıklar dahil) ve arama veya gömme tabloları içerebilir.
Bir bileşik modeli aşağıdakilerden biri olarak temsil edebilirsiniz:
- çoklu bağımsız sunulabilir
- tek kompozit servis edilebilir
Bir sunulabilir, bir modelin bir kısmına da karşılık gelebilir. Örneğin, büyük bir arama tablosu birçok TensorFlow Sunma örneğine bölünebilir.
yükleyiciler
Yükleyiciler , sunulabilir bir hizmetin yaşam döngüsünü yönetir. Loader API, belirli öğrenme algoritmalarından, verilerden veya ilgili ürün kullanım durumlarından bağımsız ortak altyapı sağlar. Özellikle, Yükleyiciler, bir sunulabilir öğeyi yüklemek ve boşaltmak için API'leri standart hale getirir.
Kaynaklar
Kaynaklar , sunulabilirleri bulan ve sağlayan eklenti modülleridir. Her Kaynak, sıfır veya daha fazla sunulabilir akış sağlar. Sunulabilir her akış için bir Kaynak, yüklenmeye hazır hale getirdiği her sürüm için bir Loader örneği sağlar. (Bir Kaynak aslında sıfır veya daha fazla SourceAdapters ile birlikte zincirlenir ve zincirdeki son öğe Yükleyicileri yayar.)
TensorFlow Serving'in Kaynaklar için arabirimi, isteğe bağlı depolama sistemlerinden sunulabilir öğeleri keşfedebilir. TensorFlow Sunma, ortak referans Kaynak uygulamalarını içerir. Örneğin, Kaynaklar RPC gibi mekanizmalara erişebilir ve bir dosya sistemini yoklayabilir.
Kaynaklar, birden çok sunulabilir veya sürüm arasında paylaşılan durumu koruyabilir. Bu, sürümler arasında delta (fark) güncellemeleri kullanan sunulabilir dosyalar için kullanışlıdır.
Hedeflenen Sürümler
Hedeflenen sürümler , yüklenmesi ve hazır olması gereken sunulabilir sürümler grubunu temsil eder. Kaynaklar, bir seferde tek bir sunulabilir akış için bu sunulabilir sürüm grubunu iletir. Bir Kaynak, Yönetici'ye hedeflenen sürümlerin yeni bir listesini verdiğinde, bu sunulabilir akış için önceki listenin yerini alır. Yönetici, artık listede görünmeyen önceden yüklenmiş tüm sürümleri kaldırır.
Sürüm yüklemenin pratikte nasıl çalıştığını görmek için gelişmiş öğreticiye bakın.
Yöneticiler
Yöneticiler , aşağıdakiler dahil olmak üzere Servables'ın tüm yaşam döngüsünü yönetir:
- Sunulabilir Öğeler yükleniyor
- servis edilebilir
- Boşaltma Servisleri
Yöneticiler Kaynakları dinler ve tüm sürümleri izler. Yönetici, Kaynakların isteklerini yerine getirmeye çalışır, ancak örneğin gerekli kaynaklar mevcut değilse, istenen bir sürümü yüklemeyi reddedebilir. Yöneticiler ayrıca bir "boşaltmayı" erteleyebilirler. Örneğin, bir Yönetici, her zaman en az bir sürümün yüklenmesini garanti eden bir ilkeye dayalı olarak, daha yeni bir sürümün yüklenmesi bitene kadar boşaltmayı bekleyebilir.
TensorFlow Hizmet Yöneticileri, istemcilerin yüklü hizmet verilebilir örneklere erişmesi için basit, dar bir arabirim -- GetServableHandle()
-- sağlar.
Çekirdek
Standart TensorFlow Serving API'lerini kullanan TensorFlow Serving Core , sunulabilir öğelerin aşağıdaki yönlerini yönetir:
- yaşam döngüsü
- metrikler
TensorFlow Serving Core, sunulabilirleri ve yükleyicileri opak nesneler olarak ele alır.
Bir Hizmet Edilebilirin Hayatı
Enine boyuna konuşma:
- Kaynaklar, Sunulabilir Sürümler için Yükleyiciler oluşturur.
- Yükleyiciler, onları istemci isteklerine yükleyen ve sunan Yöneticiye Aspired Versions olarak gönderilir.
Daha ayrıntılı olarak:
- Bir Kaynak eklentisi, belirli bir sürüm için bir Yükleyici oluşturur. Yükleyici, Sunulabilir'i yüklemek için ihtiyaç duyduğu meta verileri içerir.
- Kaynak, Aspired Versiyonun Yöneticisini bilgilendirmek için bir geri arama kullanır.
- Yönetici, daha önce yüklenmiş bir sürümü kaldırmak veya yeni sürümü yüklemek olabilecek bir sonraki eylemi belirlemek için yapılandırılmış Sürüm İlkesini uygular.
- Yönetici bunun güvenli olduğunu belirlerse, Yükleyiciye gerekli kaynakları verir ve Yükleyiciye yeni sürümü yüklemesini söyler.
- İstemciler Yöneticiden Sunulabilir'i isterler, ya açık bir şekilde bir sürüm belirterek ya da sadece en son sürümü isterler. Yönetici, Sunulabilir için bir tanıtıcı döndürür.
Örneğin, bir Kaynağın, sık güncellenen model ağırlıklarına sahip bir TensorFlow grafiğini temsil ettiğini varsayalım. Ağırlıklar diskteki bir dosyada saklanır.
- Kaynak, model ağırlıklarının yeni bir sürümünü algılar. Diskteki model verilerine bir işaretçi içeren bir Yükleyici oluşturur.
- Kaynak, Hedeflenen Sürümün Dinamik Yöneticisini bilgilendirir.
- Dinamik Yönetici, Sürüm İlkesini uygular ve yeni sürümü yüklemeye karar verir.
- Dinamik Yönetici, Yükleyiciye yeterli bellek olduğunu söyler. Yükleyici, TensorFlow grafiğini yeni ağırlıklarla başlatır.
- Bir istemci, modelin en son sürümü için bir tanıtıcı ister ve Dinamik Yönetici, Sunulabilir'in yeni sürümüne bir tanıtıcı döndürür.
genişletilebilirlik
TensorFlow Serving, yeni işlevler ekleyebileceğiniz birkaç uzatma noktası sağlar.
Sürüm Politikası
Sürüm İlkeleri, tek bir sunulabilir akış içinde sürüm yükleme ve boşaltma sırasını belirtir.
TensorFlow Sunma, bilinen kullanım durumlarının çoğunu barındıran iki ilke içerir. Bunlar, Kullanılabilirlik Koruma Politikası (yüklü sıfır sürüm bırakmaktan kaçının; genellikle eski sürümü boşaltmadan önce yeni bir sürüm yükleyin) ve Kaynak Koruma Politikası (aynı anda iki sürümün yüklenmesinden kaçının, bu nedenle kaynakları iki katına çıkarmaktan kaçının; yüklemeden önce eski bir sürümü kaldırın) yeni bir). Bir modelin hizmet kullanılabilirliğinin önemli olduğu ve kaynak maliyetlerinin düşük olduğu TensorFlow Serving'in basit kullanımı için, Kullanılabilirlik Koruma Politikası, eski sürümü kaldırmadan önce yeni sürümün yüklenip hazır olmasını sağlayacaktır. TensorFlow Serving'in karmaşık kullanımı için, örneğin birden çok sunucu örneğinde sürümleri yönetmek için, Kaynak Koruma Politikası en az kaynağı gerektirir (yeni sürümleri yüklemek için fazladan arabellek yok).
Kaynak
Yeni Kaynaklar, yeni dosya sistemlerini, bulut tekliflerini ve algoritma arka uçlarını destekleyebilir. TensorFlow Serving, yeni kaynaklar oluşturmayı kolay ve hızlı hale getirmek için bazı ortak yapı taşları sağlar. Örneğin, TensorFlow Sunma, yoklama davranışını basit bir kaynağın etrafına sarmak için bir yardımcı program içerir. Kaynaklar, belirli algoritmalar ve veri barındırma sunucuları için Yükleyiciler ile yakından ilişkilidir.
Özel bir Kaynak oluşturma hakkında daha fazla bilgi için Özel Kaynak belgesine bakın.
yükleyiciler
Yükleyiciler, algoritma ve veri arka uçları eklemek için uzantı noktasıdır. TensorFlow, böyle bir algoritma arka ucudur. Örneğin, yeni bir tür sunulabilir makine öğrenimi modeli örneğini yüklemek, buna erişim sağlamak ve bir örneğini kaldırmak için yeni bir Yükleyici uygularsınız. Arama tabloları ve ek algoritmalar için Yükleyiciler oluşturmayı öngörüyoruz.
Özel bir sunulabilir dosyanın nasıl oluşturulacağını öğrenmek için Özel Sunulabilir belgesine bakın.
harmanlayıcı
Birden çok isteğin tek bir istekte toplanması, özellikle GPU'lar gibi donanım hızlandırıcıların varlığında, çıkarım gerçekleştirme maliyetini önemli ölçüde azaltabilir. TensorFlow Sunma, istemcilerin istekler boyunca türe özgü çıkarımlarını algoritma sistemlerinin daha verimli bir şekilde işleyebileceği toplu istekler halinde kolayca toplulaştırmasına olanak tanıyan bir istek toplu işleme aracı içerir. Daha fazla bilgi için Dozajlama Kılavuzuna bakın.