Implementar um modelo para Azure Container Instances com a CLI (v1)

Importante

Este artigo mostra como utilizar a CLI e o SDK v1 para implementar um modelo. Para obter a abordagem recomendada para v2, veja Implementar e classificar um modelo de machine learning com um ponto final online.

Saiba como utilizar o Azure Machine Learning para implementar um modelo como um serviço Web no Azure Container Instances (ACI). Utilize Azure Container Instances se:

  • preferir não gerir o seu próprio cluster do Kubernetes
  • Não há problema em ter apenas uma única réplica do seu serviço, o que pode afetar o tempo de atividade

Para obter informações sobre a disponibilidade de quotas e regiões para o ACI, veja o artigo Quotas e disponibilidade de região para Azure Container Instances.

Importante

É altamente aconselhável depurar localmente antes de implementar no serviço Web. Para obter mais informações, consulte Depurar Localmente

Também pode consultar o Azure Machine Learning – Implementar no Bloco de Notas Local

Pré-requisitos

Limitações

Quando a área de trabalho do Azure Machine Learning é configurada com um ponto final privado, a implementação no Azure Container Instances numa VNet não é suportada. Em vez disso, considere utilizar um Ponto final gerido online com isolamento da rede.

Implementar para ACI

Para implementar um modelo para Azure Container Instances, crie uma configuração de implementação que descreva os recursos de computação necessários. Por exemplo, número de núcleos e memória. Também precisa de uma configuração de inferência, que descreva o ambiente necessário para alojar o modelo e o serviço Web. Para obter mais informações sobre como criar a configuração de inferência, veja Como e onde implementar modelos.

Nota

  • O ACI é adequado apenas para pequenos modelos com menos de 1 GB de tamanho.
  • Recomendamos a utilização do AKS de nó único para programar/testar modelos maiores.
  • O número de modelos a implementar está limitado a 1000 modelos por implementação (por contentor).

Utilizar o SDK

APLICA-SE A:SDK python 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)

Para obter mais informações sobre as classes, métodos e parâmetros utilizados neste exemplo, veja os seguintes documentos de referência:

Com a CLI do Azure

APLICA-SE A:Extensão de ml da CLI do Azure v1

Para implementar com a CLI, utilize o seguinte comando. Substitua pelo mymodel:1 nome e versão do modelo registado. Substitua myservice pelo nome a atribuir a este serviço:

az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json

As entradas no deploymentconfig.json documento mapeiam para os parâmetros de AciWebservice.deploy_configuration. A tabela seguinte descreve o mapeamento entre as entidades no documento JSON e os parâmetros do método :

Entidade JSON Parâmetro do método Description
computeType ND O destino de computação. Para o ACI, o valor tem de ser ACI.
containerResourceRequirements ND Contentor para as entidades de CPU e memória.
  cpu cpu_cores O número de núcleos de CPU a alocar. Predefinições, 0.1
  memoryInGB memory_gb A quantidade de memória (em GB) a alocar para este serviço Web. Predefinição, 0.5
location location A região do Azure onde implementar este webservice. Se não for especificada, será utilizada a localização da Área de Trabalho. Pode encontrar mais detalhes sobre as regiões disponíveis aqui: Regiões do ACI
authEnabled auth_enabled Se pretende ativar a autenticação para este webservice. Predefinições para Falso
sslEnabled ssl_enabled Se pretende ativar o SSL para este webservice. A predefinição é Falso.
appInsightsEnabled enable_app_insights Se pretende ativar o AppInsights para este webservice. Predefinições para Falso
sslCertificate ssl_cert_pem_file O ficheiro de certificado necessário se o SSL estiver ativado
sslKey ssl_key_pem_file O ficheiro de chave necessário se o SSL estiver ativado
cname ssl_cname O cname para se o SSL estiver ativado
dnsNameLabel dns_name_label A etiqueta de nome dns para o ponto final de classificação. Se não for especificada, será gerada uma etiqueta de nome dns exclusivo para o ponto final de classificação.

O seguinte JSON é um exemplo de configuração de implementação para utilização com a CLI:

{
    "computeType": "aci",
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    },
    "authEnabled": true,
    "sslEnabled": false,
    "appInsightsEnabled": false
}

Para obter mais informações, veja az ml model deploy reference (Referência de implementação do modelo az ml ).

Utilizar o VS Code

Veja como gerir recursos no VS Code.

Importante

Não tem de criar um contentor do ACI para testar antecipadamente. Os contentores do ACI são criados conforme necessário.

Importante

Anexamos o ID da área de trabalho com hash a todos os recursos do ACI subjacentes que são criados. Todos os nomes do ACI da mesma área de trabalho terão o mesmo sufixo. O nome do serviço Azure Machine Learning continuaria a ser o mesmo cliente que forneceu "service_name" e todas as APIs do SDK do Azure Machine Learning destinadas ao utilizador não precisam de qualquer alteração. Não damos garantias sobre os nomes dos recursos subjacentes que estão a ser criados.

Passos seguintes