Share via


Gerçek zamanlı çıkarım için çevrimiçi uç noktalar ve dağıtımlar

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Azure Machine Learning, çevrimiçi uç noktalara dağıtılan modelleri kullanarak veriler üzerinde gerçek zamanlı çıkarım gerçekleştirmenizi sağlar. Çıkarım, çıkış oluşturmak için makine öğrenmesi modeline 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.

Çevrimiçi uç noktalar

Çevrimiçi uç noktalar, http protokolü altında tahmin döndürebilen bir web sunucusuna modeller dağıtır. 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 var
  • Modeliniz isteği nispeten kısa bir süre içinde yanıtlayabilir
  • Modelinizin girişleri isteğin HTTP yüküne sığıyor
  • İstek sayısı açısından ölçeği artırmanız gerekir

Uç nokta tanımlamak için şunları belirtmeniz gerekir:

  • Uç nokta adı: Bu ad Azure bölgesinde benzersiz olmalıdır. Adlandırma kuralları hakkında daha fazla bilgi için bkz . uç nokta sınırları.
  • Kimlik doğrulama modu: Uç nokta için anahtar tabanlı kimlik doğrulama modu, Azure Machine Learning belirteç tabanlı kimlik doğrulama modu veya Microsoft Entra belirteç tabanlı kimlik doğrulaması (önizleme) arasından seçim yapabilirsiniz. Kimlik doğrulaması hakkında daha fazla bilgi için bkz . Çevrimiçi uç noktada kimlik doğrulaması yapma.

Azure Machine Learning, makine öğrenmesi modellerinizi anahtar teslimi bir şekilde dağıtmak için yönetilen çevrimiçi uç noktaları kullanma kolaylığı sağlar. Bu, Azure Machine Learning'de çevrimiçi uç noktaları kullanmanın önerilen yoludur. Yönetilen çevrimiçi uç noktalar Azure'da ölçeklenebilir ve tam olarak yönetilen bir şekilde güçlü CPU ve GPU makineleriyle çalışır. Bu uç noktalar, temel altyapıyı ayarlama ve yönetme ek yükünden sizi kurtarmak için modellerinizi sunma, ölçeklendirme, güvenli hale getirme ve izleme işlemleriyle de ilgilenir. Yönetilen çevrimiçi uç nokta tanımlamayı öğrenmek için bkz . Uç noktayı tanımlama.

Neden ACI veya AKS(v1) yerine yönetilen çevrimiçi uç noktaları seçmelisiniz?

Yönetilen çevrimiçi uç noktaların kullanılması, Azure Machine Learning'de çevrimiçi uç noktaları kullanmanın önerilen yoludur. Aşağıdaki tabloda Azure Machine Learning SDK/CLI v1 çözümlerine (ACI ve AKS(v1)) kıyasla yönetilen çevrimiçi uç noktaların temel öznitelikleri vurgulanmaktadır.

Özellikler Yönetilen çevrimiçi uç noktalar (v2) ACI veya AKS(v1)
Ağ güvenliği/yalıtımı Hızlı geçiş ile kolay gelen/giden denetimi Sanal ağ desteklenmiyor veya karmaşık el ile yapılandırma gerektiriyor
Yönetilen hizmet - Tam olarak yönetilen işlem sağlama/ölçeklendirme
- Veri sızdırma önleme için ağ yapılandırması
- Konak işletim sistemi yükseltmesi, yerinde güncelleştirmelerin denetimli dağıtımı
- Ölçeklendirme v1'de sınırlıdır
- Ağ yapılandırması veya yükseltmesi kullanıcı tarafından yönetilmelidir
Uç nokta/dağıtım kavramı Uç nokta ile dağıtım arasındaki ayrım, modellerin güvenli bir şekilde piyasaya sürülmesi gibi karmaşık senaryolara olanak tanır Uç nokta kavramı yok
Tanılama ve İzleme - Docker ve Visual Studio Code ile yerel uç nokta hata ayıklaması mümkün
- Dağıtımlar arasında karşılaştırmak için grafik/sorgu ile gelişmiş ölçümler ve günlük analizi
- Maliyet dökümü dağıtım düzeyine düşürülecek
Kolay yerel hata ayıklama yok
Ölçeklenebilirlik Sınırsız, esnek ve otomatik ölçeklendirme - ACI ölçeklenebilir değil
- AKS (v1) yalnızca küme içi ölçeği destekler ve ölçeklenebilirlik yapılandırması gerektirir
Kurumsal kullanıma hazır olma Özel bağlantı, müşteri tarafından yönetilen anahtarlar, Microsoft Entra Kimliği, kota yönetimi, faturalama tümleştirmesi, SLA Desteklenmez
Gelişmiş ML özellikleri - Model veri toplama
- Model izleme
- Şampiyon-challenger modeli, güvenli dağıtım, trafik yansıtma
- Sorumlu yapay zeka genişletilebilirliği
Desteklenmez

Alternatif olarak, modellerinizi dağıtmak ve uç noktalara hizmet vermek için Kubernetes kullanmayı tercih ediyorsanız ve altyapı gereksinimlerini yönetme konusunda rahatsanız, Kubernetes çevrimiçi uç noktalarını kullanabilirsiniz. Bu uç noktalar, cpu'lar veya GPU'lar ile her yerde tam olarak yapılandırılmış ve yönetilen Kubernetes kümenizde modelleri dağıtmanıza ve çevrimiçi uç noktalar sunmanıza olanak tanır.

