Amazon SageMaker çoklu model uç noktaları PlatoBlockchain Veri Zekası ile çoklu model çıkarımını çalıştırın ve optimize edin. Dikey Arama. Ai.

Amazon SageMaker çok modelli uç noktalarıyla çok modelli çıkarımı çalıştırın ve optimize edin

Amazon Adaçayı Yapıcı çok modelli uç nokta (MME), birden çok modeli tek bir uç noktada uygun maliyetli bir şekilde dağıtmanıza ve barındırmanıza ve ardından ölçek elde etmek için uç noktayı yatay olarak ölçeklendirmenize olanak tanır. Aşağıdaki şekilde gösterildiği gibi, bu, makine öğrenimi (ML) altyapınız içinde çok kiracılı modeller uygulamak için etkili bir tekniktir. Hizmet olarak yazılım (SaaS) işletmelerinin bu özelliği, daha düşük maliyetler elde ederken ML modellerinde hiper kişiselleştirme uygulamak için kullandığını gördük.

MME'nin nasıl çalıştığına dair üst düzey bir genel bakış için AWS Zirvesi videosuna göz atın ML'yi bir sonraki seviyeye ölçeklendirme: SageMaker'da binlerce model barındırma. MME'nin sağladığı hiper kişiselleştirilmiş, çok kiracılı kullanım durumları hakkında daha fazla bilgi edinmek için bkz. Çok kiracılı SaaS kullanım örnekleri için makine öğrenimi çıkarımı nasıl ölçeklenir.

Bu yazının geri kalanında, SageMaker MME'nin teknik mimarisine daha derinlemesine dalacağız ve çok modelli uç noktalarınızı optimize etmek için en iyi uygulamaları paylaşacağız.

MME için en uygun senaryoları kullanın

SageMaker çoklu model uç noktaları, paylaşılan bir hizmet kapsayıcısı aracılığıyla hizmet verebileceğiniz çok sayıda modeli barındırmak için çok uygundur ve tüm modellere aynı anda erişmeniz gerekmez. Uç nokta örnek belleğinin boyutuna bağlı olarak, belleğin verimli kullanımını en üst düzeye çıkarmak için yeni bir modelin yüklenmesi lehine bir model zaman zaman bellekten kaldırılabilir, bu nedenle uygulamanızın yüklenmemiş modellerde ara sıra meydana gelen gecikme artışlarına karşı toleranslı olması gerekir.

MME, birden çok modeli yüklemek için paylaşılan kapsayıcıyı kullandıkları için aynı ML çerçevesini kullanan ortak barındırma modelleri için de tasarlanmıştır. Bu nedenle, model filonuzda (PyTorch ve TensorFlow gibi) ML çerçevelerinin bir karışımı varsa, SageMaker ayrılmış uç noktaları veya çok kapsayıcılı barındırma daha iyi bir seçimdir.

Son olarak, MME, ara sıra bir soğuk başlatma gecikme cezasını tolere edebilen uygulamalar için uygundur, çünkü modeller ilk çalıştırmada yüklenir ve nadiren kullanılan modeller, yeni modellerin yüklenmesi lehine bellekten boşaltılabilir. Bu nedenle, sık ve seyrek erişilen modellerin bir karışımına sahipseniz, çok modelli bir uç nokta daha az kaynak ve daha yüksek maliyet tasarrufu ile bu trafiğe verimli bir şekilde hizmet edebilir.

Ayrıca, müşterilerin tüm modellerine uyması için yeterli toplam bellek kapasitesine sahip bir MME kümesini dağıttığı ve böylece model yüklerini tamamen ortadan kaldırdığı ancak yine de paylaşılan çıkarım altyapısı nedeniyle maliyet tasarrufu sağladığı bazı senaryolar gördük.

Model servis kapları

