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

Limitações

Quando seu workspace do Azure Machine Learning é configurado com um ponto de extremidade privado, não há suporte para a implantação em Instâncias de Contêiner do Azure em uma rede virtual. Em vez disso, considere usar um ponto de extremidade online gerenciado com isolamento de rede.

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