Ü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 veya model kataloğundan gereksinimlerinize uygun modeller bulduktan 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ı kullanarak çıkarım gerçekleştirirsiniz.

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. Azure Machine Learning sunucusuz API uç noktalarını, çevrimiçi uç noktaları ve toplu iş uç noktalarını uygulamanıza olanak tanır. 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. Uç nokta bir dağıtım içerir ve çevrimiçi ve toplu iş uç noktaları için bir uç nokta birkaç dağıtım içerebilir. Dağıtımlar bağımsız varlıkları barındırabilir ve varlıkların ihtiyaçlarına göre farklı kaynaklar kullanabilir. Ayrıca uç nokta, istekleri dağıtımlarından herhangi birine yönlendirebilen bir yönlendirme mekanizmasına sahiptir.

Bir yandan, Azure Machine Learning'deki bazı uç nokta türleri dağıtımlarında ayrılmış kaynakları kullanır. Bu uç noktaların çalışması için Azure aboneliğinizde işlem kotanızın olması gerekir. Öte yandan, bazı modeller sunucusuz dağıtımı destekler ve aboneliğinizden kota kullanmamalarını sağlar. Sunucusuz dağıtım için kullanım temelinde faturalandırılırsınız.

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.

Uç nokta kavramını gösteren diyagram.

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.

Dağıtım kavramını gösteren diyagram.

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.

Birden çok dağıtıma sahip bir uç nokta kavramını gösteren diyagram.

Uç noktalar: sunucusuz API, çevrimiçi ve toplu iş

Azure Machine Learning sunucusuz API uç noktalarını, çevrimiçi uç noktaları ve toplu iş uç noktalarını uygulamanıza olanak tanır.

Sunucusuz API uç noktaları ve çevrimiçi uç noktalar gerçek zamanlı çıkarım için tasarlanmıştır. Uç noktayı her çağırdığınızda sonuçlar uç noktanın yanıtında döndürülür. Sunucusuz API uç noktaları aboneliğinizden kota kullanmaz; bunun yerine kullandıkça öde faturalaması ile faturalandırılırlar.

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.

Sunucusuz API, çevrimiçi ve toplu iş uç noktaları ne zaman kullanılır?

Sunucusuz API uç noktaları:

Gerçek zamanlı kullanıma hazır çıkarım veya bu tür modellerin ince ayarlarını yapmak için büyük temel modelleri kullanmak için sunucusuz API uç noktalarını kullanın. Sunucusuz API uç noktalarına dağıtım için tüm modeller kullanılamaz. Aşağıdaki durumlarda bu dağıtım modunu kullanmanızı öneririz:

  • Modeliniz, sunucusuz API dağıtımları için kullanılabilen temel bir model veya temel modelin ince ayarlı bir sürümüdür.
  • Kotasız dağıtımdan yararlanabilirsiniz.
  • Modeli çalıştırmak için kullanılan çıkarım yığınını özelleştirmeniz gerekmez.

Çevrimiçi uç noktalar:

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:

  • Modeliniz temel bir model veya temel modelin ince ayarlı bir sürümüdür, ancak sunucusuz API uç noktalarında desteklenmez.
  • 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.

Batch uç noktaları:

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.

Sunucusuz API, çevrimiçi ve toplu iş uç noktalarının karşılaştırması

Tüm sunucusuz API, çevrimiçi ve toplu iş uç noktaları uç nokta fikrini temel alır, bu nedenle birinden diğerine kolayca geçiş yapabilirsiniz. Çevrimiçi ve toplu iş uç noktaları da aynı uç nokta için birden çok dağıtımı yönetebilme özelliğine sahiptir.

Uç Noktalar

Aşağıdaki tabloda sunucusuz API, çevrimiçi ve toplu iş uç noktaları için uç nokta düzeyinde kullanılabilen farklı özelliklerin özeti gösterilmektedir.

Özellik Sunucusuz API uç noktaları Çevrimiçi uç noktalar Batch uç noktaları
Kararlı çağırma URL'si Yes Evet Yes
Birden çok dağıtım desteği Hayır Evet Yes
Dağıtımın yönlendirmesi Hiçbiri Trafik bölme Varsayılana geç
Güvenli dağıtım için yansıtma trafiği Hayır Evet Hayır
Swagger desteği Yes Evet Hayır
Kimlik Doğrulaması Anahtar Key ve Microsoft Entra Id (önizleme) Microsoft Entra Kimlik
Özel ağ desteği (eski) Hayır Evet Yes
Yönetilen ağ yalıtımı Yes Yes Evet (bkz. gerekli ek yapılandırma)
Müşteri tarafından yönetilen anahtarlar NA Yes Yes
Maliyet temeli Uç nokta başına, dakikabaşına 1 Hiçbiri Hiçbiri

1Sunucusuz API uç noktaları için dakika başına küçük bir kesir ücretlendirilir. Belirteç başına faturalandırılan tüketimle ilgili ücretler için dağıtımlar bölümüne bakın.

Dağıtımlar

Aşağıdaki tabloda sunucusuz API, çevrimiçi ve toplu iş uç noktaları için dağıtım düzeyinde kullanılabilen farklı özelliklerin özeti gösterilmektedir. Bu kavramlar uç nokta altındaki her dağıtım için (çevrimiçi ve toplu iş uç noktaları için) ve sunucusuz API uç noktalarına (dağıtım kavramının uç noktada yerleşik olduğu) uygulanır.

Özellik Sunucusuz API uç noktaları Çevrimiçi uç noktalar Batch uç noktaları
Dağıtım türleri Modeller Modeller Modeller ve İşlem Hattı bileşenleri
MLflow modeli dağıtımı Hayır, yalnızca katalogdaki belirli modeller Yes Yes
Özel model dağıtımı Hayır, yalnızca katalogdaki belirli modeller Evet, puanlama betiğiyle Evet, puanlama betiğiyle
Model paketi dağıtımı 2 Yerleşik Evet (önizleme) Hayır
Çıkarım sunucusu 3 Azure AI Model Çıkarım API'sı - Azure Machine Learning Çıkarım Sunucusu
-Triton
- Özel (KCG kullanarak)
Toplu Çıkarım
Kullanılan işlem kaynağı Hiçbiri (sunucusuz) Örnekler veya ayrıntılı kaynaklar Küme örnekleri
İşlem türü Hiçbiri (sunucusuz) Yönetilen işlem ve Kubernetes Yönetilen işlem ve Kubernetes
Düşük öncelikli işlem NA Hayır Evet
İşlemi sıfıra ölçeklendirme Yerleşik Hayır Evet
Otomatik ölçeklendirme işlemi4 Yerleşik Evet, kaynak kullanımına göre Evet, iş sayısına göre
Fazlalık yönetimi Azaltma Azaltma Queuing
Maliyet temeli5 Belirteç başına 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 Hayır Evet Hayır

2 Giden İnternet bağlantısı veya özel ağlar olmadan uç noktalara MLflow modelleri dağıtmak için önce modelin paketlenmesi gerekir.

3 Çıkarım sunucusu , istekleri alan, işleyen ve yanıt oluşturan sunum teknolojisini ifade eder. Çıkarım sunucusu, girişin biçimini ve beklenen çıkışları da dikte eder.

4 Otomatik ö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ı.

5 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. Toplu dağıtımda kaynaklar dağıtım zamanında değil, işin çalıştırıldığında tüketilir. Bu nedenle, toplu dağıtımın kendisiyle ilişkili bir maliyet yoktur. Aynı şekilde, kuyruğa alınan işler de kaynakları kullanmaz.

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.

Çeşitli geliştirici araçları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