CLI ile Azure Container Instances modeli dağıtma (v1)

Önemli

Bu makalede, cli ve SDK v1 kullanarak bir modelin nasıl dağıtılacağı gösterilmektedir. v2 için önerilen yaklaşım için bkz. Çevrimiçi uç nokta kullanarak makine öğrenmesi modelini dağıtma ve puan etme.

Azure Machine Learning'i kullanarak modeli Azure Container Instances(ACI) üzerinde web hizmeti olarak dağıtmayı öğrenin. Aşağıdakiler için Azure Container Instances kullanın:

  • kendi Kubernetes kümenizi yönetmeyi tercih etme
  • Hizmetinizin yalnızca tek bir çoğaltması olabilir ve bu da çalışma süresini etkileyebilir

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

Sınırlamalar

Azure Machine Learning çalışma alanınız özel 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

Modeli Azure Container Instances dağıtmak için gereken işlem kaynaklarını açıklayan bir dağıtım yapılandırması oluşturun. Örneğin, çekirdek ve bellek sayısı. 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

ŞUNLAR 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 hizmete vermek için şunun 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öntemine yönelik parametreler arasındaki eşleme açıklanmaktadır:

JSON varlığı Yöntem parametresi Açıklama
computeType NA Bilgi iş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). Varsayılan 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 şuradan 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 SSL'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 SSL etkinse gereken sertifika dosyası
sslKey ssl_key_pem_file SSL etkinse gereken anahtar dosyası
cname ssl_cname SSL'nin etkin olup olmadığının cname değeri
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 bkz. az ml model deploy başvurusu.

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 hizmeti adı hala "service_name" sağlanan müşteriyle aynı olacaktır ve Azure Machine Learning SDK 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