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-mlAzure 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 mlextensã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

Quando seu espaço de trabalho do Azure Machine Learning é configurado com um ponto de extremidade privado, a implantação em Instâncias de Contêiner do Azure em uma rede virtual não é suportada. Em vez disso, considere utilizar um Ponto final gerido online com isolamento da rede.

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