AKS(v2) yerine yönetilen çevrimiçi uç noktaları neden seçmelisiniz?

Yönetilen çevrimiçi uç noktalar, dağıtım sürecinizi kolaylaştırmaya yardımcı olabilir ve Kubernetes çevrimiçi uç noktalarına göre aşağıdaki avantajları sağlayabilir:

  • Yönetilen altyapı

    • İşlemi otomatik olarak sağlar ve modeli barındırıyor (yalnızca VM türünü ve ölçek ayarlarını belirtmeniz yeterlidir)
    • Temel alınan ana bilgisayar işletim sistemi görüntüsünü otomatik olarak güncelleştirir ve düzeltme eki uygulama
    • Sistem hatası olduğunda düğüm kurtarmayı otomatik olarak gerçekleştirir
  • İzleme ve günlükler

    Uç nokta gecikmesinin Azure İzleyici grafiğini gösteren ekran görüntüsü.

  • Maliyetleri görüntüleme

    • Yönetilen çevrimiçi uç noktalar, uç nokta ve dağıtım düzeyinde maliyeti izlemenize olanak sağlar

    Bir uç noktanın ve dağıtımın maliyet grafiğinin ekran görüntüsü.

    Not

    Yönetilen çevrimiçi uç noktalar, Azure Machine Learning hesaplamayı temel alır. Yönetilen bir çevrimiçi uç nokta kullanırken işlem ve ağ ücretleri için ödeme alırsınız. Ek ücret alınmaz. Fiyatlandırma hakkında daha fazla bilgi için bkz . Azure fiyatlandırma hesaplayıcısı.

    Yönetilen çevrimiçi uç noktadan giden trafiğin güvenliğini sağlamak için bir Azure Machine Learning sanal ağı kullanıyorsanız, yönetilen sanal ağ tarafından kullanılan Azure özel bağlantısı ve FQDN giden kuralları için ücretlendirilirsiniz. Daha fazla bilgi için bkz . Yönetilen sanal ağ için fiyatlandırma.

Yönetilen çevrimiçi uç noktalar ile kubernetes çevrimiçi uç noktaları karşılaştırması

Aşağıdaki tabloda, yönetilen çevrimiçi uç noktalar ile Kubernetes çevrimiçi uç noktaları arasındaki temel farklar vurgulanır.

Yönetilen çevrimiçi uç noktalar Kubernetes çevrimiçi uç noktaları (AKS(v2))
Önerilen kullanıcılar Yönetilen bir model dağıtımı ve gelişmiş MLOps deneyimi isteyen kullanıcılar Kubernetes'i tercih eden ve altyapı gereksinimlerini kendi yönetebilen kullanıcılar
Düğüm sağlama Yönetilen işlem sağlama, güncelleştirme, kaldırma Kullanıcı sorumluluğu
Düğüm bakımı Yönetilen konak işletim sistemi görüntü güncelleştirmeleri ve güvenlik sağlamlaştırma Kullanıcı sorumluluğu
Küme boyutlandırma (ölçeklendirme) Yönetilen el ile ve otomatik ölçeklendirme, ek düğüm sağlamayı destekler Sabit küme sınırları içindeki çoğaltma sayısını ölçeklendirmeyi destekleyen el ile ve otomatik ölçeklendirme
İşlem türü Hizmet tarafından yönetilir Müşteri tarafından yönetilen Kubernetes kümesi (Kubernetes)
Yönetilen kimlik Destekleniyor Desteklenir
Sanal Ağ (VNET) yönetilen ağ izolasyonu aracılığıyla desteklenir Kullanıcı sorumluluğu
İlk çalıştırma izleme ve günlüğe kaydetme Azure İzleyici ve Log Analytics destekli (uç noktalar ve dağıtımlar için önemli ölçümleri ve günlük tablolarını içerir) Kullanıcı sorumluluğu
Uygulama Analizler ile günlüğe kaydetme (eski) Desteklenir Desteklenir
Maliyetleri görüntüleme Uç noktaya /dağıtım düzeyine ayrıntılı Küme düzeyi
Uygulanan maliyet Dağıtımlara atanan VM'ler Kümeye atanan VM'ler
Yansıtılmış trafik Destekleniyor Desteklenmeyen
Kod içermeyen dağıtım Desteklenen (MLflow ve Triton modelleri) Desteklenen (MLflow ve Triton modelleri)

Çevrimiçi dağıtımlar

Dağıtım, gerçek çıkarım yapan modeli barındırmak için gereken bir dizi kaynak ve işlemdir. Tek bir uç nokta, farklı yapılandırmalara sahip birden çok dağıtım içerebilir. Bu kurulum, uç nokta tarafından sunulan arabirimi dağıtımda mevcut uygulama ayrıntılarından ayırmaya yardımcı olur. Çevrimiçi uç nokta, istekleri uç noktadaki belirli dağıtımlara yönlendirebilen bir yönlendirme mekanizmasına sahiptir.

Aşağıdaki diyagramda mavi ve yeşil olmak üzere iki dağıtımı olan çevrimiçi bir uç nokta gösterilmektedir. Mavi dağıtım, CPU SKU'su olan VM'leri kullanır ve modelin 1. sürümünü çalıştırır. Yeşil dağıtım, GPU SKU'su olan VM'leri kullanır ve modelin 2. sürümünü çalıştırır. Uç nokta gelen trafiğin %90'ını mavi dağıtıma yönlendirecek şekilde yapılandırılırken, yeşil dağıtım kalan %10'unu alır.

