Como o Azure Machine Learning funciona: arquitetura e conceitos (v1)

APLICA-SE A:Extensão de ML da CLI do Azure v1SDK do Python azureml v1

Este artigo se aplica à primeira versão (v1) do SDK e da CLI do Azure Machine Learning. Para a versão dois (v2), confira Como o Azure Machine Learning funciona (v2).

Saiba mais sobre a arquitetura e os conceitos do Azure Machine Learning. Este artigo fornece uma compreensão de alto nível dos componentes e como eles trabalham juntos para ajudar no processo de criação, implantação e manutenção de modelos de machine learning.

Workspace

Um workspace do machine learning é o recurso de nível superior do Azure Machine Learning.

Diagrama: arquitetura do Azure Machine Learning de um workspace e os respectivos componentes

O workspace é o local centralizado para:

Um workspace inclui outros recursos do Azure que são usados pelo workspace:

  • ACR (Registro de Contêiner do Azure): registra os contêineres do docker que são usados durante o treinamento e ao implantar um modelo. Para minimizar os custos, o ACR só será criado quando as imagens de implantação forem criadas.
  • Conta de Armazenamento do Azure: é usada como o armazenamento de dados padrão para o workspace. Os notebooks do Jupyter que são usados com suas instâncias de computação do Azure Machine Learning também são armazenados aqui.
  • Azure Application Insights: armazena informações de monitoramento sobre os seus modelos.
  • Azure Key Vault: armazena segredos usados por destinos de computação e outras informações confidenciais necessárias para o workspace.

Você pode compartilhar um workspace com outras pessoas.

Computações

Um destino de computação é qualquer computador ou conjunto de computadores usados executar o script de treinamento ou hospedar a implantação do serviço. Você pode usar o seu computador local ou um recurso de computação remota como um destino de computação. Com os destinos de computação, você pode iniciar o treinamento no seu computador local e escalá-lo horizontalmente para a nuvem sem alterar o script de treinamento.

O Azure Machine Learning apresenta duas VMs (máquinas virtuais) baseadas em nuvem totalmente gerenciadas que são configuradas para tarefas de machine learning:

  • Compute instance:Uma instância de computação é uma VM que inclui várias ferramentas e ambientes instalados para machine learning. O principal uso de uma instância de computação é para a estação de trabalho de desenvolvimento. Você pode começar a executar notebooks de exemplo sem a necessidade de instalação. Uma instância de computação também pode ser usada como um destino de computação para trabalhos de treinamento e inferência.

  • Clusters de computação: os clusters de computação são um cluster de VMs com funcionalidade de escala de vários nós. Os clusters de computação são mais adequados para destinos de computação em produção e trabalhos grandes. O cluster é escalado verticalmente de modo automático quando um trabalho é enviado. Use como um destino de computação de treinamento ou para a implantação de desenvolvimento/teste.

Para obter mais informações sobre o treinamento de destinos de computação, confira Treinamento de destinos de computação. Para obter mais informações sobre destinos de computação de implantação, confira Destinos de implantação.

Conjuntos de dados e armazenamentos de dados

Os conjuntos de dados do Azure Machine Learning facilitam o acesso aos dados e o trabalho com eles. Ao criar um conjunto de dados, você cria uma referência para a localização da fonte de dados com uma cópia dos metadados. Como os dados permanecem na localização existente, você não tem nenhum custo de armazenamento adicional e não arrisca a integridade das suas fontes de dados.

Para obter mais informações, confira Criar e registrar conjuntos de dados do Azure Machine Learning. Para obter mais exemplos do uso de conjuntos de dados, confira os exemplos de notebooks.

Os conjuntos de dados usam armazenamento de dados para se conectar com segurança aos serviços de armazenamento do Azure. Os armazenamentos de dados armazenam informações de conexão sem colocar as suas credenciais de autenticação e a integridade da fonte de dados original em risco. Eles armazenam informações de conexão, como sua ID de assinatura e a autorização de token no Key Vault associadas ao workspace, para que você possa acessar o armazenamento com segurança sem ter que embuti-los em código nos seus scripts.

Ambientes

Workspace>Ambientes

Um ambiente é o encapsulamento do ambiente em que ocorre o treinamento ou a pontuação do seu modelo de machine learning. O ambiente especifica os pacotes Python, as variáveis de ambiente e as configurações de software em relação aos scripts de treinamento e de pontuação.

Para obter exemplos de código, confira a seção "Gerenciar ambientes" de Como usar ambientes.

Testes

Workspace>Experimentos