SageMaker Çıkarım Araç Seti'ni veya MME ile uyumlu önceden oluşturulmuş bir SageMaker modeli hizmet kabı kullandığınızda, kapsayıcınızda Çoklu Model Sunucu (JVM işlemi) çalışıyor. Model servis kapsayıcınıza Çoklu Model Sunucu (MMS) eklemenin en kolay yolu kullanmaktır. SageMaker modeli servis kapları MME ile uyumlu (İş Türü=çıkarma ve CPU/GPU=CPU olanları arayın). MMS, derin öğrenme modelleri sunmak için açık kaynaklı, kullanımı kolay bir araçtır. Tek bir ana bilgisayar üzerinde birden çok modeli sunmak ve yönetmek için bir web sunucusuna sahip bir REST API sağlar. Ancak MMS kullanmak zorunlu değildir; uyguladığı sürece kendi model sunucunuzu uygulayabilirsiniz. MME'nin gerektirdiği API'ler.

MME platformunun bir parçası olarak kullanıldığında, MMS'ye veya kendi model sunucunuza yapılan tüm tahmin, yükleme ve boşaltma API çağrıları MME veri düzlemi denetleyicisi aracılığıyla yönlendirilir. Veri düzlemi denetleyicisinden gelen API çağrıları, örneğin dışından yetkisiz erişimi önlemek için yalnızca yerel ana bilgisayar üzerinden yapılır. MMS'in en önemli faydalarından biri, çok çeşitli derin öğrenme çerçevelerinde uyumlulukla modelleri yüklemek, boşaltmak ve çağırmak için standartlaştırılmış bir arabirim sağlamasıdır.

Gelişmiş MMS yapılandırması

Model sunumu için MMS kullanmayı seçerseniz, MME bulut sunucularınızın ölçeklenebilirliğini ve aktarım hızını optimize etmek için aşağıdaki gelişmiş yapılandırmaları göz önünde bulundurun.

Model başına çıkarım paralelliğini artırın

MMS, modelin değerine dayalı olarak model başına bir veya daha fazla Python çalışan işlemi oluşturur. default_workers_per_model yapılandırma parametresi. Bu Python çalışanları, sağladığınız tüm ön işleme, tahmin ve işleme sonrası işlevlerini çalıştırarak her bir çıkarım talebini ele alır. Daha fazla bilgi için bkz. özel servis işleyicisi GitHub deposu.

Birden fazla model çalışanına sahip olmak, belirli bir model tarafından sunulabilecek tahminlerin paralelliğini artırır. Ancak, çok sayıda CPU'ya sahip bir örnekte çok sayıda model barındırılıyorsa, MME'nizde bir yük testi gerçekleştirerek en uygun değeri bulmanız gerekir. default_workers_per_model herhangi bir bellek veya CPU kaynağının tükenmesini önlemek için.

Trafik artışları için tasarım

