Mimari

TensorFlow Serving, üretim ortamları için tasarlanmış, makine öğrenimi modellerine yönelik esnek, yüksek performanslı bir hizmet sistemidir. TensorFlow Serving, aynı sunucu mimarisini ve API'leri korurken yeni algoritmaların ve deneylerin devreye alınmasını kolaylaştırır. TensorFlow Serving, TensorFlow modelleriyle kullanıma hazır entegrasyon sağlar, ancak diğer model türlerine hizmet verecek şekilde kolayca genişletilebilir.

Anahtar kavramlar

TensorFlow Sunumunun mimarisini anlamak için aşağıdaki temel kavramları anlamanız gerekir:

Servis edilebilir öğeler

Sunucular , TensorFlow Sunumunun merkezi soyutlamasıdır. Hizmet verilebilir öğeler, istemcilerin hesaplama (örneğin, arama veya çıkarım) gerçekleştirmek için kullandığı temel nesnelerdir.

Sunulabilir öğenin boyutu ve ayrıntı düzeyi esnektir. Tek bir Sunulabilir, arama tablosunun tek bir parçasından tek bir modele ve bir grup çıkarım modeline kadar her şeyi içerebilir. Hizmet verilebilir öğeler herhangi bir türde ve arayüzde olabilir; bu da esneklik ve aşağıdaki gibi gelecekteki iyileştirmelere olanak tanır:

  • akış sonuçları
  • deneysel API'ler
  • asenkron çalışma modları

Hizmet verilebilir öğeler kendi yaşam döngülerini yönetmezler.

Tipik servis edilebilirler aşağıdakileri içerir:

  • bir TensorFlow SavedModelBundle ( tensorflow::Session )
  • yerleştirme veya kelime aramaları için bir arama tablosu

Yayınlanabilir Sürümler

TensorFlow Serving, tek bir sunucu örneğinin ömrü boyunca bir sunulabilirin 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 yayınlanabilir öğenin birden fazla sürümünün aynı anda yüklenmesine olanak tanıyarak kademeli kullanıma sunma ve denemeyi destekler. Hizmet zamanında, müşteriler belirli bir model için en son sürümü veya belirli bir sürüm kimliğini isteyebilir.

Yayınlanabilir Akışlar

Sunulabilir bir akış, artan sürüm numaralarına göre sıralanmış, sunulabilir sürümlerin dizisidir.

Modeller

TensorFlow Serving, bir modeli bir veya daha fazla sunulabilir olarak temsil eder. Makine tarafından öğrenilen bir model, bir veya daha fazla algoritmayı (öğrenilmiş ağırlıklar dahil) ve arama veya yerleştirme tablolarını içerebilir.

Bileşik bir modeli aşağıdakilerden biriyle temsil edebilirsiniz:

  • birden fazla bağımsız hizmet
  • tek kompozit servis edilebilir

Sunulabilir bir model aynı zamanda bir modelin bir kısmına da karşılık gelebilir. Örneğin, büyük bir arama tablosu birçok TensorFlow Serving örneğine bölünebilir.

Yükleyiciler

Yükleyiciler 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 olarak ortak altyapı sağlar. Özellikle Yükleyiciler, bir hizmet dosyasının yüklenmesi ve boşaltılmasına ilişkin API'leri standartlaştırır.

Kaynaklar

Kaynaklar, sunulabilir öğeleri bulan ve sağlayan eklenti modülleridir. Her Kaynak sıfır veya daha fazla yayınlanabilir akış sağlar. Kaynak, sunulabilir her akış için, yüklenmeye hazır hale getirdiği her sürüm için bir Yükleyici örneği sağlar. (Bir Kaynak aslında sıfır veya daha fazla SourceAdapter ile birlikte zincirlenir ve zincirdeki son öğe Yükleyicileri yayar.)

TensorFlow Serving'in Kaynaklara yönelik arayüzü, isteğe bağlı depolama sistemlerinden sunulabilir öğeleri keşfedebilir. TensorFlow Serving, ortak referans Kaynak uygulamalarını içerir. Örneğin Kaynaklar, RPC gibi mekanizmalara erişebilir ve bir dosya sistemini yoklayabilir.

Kaynaklar, birden fazla hizmet verilebilir öğe veya sürüm arasında paylaşılan durumu koruyabilir. Bu, sürümler arasında delta (fark) güncellemelerini kullanan hizmet sunucuları için kullanışlıdır.

İstenilen Sürümler

İstenilen sürümler, yüklenmesi ve hazır olması gereken yayınlanabilir sürümler kümesini temsil eder. Kaynaklar, bu yayınlanabilir sürümler kümesini aynı anda tek bir yayınlanabilir akış için iletir. Bir Kaynak, Yöneticiye istenen sürümlerin yeni bir listesini verdiğinde, bu, söz konusu yayınlanabilir akış için önceki listenin yerine geçer. Yönetici, artık listede görünmeyen önceden yüklenmiş sürümleri kaldırır.

Sürüm yüklemenin pratikte nasıl çalıştığını görmek için gelişmiş eğitime bakın.

Yöneticiler

Yöneticiler , aşağıdakiler de dahil olmak üzere, Hizmet Verilebilir Öğelerin tüm yaşam döngüsünü yönetir:

  • Sunucular yükleniyor
  • hizmet verenler
  • Sunucuları boşaltma

