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

APLICA-SE A:Azure CLI ml extension v1 Python SDK azureml v1

Este artigo aplica-se à primeira versão (v1) do Azure Machine Learning CLI & SDK. Para a versão dois (v2), consulte Como funciona o Azure Machine Learning (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 aprendizado de máquina.

Área de trabalho

Uma área de trabalho de machine learning é o recurso de nível superior do Azure Machine Learning.

Diagram: Azure Machine Learning architecture of a workspace and its components

O espaço de trabalho é o local centralizado para:

Um espaço de trabalho inclui outros recursos do Azure que são usados pelo espaço de trabalho:

  • Azure Container Registry (ACR): registra contêineres docker que você usa durante o treinamento e quando implanta um modelo. Para minimizar os custos, o ACR só é criado quando as imagens de implantação são criadas.
  • Conta de Armazenamento do Azure: é usada como o armazenamento de dados padrão para o espaço de trabalho. Os blocos de anotações Jupyter 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 seus modelos.
  • Azure Key Vault: armazena segredos que são usados por destinos de computação e outras informações confidenciais necessárias para o espaço de trabalho.

Você pode compartilhar um espaço de trabalho com outras pessoas.

Cálculos

Um destino de computação é qualquer máquina ou conjunto de máquinas que você usa para executar seu script de treinamento ou hospedar sua implantação de serviço. Você pode usar sua máquina local ou um recurso de computação remoto como um destino de computação. Com destinos de computação, você pode começar o treinamento em sua máquina local e, em seguida, expandir para a nuvem sem alterar seu script de treinamento.

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

  • Instância de computação: uma instância de computação é uma VM que inclui várias ferramentas e ambientes instalados para aprendizado de máquina. O principal uso de uma instância de computação é para sua estação de trabalho de desenvolvimento. Você pode começar a executar blocos de anotações de exemplo sem a necessidade de configuraçã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 recursos de dimensionamento de vários nós. Os clusters de computação são mais adequados para alvos de computação para grandes trabalhos e produção. O cluster é dimensionado automaticamente quando um trabalho é enviado. Use como um destino de computação de treinamento ou para implantação de desenvolvimento/teste.

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

Conjuntos de dados e armazenamentos de dados

Os Conjuntos de Dados do Azure Machine Learning facilitam o acesso e o trabalho com os seus dados. Ao criar um conjunto de dados, você cria uma referência ao local da fonte de dados junto com uma cópia de seus metadados. Como os dados permanecem em seu local existente, você não incorre em nenhum custo adicional de armazenamento e não arrisca a integridade de suas fontes de dados.

Para obter mais informações, consulte Criar e registrar conjuntos de dados do Azure Machine Learning. Para obter mais exemplos usando conjuntos de dados, consulte os blocos de anotações de exemplo.

Os conjuntos de dados usam o armazenamento de dados para se conectar com segurança aos seus serviços de armazenamento do Azure. Os armazenamentos de dados armazenam informações de conexão sem colocar em risco suas credenciais de autenticação e a integridade da fonte de dados original. Eles armazenam informações de conexão, como sua ID de assinatura e autorização de token em seu Cofre de Chaves associado ao espaço de trabalho, para que você possa acessar seu armazenamento com segurança sem precisar codificá-los em seu script.

Ambientes

Ambientes de espaço de trabalho>

Um ambiente é o encapsulamento do ambiente onde o treinamento ou a pontuação do seu modelo de aprendizado de máquina acontece. O ambiente especifica os pacotes Python, variáveis de ambiente e configurações de software em torno de seus scripts de treinamento e pontuação.

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

Experimentações

Experiências de espaço de trabalho>

Um experimento é um agrupamento de muitas execuções a partir de um script especificado. Pertence sempre a um espaço de trabalho. Ao enviar uma execução, você fornece um nome de experimento. As informações para a execução são armazenadas sob esse experimento. Se o nome não existir quando você enviar um experimento, um novo experimento será criado automaticamente.

Para obter um exemplo de como usar um experimento, consulte Tutorial: Treinar seu primeiro modelo.

Execuções

Experimentos>de espaço de trabalho executados>

Uma execução é uma única execução 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 data/hora, duração e assim por diante)
  • Métricas que são registradas pelo seu script
  • Arquivos de saída que são coletados automaticamente pelo experimento ou explicitamente carregados por você
  • Um instantâneo do diretório que contém seus scripts, antes da execução

Você produz uma execução quando envia um script para treinar um modelo. Uma corrida pode ter zero ou mais execuções filhas. Por exemplo, a execução de nível superior pode ter duas execuções filhas, cada uma das quais pode ter sua própria execução filha.

Executar configurações

Experimentos de>espaço de trabalho>Executar configuraçã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 ser executado, quaisquer configurações específicas de trabalho distribuído e algumas propriedades adicionais. Para obter mais informações sobre o conjunto completo de opções configuráveis para execuções, consulte ScriptRunConfig.

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

Por exemplo, configurações de execução, consulte Configurar uma execução de treinamento.

Instantâneos

Experimentos>de espaço de trabalho>executam instantâneo>

Quando você envia uma execução, o Aprendizado de Máquina do Azure 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 é então extraído 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 espaço de trabalho pode procurar um registro de execução e baixar o instantâneo.

Registo

O Azure Machine Learning registra automaticamente 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 visualizar seus logs: monitorando o status da execução em tempo real ou visualizando os resultados após a conclusão. Para obter mais informações, consulte Monitorar e exibir logs de execução de ML.

Nota

Para evitar que arquivos desnecessários sejam incluídos no instantâneo, crie um arquivo de ignorar (.gitignore ou .amlignore) no diretório. Adicione os ficheiros e os diretórios a excluir neste ficheiro. Para obter mais informações sobre a sintaxe a ser usada dentro desse arquivo, consulte sintaxe e padrões para .gitignore. O .amlignore arquivo usa a mesma sintaxe. Se ambos os arquivos existirem, o arquivo será usado e o .amlignore.gitignore arquivo não será usado.

Rastreamento e integração com 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ção. Isso funciona com execuções enviadas usando uma configuração de execução de script ou pipeline de ML. Ele também funciona para execuções enviadas a partir do SDK ou da CLI do Machine Learning.

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

Fluxo de trabalho de treinamento

Quando você executa um experimento para treinar um modelo, as etapas a seguir acontecem. Estes são ilustrados no diagrama de fluxo de trabalho de treinamento abaixo:

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

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

  • Você pode escolher um destino de computação gerenciado (como Computação de Aprendizado de Máquina) ou um destino de computação não gerenciado (como VMs) para executar trabalhos de treinamento. Aqui estão 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 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 Computação de Aprendizado de Máquina para entender como funciona a execução de experimentos em contêineres do Docker.)
    2. Faz o download do código.
    3. Define variáveis e configurações de ambiente.
    4. Executa scripts de usuário (o instantâneo de código mencionado na seção anterior).
    • Machine Learning Compute, acessado por meio de uma identidade gerenciada pelo espaço de trabalho. Como o Machine Learning Compute é um destino de computação gerenciado (ou seja, é gerenciado pela Microsoft), ele é executado sob sua assinatura da Microsoft.
    1. A construção remota do Docker é iniciada, se 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, código de gerenciamento conforme descrito na etapa anterior.
  • Após a conclusão da execução, você pode consultar execuções e métricas. No diagrama de fluxo abaixo, esta etapa ocorre quando o destino de computação de treinamento grava as métricas de execução de volta ao Aprendizado de Máquina do Azure a partir do armazenamento no banco de dados do Azure Cosmos DB. Os clientes podem chamar o Azure Machine Learning. O Aprendizado de Máquina, por sua vez, extrairá métricas do banco de dados do Azure Cosmos DB e as retornará ao cliente.

Training workflow

Modelos

Em sua forma mais simples, um modelo é um pedaço de código que pega uma entrada e produz saída. Criar um modelo de aprendizado de máquina envolve selecionar um algoritmo, fornecer-lhe dados e ajustar hiperparâmetros. O treinamento é um processo iterativo que produz um modelo treinado, que encapsula o que o modelo aprendeu durante o processo de treinamento.

Você 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 Aprendizado de Máquina do Azure. Depois de ter um modelo, você registra o modelo no espaço de trabalho.

O Azure Machine Learning é independente da estrutura. Ao criar um modelo, você pode usar qualquer estrutura de aprendizado de máquina popular, como Scikit-learn, XGBoost, PyTorch, TensorFlow e Chainer.

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

Registo do modelo

Modelos de espaço de trabalho>

O registo de modelos permite-lhe controlar todos os modelos na sua área de trabalho 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 existente, o registro assume que é uma nova versão. A versão é incrementada e o novo modelo é registrado com o mesmo nome.

Ao registrar o modelo, você pode fornecer tags de metadados adicionais e, em seguida, usar as tags ao pesquisar modelos.

Gorjeta

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 espaço de trabalho do Azure Machine Learning. Após o registro, você pode baixar ou implantar o modelo registrado e receber todos os arquivos que foram 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.

Implementaçã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 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, consulte Implantar modelos com o Azure Machine Learning.

Pontos finais

Pontos de extremidade do espaço de trabalho>

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

Ponto de extremidade do serviço Web

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

Você pode habilitar a telemetria do Application Insights ou a telemetria do modelo para monitorar seu serviço Web. Os dados de telemetria são acessíveis apenas para você. Ele é armazenado em suas instâncias de conta de armazenamento e do Application Insights. Se você tiver habilitado o dimensionamento automático, o Azure dimensionará automaticamente sua implantação.

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

Aqui estão os detalhes:

  • O usuário registra um modelo usando um cliente como o SDK do Azure Machine Learning.
  • O usuário cria uma imagem usando um modelo, um arquivo de pontuação e outras dependências do 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, que está na assinatura do usuário.
  • A telemetria também é enviada por push para a assinatura do Microsoft Azure.

Inference workflow

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

Pontos finais 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 geralmente recebe uma única solicitação por meio do ponto de extremidade REST e retorna uma previsão em tempo real. Isso contrasta com o processamento em lote, que processa vários valores de uma só vez e salva os resultados após a conclusão em um armazenamento de dados.

Pontos finais de pipeline

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

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

Automatizaçã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 entre plataformas para a plataforma Azure. Esta extensão fornece comandos para automatizar suas atividades de aprendizado de máquina.

ML Pipelines

Você usa pipelines de aprendizado de máquina para criar e gerenciar fluxos de trabalho que unem fases de aprendizado de máquina. 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 abranger várias etapas, cada uma das quais pode ser executada autônoma em vários destinos de computação.

As etapas do pipeline são reutilizáveis e podem ser executadas sem executar novamente as etapas anteriores se a saída dessas etapas não tiver sido alterada. Por exemplo, você pode treinar novamente um modelo sem executar novamente etapas dispendiosas de preparação de dados se os dados não tiverem sido 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.

Monitorização e Registos

O Azure Machine Learning fornece os seguintes recursos de monitoramento e registro:

Interagindo com seu espaço de trabalho

Studio

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

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

Ferramentas de programação

Importante

As ferramentas marcadas (pré-visualização) abaixo estão atualmente em pré-visualização pública. A versão de visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

  • Interaja com o serviço em qualquer ambiente Python com o SDK do Azure Machine Learning para Python.
  • Use o designer do Azure Machine Learning para executar as etapas do fluxo de trabalho sem escrever código.
  • Use a CLI do Azure Machine Learning para automação.

Próximos passos

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