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.
O workspace é o local centralizado para:
- Gerenciar recursos que você usa para treinamento e implantação de modelos, como computação
- Armazenar ativos que você cria ao usar o Azure Machine Learning, incluindo:
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:
- 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.)
- Baixa o código.
- Define as configurações e variáveis do ambiente.
- 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.
- A construção remota do Docker é inicializada, se for necessário.
- O código de gerenciamento é gravado no compartilhamento de Arquivos do Azure do usuário.
- 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.
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.
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:
- Para Cientistas de Dados, você pode monitorar os seus experimentos e informações de log por meio das execuções de treinamento. Para obter mais informações, consulte os seguintes artigos:
- Para Administradores, você pode monitorar as informações sobre o workspace, recursos do Azure relacionados e eventos, como a criação e exclusão de recursos usando o Azure Monitor. Para obter mais informações, confira Como monitorar o Azure Machine Learning.
- Para DevOps ou MLOps, você pode monitorar as informações geradas por modelos implantados como serviços Web para identificar problemas com as implantações e coletar dados enviados ao serviço. Para obter mais informações, confira Coletar dados de modelo e Monitorar com o Application insights.
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:
- O designer do Azure Machine Learning para executar as etapas do fluxo de trabalho sem escrever código
- Experiência na Web para o machine learning automatizado
- Notebooks do Azure Machine Learning para escrever e executar o próprio código em servidores integrados do Jupyter Notebook.
- Projetos de rotulagem de dados para criar, gerenciar e monitorar projetos para rotular imagens ou textos.
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.
- 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óximas etapas
Para começar a usar o Azure Machine Learning, confira: