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
Uma área de trabalho do Azure Machine Learning. Para obter mais informações, veja Criar uma área de trabalho do Azure Machine Learning.
Um modelo de machine learning registado na sua área de trabalho. Se não tiver um modelo registado, veja Como e onde implementar modelos.
A extensão da CLI do Azure (v1) para o serviço Machine Learning, o SDK Python do Azure Machine Learning ou a extensão do Visual Studio Code do Azure Machine Learning.
Importante
Alguns dos comandos da CLI do Azure neste artigo utilizam a
azure-cli-ml
extensão , ou v1, para o Azure Machine Learning. O suporte para a extensão v1 terminará a 30 de setembro de 2025. Poderá instalar e utilizar a extensão v1 até essa data.Recomendamos que faça a transição para a
ml
extensão , ou v2, antes de 30 de setembro de 2025. Para obter mais informações sobre a extensão v2, veja Extensão da CLI do Azure ML e SDK Python v2.Os fragmentos de código Python neste artigo partem do princípio de que as seguintes variáveis estão definidas:
ws
- Defina para a área de trabalho.model
- Defina como o modelo registado.inference_config
- Defina para a configuração de inferência do modelo.
Para obter mais informações sobre como definir estas variáveis, veja Como e onde implementar modelos.
Os fragmentos da CLI neste artigo partem do princípio de que criou um
inferenceconfig.json
documento. Para obter mais informações sobre como criar este documento, veja Como e onde implementar modelos.
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
- Como implementar um modelo com uma imagem personalizada do Docker
- Resolução de problemas de implementação
- Atualizar o serviço Web
- Utilizar o TLS para proteger um serviço Web através do Azure Machine Learning
- Consumir um Modelo de ML implementado como um serviço Web
- Monitorizar os modelos do Azure Machine Learning com o Application Insights
- Recolher dados para modelos em produção