Trafiği iki dağıtıma bölen uç noktayı gösteren diyagram.

Bir modeli dağıtmak için sahip olmanız gerekenler:

  • Model dosyaları (veya çalışma alanınızda zaten kayıtlı olan bir modelin adı ve sürümü).
  • Puanlama betiği, yani belirli bir giriş isteğinde modeli yürüten kod. Puanlama betiği dağıtılan bir web hizmetine gönderilen verileri alır ve modele geçirir. Betik daha sonra modeli yürütür ve istemciye yanıtını döndürür. Puanlama betiği modelinize özgüdür ve modelin giriş olarak beklediği ve çıkış olarak döndürdüğü verileri anlaması gerekir.
  • Modelinizin çalıştığı bir ortam. Ortam, Conda bağımlılıklarına sahip bir Docker görüntüsü veya Dockerfile olabilir.
  • Örnek türünü ve ölçeklendirme kapasitesini belirtmek için Ayarlar.

Dağıtımın temel öznitelikleri

Aşağıdaki tabloda bir dağıtımın temel öznitelikleri açıklanmaktadır:

Öznitelik Tanım
Ad Dağıtımın adı.
Uç nokta adı Altında dağıtımın oluşturulacağı uç noktanın adı.
Model1 Dağıtım için kullanılacak model. Bu değer, çalışma alanında var olan bir sürüme sahip modelin başvurusu veya satır içi model belirtimi olabilir. Modelinizin yolunu izleme ve belirtme hakkında daha fazla bilgi için bkz . ile ilgili AZUREML_MODEL_DIRolarak model yolunu tanımlama.
Kod yolu Modeli puanlama için tüm Python kaynak kodunu içeren yerel geliştirme ortamında dizinin yolu. İç içe dizinleri ve paketleri kullanabilirsiniz.
Puanlama betiği Kaynak kod dizinindeki puanlama dosyasının göreli yolu. Bu Python kodunun bir init() işlevi ve bir run() işlevi olmalıdır. İşlev, init() model oluşturulduktan veya güncelleştirildikten sonra çağrılır (örneğin, modeli bellekte önbelleğe almak için kullanabilirsiniz). İşlev run() , gerçek puanlama ve tahmin gerçekleştirmek için uç noktanın her çağrısında çağrılır.
Ortam1 Modeli ve kodu barındıracak ortam. Bu değer, çalışma alanında var olan bir sürüme sahip ortama başvuru veya satır içi ortam belirtimi olabilir. Not: Microsoft, bilinen güvenlik açıkları için temel görüntülere düzenli olarak düzeltme eki uygular. Yama yapılan görüntüyü kullanmak için uç noktanızı yeniden dağıtmanız gerekir. Kendi görüntünüzü sağlarsanız, görüntüyü güncelleştirmek sizin sorumluluğunuzdadır. Daha fazla bilgi için bkz . Görüntü düzeltme eki uygulama.
Örnek türü Dağıtım için kullanılacak VM boyutu. Desteklenen boyutların listesi için bkz . Yönetilen çevrimiçi uç noktalar SKU listesi.
Örnek sayısı Dağıtım için kullanılacak örnek sayısı. Değeri beklediğiniz iş yüküne dayandırın. Yüksek kullanılabilirlik için değerini en az 3olarak ayarlamanızı öneririz. Yükseltmeleri gerçekleştirmek için fazladan %20 ayırıyoruz. Daha fazla bilgi için bkz . Dağıtımlar için sanal makine kota ayırma.