Um experimento é um agrupamento de diversas execuções de um determinado script. Ele sempre pertence a um workspace. Quando você envia uma execução, você pode fornecer um nome de experimento. As informações para a execução são armazenadas nesse experimento. Se o nome não existir quando você enviar um experimento, um experimento será criado automaticamente.

Para obter um exemplo do uso de um experimento, confira Tutorial: treinar seu primeiro modelo.

Execuções

Workspace>Experimentos>Executar

Uma execução é uma execução única de um script de treinamento. Um experimento normalmente conterá várias execuções.

O Azure Machine Learning registra todas as execuções e armazena as seguintes informações no experimento:

  • Metadados sobre a execução (carimbo de hora, duração, etc.)
  • Métricas registradas pelo seu script
  • Arquivos de saída coletados automaticamente pelo experimento ou carregados explicitamente por você
  • Um instantâneo do diretório que contém seus scripts, antes da execução

Uma execução é produzida quando você envia um script para fazer o treinamento de um modelo. Uma execução pode ter zero ou mais execuções filho. Por exemplo, a execução de nível superior pode ter duas execuções filho, cada uma delas pode ter sua próprias execuções filho.

Configurações de execução

Workspace>Experimentos>Executar>Configuração de execução

Uma configuração de execução define como um script deve ser executado em um destino de computação especificado. Você usa a configuração para especificar o script, o destino de computação e o ambiente do Azure Machine Learning para execução, as configurações específicas do trabalho distribuído e algumas propriedades adicionais. Para obter mais informações sobre o conjunto completo de opções configuráveis para execuções, confira ScriptRunConfig.

Uma configuração de execução pode ser persistida em um arquivo dentro do diretório que contém o script de treinamento. Ou pode ser construída como um objeto na memória e usado para enviar uma execução.

Para obter exemplos de configurações de execução, confira Configurar uma execução de treinamento.

Instantâneos

Workspace>Experimentos>Executar>Instantâneo

Ao enviar uma execução, o Azure Machine Learning compacta o diretório que contém o script como um arquivo zip e o envia para o destino de computação. O arquivo zip é expandido e o script é executado lá. O Azure Machine Learning também armazena o arquivo zip como um instantâneo como parte do registro de execução. Qualquer pessoa com acesso ao workspace pode procurar um registro de execução e baixar o instantâneo.

Log

O Azure Machine Learning registra automaticamente as métricas de execução padrão para você. No entanto, você também pode usar o SDK do Python para registrar métricas arbitrárias.

Há várias maneiras de exibir os seus logs: monitorando o status de execução em tempo real ou exibindo os resultados após a conclusão. Para obter mais informações, confira Monitorar e exibir os logs de execução do ML.

Observação

Para evitar que arquivos desnecessários sejam incluídos no instantâneo, faça uma opção Ignorar arquivo (.gitignore ou .amlignore) no diretório. Adicione os arquivos e diretórios a serem excluídos para esse arquivo. Para obter mais informações sobre a sintaxe a ser usada dentro desse arquivo, consulte sintaxe e padrões para .gitignore. O arquivo .amlignore usa a mesma sintaxe. Se ambos os arquivos existirem, o arquivo .amlignore será usado e o arquivo .gitignore não será usado.

Acompanhamento e integração do Git

Quando você inicia uma execução de treinamento em que o diretório de origem é um repositório Git local, as informações sobre o repositório são armazenadas no histórico de execuções. Isso funciona com as execuções enviadas usando uma configuração de execução de script ou um pipeline de ML. Também funciona para execuções enviadas do SDK ou da CLI do Machine Learning.

Para obter mais informações, confira Integração do Git com o Azure Machine Learning.

Fluxo de trabalho do treinamento

