Depurar pontos de extremidade online localmente Visual Studio Code

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Saiba como usar o depurador do Microsoft Visual Studio Code para testar e depurar pontos de extremidade online localmente antes de implantá-los no Azure.

Pontos de extremidade locais do Azure Machine Learning ajudam você a testar e depurar o script de pontuação, a configuração do ambiente, a configuração de código e o modelo de machine learning localmente.

Importante

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos.

Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Depurar pontos de extremidade localmente antes de implantá-los na nuvem pode ajudar você a capturar erros em seu código e configuração anteriormente. Há diferentes opções para depurar pontos de extremidade localmente com o Visual Studio Code.

Este guia se concentra nos pontos de extremidade locais.

A tabela a seguir fornece uma visão geral dos cenários para ajudar você a escolher o mais adequado.

Cenário Servidor HTTP de inferência Ponto de extremidade local
Atualizar o ambiente Python local, sem a recomposição de imagem do Docker Sim Não
Criar script de pontuação Sim Sim
Atualizar configurações de implantação (implantação, ambiente, código, modelo) Não Sim
Integração do depurador do Visual Studio Code Sim Sim

Pré-requisitos

Este guia pressupõe que você tenha os itens a seguir instalados localmente em seu computador.

Para obter mais informações, consulte o guia sobre como preparar seu sistema para implantar pontos de extremidade online.

Os exemplos neste artigo baseiam-se em exemplos de código contidos no repositório do GitHub azureml-examples. Para executar os comandos localmente sem precisar copiar/colar o YAML e outros arquivos, clone o repositório e altere os diretórios para azureml-examples/cli:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Se você ainda não definiu os padrões da CLI do Azure, salve as configurações padrão. Para evitar passar os valores para sua assinatura, espaço de trabalho e grupo de recursos várias vezes, use os seguintes comandos. Substitua os seguintes parâmetros por valores para a sua configuração específica:

  • Substitua <subscription> por sua ID da assinatura do Azure.
  • Substitua <workspace> pelo nome do workspace do Azure Machine Learning.
  • Substitua <resource-group> pelo grupo de recursos do Azure que contém o workspace.
  • Substitua <location> pela região do Azure que contém o workspace.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Dica

Para ver quais são seus padrões atuais, use o comando az configure -l.

Iniciar contêiner de desenvolvimento

Os pontos de extremidade locais do Azure Machine Learning usam contêineres de desenvolvimento do Docker e do Visual Studio Code para criar e configurar um ambiente de depuração local. Com contêineres de desenvolvimento, é possível aproveitar os recursos do Visual Studio Code dentro de um contêiner do Docker. Para obter mais informações sobre contêineres de desenvolvimento, consulte Criar um contêiner de desenvolvimento.

Para depurar pontos de extremidade online localmente no Visual Studio Code, utilize o sinalizador --vscode-debug ao criar ou atualizar uma implantação online do Azure Machine Learning. O comando a seguir usa um exemplo de implantação do repositório de exemplos:

az ml online-deployment create --file endpoints/online/managed/sample/blue-deployment.yml --local --vscode-debug

Importante

No WSL (Subsistema do Windows para Linux), é necessário atualizar a variável de ambiente PATH para incluir o caminho para o executável do Visual Studio Code ou usar a interoperabilidade do WSL. Para obter mais informações, consulte a interoperabilidade do Windows com Linux.

Uma imagem do Docker é criada localmente. Qualquer configuração de ambiente ou erros de arquivo de modelo aparecem nesta fase do processo.

Observação

Pode levar muitos minutos ao iniciar um contêiner de desenvolvimento novo ou atualizado pela primeira vez.

Depois que a imagem for criada, o contêiner de desenvolvimento será aberto em uma janela do Visual Studio Code.

Você usará algumas extensões do Visual Studio Code para depurar as implantações no contêiner de desenvolvimento. O Azure Machine Learning instala automaticamente essas extensões em seu contêiner dev.

Importante

Antes de iniciar a sessão de depuração, verifique se as extensões do Visual Studio Code foram instaladas no contêiner de desenvolvimento.

Iniciar a sessão de depuração

