Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os ambientes do Azure Machine Learning encapsulam o ambiente onde o treinamento ou a inferência do aprendizado de máquina acontecem. Eles especificam os pacotes Python e as configurações de software para seus scripts de treinamento e pontuação. O espaço de trabalho de Aprendizado de Máquina gerencia e formata esses ambientes, permitindo fluxos de trabalho de aprendizado de máquina reproduzíveis, auditáveis e portáteis em vários destinos de computação. Use um Environment objeto para:
- Desenvolva seu roteiro de treinamento.
- Reutilize o mesmo ambiente no Azure Machine Learning Compute para treinamento de modelo em escala.
- Implante seu modelo com esse mesmo ambiente.
- Revisite o ambiente em que um modelo existente foi treinado.
O diagrama a seguir ilustra como você pode usar um único Environment objeto em sua configuração de trabalho (para treinamento) e sua configuração de inferência e implantação (para implantações de serviço Web).
O ambiente, o destino de computação e o script de treinamento juntos formam a configuração do trabalho: a especificação completa de um trabalho de treinamento.
Tipos de ambientes
Os ambientes se enquadram em três categorias: curados, gerenciados pelo usuário e gerenciados pelo sistema.
Os ambientes selecionados são fornecidos pelo Azure Machine Learning e estão disponíveis em seu espaço de trabalho por padrão. Use-os como estão. Eles contêm coleções de pacotes Python e configurações para ajudá-lo a começar com várias estruturas de aprendizado de máquina. Esses ambientes pré-criados também permitem um tempo de implantação mais rápido. O Azure Machine Learning hospeda ambientes selecionados no registro AzureML, que é um registro de aprendizado de máquina hospedado pela Microsoft. Para obter uma lista completa, consulte os ambientes no registro AzureML.
Em ambientes gerenciados pelo usuário, você é responsável por configurar seu ambiente e instalar todos os pacotes de que seu script de treinamento precisa no destino de computação. Certifique-se também de incluir todas as dependências necessárias para a implantação do modelo. O ambiente gerenciado pelo usuário pode ser BYOC (Bring Your Own Container) ou Docker Build Context baseado que delega a materialização da imagem ao Azure Machine Learning. Semelhante aos ambientes selecionados, você pode compartilhar ambientes gerenciados pelo usuário entre espaços de trabalho usando um registro de aprendizado de máquina que você cria e gerencia.
Use ambientes gerenciados pelo sistema quando quiser que o conda gerencie o ambiente Python para você. Um novo ambiente de conda é materializado a partir de sua especificação de conda em cima de uma imagem de docker base.
Criar e gerir ambientes
Você pode criar ambientes a partir do SDK Python do Azure Machine Learning, da CLI do Azure Machine Learning, do estúdio do Azure Machine Learning e da extensão VS Code. Cada cliente permite personalizar a imagem base, o Dockerfile e a camada Python, se necessário.
Para obter exemplos de código específicos, consulte a seção "Criar um ambiente" de Como usar ambientes.
Você também pode gerenciar ambientes através do seu espaço de trabalho. Com o seu espaço de trabalho, pode:
- Registrar ambientes.
- Buscar ambientes do seu espaço de trabalho para usar em treinamento ou implantação.
- Crie uma nova instância de um ambiente editando uma existente.
- Visualize as alterações em seus ambientes ao longo do tempo, o que garante a reprodutibilidade.
- Crie imagens do Docker automaticamente a partir de seus ambientes.
Quando você envia um experimento, o serviço registra automaticamente ambientes "anônimos" em seu espaço de trabalho. Esses ambientes não estão listados, mas você pode usar a versão para recuperá-los.
Para obter exemplos de código, consulte a seção "Gerenciar ambientes" de Como usar ambientes.
Criação, armazenamento em cache e reutilização de ambientes
O Azure Machine Learning cria definições de ambiente em imagens do Docker. Ele também armazena em cache os ambientes para que possas reutilizá-los em trabalhos de treino subsequentes e implementações de endpoints de serviço. A execução remota de um script de treinamento requer a criação de uma imagem do Docker. Por padrão, o Aprendizado de Máquina do Azure gerencia o destino de compilação de imagem na cota de computação sem servidor do espaço de trabalho disponível se não houver um conjunto de computação dedicado para o espaço de trabalho.
Nota
Quaisquer restrições de rede no espaço de trabalho do Azure Machine Learning podem exigir configuração de computação de compilação de imagem gerenciada pelo usuário dedicado. Siga as etapas para proteger os recursos do espaço de trabalho.
Submeter uma tarefa usando um ambiente
Quando você envia um trabalho remoto pela primeira vez usando um ambiente ou cria uma instância de ambiente manualmente, o Aprendizado de Máquina do Azure cria uma imagem para a especificação fornecida. A imagem resultante é armazenada em cache na instância do Registro de contêiner associada ao espaço de trabalho. Os ambientes selecionados já estão armazenados em cache no Registro do Azure Machine Learning. No início da execução do trabalho, o destino de computação recupera a imagem do registro de contêiner relevante.
Criando ambientes como imagens do Docker
Se a imagem para uma definição de ambiente específica ainda não existir na instância do Registro de contêiner associada ao espaço de trabalho do Azure Machine Learning, o serviço criará uma nova imagem. Para ambientes gerenciados pelo sistema, o processo de criação de imagem consiste em duas etapas:
- Baixar uma imagem base e executar todas as etapas do Docker
- Construção de um ambiente conda de acordo com as dependências conda especificadas na definição de ambiente.
Para ambientes gerenciados pelo usuário, o serviço usa as compilações de contexto do docker fornecidas como estão. Nesse caso, você é responsável por instalar quaisquer pacotes Python, incluindo-os em sua imagem base ou especificando etapas personalizadas do Docker.
Cache e reutilização de imagens
Se você usar a mesma definição de ambiente para outro trabalho, o Aprendizado de Máquina do Azure reutilizará a imagem armazenada em cache do registro de contêiner associado ao seu espaço de trabalho.
Para exibir os detalhes de uma imagem em cache, verifique a página Ambientes no estúdio do Azure Machine Learning ou use MLClient.environments para obter e inspecionar o ambiente.
Para determinar se uma imagem armazenada em cache deve ser reutilizada ou criar uma nova, o Aprendizado de Máquina do Azure calcula um valor de hash a partir da definição de ambiente. Em seguida, ele compara o hash com os hashes de ambientes existentes. O hash serve como um identificador exclusivo para um ambiente e é baseado na definição de ambiente:
- Imagem base
- Etapas personalizadas do docker
- Pacotes de Python
O nome e a versão do ambiente não têm efeito sobre o hash. Se você renomear seu ambiente ou criar um novo com as mesmas configurações e pacotes de outro ambiente, o valor de hash permanecerá o mesmo. No entanto, alterações na definição do ambiente, como adicionar ou remover um pacote Python ou alterar uma versão do pacote, alteram o valor de hash resultante. Alterar a ordem das dependências ou canais em um ambiente altera o hash e requer uma nova construção de imagem. Da mesma forma, qualquer alteração em um ambiente com curadoria resulta na criação de um ambiente personalizado.
Nota
Não é possível enviar alterações locais para um ambiente com curadoria sem alterar o nome do ambiente. Os prefixos "AzureML-" e "Microsoft" são reservados exclusivamente para ambientes com curadoria, e seu envio de trabalho falhará se o nome começar com qualquer um deles.
O valor de hash calculado do ambiente é comparado com os hashes no registro do contêiner do espaço de trabalho. Se houver uma correspondência, a imagem armazenada em cache será recuperada e usada. Caso contrário, uma compilação de imagem será acionada.
O diagrama a seguir mostra três definições de ambiente. Dois deles têm nomes e versões diferentes, mas imagens base idênticas e pacotes Python, que resultam no mesmo hash e na imagem em cache correspondente. O terceiro ambiente tem diferentes pacotes e versões do Python, levando a um hash diferente e imagem em cache.
As imagens reais armazenadas em cache no registro do contêiner do espaço de trabalho têm nomes semelhantes aos azureml/azureml_e9607b2514b066c851012848913ba19f do hash que aparece no final.
Importante
Se você criar um ambiente com uma dependência de pacote não fixada (por exemplo,
numpy), o ambiente usará a versão do pacote que estava disponível quando o ambiente foi criado. Qualquer ambiente futuro que use uma definição correspondente usa a versão original.Para atualizar o pacote, especifique um número de versão para forçar uma reconstrução de imagem. Um exemplo dessa alteração é a atualização
numpyparanumpy==1.18.1. Novas dependências, incluindo as aninhadas, são instaladas e podem comprometer um cenário anteriormente funcional.Usar uma imagem base não fixada, como
mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04na definição do seu ambiente, pode resultar na reconstrução da imagem sempre que alatesttag for atualizada. Esse comportamento ajuda a imagem a receber os patches e atualizações do sistema mais recentes.
Correção de imagem
A Microsoft corrige as imagens base para vulnerabilidades de segurança conhecidas. As atualizações para imagens suportadas são lançadas a cada duas semanas e a versão mais recente da imagem não tem vulnerabilidades não corrigidas com mais de 30 dias. As imagens corrigidas são lançadas com uma nova tag imutável e a :latest tag é atualizada para a versão mais recente da imagem corrigida.
Você precisa atualizar os ativos associados do Azure Machine Learning para usar a imagem recém-corrigida. Por exemplo, ao trabalhar com um ponto de extremidade online gerenciado, você precisa reimplantar seu ponto de extremidade para usar a imagem corrigida.
Se você fornecer suas próprias imagens, será responsável por atualizá-las e atualizar os ativos do Azure Machine Learning que as usam.
Para obter mais informações sobre as imagens base, consulte os seguintes links:
- Repositório GitHub de imagens base do Aprendizado de Máquina do Azure.
- Usar um contêiner personalizado para implantar um modelo em um ponto de extremidade online
- Gerenciando ambientes e imagens de contêiner
Conteúdos relacionados
- Saiba como criar e usar ambientes no Azure Machine Learning.
- Consulte a documentação de referência do SDK do Python para a classe de ambiente.