Quando você executar um experimento para treinar um modelo, as etapas a seguir serão realizadas. Elas são ilustradas no diagrama de fluxo de trabalho de treinamento abaixo:

  • O Azure Machine Learning é chamado com a ID de instantâneo do instantâneo de código salvo na seção anterior.

  • O Azure Machine Learning cria uma ID de execução (opcional) e um token de serviço do Machine Learning, que é usado posteriormente por destinos de computação como Computação do Machine Learning/VMs para se comunicar com o serviço do Machine Learning.

  • Para executar trabalhos de treinamento, você pode escolher um destino de computação gerenciado (como Computação do Machine Learning) ou um destino de computação não gerenciado (como VMs). Veja os fluxos de dados para ambos os cenários:

    • VMs/HDInsight acessadas por credenciais SSH em um cofre de chaves na assinatura da Microsoft. O Azure Machine Learning executa o código de gerenciamento no destino de computação que:
    1. Prepara o ambiente. (O Docker é uma opção para VMs e computadores locais. Consulte as etapas a seguir para a Computação do Machine Learning entender como funciona a execução de experimentos em contêineres do Docker.)
    2. Baixa o código.
    3. Define as configurações e variáveis do ambiente.
    4. Executa scripts de usuário (o instantâneo de código mencionado na seção anterior).
    • A Computação do Machine Learning, acessada por meio de uma identidade gerenciada por workspace. Como a Computação do Machine Learning é um destino de computação gerenciado (ou seja, é gerenciado pela Microsoft), ela é executada em sua assinatura da Microsoft.
    1. A construção remota do Docker é inicializada, se for necessário.
    2. O código de gerenciamento é gravado no compartilhamento de Arquivos do Azure do usuário.
    3. O contêiner é iniciado com um comando inicial. Ou seja, o código de gerenciamento, conforme descrito na etapa anterior.
  • Após a execução ser concluída, você poderá consultar as métricas e as execuções. No diagrama de fluxo abaixo, essa etapa ocorre quando o destino de computação de treinamento grava as métricas de execução de volta ao Azure Machine Learning a partir do armazenamento no banco de dados do Azure Cosmos DB. Os clientes podem chamar o Azure Machine Learning. O Machine Learning, por sua vez, transformará as métricas de pull do banco de dados do Azure Cosmos DB e as retornará ao cliente.

Fluxo de trabalho do treinamento

Modelos

Em sua forma mais simples, um modelo é um trecho de código que usa uma entrada e produz uma saída. Criar um modelo de machine learning envolve selecionar um algoritmo, fornecer dados a ele e ajustar hiperparâmetros. O treinamento é um processo iterativo que produz um modelo treinado, que encapsula o modelo aprendido durante o processo de treinamento.

Você também pode trazer um modelo que foi treinado fora do Azure Machine Learning. Ou você pode treinar um modelo enviando uma execução de um experimento para um destino de computação no Azure Machine Learning. Quando você tiver um modelo, registre-o no workspace.

O Azure Machine Learning é independente do framework. Quando você cria um modelo, pode usar qualquer estrutura de aprendizado de máquina conhecida, como Scikit-learn, XGBoost, PyTorch, TensorFlow e Chainer.

Para obter um exemplo de treinamento de um modelo usando o Scikit-learn, confira Tutorial: Treinar um modelo de classificação de imagem com o Azure Machine Learning.

Registro de modelo

Workspace>Modelos

O registro de modelos permite que você monitore todos os modelos no seu workspace do Azure Machine Learning.

Os modelos são identificados por nome e versão. Cada vez que você registra um modelo com o mesmo nome de um já existente, o registro pressupõe que se trata de uma nova versão. A versão é incrementada e o novo modelo é registrado com o mesmo nome.

Você pode fornecer as marcas de metadados adicionais quando registrar o modelo e, em seguida, usar essas marcas ao procurar pelos modelos.

Dica

Um modelo registrado é um contêiner lógico para um ou mais arquivos que compõem seu modelo. Por exemplo, se você tiver um modelo armazenado em vários arquivos, poderá registrá-los como um único modelo em seu workspace do Azure Machine Learning. Após o registro, você pode baixar ou implantar o modelo registrado e receber todos os arquivos registrados.

Não é possível excluir um modelo registrado que está sendo usado por uma implantação ativa.

Para obter um exemplo de registro de um modelo, consulte Treinar um modelo de classificação de imagem com o Azure Machine Learning.

Implantação

Você implanta um modelo registrado como um ponto de extremidade de serviço. Você precisa dos seguintes componentes:

  • Ambiente. Esse ambiente encapsula as dependências necessárias para executar o seu modelo para inferência.
  • Código de pontuação. Esse script aceita solicitações, pontua as solicitações usando o modelo e retorna os resultados.
  • Configuração de inferência. A configuração de inferência especifica o ambiente, o script de entrada e outros componentes necessários para executar o modelo como um serviço.

Para obter mais informações sobre esses componentes, confira Implantar modelos com o Azure Machine Learning.

Pontos de extremidade

Workspace>Pontos de extremidade

Um ponto de extremidade é uma instanciação do seu modelo em um serviço Web que pode ser hospedado na nuvem.

Ponto de extremidade de serviço Web