Bir uç nokta örneğindeki her MMS işlemi, aşağıdakilerle yapılandırılabilen bir istek kuyruğuna sahiptir: iş_kuyruğu_size parametre (varsayılan 100'dür). Bu, tüm çalışan işlemler meşgul olduğunda MMS'in sıraya alacağı istek sayısını belirler. Model başına en uygun çalışan sayısına karar verdikten sonra uç nokta örneklerinizin yanıt verme hızında ince ayar yapmak için bu parametreyi kullanın.

Model başına optimal çalışan oranında, çoğu durumda varsayılan 100 yeterli olmalıdır. Ancak, uç noktaya giden istek trafiğinin olağandışı bir şekilde arttığı durumlarda, uç noktanın kontrolü uygulamaya geçirmek için hızlı bir şekilde başarısız olmasını istiyorsanız kuyruğun boyutunu küçültebilir veya uç noktanın ani yükselişi emmesini istiyorsanız kuyruk boyutunu artırabilirsiniz. .

Örnek başına bellek kaynaklarını en üst düzeye çıkarın

Model başına birden çok çalışan işlemi kullanırken, varsayılan olarak her bir çalışan işlem modelin kendi kopyasını yükler. Bu, diğer modeller için kullanılabilir örnek belleğini azaltabilir. Yapılandırma parametresini ayarlayarak çalışan işlemler arasında tek bir model paylaşarak bellek kullanımını optimize edebilirsiniz. preload_model=doğru. Burada, daha fazla bellek verimliliği ile azaltılmış çıkarım paralelliğini (tek bir model örneği nedeniyle) değiştiriyorsunuz. Birden çok çalışan işlemiyle birlikte bu ayar, model gecikmesinin düşük olduğu ancak çıkarım isteği başına daha ağır ön işleme ve son işleme (çalışan işlemler tarafından yapılır) olan kullanım durumları için iyi bir seçim olabilir.

MMS gelişmiş yapılandırmaları için değerleri ayarlayın

MMS, yapılandırmaları depolamak için bir config.properties dosyası kullanır. MMS, bu config.properties dosyasını bulmak için aşağıdaki sırayı kullanır:

  1. Eğer MMS_CONFIG_FILE ortam değişkeni ayarlandığında, MMS, yapılandırmayı ortam değişkeninden yükler.
  2. Eğer --mms-config parametre MMS'e iletilir, parametreden konfigürasyonu yükler.
  3. Eğer varsa config.properties kullanıcının MMS'i başlattığı geçerli klasörde, config.properties geçerli çalışma dizininden dosya.

Yukarıdakilerin hiçbiri belirtilmemişse, MMS yerleşik yapılandırmayı varsayılan değerlerle yükler.

Aşağıda, açık bir yapılandırma dosyasıyla MMS'i başlatmaya ilişkin bir komut satırı örneği verilmiştir:

multi-model-server --start --mms-config /home/mms/config.properties

Uç nokta performansınızı izlemek için temel metrikler

MME'nizi optimize etmenize yardımcı olabilecek temel ölçümler genellikle CPU ve bellek kullanımı ve çıkarım gecikmesi ile ilgilidir. Örnek düzeyindeki metrikler MMS tarafından yayılırken gecikme metrikleri MME'den gelir. Bu bölümde, MME'nizi anlamak ve optimize etmek için kullanabileceğiniz tipik metrikleri tartışıyoruz.

Uç nokta örneği düzeyinde metrikler (MMS metrikleri)

itibaren MMS metriklerinin listesi, CPUUtilization ve MemoryUtilization, bulut sunucunuzun veya MME kümenizin doğru boyutta olup olmadığını değerlendirmenize yardımcı olabilir. Her iki ölçümün de yüzdeleri %50-80 arasındaysa, MME'niz doğru boyuttadır.

Genellikle, düşük CPUUtilization ve yüksek MemoryUtilization, nadiren çağrılan modellerin kaldırılmadığını gösterdiğinden, aşırı sağlanan MME kümesinin bir göstergesidir. Bunun nedeni, MME için sağlanan uç nokta örneklerinin optimum sayısından fazla olması olabilir ve bu nedenle, seyrek erişilen modellerin bellekte kalması için optimumdan daha yüksek toplam bellek kullanılabilir. Tersine, bu ölçümlerin %100'e yakın kullanımı, kümenizin yeterince sağlanmadığı anlamına gelir, bu nedenle küme otomatik ölçeklendirme politikanızı ayarlamanız gerekir.

Platform düzeyinde metrikler (MME metrikleri)

itibaren MME metriklerinin tam listesi, çıkarım isteğinizin gecikmesini anlamanıza yardımcı olabilecek önemli bir ölçüm ModelCacheHit'tir. Bu ölçüm, modelin zaten belleğe yüklenmiş olduğu çağırma isteklerinin ortalama oranını gösterir. Bu oran düşükse, MME kümesinde benzersiz model çağrılarının sayısı için büyük olasılıkla yeterli toplam bellek kapasitesi olmadığından, bu nedenle modellerin bellekten sık sık boşaltılmasına neden olduğundan, MME kümenizin yetersiz sağlandığını gösterir.

MME'yi optimize etmek için sahadan dersler ve stratejiler

Çok sayıda müşteride MME'nin yüksek ölçekli kullanımlarından bazılarında aşağıdaki önerileri gördük.

Daha küçük örneklerle yatay ölçeklendirme, daha büyük örneklerle dikey ölçeklendirmeden daha iyidir

Daha az uç nokta örneğinde saniye başına yüksek istek (RPS) çalıştırırken model çağrılarında kısıtlama yaşayabilirsiniz. Saniyedeki çağrı sayısının dahili sınırları vardır (bir bulut sunucusunda aynı anda gerçekleşebilen yüklemeler ve boşaltmalar) ve bu nedenle daha fazla sayıda daha küçük örneğe sahip olmak her zaman daha iyidir. Daha fazla sayıda daha küçük örnek çalıştırmak, uç nokta için bu sınırların toplam kapasitesinin daha yüksek olması anlamına gelir.

Daha küçük örneklerle yatay olarak ölçeklendirmenin bir başka yararı da, bellekte daha fazla sayıda modelle (bu gönderide daha önce açıklandığı gibi) daha yüksek düzeyde paralellik ile MMS çalıştırırken örnek CPU ve bellek kaynaklarını tüketme riskini azaltmanızdır.

Dövülmekten kaçınmak ortak bir sorumluluktur

dayak MME'de, modellerin tek bir örnekte veya kümede toplu olarak yetersiz bellek nedeniyle sık sık bellekten kaldırıldığı ve yeniden yüklendiği zamandır.

Kullanım açısından bakıldığında, kullanım durumunuz için örnek başına ve ayrıca küme için toplu olarak yeterli bellek kapasitesinin mevcut olduğundan emin olmak için tek tek uç nokta örneklerini doğru boyutlandırmalı ve MME kümesinin genel boyutunu doğru boyutlandırmalısınız. MME platformunun yönlendirici filosu da önbellek isabetini en üst düzeye çıkaracaktır.

Daha az, daha büyük bellek örneklerine çok fazla model yerleştirirken agresif olmayın

Örnek üzerinde bilinmesi gereken tek kaynak bellek değildir. Aşağıdaki yük testi sonuçlarında görüldüğü gibi CPU gibi diğer kaynaklar kısıtlayıcı bir faktör olabilir. Diğer bazı durumlarda, yüklenen çok fazla modelin bir kombinasyonu ve model başına mevcut olanın katları olan temel ML çerçevesi (TensorFlow gibi) yumurtlama iş parçacıkları nedeniyle bir örnekte işlem kimlikleri gibi diğer çekirdek kaynaklarının tükendiğini de gözlemledik. vCPU'lar.

Aşağıdaki performans testi, model gecikmesini etkileyen bir CPU kısıtlaması örneğini gösterir. Bu testte, büyük bir örneğe sahip tek bir örnek uç noktası, dört modeli de bellekte tutmak için yeterli belleğe sahipken, dört küçük örneği olan bir uç nokta ile karşılaştırıldığında, yük altında nispeten daha kötü model gecikmeleri üretti.

Amazon SageMaker çoklu model uç noktaları PlatoBlockchain Veri Zekası ile çoklu model çıkarımını çalıştırın ve optimize edin. Dikey Arama. Ai.

tek örnekli uç nokta modeli gecikmesi

Amazon SageMaker çoklu model uç noktaları PlatoBlockchain Veri Zekası ile çoklu model çıkarımını çalıştırın ve optimize edin. Dikey Arama. Ai.

tek örnek uç nokta CPU ve bellek kullanımı

Amazon SageMaker çoklu model uç noktaları PlatoBlockchain Veri Zekası ile çoklu model çıkarımını çalıştırın ve optimize edin. Dikey Arama. Ai.

dört örnekli uç nokta modeli gecikmesi

Amazon SageMaker çoklu model uç noktaları PlatoBlockchain Veri Zekası ile çoklu model çıkarımını çalıştırın ve optimize edin. Dikey Arama. Ai.

dört örnek uç nokta CPU ve bellek kullanımı

Hem performans hem de maliyet verimliliği elde etmek için, MME kümenizi, toplamda size optimum bellek ve CPU kapasitesi sağlarken daha az ancak daha büyük bellek örnekleriyle maliyet açısından nispeten eşit olan daha fazla sayıda daha küçük örnekle doğru boyutlandırın.

MME'yi optimize etmek için zihinsel model

MME'nizi doğru boyutlandırırken her zaman göz önünde bulundurmanız gereken dört temel ölçü vardır:

  • Modellerin sayısı ve boyutu
  • Belirli bir zamanda çağrılan benzersiz modellerin sayısı
  • Örnek türü ve boyutu
  • Örnek, uç noktanın gerisindeki sayım

İlk iki nokta ile başlayın, çünkü üçüncü ve dördüncü noktayı bilgilendirirler. Örneğin, sahip olduğunuz benzersiz modellerin sayısı veya boyutu için uç noktanın arkasında yeterli sayıda örnek yoksa, uç nokta için toplam bellek düşük olacaktır ve MME modelleri sık sık belleğe yükler ve boşaltır.

Benzer şekilde, benzersiz modeller için çağrılar, uç noktanın arkasındaki tüm örneklerin toplam belleğinden daha yüksekse, daha düşük bir önbellek isabeti görürsünüz. Bu, örneklerin boyutu (özellikle bellek kapasitesi) çok küçük olduğunda da olabilir.

Gerçekten büyük bellek örnekleriyle dikey olarak ölçeklendirme de sorunlara yol açabilir, çünkü modeller belleğe sığabilse de CPU ve çekirdek işlemleri ve iş parçacığı sınırları gibi diğer kaynaklar tükenebilir. MME'niz için en uygun örnek sayısını ve boyutunu elde etmek için ön üretimde yatay ölçeklendirmeyi yükleyin.

Özet

Bu gönderide, MME platformunu daha derinden anlayacaksınız. MME'nin hangi teknik kullanım durumlarına uygun olduğunu öğrendiniz ve MME platformunun mimarisini incelediniz. MME mimarisi içindeki her bir bileşenin rolü ve hangi bileşenlerin performansını doğrudan etkileyebileceğiniz konusunda daha derin bir anlayış kazandınız. Son olarak, kullanım durumunuz için MME'yi optimize etmek üzere ayarlayabileceğiniz yapılandırma parametrelerine ve optimum performansı korumak için izlemeniz gereken ölçümlere daha derinlemesine baktınız.

MME'yi kullanmaya başlamak için inceleyin XGBoost kullanan Amazon SageMaker Çok Modelli Uç Noktalar ve Birden çok modeli tek bir kapsayıcıda tek bir uç noktanın arkasında barındırın.


Yazar Hakkında

Amazon SageMaker çoklu model uç noktaları PlatoBlockchain Veri Zekası ile çoklu model çıkarımını çalıştırın ve optimize edin. Dikey Arama. Ai.Seyit Jaffry AWS'de Baş Çözüm Mimarıdır. Bulutta düşük maliyetli ve ölçeklenebilir AI/ML uygulamaları oluşturmalarına ve çalıştırmalarına yardımcı olmak için orta ölçekli kuruluşlardan, büyük kuruluşlardan, finansal hizmetlerden ve ISV'lerden çeşitli şirketlerle birlikte çalışır.

Amazon SageMaker çoklu model uç noktaları PlatoBlockchain Veri Zekası ile çoklu model çıkarımını çalıştırın ve optimize edin. Dikey Arama. Ai.Saurabh Trikande Amazon SageMaker Inference için Kıdemli Ürün Yöneticisidir. Müşterilerle çalışma konusunda tutkulu ve makine öğrenimini demokratikleştirme hedefiyle motive oluyor. Karmaşık makine öğrenimi uygulamaları, çok kiracılı makine öğrenimi modelleri, maliyet optimizasyonları ve derin öğrenme modellerinin dağıtımını daha erişilebilir hale getirmeyle ilgili temel zorluklara odaklanıyor. Saurabh boş zamanlarında yürüyüş yapmaktan, yenilikçi teknolojiler hakkında bilgi edinmekten, TechCrunch'ı takip etmekten ve ailesiyle vakit geçirmekten hoşlanıyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi