CLI ile Azure Container Instances'a model dağıtma (v1)
Önemli
Bu makalede, bir modeli dağıtmak için CLI ve SDK v1'in nasıl kullanılacağı gösterilmektedir. v2 için önerilen yaklaşım için bkz . Çevrimiçi uç nokta kullanarak makine öğrenmesi modelini dağıtma ve puanlandırma.
Azure Container Instances'ta (ACI) bir modeli web hizmeti olarak dağıtmak için Azure Machine Learning'i kullanmayı öğrenin. Aşağıdaki durumlarda Azure Container Instances'i kullanın:
- kendi Kubernetes kümenizi yönetmeyi tercih etme
- Hizmetinizin çalışma süresini etkileyebilecek tek bir çoğaltması olması sorun değil mi?
ACI için kota ve bölge kullanılabilirliği hakkında bilgi için Azure Container Instances için kotalar ve bölge kullanılabilirliği makalesine bakın.
Önemli
Web hizmetine dağıtmadan önce yerel olarak hata ayıklamanız önemle tavsiye edilir. Daha fazla bilgi için bkz. Yerel Olarak Hata Ayıklama
Azure Machine Learning - Yerel Not Defterine Dağıtma konusuna da bakabilirsiniz
Önkoşullar
Azure Machine Learning çalışma alanı. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanı oluşturma.
Çalışma alanınıza kaydedilmiş bir makine öğrenmesi modeli. Kayıtlı bir modeliniz yoksa bkz . Modellerin nasıl ve nereye dağıtılacağı.
Machine Learning hizmeti, Azure Machine Learning Python SDK'sı veya Azure Machine Learning Visual Studio Code uzantısı için Azure CLI uzantısı (v1).
Önemli
Bu makaledeki Azure CLI komutlarından bazıları Azure Machine Learning için uzantısını veya v1'i kullanır
azure-cli-ml
. v1 uzantısı desteği 30 Eylül 2025'te sona erecektir. Bu tarihe kadar v1 uzantısını yükleyebilecek ve kullanabileceksiniz.30 Eylül 2025'e kadar , veya v2 uzantısına geçmenizi
ml
öneririz. v2 uzantısı hakkında daha fazla bilgi için bkz . Azure ML CLI uzantısı ve Python SDK v2.Bu makaledeki Python kod parçacıklarında aşağıdaki değişkenlerin ayarlandığı varsayılır:
ws
- Çalışma alanınıza ayarlayın.model
- Kayıtlı modelinize ayarlayın.inference_config
- Modelin çıkarım yapılandırmasına ayarlayın.
Bu değişkenleri ayarlama hakkında daha fazla bilgi için bkz . Modellerin nasıl ve nereye dağıtılacağı.
Bu makaledeki CLI kod parçacıklarında bir
inferenceconfig.json
belge oluşturduğunuz varsayılır. Bu belgeyi oluşturma hakkında daha fazla bilgi için bkz . Modellerin nasıl ve nereye dağıtılacağı.
Sınırlamalar
Azure Machine Learning çalışma alanınız özel bir uç noktayla yapılandırıldığında, sanal ağda Azure Container Instances'a dağıtım desteklenmez. Bunun yerine Ağ yalıtımına sahip yönetilen çevrimiçi uç nokta kullanmayı düşünün.
ACI'ye dağıtma
Azure Container Instances'a model dağıtmak için, gereken işlem kaynaklarını açıklayan bir dağıtım yapılandırması oluşturun. Örneğin, çekirdek sayısı ve bellek. Modeli ve web hizmetini barındırmak için gereken ortamı açıklayan bir çıkarım yapılandırmasına da ihtiyacınız vardır. Çıkarım yapılandırmasını oluşturma hakkında daha fazla bilgi için bkz . Modellerin nasıl ve nereye dağıtılacağı.
Not
- ACI, yalnızca boyutu 1 GB'ın altında olan küçük modellere uygundur.
- Daha büyük modelleri geliştirmek ve test etmek için tek düğümlü AKS kullanmanızı öneririz.
- Dağıtılacak model sayısı dağıtım başına 1.000 modelle sınırlıdır (kapsayıcı başına).
SDK’yı kullanarak
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model
deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)
Bu örnekte kullanılan sınıflar, yöntemler ve parametreler hakkında daha fazla bilgi için aşağıdaki başvuru belgelerine bakın:
Azure CLI'yı kullanma
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v1
CLI kullanarak dağıtmak için aşağıdaki komutu kullanın. değerini kayıtlı modelin adı ve sürümüyle değiştirin mymodel:1
. değerini bu hizmeti vermek için adıyla değiştirin myservice
:
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
Belgedeki deploymentconfig.json
girdiler AciWebservice.deploy_configuration parametreleriyle eşler. Aşağıdaki tabloda, JSON belgesindeki varlıklar ile yöntemi için parametreler arasındaki eşleme açıklanmaktadır:
JSON varlığı | Yöntem parametresi | Açıklama |
---|---|---|
computeType |
NA | İşlem hedefi. ACI için değeri olmalıdır ACI . |
containerResourceRequirements |
NA | CPU ve bellek varlıkları için kapsayıcı. |
cpu |
cpu_cores |
Ayrılacak CPU çekirdeği sayısı. Varsayılan 0.1 |
memoryInGB |
memory_gb |
Bu web hizmeti için ayrılacak bellek miktarı (GB cinsinden). Temerrüt 0.5 |
location |
location |
Bu Web hizmetini dağıtılacak Azure bölgesi. Belirtilmezse Çalışma alanı konumu kullanılır. Kullanılabilir bölgeler hakkında daha fazla ayrıntıya buradan ulaşabilirsiniz: ACI Bölgeleri |
authEnabled |
auth_enabled |
Bu Web hizmeti için kimlik doğrulamasının etkinleştirilip etkinleştirilmeyileceği. Varsayılan değer False'tur |
sslEnabled |
ssl_enabled |
Bu Web hizmeti için TLS'nin etkinleştirilip etkinleştirilmeyileceği. Varsayılan değer False'tur. |
appInsightsEnabled |
enable_app_insights |
Bu Web hizmeti için AppInsights'ın etkinleştirilip etkinleştirilmeyileceği. Varsayılan değer False'tur |
sslCertificate |
ssl_cert_pem_file |
TLS etkinse gereken sertifika dosyası |
sslKey |
ssl_key_pem_file |
TLS etkinse gereken anahtar dosyası |
cname |
ssl_cname |
TLS'nin etkin olup olmadığının CNAME'si |
dnsNameLabel |
dns_name_label |
Puanlama uç noktasının dns adı etiketi. Belirtilmezse puanlama uç noktası için benzersiz bir dns adı etiketi oluşturulur. |
Aşağıdaki JSON, CLI ile kullanım için örnek bir dağıtım yapılandırmasıdır:
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Daha fazla bilgi için az ml model deploy başvurusuna bakın.
VS Code'u kullanma
BKz . VS Code'da kaynakları yönetme.
Önemli
Test etmek için önceden bir ACI kapsayıcısı oluşturmanız gerekmez. ACI kapsayıcıları gerektiğinde oluşturulur.
Önemli
Oluşturulan tüm temel ACI kaynaklarına karma çalışma alanı kimliği ekleriz, aynı çalışma alanında yer alan tüm ACI adları aynı son eke sahip olur. Azure Machine Learning hizmet adı hala "service_name" sağlanan müşteriyle aynı olacaktır ve Azure Machine Learning SDK'sı API'lerine yönelik tüm kullanıcıların herhangi bir değişikliğe ihtiyacı yoktur. Oluşturulan temel kaynakların adlarıyla ilgili hiçbir garanti vermiyoruz.
Sonraki adımlar
- Özel Docker görüntüsü kullanarak model dağıtma
- Dağıtım sorunlarını giderme
- Web hizmetini güncelleştirme
- TLS kullanarak Azure Machine Learning aracılığıyla web hizmetinin güvenliğini sağlama
- Web hizmeti olarak dağıtılan ml modelini kullanma
- Application Insights ile Azure Machine Learning modellerinizi izleme
- Üretimde modeller için veri toplama