Na implantação de um modelo como um serviço Web, o ponto de extremidade pode ser implantado em Instâncias de Contêiner do Azure, no Serviço de Kubernetes do Azure. O serviço é criado a partir de um modelo, script e arquivos associados. Eles são colocados em uma imagem de contêiner de base, que contém o ambiente de execução do modelo. A imagem tem um balanceamento de carga, ponto de extremidade HTTP que recebe as solicitações de pontuação enviadas para o serviço Web.

Você pode habilitar que a telemetria de modelo ou a telemetria do Application Insights monitore o seu serviço Web. Os dados de telemetria só podem ser acessados por você. Ele é armazenado nas suas instâncias de conta de armazenamento e no Application Insights. Se você tiver habilitado o dimensionamento automático, o Azure dimensionará automaticamente sua implantação.

O seguinte diagrama mostra o fluxo de trabalho de inferência para um modelo implantado como um ponto de extremidade de serviço Web:

Estes são os detalhes:

  • O usuário registra um modelo por meio de um cliente como o SDK do Azure Machine Learning.
  • O usuário cria uma imagem por meio de um modelo, um arquivo de pontuação e outras dependências de modelo.
  • A imagem do Docker é criada e armazenada no Registro de Contêiner do Azure.
  • O serviço Web é implantado no destino de computação (Instâncias de Contêiner/AKS) usando a imagem criada na etapa anterior.
  • Os detalhes da solicitação de pontuação são armazenados no Application Insights, o qual está na assinatura do usuário.
  • A telemetria também é enviada por push para a assinatura do Microsoft Azure.

Fluxo de trabalho da inferência

Para ver um exemplo de implantação de um modelo como um serviço Web, confira Tutorial: Treinar e implantar um modelo.

Pontos de extremidade em tempo real

Ao implantar um modelo treinado no designer, você pode implantar o modelo como um ponto de extremidade em tempo real. Um ponto de extremidade em tempo real normalmente recebe uma solicitação por meio do ponto de extremidade REST e retorna uma previsão em tempo real. Isso é diferente do processamento em lotes, que processa vários valores de uma vez e salva os resultados após a conclusão em um armazenamento de dados.

Pontos de extremidade do pipeline

Os pontos de extremidade de pipeline permitem que você chame os seus Pipelines de ML programaticamente por meio de um ponto de extremidade REST. Os pontos de extremidade de pipeline permitem automatizar os seus fluxos de trabalho de pipeline.

Um ponto de extremidade de pipeline é uma coleção de pipelines publicados. Essa organização lógica permite que você gerencie e chame vários pipelines usando o mesmo ponto de extremidade. Cada pipeline publicado em um ponto de extremidade de pipeline tem controle de versão. Você pode selecionar um pipeline padrão para o ponto de extremidade ou especificar uma versão na chamada REST.

Automação

CLI do Azure Machine Learning

A CLI do Azure Machine Learning v1 é uma extensão da CLI do Azure, uma interface de linha de comando de multiplataforma para a plataforma do Azure. Essa extensão fornece comandos para automatizar as suas atividades de machine learning.

Pipelines de ML

Os pipelines de machine learning são usados para criar e gerenciar fluxos de trabalho que juntam as fases de machine learning. Por exemplo, um pipeline pode incluir preparação de dados, treinamento de modelo, implantação de modelo e fases de inferência/pontuação. Cada fase pode incluir várias etapas, cada uma delas pode ser executada de modo autônomo em vários destinos de computação.

As etapas do pipeline são reutilizáveis e poderão ser executadas sem realizar novamente as etapas anteriores se o resultado dessas etapas não tiver sido alterado. Por exemplo, você poderá treinar novamente um modelo sem executar pela segunda vez as caras etapas de preparação de dados se os dados não forem alterados. Os pipelines também permitem que cientistas de dados colaborem enquanto trabalham em áreas separadas de um fluxo de trabalho de aprendizado de máquina.

Monitoramento e registro em log

O Azure Machine Learning fornece as seguintes funcionalidades de monitoramento e registro em log:

Interação com o seu workspace

Estúdio

O Estúdio do Azure Machine Learning fornece uma exibição da Web de todos os artefatos no seu workspace. Você pode exibir os resultados e os detalhes dos seus conjuntos de dados, testes, pipelines, modelos e pontos de extremidade. Você também pode gerenciar os recursos de computação e os armazenamentos de dados no estúdio.

O estúdio também é o local em que você acessa as ferramentas interativas que fazem parte do Azure Machine Learning:

Ferramentas de programação

Importante

As ferramentas marcadas (versão prévia) abaixo estão na versão prévia pública no momento. A 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.

Próximas etapas

Para começar a usar o Azure Machine Learning, confira: