Üretimde çıkarım için uç noktalar
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)
Makine öğrenmesi modellerini veya işlem hatlarını eğitdikten sonra, başkalarının çıkarım için kullanabilmesi için bunları üretime dağıtmanız gerekir. Çıkarım, çıkış oluşturmak için makine öğrenmesi modeline veya işlem hattına yeni giriş verileri uygulama işlemidir. Bu çıkışlar genellikle "tahminler" olarak adlandırılırken, sınıflandırma ve kümeleme gibi diğer makine öğrenmesi görevleri için çıkışlar oluşturmak için çıkarım kullanılabilir. Azure Machine Learning'de uç noktaları ve dağıtımları kullanarak çıkarım gerçekleştirirsiniz. Uç noktalar ve dağıtımlar, üretim iş yükünüzün arabirimini hizmet veren uygulamadan ayırmanıza olanak sağlar.
Sezgi
Fotoğrafı göz önünde bulundurulduğunda bir arabanın türünü ve rengini tahmin eden bir uygulama üzerinde çalıştığınızı varsayalım. Bu uygulama için, belirli kimlik bilgilerine sahip bir kullanıcı URL'ye HTTP isteğinde bulunur ve isteğin bir parçası olarak bir arabanın resmini sağlar. Buna karşılık, kullanıcı dize değerleri olarak aracın türünü ve rengini içeren bir yanıt alır. Bu senaryoda, URL bir uç nokta görevi görür.
Ayrıca, bir veri bilimcisi olan Alice'in uygulamayı uygulamak için çalıştığını da söyleyebilirsiniz. Alice, TensorFlow hakkında çok şey bilir ve TensorFlow Hub'ından restnet mimarisine sahip bir Keras sıralı sınıflandırıcı kullanarak modeli uygulamaya karar verir. Modeli test ettikten sonra Alice, sonuçlarından memnun ve araba tahmini sorununu çözmek için modeli kullanmaya karar verir. Modelin boyutu büyüktür ve çalıştırılması için 4 çekirdekli 8 GB bellek gerekir. Bu senaryoda, Alice'in modeli ve modeli çalıştırmak için gereken kod ve işlem gibi kaynaklar uç nokta altında bir dağıtım oluşturur.
Son olarak, birkaç ay sonra kuruluşun uygulamanın ideal aydınlatma koşullarından daha az olan görüntülerde kötü performans sergilediğini keşfettiğini düşünelim. Başka bir veri bilimcisi olan Bob, bir modelin bu faktör üzerinde sağlamlık sağlamasına yardımcı olan veri artırma teknikleri hakkında çok şey biliyor. Ancak Bob, modeli uygulamak için Torch'u kullanırken daha rahat hissediyor ve Torch ile yeni bir model eğitir. Bob, kuruluş eski modeli kullanımdan kaldırmaya hazır olana kadar bu modeli kademeli olarak üretimde denemek istiyor. Yeni model ayrıca GPU'ya dağıtıldığında daha iyi performans gösterdiğinden dağıtımın gpu içermesi gerekir. Bu senaryoda Bob'un modeli ve modeli çalıştırmak için gereken kod ve işlem gibi kaynaklar aynı uç nokta altında başka bir dağıtım oluşturur.
Uç noktalar ve dağıtımlar
Uç nokta, model istemek veya çağırmak için kullanılabilecek kararlı ve dayanıklı bir URL'dir. Uç noktaya gerekli girişleri sağlar ve çıkışları geri alırsınız. Uç nokta şu bilgileri sağlar:
- kararlı ve dayanıklı bir URL (endpoint-name.region.inference.ml.azure.com gibi),
- bir kimlik doğrulama mekanizması ve
- bir yetkilendirme mekanizması.
Dağıtım, gerçek çıkarım yapan modeli veya bileşeni barındırmak için gereken bir dizi kaynak ve işlemdir. Tek bir uç nokta birden çok dağıtım içerebilir. Bu dağıtımlar bağımsız varlıkları barındırabilir ve varlıkların gereksinimlerine göre farklı kaynaklar kullanabilir. Uç noktaların istekleri uç noktadaki belirli dağıtımlara yönlendirebilen bir yönlendirme mekanizması vardır.
Düzgün çalışması için her uç noktanın en az bir dağıtımı olmalıdır. Uç noktalar ve dağıtımlar, Azure portalında görünen bağımsız Azure Resource Manager kaynaklarıdır.
Çevrimiçi ve toplu iş uç noktaları
Azure Machine Learning, çevrimiçi uç noktaları ve toplu iş uç noktalarını uygulamanıza olanak tanır. Çevrimiçi uç noktalar gerçek zamanlı çıkarım için tasarlanmıştır; uç noktayı çağırdığınızda sonuçlar uç noktanın yanıtında döndürülür. Öte yandan, toplu iş uç noktaları uzun süre çalışan toplu çıkarım için tasarlanmıştır. Bir toplu iş uç noktasını her çağırdığınızda, fiili işi gerçekleştiren bir toplu iş oluşturursunuz.
Kullanım örneğiniz için çevrimiçi ve toplu iş uç noktası kullanma zamanları
Zaman uyumlu düşük gecikme süreli isteklerde gerçek zamanlı çıkarım için modelleri kullanıma hazır hale getirmek için çevrimiçi uç noktaları kullanın. Bunları şu durumlarda kullanmanızı öneririz:
- Düşük gecikme süresi gereksinimleriniz vardır.
- Modeliniz isteği nispeten kısa bir süre içinde yanıtlayabilir.
- Modelinizin girişleri isteğin HTTP yüküne uyar.
- İstek sayısı açısından ölçeği artırmanız gerekir.
Uzun süre çalışan zaman uyumsuz çıkarım için modelleri veya işlem hatlarını kullanıma hazır hale getirmek için toplu iş uç noktalarını kullanın. Bunları şu durumlarda kullanmanızı öneririz:
- Çalıştırmak için daha uzun süre gerektiren pahalı modelleriniz veya işlem hatlarınız var.
- Makine öğrenmesi işlem hatlarını kullanıma hazır hale getirmek ve bileşenleri yeniden kullanmak istiyorsunuz.
- Birden çok dosyaya dağıtılan büyük miktarda veriden çıkarım yapmanız gerekir.
- Düşük gecikme süresi gereksinimleriniz yoktur.
- Modelinizin girişleri bir depolama hesabında veya Azure Machine Learning veri varlığında depolanır.
- Paralelleştirmeden yararlanabilirsiniz.
Çevrimiçi ve toplu iş uç noktalarının karşılaştırması
Hem çevrimiçi hem de toplu uç noktalar, bir noktadan diğerine kolayca geçiş yapmaya yardımcı olan uç noktalar ve dağıtımlar fikrine dayanır. Ancak, bir birinden diğerine geçerken dikkate alınması gereken bazı farklılıklar vardır. Bu farklılıklardan bazıları işin doğasından kaynaklanıyor:
Uç Noktalar
Aşağıdaki tabloda, çevrimiçi ve toplu iş uç noktaları için kullanılabilen farklı özelliklerin özeti gösterilmektedir.
Özellik | Çevrimiçi Uç Noktalar | Batch uç noktaları |
---|---|---|
Kararlı çağırma URL'si | Evet | Evet |
Birden çok dağıtım desteği | Evet | Evet |
Dağıtımın yönlendirmesi | Trafik bölme | Varsayılana geç |
Güvenli dağıtım için yansıtma trafiği | Evet | Hayır |
Swagger desteği | Evet | Hayır |
Kimlik Doğrulaması | Anahtar ve belirteç | Microsoft Entra ID |
Özel ağ desteği | Evet | Evet |
Yönetilen ağ yalıtımı | Evet | Evet (bkz. gerekli ek yapılandırma) |
Müşteri tarafından yönetilen anahtarlar | Evet | Evet |
Maliyet temeli | Hiçbiri | Hiçbiri |
Dağıtımlar
Aşağıdaki tabloda, dağıtım düzeyinde çevrimiçi ve toplu iş uç noktaları için kullanılabilen farklı özelliklerin özeti gösterilmektedir. Bu kavramlar uç nokta altındaki her dağıtım için geçerlidir.
Özellik | Çevrimiçi Uç Noktalar | Batch uç noktaları |
---|---|---|
Dağıtım türleri | Modeller | Modeller ve İşlem Hattı bileşenleri |
MLflow modeli dağıtımı | Evet | Evet |
Özel model dağıtımı | Evet, puanlama betiğiyle | Evet, puanlama betiğiyle |
Model paketi dağıtımı 1 | Evet (önizleme) | No |
Çıkarım sunucusu 2 | - Azure Machine Learning Çıkarım Sunucusu -Triton - Özel (KCG kullanarak) |
Toplu Çıkarım |
Kullanılan işlem kaynağı | Örnekler veya ayrıntılı kaynaklar | Küme örnekleri |
İşlem türü | Yönetilen işlem ve Kubernetes | Yönetilen işlem ve Kubernetes |
Düşük öncelikli işlem | Hayır | Evet |
İşlemi sıfıra ölçeklendirme | Hayır | Evet |
Otomatik ölçeklendirme işlemi3 | Evet, kaynakların yüküne göre | Evet, iş sayısına göre |
Fazlalık yönetimi | Azaltma | Queuing |
Maliyet temeli4 | Dağıtım başına: çalışan işlem örnekleri | İş başına: işte kullanılan işlem örneği (kümenin en fazla örnek sayısına eşlenir). |
Dağıtımların yerel testi | Evet | Hayır |
1 Giden İnternet bağlantısı veya özel ağlar olmadan uç noktalara MLflow modelleri dağıtmak için önce modelin paketlenmesi gerekir.
2Çıkarım sunucusu , istekleri alan, işleyen ve yanıtlar oluşturan sunum teknolojisini ifade eder. Çıkarım sunucusu, girişin biçimini ve beklenen çıkışları da dikte eder.
3Otomatik ölçeklendirme , dağıtımın ayrılmış kaynaklarını yüküne göre dinamik olarak artırma veya azaltma özelliğidir. Çevrimiçi ve toplu dağıtımlar, otomatik ölçeklendirme için farklı stratejiler kullanır. Çevrimiçi dağıtımlar kaynak kullanımına (CPU, bellek, istekler vb.) göre ölçeği artırıp azaltsa da, toplu iş uç noktalarının ölçeği oluşturulan iş sayısına göre artırılıp azaltıldı.
4 Hem çevrimiçi hem de toplu dağıtımlar, tüketilen kaynaklar tarafından ücretlendirilir. Çevrimiçi dağıtımlarda kaynaklar dağıtım zamanında sağlanır. Ancak toplu dağıtımda dağıtım zamanında iş çalıştırıldığında kaynak tüketilmemiştir. Bu nedenle, dağıtımın kendisiyle ilişkili bir maliyet yoktur. Kuyruğa alınan işlerin de kaynakları kullanmadığını fark edin.
Geliştirici arabirimleri
Uç noktalar, kuruluşların Azure Machine Learning'de üretim düzeyi iş yüklerini kullanıma hazır hale getirmesine yardımcı olmak için tasarlanmıştır. Uç noktalar sağlam ve ölçeklenebilir kaynaklardır ve MLOps iş akışlarını uygulamak için en iyi özellikleri sağlar.
Birden çok geliştirici aracıyla toplu ve çevrimiçi uç noktalar oluşturabilir ve yönetebilirsiniz:
- Azure CLI ve Python SDK'sı
- Azure Resource Manager/REST API
- web portalını Azure Machine Learning stüdyosu
- Azure portalı (BT/Yönetici)
- Azure CLI arabirimini ve REST/ARM arabirimlerini kullanan CI/CD MLOps işlem hatları desteği
Sonraki adımlar
- Azure CLI ve Python SDK ile çevrimiçi uç noktaları dağıtma
- Toplu iş uç noktalarıyla modelleri dağıtma
- Batch uç noktalarıyla işlem hatlarını dağıtma
- Stüdyo ile çevrimiçi uç noktaları kullanma
- Yönetilen çevrimiçi uç noktaları izleme
- Azure Machine Learning ile kaynaklar için kotaları yönetme ve artırma