Ü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.

A diagram showing the concept of an endpoint.

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.

A diagram showing the concept of a deployment.

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.

A diagram showing the concept of an endpoint with multiple deployments.

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