Implantar um modelo em instâncias de contêiner do Azure com 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, consulte Implantar e pontuar um modelo de aprendizado de máquina usando um ponto de extremidade online.
Saiba como usar o Aprendizado de Máquina do Azure para implantar um modelo como um serviço Web em Instâncias de Contêiner do Azure (ACI). Use as Instâncias de Contêiner do Azure se:
- prefira não gerenciar seu próprio cluster 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 cota e região para ACI, consulte o artigo 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 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, consulte Criar um espaço de trabalho do Azure Machine Learning.
Um modelo de aprendizagem automática registado na sua área de trabalho. Se você não tiver um modelo registrado, consulte Como e onde implantar modelos.
A extensão da CLI do Azure (v1) para o serviço de Aprendizado de Máquina, o SDK Python do Azure Machine Learning ou a extensão de Código do Azure Machine Learning Visual Studio.
Importante
Alguns dos comandos da CLI do Azure neste artigo usam a extensão , ou v1, para o
azure-cli-ml
Azure Machine Learning. O suporte para a 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
ml
extensão , ou v2, antes de 30 de setembro de 2025. Para obter mais informações sobre a extensão v2, consulte Extensão CLI do Azure ML e Python SDK v2.Os trechos de código Python neste artigo assumem que as seguintes variáveis estão definidas:
ws
- Defina para o seu espaço de trabalho.model
- Defina para o seu modelo registado.inference_config
- Definir para a configuração de inferência para o modelo.
Para obter mais informações sobre como definir essas variáveis, consulte Como e onde implantar modelos.
Os trechos da CLI neste artigo pressupõem que você criou um
inferenceconfig.json
documento. Para obter mais informações sobre como criar este documento, consulte Como e onde implantar modelos.
Limitações
Nota
- 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 o uso de pontos de extremidade online gerenciados.
- Para garantir um suporte eficaz, é essencial fornecer os logs necessários para seus contêineres ACI. Sem esses registros, o suporte técnico não pode ser garantido. É recomendável usar ferramentas de análise de log especificando
enable_app_insights=True
em sua configuração de implantação para gerenciar e analisar seus logs de contêiner ACI de forma eficiente.
Implementar para ACI
Para implantar um modelo em 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, número de núcleos e 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, consulte Como e onde implantar 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: 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)
Para obter mais informações sobre as classes, métodos e parâmetros usados neste exemplo, consulte os seguintes documentos de referência:
Com a CLI do Azure
APLICA-SE A: Azure CLI ml extension v1
Para implantar usando a CLI, use o seguinte comando. Substitua mymodel:1
pelo nome e versão do modelo registado. Substitua myservice
pelo nome para dar este serviço:
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
As entradas no deploymentconfig.json
documento são mapeadas para os parâmetros para AciWebservice.deploy_configuration. A tabela a seguir descreve o mapeamento entre as entidades no documento JSON e os parâmetros para o método:
Entidade JSON | Parâmetro do método | Description |
---|---|---|
computeType |
ND | O destino de computação. Para ACI, o valor deve ser ACI . |
containerResourceRequirements |
ND | Contêiner para as entidades de CPU e memória. |
cpu |
cpu_cores |
O número de núcleos de CPU a alocar. Incumprimentos, 0.1 |
memoryInGB |
memory_gb |
A quantidade de memória (em GB) a alocar para este serviço Web. Padrão, 0.5 |
location |
location |
A região do Azure na qual implantar este WebService. Se não for especificado, o local do espaço de trabalho será usado. Mais detalhes sobre as regiões disponíveis podem ser encontrados aqui: Regiões ACI |
authEnabled |
auth_enabled |
Se a autenticação deve ser ativada para este WebService. Padrão para False |
sslEnabled |
ssl_enabled |
Se o TLS deve ser habilitado para este WebService. O padrão é False. |
appInsightsEnabled |
enable_app_insights |
Se o AppInsights deve ser habilitado para este WebService. Padrão para False |
sslCertificate |
ssl_cert_pem_file |
O arquivo cert necessário se o TLS estiver habilitado |
sslKey |
ssl_key_pem_file |
O arquivo de 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 do nome dns para o ponto de extremidade de pontuação. Se não for especificado, um rótulo de nome dns exclusivo será gerado para o ponto de extremidade de pontuação. |
O JSON a seguir é um exemplo de configuração de implantação para uso com a CLI:
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Para obter mais informações, consulte a referência az ml model deploy .
Utilizar o VS Code
Veja como gerenciar 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
Acrescentamos o ID do espaço de trabalho com hash a todos os recursos ACI subjacentes que são criados, todos os nomes ACI do mesmo espaço de trabalho terão o mesmo sufixo. O nome do serviço Azure Machine Learning ainda seria o mesmo "service_name" fornecido pelo cliente e todos os usuários voltados para APIs do SDK do Azure Machine Learning não precisam de nenhuma alteração. Não damos garantias sobre os nomes dos recursos subjacentes que estão a ser criados.
Próximos passos
- Como implantar um modelo usando uma imagem personalizada do Docker
- Solução de problemas de implantaçã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 implantado como um serviço Web
- Monitore seus modelos do Azure Machine Learning com o Application Insights
- Recolher dados para modelos em produção