Yöneticiler Kaynakları dinler ve tüm versiyonları takip eder. Yönetici, Kaynakların isteklerini yerine getirmeye çalışır, ancak örneğin gerekli kaynaklar mevcut değilse, istenen sürümü yüklemeyi reddedebilir. Yöneticiler ayrıca bir "boşaltma" işlemini erteleyebilir. Örneğin, bir Yönetici, her zaman en az bir sürümün yüklenmesini garanti eden bir politikaya dayalı olarak, daha yeni bir sürümün yüklenmesi bitene kadar yüklemeyi kaldırmayı bekleyebilir.

TensorFlow Hizmet Yöneticileri, istemcilerin yüklü hizmet verilebilir örneklere erişmesi için basit, dar bir arayüz ( GetServableHandle() sağlar.

Çekirdek

Standart TensorFlow Serving API'lerini kullanan TensorFlow Serving Core , hizmet verilebilir öğelerin aşağıdaki yönlerini yönetir:

  • yaşam döngüsü
  • ölçümler

TensorFlow Hizmet Çekirdeği, hizmet verilebilir öğelere ve yükleyicilere opak nesneler olarak davranır.

Bir Hizmet Edilebilirin Hayatı

tf hizmet mimarisi diyagramı

Enine boyuna konuşma:

  1. Kaynaklar, Sunulabilir Sürümler için Yükleyiciler oluşturur.
  2. Yükleyiciler, İstenilen Sürümler olarak Yöneticiye gönderilir ve Yönetici bunları yükleyip müşteri isteklerine göre sunar.

Daha ayrıntılı olarak:

  1. 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.
  2. Kaynak, Yöneticiye İstenilen Sürümü bildirmek için bir geri arama kullanır.
  3. Yönetici, önceden yüklenmiş bir sürümün kaldırılması veya yeni sürümün yüklenmesi olabilecek bir sonraki eylemi belirlemek için yapılandırılmış Sürüm Politikasını uygular.
  4. Yönetici bunun güvenli olduğuna karar verirse Yükleyiciye gerekli kaynakları verir ve Yükleyiciye yeni sürümü yüklemesini söyler.
  5. İstemciler, ya açıkça bir sürüm belirterek ya da yalnızca en son sürümü talep ederek Yöneticiden Hizmet Verilebilir'i ister. Yönetici, Hizmet Verilebilir için bir tanıtıcı döndürür.

Örneğin, bir Kaynağın sık 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.

  1. Kaynak, model ağırlıklarının yeni bir versiyonunu algılar. Diskteki model verilerine bir işaretçi içeren bir Yükleyici oluşturur.
  2. Kaynak, İstenilen Sürümün Dinamik Yöneticisini bilgilendirir.
  3. Dynamic Manager, Sürüm Politikasını uygular ve yeni sürümü yüklemeye karar verir.
  4. Dynamic Manager, Yükleyiciye yeterli hafıza olduğunu bildirir. Yükleyici, TensorFlow grafiğini yeni ağırlıklarla başlatır.
  5. Bir istemci, modelin en son sürümüne yönelik bir tanıtıcı ister ve Dynamic Manager, Servable'ın yeni sürümüne bir tanıtıcı döndürür.

Genişletilebilirlik

TensorFlow Serving, yeni işlevler ekleyebileceğiniz çeşitli genişletme noktaları sağlar.

Sürüm Politikası

Sürüm İlkeleri, tek bir sunulabilir akış içindeki sürüm yükleme ve boşaltma sırasını belirtir.

TensorFlow Serving, bilinen kullanım durumlarının çoğuna uyum sağlayan iki politika içerir. Bunlar, Kullanılabilirliği Koruma Politikası (sıfır sürümü yüklü bırakmaktan kaçının; genellikle eski sürümü kaldırmadan önce yeni bir sürümü yükleyin) ve Kaynak Koruma Politikasıdır (iki sürümün aynı anda yüklenmesini önleyin, bu nedenle iki kat kaynak gerektirir; yüklemeden önce eski bir sürümü kaldırın). yeni bir). Bir modelin sunum 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ırılmadan önce yeni sürümün yüklenmesini ve hazır olmasını sağlayacaktır. TensorFlow Serving'in karmaşık kullanımı için, örneğin birden fazla sunucu örneğindeki sürümleri yönetmek için, Kaynak Koruma Politikası en az kaynağı gerektirir (yeni sürümleri yüklemek için ekstra ara belleğe gerek yoktur).

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 Serving, yoklama davranışını basit bir kaynak etrafında sarmaya yönelik bir yardımcı program içerir. Kaynaklar, belirli algoritmalar ve veri barındırma hizmetleri için Yükleyicilerle yakından ilişkilidir.

Özel bir Kaynağın nasıl oluşturulacağı hakkında daha fazla bilgi için Özel Kaynak belgesine bakın.

Yükleyiciler

Yükleyiciler, algoritma ve veri arka uçlarının eklenmesine yönelik uzantı noktasıdır. TensorFlow böyle bir algoritma arka ucudur. Örneğin, yeni türde hizmet verilebilir makine öğrenimi modelinin bir örneğini yüklemek, erişim sağlamak ve ö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 yayınlanabilirin nasıl oluşturulacağını öğrenmek için Özel Sunulabilir belgesine bakın.

Dozajlayıcı

Birden fazla isteğin tek bir istekte toplanması, özellikle GPU'lar gibi donanım hızlandırıcıların varlığında çıkarım yapma maliyetini önemli ölçüde azaltabilir. TensorFlow Serving, müşterilerin istekler arasındaki türe özgü çıkarımlarını, algoritma sistemlerinin daha verimli bir şekilde işleyebileceği toplu istekler halinde kolayca gruplandırmasına olanak tanıyan bir istek toplu işleme widget'ı içerir. Daha fazla bilgi için Gruplama Kılavuzuna bakın.