1 Model ve ortam hakkında dikkate alacağım bazı noktalar:

  • Model ve kapsayıcı görüntüsüne (Ortam'da tanımlandığı gibi) herhangi bir zamanda, dağıtımın arkasındaki örnekler güvenlik düzeltme ekleri ve/veya diğer kurtarma işlemlerinden geçtiğinde dağıtım tarafından yeniden başvurulabilir. Azure Container Registry'de dağıtım için kayıtlı bir model veya kapsayıcı görüntüsü kullanır ve modeli veya kapsayıcı görüntüsünü kaldırırsanız, yeniden görüntüleme gerçekleştiğinde bu varlıklara dayanan dağıtımlar başarısız olabilir. Modeli veya kapsayıcı görüntüsünü kaldırırsanız, bağımlı dağıtımların yeniden oluşturulduğundan veya alternatif bir model veya kapsayıcı görüntüsüyle güncelleştirildiğinden emin olun.
  • Ortamın başvurduğu kapsayıcı kayıt defteri yalnızca uç nokta kimliğinin Microsoft Entra kimlik doğrulaması ve Azure RBAC aracılığıyla erişim iznine sahip olması durumunda özel olabilir. Aynı nedenle, Azure Container Registry dışındaki özel Docker kayıt defterleri desteklenmez.

CLI, SDK, studio ve ARM şablonunu kullanarak çevrimiçi uç noktaları dağıtmayı öğrenmek için bkz . Çevrimiçi uç nokta ile ML modeli dağıtma.

Model yolunu şu şekilde tanımlayın: AZUREML_MODEL_DIR

Modelinizi Azure Machine Learning'e dağıtırken, dağıtım yapılandırmanızın bir parçası olarak dağıtmak istediğiniz modelin konumunu belirtmeniz gerekir. Azure Machine Learning'de, modelinizin yolu ortam değişkeniyle AZUREML_MODEL_DIR izlenir. model yolunu ile ilgili AZUREML_MODEL_DIRolarak tanımlayarak makinenizde yerel olarak depolanan bir veya daha fazla modeli dağıtabilir veya Azure Machine Learning çalışma alanınızda kayıtlı bir model dağıtabilirsiniz.

Çizim için, tek bir model dağıttığınız veya yerel olarak depolanan birden çok modeli dağıttığınız ilk iki durum için aşağıdaki yerel klasör yapısına başvuruyoruz:

Birden çok model içeren klasör yapısını gösteren ekran görüntüsü.

Dağıtımda tek bir yerel model kullanma

Yerel makinenizde bulunan tek bir modeli bir dağıtımda kullanmak için, dağıtım YAML'nizde öğesini model belirtinpath. Aşağıda yolu /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pklile dağıtım YAML örneği verilmişti:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Dağıtımınızı oluşturduktan sonra ortam değişkeni AZUREML_MODEL_DIR , Azure'da modelinizin depolandığı depolama konumunu gösterir. Örneğin, /var/azureml-app/azureml-models/81b3c48bbf62360c7edbbe9b280b9025/1 modelini sample_m1.pkliçerir.

Puanlama betiğinizin ()score.py içinde, modelinizi (bu örnekte, sample_m1.pkl) işlevine init() yükleyebilirsiniz:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl") 
    model = joblib.load(model_path) 

Dağıtımda birden çok yerel model kullanma

Azure CLI, Python SDK'sı ve diğer istemci araçları, dağıtım tanımında dağıtım başına yalnızca bir model belirtmenize izin verse de, tüm modelleri dosya veya alt dizin olarak içeren bir model klasörünü kaydederek bir dağıtımda birden çok modeli kullanmaya devam edebilirsiniz.

Önceki örnek klasör yapısında, klasörde birden çok model models olduğunu fark edeceksiniz. Dağıtım YAML'nizde klasörün yolunu models aşağıdaki gibi belirtebilirsiniz:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/ 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Dağıtımınızı oluşturduktan sonra ortam değişkeni AZUREML_MODEL_DIR , Azure'da modellerinizin depolandığı depolama konumuna işaret eder. Örneğin, /var/azureml-app/azureml-models/81b3c48bbf62360c7edbbe9b280b9025/1 modelleri ve dosya yapısını içerir.

Bu örnekte, klasörün içeriği AZUREML_MODEL_DIR şöyle görünür:

Birden çok model için depolama konumunun klasör yapısının ekran görüntüsü.

Puanlama betiğinizin ()score.py içinde, modellerinizi işleve init() yükleyebilirsiniz. Aşağıdaki kod modeli yükler sample_m1.pkl :

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ") 
    model = joblib.load(model_path) 

Bir dağıtıma birden çok modelin nasıl dağıtılacağına ilişkin bir örnek için bkz . Bir dağıtıma birden çok model dağıtma (CLI örneği) ve Bir dağıtıma birden çok model dağıtma (SDK örneği).

İpucu

Kaydedilecek 1500'den fazla dosyanız varsa, modelleri kaydederken dosyaları veya alt dizinleri .tar.gz olarak sıkıştırmayı göz önünde bulundurun. Modelleri kullanmak için, puanlama betiğinden işlevdeki init() dosyaların veya alt dizinlerin sıkıştırmasını kaldırabilirsiniz. Alternatif olarak, modelleri kaydettiğinizde, dosyaları veya alt dizinleri otomatik olarak açmak için özelliğini Trueolarak ayarlayınazureml.unpack. Her iki durumda da sıkıştırmayı kaldırma işlemi başlatma aşamasında bir kez gerçekleşir.

Azure Machine Learning çalışma alanınızda kayıtlı modelleri bir dağıtımda kullanma

Azure Machine Learning çalışma alanınızda kayıtlı olan bir veya daha fazla modeli dağıtımınızda kullanmak için, dağıtım YAML'nizdeki kayıtlı modellerin adını belirtin. Örneğin, aşağıdaki dağıtım YAML yapılandırması kayıtlı model adı olarak azureml:local-multimodel:3belirtir:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: azureml:local-multimodel:3 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Bu örnekte, Azure Machine Learning stüdyosu Modeller sekmesinden görüntülenebilen aşağıdaki model yapıtlarını içerdiğini düşününlocal-multimodel:3:

Kayıtlı modelin model yapıtlarını gösteren klasör yapısının ekran görüntüsü.

Dağıtımınızı oluşturduktan sonra ortam değişkeni AZUREML_MODEL_DIR , Azure'da modellerinizin depolandığı depolama konumuna işaret eder. Örneğin, /var/azureml-app/azureml-models/local-multimodel/3 modelleri ve dosya yapısını içerir. AZUREML_MODEL_DIR , model yapıtlarının kökünü içeren klasöre işaret eder. Bu örneğe bağlı olarak, klasörün içeriği AZUREML_MODEL_DIR şöyle görünür:

Birden çok modeli gösteren klasör yapısının ekran görüntüsü.

Puanlama betiğinizin ()score.py içinde, modellerinizi işleve init() yükleyebilirsiniz. Örneğin, modeli yükleyin diabetes.sav :

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav") 
    model = joblib.load(model_path) 

Dağıtım için sanal makine kotası ayırma

Yönetilen çevrimiçi uç noktalar için Azure Machine Learning, bazı VM SKU'larında yükseltme gerçekleştirmek için işlem kaynaklarınızın %20'sini ayırır. Bir dağıtımda bu VM SKU'ları için belirli sayıda örnek istiyorsanız, hata almamak için ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU kullanılabilir bir kotanız olmalıdır. Örneğin, bir dağıtımda bir Standard_DS3_v2 VM'sinin (dört çekirdekle birlikte gelir) 10 örneğini isterseniz, 48 çekirdek (12 instances * 4 cores) için kotanız olmalıdır. Bu ek kota, işletim sistemi yükseltmeleri ve VM kurtarma gibi sistem tarafından başlatılan işlemler için ayrılmıştır ve bu tür işlemler çalıştırılmadığı sürece maliyete neden olmaz.

Ek kota rezervasyonundan muaf tutulan belirli VM SKU'ları vardır. Listenin tamamını görüntülemek için bkz . Yönetilen çevrimiçi uç noktalar SKU listesi.

Kullanım ve istek kotası artışlarınızı görüntülemek için bkz . Azure portalında kullanımınızı ve kotalarınızı görüntüleme. Yönetilen çevrimiçi uç nokta çalıştırma maliyetlerinizi görüntülemek için bkz . Yönetilen çevrimiçi uç noktanın maliyetlerini görüntüleme.

Azure Machine Learning, tüm kullanıcıların sınırlı bir süre için test gerçekleştirmek için kotaya erişebileceği paylaşılan bir kota havuzu sağlar. Lama modellerini (model kataloğundan) yönetilen bir çevrimiçi uç noktaya dağıtmak için stüdyoyu kullandığınızda, Azure Machine Learning bu paylaşılan kotaya kısa bir süre erişmenizi sağlar.

Ancak Llama-2-70b veya Llama-2-70b-chat modeli dağıtmak için, paylaşılan kotayı kullanarak dağıtmadan önce bir Kurumsal Anlaşma aboneliğiniz olmalıdır. Çevrimiçi uç nokta dağıtımı için paylaşılan kotayı kullanma hakkında daha fazla bilgi için bkz . Studio kullanarak temel modelleri dağıtma.

Azure Machine Learning'deki kaynakların kotaları ve sınırları hakkında daha fazla bilgi için bkz . Azure Machine Learning ile kaynaklar için kotaları ve sınırları yönetme ve artırma.

Kodlayıcılar ve kodlayıcı olmayanlar için dağıtım

Azure Machine Learning kodsuz dağıtım, düşük kodlu dağıtım ve Kendi Kapsayıcınızı Getir (KCG) dağıtımı seçenekleri sağlayarak kodlayıcılar ve kod olmayanlar için çevrimiçi uç noktalara model dağıtımını destekler.

  • Kodsuz dağıtım , MLflow ve Triton aracılığıyla yaygın çerçeveler (örneğin, scikit-learn, TensorFlow, PyTorch ve ONNX) için kullanıma hazır çıkarım sağlar.
  • Düşük kodlu dağıtım, dağıtım için makine öğrenmesi modelinizle birlikte minimum kod sağlamanıza olanak tanır.
  • BYOC dağıtımı , çevrimiçi uç noktanızı çalıştırmak için neredeyse tüm kapsayıcıları getirmenize olanak tanır. MLOps işlem hatlarınızı yönetmek için otomatik ölçeklendirme, GitOps, hata ayıklama ve güvenli dağıtım gibi tüm Azure Machine Learning platformu özelliklerini kullanabilirsiniz.

Aşağıdaki tabloda, çevrimiçi dağıtım seçenekleriyle ilgili önemli noktalar vurgulanır:

Kod yok Düşük kod KCG
Özet MLflow ve Triton aracılığıyla scikit-learn, TensorFlow, PyTorch ve ONNX gibi popüler çerçeveler için kullanıma hazır çıkarım kullanır. Daha fazla bilgi için bkz . MLflow modellerini çevrimiçi uç noktalara dağıtma. Popüler çerçeveler için güvenli, genel olarak yayımlanan görüntüleri kullanır ve güvenlik açıklarını gidermek için her iki haftada bir güncelleştirmeler yapılır. Puanlama betiği ve/veya Python bağımlılıkları sağlarsınız. Daha fazla bilgi için bkz . Azure Machine Learning Seçilmiş Ortamları. Azure Machine Learning'in özel görüntülere yönelik desteği aracılığıyla tam yığınınızı sağlarsınız. Daha fazla bilgi için bkz . Modeli çevrimiçi uç noktaya dağıtmak için özel kapsayıcı kullanma.
Özel temel görüntü Hayır, seçilmiş ortam kolay dağıtım için bunu sağlar. Evet ve Hayır, özel olarak seçilmiş görüntüyü veya özelleştirilmiş görüntünüzü kullanabilirsiniz. Evet, kapsayıcınız için ACR ile derleyebileceğiniz/gönderebileceğiniz erişilebilir bir kapsayıcı görüntüsü konumu (örneğin, docker.io, Azure Container Registry (ACR) veya Microsoft Container Registry (MCR)) veya bir Dockerfile getirin.
Özel bağımlılıklar Hayır, seçilmiş ortam kolay dağıtım için bunu sağlar. Evet, modelin çalıştığı Azure Machine Learning ortamını getirin; Conda bağımlılıklarına sahip bir Docker görüntüsü veya dockerfile. Evet, bu kapsayıcı görüntüsüne eklenir.
Özel kod Hayır, kolay dağıtım için puanlama betiği otomatik olarak oluşturulur. Evet, puanlama betiğinizi getirin. Evet, bu kapsayıcı görüntüsüne eklenir.

Not

AutoML çalıştırmaları, kullanıcılar için otomatik olarak bir puanlama betiği ve bağımlılıkları oluşturur; böylece ek kod yazmadan (kodsuz dağıtım için) herhangi bir AutoML modelini dağıtabilir veya otomatik olarak oluşturulan betikleri iş gereksinimlerinize göre değiştirebilirsiniz (düşük kodlu dağıtım için). AutoML modelleriyle dağıtmayı öğrenmek için bkz . Çevrimiçi uç nokta ile AutoML modeli dağıtma.

Çevrimiçi uç nokta hata ayıklama

Azure'a dağıtmadan önce kodunuzu ve yapılandırmanızı doğrulamak ve hatalarını ayıklamak için uç noktanızı yerel olarak test edip çalıştırmanızı kesinlikle öneririz . Azure CLI ve Python SDK'sı yerel uç noktaları ve dağıtımları desteklerken Azure Machine Learning stüdyosu ve ARM şablonu desteklemez.

Azure Machine Learning, çevrimiçi uç noktalarda yerel olarak ve kapsayıcı günlüklerini kullanarak hata ayıklamak için çeşitli yollar sağlar.

Azure Machine Learning çıkarım HTTP sunucusu ile yerel hata ayıklama

Azure Machine Learning çıkarım HTTP sunucusunu kullanarak puanlama betiğinizde yerel olarak hata ayıklayabilirsiniz. HTTP sunucusu, puanlama işlevinizi HTTP uç noktası olarak kullanıma sunan ve Flask sunucu kodunu ve bağımlılıklarını tek bir pakete sarmalayan bir Python paketidir. Azure Machine Learning ile bir modeli dağıtırken kullanılan çıkarım için önceden oluşturulmuş Docker görüntülerine dahildir. Paketi tek başına kullanarak modeli üretim için yerel olarak dağıtabilir ve ayrıca puanlama (giriş) betiğinizi yerel bir geliştirme ortamında kolayca doğrulayabilirsiniz. Puanlama betiğinde bir sorun varsa, sunucu bir hata ve hatanın oluştuğu konumu döndürür. Azure Machine Learning çıkarım HTTP sunucusuyla hata ayıklamak için Visual Studio Code da kullanabilirsiniz.

İpucu

Puanlama betiğinizde Docker Engine olmadan yerel olarak hata ayıklamak için Azure Machine Learning çıkarım HTTP sunucusu Python paketini kullanabilirsiniz. Çıkarım sunucusuyla hata ayıklama, yerel uç noktalara dağıtmadan önce puanlama betiğinin hatalarını ayıklamanıza yardımcı olur, böylece dağıtım kapsayıcısı yapılandırmalarından etkilenmeden hata ayıklayabilirsiniz.

HTTP sunucusuyla hata ayıklama hakkında daha fazla bilgi edinmek için bkz . Azure Machine Learning çıkarımı HTTP sunucusu ile hata ayıklama betiği.

Yerel uç nokta ile yerel hata ayıklama

Yerel hata ayıklama için yerel bir dağıtıma, yani yerel docker ortamına dağıtılan bir modele ihtiyacınız vardır. Bu yerel dağıtımı, buluta dağıtımdan önce test etmek ve hata ayıklamak için kullanabilirsiniz. Yerel olarak dağıtmak için Docker Altyapısı'nın yüklü ve çalışır durumda olması gerekir. Ardından Azure Machine Learning, Azure Machine Learning görüntüsünü taklit eden yerel bir Docker görüntüsü oluşturur. Azure Machine Learning sizin için yerel olarak dağıtım oluşturup çalıştırır ve hızlı yinelemeler için görüntüyü önbelleğe alır.

İpucu

Docker Altyapısı genellikle bilgisayar başlatıldığında başlar. Aksi takdirde Docker Altyapısı sorunlarını giderebilirsiniz. Kapsayıcıda gerçekleşenlerin hatalarını ayıklamak için Docker Desktop gibi istemci tarafı araçlarını kullanabilirsiniz.

Yerel hata ayıklama adımları genellikle şunları içerir:

  • Yerel dağıtımın başarılı olduğunu denetleme
  • Çıkarım için yerel uç noktayı çağırma
  • Çağırma işleminin çıktısı için günlükleri gözden geçirme

Not

Yerel uç noktaların sınırlamaları şunlardır:

  • Trafik kurallarını, kimlik doğrulamasını veya yoklama ayarlarını desteklemez.
  • Uç nokta başına yalnızca bir dağıtımı destekler.
  • Yalnızca yerel conda dosyasıyla yerel model dosyalarını ve ortamını destekler. Kayıtlı modelleri test etmek istiyorsanız, önce CLI veya SDK kullanarak bunları indirin, sonra üst klasöre başvurmak için dağıtım tanımında kullanınpath. Kayıtlı ortamları test etmek istiyorsanız, Azure Machine Learning stüdyosu ortamın bağlamını denetleyin ve kullanılacak yerel bir conda dosyası hazırlayın.

Yerel hata ayıklama hakkında daha fazla bilgi edinmek için bkz . Yerel uç nokta kullanarak yerel olarak dağıtma ve hata ayıklama.

Yerel uç nokta ve Visual Studio Code ile yerel hata ayıklama (önizleme)

Önemli

Bu özellik şu anda genel önizlemededir. Bu önizleme sürümü hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için bu sürümü önermeyiz. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir.

Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.

Yerel hata ayıklamada olduğu gibi, önce Docker Altyapısı'nın yüklü ve çalışır durumda olması ve ardından yerel Docker ortamına bir model dağıtmanız gerekir. Yerel bir dağıtımınız olduğunda, Azure Machine Learning yerel uç noktaları yerel bir hata ayıklama ortamı oluşturmak ve yapılandırmak için Docker ve Visual Studio Code geliştirme kapsayıcılarını (geliştirme kapsayıcıları) kullanır. Geliştirme kapsayıcılarıyla, Docker kapsayıcısının içinden etkileşimli hata ayıklama gibi Visual Studio Code özelliklerinden yararlanabilirsiniz.

VS Code'da çevrimiçi uç noktalarda etkileşimli hata ayıklama hakkında daha fazla bilgi edinmek için bkz . Visual Studio Code'da çevrimiçi uç noktalarda yerel olarak hata ayıklama.

Kapsayıcı günlükleriyle hata ayıklama

Dağıtım için, modelin dağıtıldığı VM'ye doğrudan erişim alamazsınız. Bununla birlikte sanal makinede çalışan bazı kapsayıcılardan günlükler alabilirsiniz. Günlükleri alabileceğiniz iki tür kapsayıcı vardır:

  • Çıkarım sunucusu: Günlükler, puanlama betiğinizden (kod) yazdırma/günlüğe kaydetme işlevlerinin çıkışını içeren konsol günlüğünü (score.pyçıkarım sunucusundan) içerir.
  • Depolama başlatıcı: Günlükler, kod ve model verilerinin kapsayıcıya başarıyla indirilip indirilmediğine ilişkin bilgiler içerir. Kapsayıcı, çıkarım sunucusu kapsayıcısı çalışmaya başlamadan önce çalışır.

Kapsayıcı günlükleriyle hata ayıklama hakkında daha fazla bilgi edinmek için bkz . Kapsayıcı günlüklerini alma.

Trafik yönlendirme ve çevrimiçi dağıtımlara yansıtma

Tek bir çevrimiçi uç noktanın birden çok dağıtımı olabileceğini hatırlayın. Uç nokta gelen trafiği (veya istekleri) aldığında, yerel mavi/yeşil dağıtım stratejisinde kullanıldığı gibi trafiğin yüzdelerini her dağıtıma yönlendirebilir. Ayrıca bir dağıtımdan diğerine trafik yansıtma veya gölgelendirme olarak da adlandırılan trafiği yansıtabilir (veya kopyalayabilir).

Mavi/yeşil dağıtım için trafik yönlendirmesi

Mavi/yeşil dağıtım, tamamen kullanıma sunmadan önce kullanıcıların veya isteklerin küçük bir alt kümesine yeni bir dağıtım (yeşil dağıtım) dağıtmanızı sağlayan bir dağıtım stratejisidir. Uç nokta, her dağıtıma trafiğin belirli yüzdelerini ayırmak için yük dengeleme uygulayabilir ve tüm dağıtımlardaki toplam ayırma %100'e kadar eklenir.

İpucu

İstek, http üst bilgisini ekleyerek yapılandırılmış trafik yükü dengelemesini azureml-model-deploymentatlayabilir. Üst bilgi değerini isteğin yönlendirmesini istediğiniz dağıtımın adı olarak ayarlayın.

Aşağıdaki görüntüde, mavi ve yeşil dağıtım arasında trafik ayırmaya yönelik Azure Machine Learning stüdyosu ayarları gösterilmektedir.

Dağıtımlar arasında trafik ayırmayı ayarlamak için kaydırıcı arabirimini gösteren ekran görüntüsü.

Bu trafik ayırma, trafiği aşağıdaki görüntüde gösterildiği gibi yönlendirir ve trafiğin %10'unun yeşil dağıtıma, %90'ının ise mavi dağıtıma gittiğini gösterir.

Trafiği iki dağıtıma bölen uç noktayı gösteren diyagram.

Çevrimiçi dağıtımlara trafik yansıtma

Uç nokta ayrıca trafiği bir dağıtımdan başka bir dağıtıma yansıtabilir (veya kopyalayabilir). Trafik yansıtma (gölge test olarak da adlandırılır), müşterilerin mevcut dağıtımlardan aldığı sonuçları etkilemeden üretim trafiğiyle yeni bir dağıtımı test etmek istediğinizde kullanışlıdır. Örneğin, trafiğin %100'ünün maviye, %10'unun ise yeşil dağıtıma yansıtıldığı bir mavi/yeşil dağıtım uygulanırken, yeşil dağıtıma yansıtılan trafiğin sonuçları istemcilere döndürülür, ancak ölçümler ve günlükler kaydedilir.

Trafiği dağıtıma yansıtan uç noktayı gösteren diyagram.

Trafik yansıtmanın nasıl kullanılacağını öğrenmek için bkz. çevrimiçi uç noktalar için Kasa dağıtımı.

Azure Machine Learning'de çevrimiçi uç noktaların diğer özellikleri

Kimlik doğrulaması ve şifreleme

  • Kimlik Doğrulaması: Anahtar ve Azure Machine Learning Belirteçleri
  • Yönetilen kimlik: Kullanıcı tarafından atanan ve sistem tarafından atanan
  • Uç nokta çağırma için varsayılan olarak SSL

Otomatik ölçeklendirme

Otomatik ölçeklendirme uygulamanızdaki yükü işlemek için tam olarak doğru miktarda kaynak çalıştırır. Yönetilen uç noktalar, Azure İzleyici otomatik ölçeklendirme özelliğiyle tümleştirme aracılığıyla otomatik ölçeklendirmeyi destekler. Ölçüm tabanlı ölçeklendirme (örneğin, CPU kullanımı >%70), zamanlama tabanlı ölçeklendirme (örneğin, yoğun iş saatleri için ölçeklendirme kuralları) veya bir birleşim yapılandırabilirsiniz.

Otomatik ölçeklendirmenin kurallara bağlı olarak minimum ve maksimum örnekler arasında esnek bir şekilde sağladığını gösteren ekran görüntüsü.

Otomatik ölçeklendirmeyi yapılandırmayı öğrenmek için bkz . Çevrimiçi uç noktaları otomatik ölçeklendirme.

Yönetilen ağ yalıtımı

Yönetilen çevrimiçi uç noktaya makine öğrenmesi modeli dağıtırken, özel uç noktaları kullanarak çevrimiçi uç noktayla iletişimin güvenliğini sağlayabilirsiniz.

Çalışma alanı ve diğer hizmetlerle gelen puanlama istekleri ve giden iletişimler için güvenliği ayrı ayrı yapılandırabilirsiniz. Gelen iletişimler, Azure Machine Learning çalışma alanının özel uç noktasını kullanır. Giden iletişimler, çalışma alanının yönetilen sanal ağı için oluşturulan özel uç noktaları kullanır.

Daha fazla bilgi için bkz . Yönetilen çevrimiçi uç noktalarla ağ yalıtımı.

Çevrimiçi uç noktaları ve dağıtımları izleme

Azure Machine Learning uç noktalarını izlemek, Azure İzleyici ile tümleştirme yoluyla mümkündür. Bu tümleştirme grafiklerdeki ölçümleri görüntülemenize, uyarıları yapılandırmanıza, günlük tablolarından sorgu oluşturmanıza, kullanıcı kapsayıcılarındaki olayları analiz etmek için Application Analizler kullanmanıza vb. olanak tanır.

  • Ölçümler: İstek gecikmesi gibi çeşitli uç nokta ölçümlerini izlemek ve dağıtım veya durum düzeyinde detaya gitmek için Azure İzleyici'yi kullanın. AYRıCA CPU/GPU kullanımı gibi dağıtım düzeyindeki ölçümleri izleyebilir ve örnek düzeyinde detaya gidebilirsiniz. Azure İzleyici, bu ölçümleri grafiklerde izlemenize ve daha fazla analiz için panolar ve uyarılar ayarlamanıza olanak tanır.

  • Günlükler: Kusto sorgu söz dizimini kullanarak günlükleri sorgulayabileceğiniz Log Analytics Çalışma Alanına ölçüm gönderin. Daha fazla işlem için ölçümleri Depolama Hesabına ve/veya Event Hubs'a da gönderebilirsiniz. Ayrıca, çevrimiçi uç noktayla ilgili olaylar, trafik ve kapsayıcı günlükleri için ayrılmış Günlük tablolarını kullanabilirsiniz. Kusto sorgusu, karmaşık çözümlemenin birden çok tabloyu birleştirmesine olanak tanır.

  • Uygulama içgörüleri: Seçilen ortamlar, Application Analizler ile tümleştirmeyi içerir ve çevrimiçi dağıtım oluştururken etkinleştirebilir/devre dışı bırakabilirsiniz. Yerleşik ölçümler ve günlükler Application Insights'a gönderilir ve daha fazla analiz için Canlı ölçümler, İşlem araması, Hatalar ve Performans gibi yerleşik özelliklerini kullanabilirsiniz.

İzleme hakkında daha fazla bilgi için bkz . Çevrimiçi uç noktaları izleme.

Çevrimiçi dağıtımlarda gizli dizi ekleme (önizleme)

Çevrimiçi dağıtım bağlamında gizli dizi ekleme, gizli dizileri (API anahtarları gibi) gizli dizi depolarından alma ve bunları çevrimiçi dağıtım içinde çalışan kullanıcı kapsayıcınıza ekleme işlemidir. Gizli dizilere ortam değişkenleri aracılığıyla erişilebilecek ve bu sayede puanlama betiğinizi çalıştıran çıkarım sunucusu veya KCG (kendi kapsayıcınızı getir) dağıtım yaklaşımıyla getirdiğiniz çıkarım yığını tarafından kullanılmaları için güvenli bir yol sağlanacaktır.

Gizli dizileri eklemenin iki yolu vardır. Yönetilen kimlikleri kullanarak gizli dizileri kendiniz ekleyebilir veya gizli dizi ekleme özelliğini kullanabilirsiniz. Gizli dizi ekleme yolları hakkında daha fazla bilgi edinmek için bkz . Çevrimiçi uç noktalara gizli dizi ekleme (önizleme).

Sonraki adımlar