Depois que o ambiente estiver configurado, use o depurador do Visual Studio Code para testar e depurar a implantação localmente.

  1. Abra o script de pontuação no Visual Studio Code.

    Dica

    O script score.py usado pelo ponto de extremidade implantado anteriormente está localizado em azureml-samples/cli/endpoints/online/managed/sample/score.py, no repositório clonado. No entanto, as etapas neste guia funcionam com qualquer script de pontuação.

  2. Defina um ponto de interrupção em qualquer lugar do script de pontuação.

    • Para depurar o comportamento de inicialização, coloque seus pontos de interrupção dentro da função init.
    • Para depurar o comportamento da pontuação, coloque seus pontos de interrupção dentro da função run.
  3. Selecione a exibição “Trabalho do Visual Studio Code”.

  4. No menu suspenso Executar e depurar, selecione AzureML: depurar ponto de extremidade local para começar a depurar o ponto de extremidade localmente.

    Na seção Pontos de Interrupção da exibição Executar, verifique se:

    • Exceções Ativas está desmarcada
    • Exceções Não Capturadas está desmarcada

    Captura de tela mostrando como configurar o perfil de depuração do ambiente local de depuração do Azure Machine Learning.

  5. Selecione o ícone de reprodução próximo ao menu suspenso Executar e depurar para iniciar a sessão de depuração.

    Neste ponto, todos os pontos de interrupção na função init são capturados. Use as ações de depuração para passar pelo código. Para obter mais informações sobre ações de depuração, consulte o guia de ações de depuração.

Para saber mais sobre o depurador do Visual Studio Code, confira Depuração.

Depurar o ponto de extremidade

Agora que seu aplicativo está em execução no depurador, tente fazer uma previsão para depurar o script de pontuação.

Use o comando ml de extensão invoke para fazer uma solicitação ao ponto de extremidade local.

az ml online-endpoint invoke --name <ENDPOINT-NAME> --request-file <REQUEST-FILE> --local

Nesse caso, <REQUEST-FILE> é um arquivo JSON que contém exemplos de dados de entrada para o modelo fazer previsões semelhantes ao seguinte JSON:

{"data": [
    [1,2,3,4,5,6,7,8,9,10], 
    [10,9,8,7,6,5,4,3,2,1]
]}

Dica

O URI de pontuação é o endereço em que o ponto de extremidade escuta solicitações. Use a extensão ml para obter o URI de pontuação.

az ml online-endpoint show --name <ENDPOINT-NAME> --local

O resultado deve ser semelhante ao seguinte:

{
 "auth_mode": "aml_token",
 "location": "local",
 "name": "my-new-endpoint",
 "properties": {},
 "provisioning_state": "Succeeded",
 "scoring_uri": "http://localhost:5001/score",
 "tags": {},
 "traffic": {},
 "type": "online"
}

O URI de pontuação pode ser encontrado na propriedade scoring_uri.

Neste ponto, todos os pontos de interrupção na função run são capturados. Use as ações de depuração para passar pelo código. Para obter mais informações sobre ações de depuração, consulte o guia de ações de depuração.

Editar o ponto de extremidade

À medida que você depura e soluciona problemas de seu aplicativo, há cenários em que você precisa atualizar o script de pontuação e as configurações.

Para aplicar alterações ao seu código:

  1. Atualize o código.
  2. Reinicie a sessão de depuração usando o comando Developer: Reload Window na paleta de comandos. Para obter mais informações, consulte a documentação da paleta de comandos.

Observação

Como o diretório que contém o código e os ativos do ponto de extremidade é montado no contêiner de desenvolvimento, todas as alterações feitas no contêiner de desenvolvimento são sincronizadas com o sistema de arquivos local.

Para alterações mais abrangentes que envolvem atualizações em seu ambiente e configuração de ponto de extremidade, use o comando ml da extensão update. Isso aciona uma recompilação completa da imagem com suas alterações.

az ml online-deployment update --file <DEPLOYMENT-YAML-SPECIFICATION-FILE> --local --vscode-debug

Depois que a imagem atualizada for criada e o contêiner de desenvolvimento for iniciado, use o depurador do Visual Studio Code para testar e solucionar problemas do ponto de extremidade atualizado.