Implantar um modelo nas Instâncias de Contêiner do Azure com a CLI (v1)
Importante
Este artigo mostra como usar a CLI e o SDK v1 para implantar um modelo. Para obter a abordagem recomendada para v2, confira Implantar e pontuar um modelo de machine learning usando um ponto de extremidade online.
Saiba como usar o Azure Machine Learning para implantar um modelo como um serviço Web nas Instâncias de Contêiner do Azure (ACI). Use as Instâncias de Contêiner do Azure caso:
- prefira não gerenciar seu próprio cluster Kubernetes
- Concordo em ter apenas uma única réplica do seu serviço, o que pode afetar o tempo de atividade
Para ver a disponibilidade de região e cotas para a ACI, consulte o documento Cotas e disponibilidade de região para Instâncias de Contêiner do Azure.
Importante
É altamente recomendável depurar localmente antes de implantar no serviço da web. Para obter mais informações, veja Depurar localmente
Você também pode ver o Azure Machine Learning - Implantar no notebook local
Pré-requisitos
Um Workspace do Azure Machine Learning. Para obter mais informações, confira Criar um workspace do Azure Machine Learning.
Um modelo de machine learning registrado em seu workspace. Se você não tiver um modelo registrado, confira Como e onde implantar modelos.
A extensão CLI do Azure (v1) para o serviço Machine Learning, o SDK do Azure Machine Learning para Python ou a extensão Visual Studio Code do Azure Machine Learning.
Importante
Alguns comandos da CLI do Azure neste artigo usam a extensão
azure-cli-ml
ou v1 do Azure Machine Learning. O suporte à extensão v1 terminará em 30 de setembro de 2025. Você poderá instalar e usar a extensão v1 até essa data.Recomendamos que você faça a transição para a extensão
ml
ou v2, antes de 30 de setembro de 2025. Para obter mais informações sobre a extensão v2, confira Extensão da CLI do Azure ML e SDK do Python v2.Os snippets de código Python neste artigo pressupõem que as seguintes variáveis estejam definidas:
ws
- Defina para seu workspace.model
- Defina para o modelo registrado.inference_config
– Defina para a configuração de inferência do modelo.
Para obter mais informações sobre como definir essas variáveis, confira Como e onde implantar modelos.
Os snippets da CLI neste artigo pressupõem que você criou um documento
inferenceconfig.json
. Para obter mais informações sobre como criar esse documento, confira Como e onde implantar modelos.
Limitações
Observação
- Não há suporte para a implantação de Instâncias de Contêiner do Azure em uma rede virtual. Em vez disso, para isolamento de rede, considere usar pontos de extremidade online gerenciados.
- Para garantir o suporte efetivo, é essencial fornecer os logs necessários para seus contêineres de ACI. Sem esses logs, o suporte técnico não pode ser garantido. É recomendável usar as ferramentas de análise de log especificando
enable_app_insights=True
em sua configuração de implantação para gerenciar e analisar os logs de contêiner da ACI com eficiência.
Implantar no ACI
Para implantar um modelo nas Instâncias de Contêiner do Azure, crie uma configuração de implantação que descreva os recursos de computação necessários. Por exemplo, o número de núcleos e a memória. Você também precisa de uma configuração de inferência, que descreve o ambiente necessário para hospedar o modelo e o serviço Web. Para obter mais informações sobre como criar a configuração de inferência, confira Como e onde implantar modelos.
Observação
- A ACI é adequada apenas para modelos pequenos com menos de 1 GB de tamanho.
- É recomendável usar o AKS de nó único para testar e desenvolver modelos maiores.
- O número de modelos a serem implantados é limitado a 1.000 modelos por implantação (por contêiner).
Usar o SDK
APLICA-SE A: SDK do Python do 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, os métodos e os parâmetros usados neste exemplo, confira os seguintes documentos de referência:
Usando a CLI do Azure
APLICA-SE A: Extensão ML da CLI do Azure v1
Para implantar usando a CLI, use o comando a seguir. Substituir mymodel:1
pelo nome e versão do modelo registrado. Substitua myservice
pelo nome para fornecer este serviço:
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
As entradas no documento deploymentconfig.json
são mapeadas para os parâmetros de AciWebservice.deploy_configuration. A seguinte tabela descreve o mapeamento entre as entidades no documento JSON e os parâmetros do método:
Entidade JSON | Parâmetro de método | Descrição |
---|---|---|
computeType |
NA | O destino de computação. Para o ACI, o valor precisa ser ACI . |
containerResourceRequirements |
NA | Contêiner para as entidades de CPU e de memória. |
cpu |
cpu_cores |
O número de núcleos de CPU a serem alocados. Padrões, 0.1 |
memoryInGB |
memory_gb |
A quantidade de memória (em GB) a ser alocada para esse serviço Web. Padrão, 0.5 |
location |
location |
A região do Azure na qual implantar esse serviço Web. Se não for especificado, o local do workspace será usado. Mais detalhes sobre as regiões disponíveis podem ser encontrados aqui: Regiões do ACI |
authEnabled |
auth_enabled |
Se a autenticação deve ser habilitada para esse serviço Web. Usa False como padrão |
sslEnabled |
ssl_enabled |
Se deve ativar o TLS para este Webservice. Usa False como padrão. |
appInsightsEnabled |
enable_app_insights |
Se o AppInsights deve ser habilitado para esse serviço Web. Usa False como padrão |
sslCertificate |
ssl_cert_pem_file |
O arquivo de certificado necessário se o TLS estiver habilitado |
sslKey |
ssl_key_pem_file |
O arquivo-chave necessário se o TLS estiver habilitado |
cname |
ssl_cname |
O CNAME para se o TLS estiver habilitado |
dnsNameLabel |
dns_name_label |
O rótulo de nome DNS do ponto de extremidade de pontuação. Se ele não for especificado, um rótulo de nome DNS exclusivo será gerado para o ponto de extremidade de pontuação. |
O seguinte JSON é um exemplo de configuração de implantação a ser usada com a CLI:
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Para obter mais informações, confira a referência Implantação do modelo AZ ML.
Usar o VS Code
Confira como gerenciar recursos no VS Code.
Importante
Não é necessário criar um contêiner de ACI para testar com antecedência. Os contêineres de ACI são criados conforme necessário.
Importante
Anexamos a ID do workspace com hash a todos os recursos de ACI subjacentes que são criados. Todos os nomes de ACI do mesmo workspace terão o mesmo sufixo. O nome de serviço do Azure Machine Learning de usuário ainda será o mesmo "service_name" fornecido pelo cliente e nenhuma das APIs do SDK voltadas para Azure Machine Learning usuário precisa de qualquer alteração. Não damos nenhuma garantia sobre os nomes dos recursos subjacentes que estão sendo criados.
Próximas etapas
- Como implantar um modelo usando uma imagem personalizada do Docker
- Solução de problemas de implantação
- Atualizar o serviço Web
- Use o TLS para proteger um serviço Web por meio do Azure Machine Learning
- Consumir um modelo de ML implantado como um serviço Web
- Monitorar seus modelos do Azure Machine Learning com o Application Insights
- Coletar dados para modelos em produção