Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os ambientes do Azure Machine Learning encapsulam o ambiente em que seu treinamento ou inferência de aprendizado de máquina ocorre. Eles especificam os pacotes do Python e as configurações de software para seus scripts de treinamento e pontuação. O workspace do Machine Learning gerencia e faz versões desses ambientes, permitindo fluxos de trabalho reproduzíveis, auditáveis e portáteis de machine learning em vários destinos de computação. Use um Environment objeto para:
- Desenvolver seu script de treinamento.
- Reutilizar o mesmo ambiente na Computação do Azure Machine Learning para treinamento de modelos em escala.
- Implantar seu modelo com o mesmo ambiente.
- Revisitar o ambiente no qual um modelo existente foi treinado.
O diagrama a seguir ilustra como usar um único objeto Environment em sua configuração de trabalho (para treinamento) e em sua configuração de inferência e implantação (para implantações de serviços 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: coletados, gerenciados pelo usuário e gerenciados pelo sistema.
Os ambientes coletados são fornecidos por Azure Machine Learning e estão disponíveis em seu espaço de trabalho por padrão. Use-os como está. Eles contêm coleções de pacotes e configurações do Python para ajudá-lo a começar a usar várias estruturas de machine learning. Esses ambientes pré-criado também permitem um tempo de implantação mais rápido. O Azure Machine Learning hospeda ambientes curados no registro do AzureML, que é um registro de aprendizado de máquina hospedado pela Microsoft. Para obter uma lista completa, consulte os ambientes no registro do AzureML.
Para 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. Além disso, não se esqueça de incluir as dependências necessárias para a implantação de modelo. O ambiente gerenciado pelo usuário pode ser Traga seu Próprio Contêiner (BYOC) ou o Contexto de Build do Docker com base que delega a materialização de imagem ao AzureML. Semelhante aos ambientes coletados, você pode compartilhar ambientes gerenciados pelo usuário entre workspaces 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 do Python para você. Um novo ambiente Conda é materializado de sua especificação do Conda sobre uma imagem base do Docker.
Criar e gerenciar ambientes
Você pode criar ambientes por meio de clientes como o SDK do Python para o Azure Machine Learning, a CLI do Azure Machine Learning, a página Ambientes no Estúdio do Azure Machine Learning e a extensão do 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 por meio do workspace. Com sua área de trabalho, você pode:
- Registrar ambientes.
- Buscar ambientes do seu espaço de trabalho para usar em treinamento ou implantação.
- Criar uma instância de um ambiente pela edição de um ambiente existente.
- Exibir alterações em seus ambientes ao longo do tempo, o que garante a reprodutibilidade.
- Criar imagens do Docker automaticamente de seus ambientes.
Quando você envia um experimento, o serviço registra automaticamente ambientes "anônimos" em seu workspace. Esses ambientes não estão listados, mas você pode usar a versão para recuperá-los.
Para obter exemplos de código, confira a seção "Gerenciar ambientes" de Como usar ambientes.
Criação de ambiente, cache e reutilização
O Azure Machine Learning compila as definições de ambiente em imagens do Docker. Ele também mantém em cache os ambientes para que você possa reutilizá-los em trabalhos de treinamento subsequentes e implantações de endpoints de serviço. A execução de um script de treinamento exige remotamente a criação de uma imagem do Docker. Por padrão, o AzureML gerencia o destino de build de imagem na cota de computação sem servidor do workspace disponível se nenhum conjunto de computação dedicado para o workspace.
Observação
Qualquer restrição de rede no Workspace do AzureML pode exigir a configuração de computação de build de imagem gerenciada pelo usuário dedicada. Siga as etapas para recursos de workspace seguros.
Enviando um trabalho usando um ambiente
Quando você envia um trabalho remoto pela primeira vez usando um ambiente ou cria uma instância de ambiente manualmente, o Azure Machine Learning cria uma imagem para a especificação fornecida. A imagem resultante é armazenada em cache na instância do registro de contêiner associada ao workspace. Ambientes coletados já estão armazenados em cache no Registro do Azure Machine Learning. No início da execução do trabalho, a imagem é recuperada pelo destino de computação do registro de contêiner relevante.
Criando ambientes como imagens do Docker
Se a imagem de uma definição de ambiente específica ainda não existir na instância do registro de contêiner associada ao workspace do Azure Machine Learning, o serviço criará uma nova imagem. Para ambientes gerenciados pelo sistema, o processo de build de imagem consiste em duas etapas:
- Baixar uma imagem base e executar qualquer etapa do Docker
- Criar 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 todos os pacotes do 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 Azure Machine Learning reutilizará a imagem armazenada em cache do registro de contêiner associado ao seu workspace.
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 deseja reutilizar uma imagem armazenada em cache ou criar uma nova, o Azure Machine Learning calcula um valor de hash 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 se baseia nas definições de ambiente:
- Imagem de base
- Etapas personalizadas do Docker
- Pacotes do Python
O nome e a versão do ambiente não têm nenhum efeito sobre o hash. Se você renomear seu ambiente ou criar um novo com as mesmas configurações e pacotes que outro ambiente, o valor de hash permanecerá o mesmo. No entanto, as alterações de definição de ambiente, como adicionar ou remover um pacote do Python ou alterar uma versão do pacote, alteram o valor de hash resultante. A alteração da ordem das dependências ou dos canais no ambiente irá também alterar o hash e exigir uma nova compilação da imagem. Da mesma forma, qualquer alteração em um ambiente coletado resulta na criação de um ambiente personalizado.
Observação
Você não pode enviar nenhuma alteração local para um ambiente curado sem alterar o nome do ambiente. Os prefixos "AzureML-" e "Microsoft" são reservados exclusivamente para ambientes com curadoria, e sua submissão de trabalho falhará se o nome começar com um desses prefixos.
O valor de hash computado do ambiente é comparado com aqueles no registro de contêiner do workspace. Se houver uma correspondência, a imagem em cache será extraída e usada. Caso contrário, um build de imagem será iniciado.
O diagrama a seguir mostra três definições de ambiente. Dois deles têm nomes e versões diferentes, mas imagens base e pacotes Python idênticos, o que resulta no mesmo hash e imagem em cache correspondente. O terceiro ambiente tem diferentes pacotes e versões Python, levando a um hash e imagem em cache diferentes.
Imagens em cache reais no registro de contêiner do workspace têm nomes semelhantes a azureml/azureml_e9607b2514b066c851012848913ba19f com o hash aparecendo no final.
Importante
Se você criar um ambiente com uma dependência de pacote desafixada (por exemplo
numpy), o ambiente usará a versão do pacote disponível no momento da criação do ambiente. Qualquer ambiente futuro que use uma definição de correspondência usa a versão original.Para atualizar o pacote, especifique um número de versão para forçar uma recompilação da imagem. Um exemplo dessa alteração é atualizar
numpyparanumpy==1.18.1. Novas dependências, incluindo aninhadas, são instaladas e podem quebrar um cenário que funcionava anteriormente.Usar uma imagem base não fixada como
mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04na definição do ambiente pode resultar na reconstrução da imagem sempre que a marcalatestfor atualizada. Esse comportamento ajuda a imagem a receber os patches e atualizações do sistema mais recentes.
Aplicação de patch de imagem
A Microsoft corrige as imagens base para vulnerabilidades de segurança conhecidas. As atualizações para imagens com suporte são lançadas a cada duas semanas, e a versão mais recente da imagem não possui vulnerabilidades não corrigidas há mais de 30 dias. As imagens corrigidas são lançadas com uma nova marca imutável e a :latest marca é 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 utilizam.
Para saber mais sobre as imagens base, confira os seguintes links:
- Repositório do GitHub Imagens base do Azure Machine Learning.
- Usar um contêiner personalizado para implantar um modelo em um ponto de extremidade online
- Gerenciando ambientes e imagens de contêiner
Conteúdo relacionado
- 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.