Compartilhe dados entre workspaces usando registros (versão prévia)
O registro do Azure Machine Learning permite que você colabore em workspaces em sua organização. Você pode compartilhar modelos, componentes, ambientes e dados usando registros. Atualmente, o compartilhamento de dados com registros é uma versão prévia do recurso. Neste artigo, você aprenderá como:
- Crie um ativo de dados no registro.
- Compartilhar um ativo de dados existente do workspace para o registro
- Use o ativo de dados do registro como entrada para um trabalho de treinamento de modelo em um workspace.
Importante
Esse recurso está atualmente em visualização pública. Essa 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.
Cenário principal abordado pelo compartilhamento de dados usando o registro do Azure Machine Learning
Talvez você queira ter os dados compartilhados em uma localização central para serem acessados por várias equipes, projetos ou workspaces. Esses dados não têm controles de acesso confidenciais e podem ser amplamente usados na organização.
Os exemplos incluem:
- Uma equipe deseja compartilhar um conjunto de dados público pré-processado e pronto para uso em experimentos.
- Sua organização adquiriu um conjunto de dados específico para um projeto de um fornecedor externo e deseja disponibilizá-lo para todas as equipes que trabalham em um projeto.
- Uma equipe deseja compartilhar ativos de dados entre workspaces em regiões diferentes.
Nesses cenários, você pode criar um ativo de dados em um registro ou compartilhar um ativo de dados existente de um workspace para um registro. Esse ativo de dados pode ser usado em vários workspaces.
Cenários NÃO abordados pelo compartilhamento de dados usando o registro do Azure Machine Learning
Compartilhar dados confidenciais que exigem controle de acesso refinado. Não é possível criar um ativo de dados em um registro para compartilhar com um pequeno subconjunto de usuários/workspaces enquanto o registro estiver acessível por vários outros usuários na organização.
Compartilhar dados que estão disponíveis no armazenamento existente que não devem ser copiados ou são muito grandes ou muito caros para serem copiados. Sempre que ativos de dados são criados em um registro, uma cópia dos dados é ingerida no armazenamento do registro para que possam ser replicados.
Tipos de ativos de dados compatíveis com o registro do Azure Machine Learning
Dica
Confira os seguintes cenários canônicos ao decidir se você deseja usar o uri_file
, o uri_folder
ou o mltable
para o seu cenário.
Você pode criar três tipos de ativo de dados:
Tipo | API V2 | Cenário canônico |
---|---|---|
Arquivo: referencie um único arquivo | uri_file |
Ler/gravar um arquivo único – o arquivo pode ter qualquer formato. |
Pasta:referencie uma pasta única | uri_folder |
Você deve ler/escrever um diretório de arquivos parquet/CSV no Pandas/Spark. Aprendizado profundo com imagens, texto, áudio, arquivos de vídeo localizados em um diretório. |
Tabela: referencie uma tabela de dados | mltable |
Você tem um esquema complexo sujeito a alterações frequentes ou precisa de um subconjunto de dados tabulares grandes. |
Pacotes compatíveis com o registro do Azure Machine Learning
Ao criar um ativo de dados do Azure Machine Learning, especifique um parâmetro de caminho que aponte para o local do ativo de dados. Atualmente, os únicos caminhos com suporte são para locais no computador local.
Dica
"Local" significa o armazenamento local para o computador que você está usando. Por exemplo, se você estiver usando um laptop, a unidade local. Se uma instância de computação do Azure Machine Learning, a unidade "local" da instância de computação.
Pré-requisitos
Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:
Familiaridade com os registros do Azure Machine Learning e os conceitos de dados no Azure Machine Learning.
Um registro do Azure Machine Learning para compartilhar os dados. Para criar um registro, consulte Saiba como criar um registro.
Um Workspace do Azure Machine Learning. Se você não tiver um, use as etapas do artigo Início Rápido: criar recursos de workspace para criar.
Importante
A região do Azure (localização) em que você cria seu workspace precisa estar na lista de regiões com suporte para o registro do Azure Machine Learning.
O ambiente e o componente criados no artigo Como compartilhar modelos, componentes e ambientes.
A CLI do Azure e a extensão
ml
ou o SDK do Python v2 do Azure Machine Learning:Para instalar a extensão e a CLI do Azure, consulte Instalar, configurar e usar a CLI (v2).
Importante
Os exemplos de CLI neste artigo pressupõem que você esteja usando o shell Bash (ou compatível). Por exemplo, de um sistema Linux ou Subsistema do Windows para Linux.
Os exemplos também pressupõem que você configurou padrões para a CLI do Azure para que você não precise especificar os parâmetros para sua assinatura, workspace, grupo de recursos ou local. Para definir as configurações padrão, use os comandos a seguir. Substitua os seguintes parâmetros pelos valores para a sua configuração:
- Substitua
<subscription>
por sua ID da assinatura do Azure. - Substitua
<workspace>
pelo nome do workspace do Azure Machine Learning. - Substitua
<resource-group>
pelo grupo de recursos do Azure que contém o workspace. - Substitua
<location>
pela região do Azure que contém o workspace.
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Para ver quais são seus padrões atuais, use o comando
az configure -l
.- Substitua
Clonar repositório de exemplos
Os exemplos de código neste artigo baseiam-se no exemplo nyc_taxi_data_regression
no repositório de exemplos. Para usar esses arquivos em seu ambiente de desenvolvimento, use os seguintes comandos para clonar o repositório e alterar os diretórios para o exemplo:
git clone https://github.com/Azure/azureml-examples
cd azureml-examples
Para o exemplo da CLI, altere os diretórios para cli/jobs/pipelines-with-components/nyc_taxi_data_regression
no clone local do repositório de exemplos.
cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression
Criar conexão do SDK
Dica
Essa etapa só é necessária ao usar o SDK do Python.
Crie uma conexão de cliente com o workspace do Azure Machine Learning e o registro. No exemplo a seguir, substitua os valores do espaço reservado <...>
pelos valores apropriados para sua configuração. Por exemplo, sua ID de assinatura do Azure, o nome do workspace, o nome do registro etc.:
ml_client_workspace = MLClient( credential=credential,
subscription_id = "<workspace-subscription>",
resource_group_name = "<workspace-resource-group",
workspace_name = "<workspace-name>")
print(ml_client_workspace)
ml_client_registry = MLClient(credential=credential,
registry_name="<REGISTRY_NAME>",
registry_location="<REGISTRY_REGION>")
print(ml_client_registry)
Criar dados no registro
O ativo de dados criado nesta etapa é usado posteriormente neste artigo ao enviar um trabalho de treinamento.
Dica
O mesmo comando da CLI az ml data create
pode ser usado para criar dados em um workspace ou registro. A execução do comando com o comando --workspace-name
cria os dados em um workspace, enquanto a execução do comando com --registry-name
cria os dados no registro.
A fonte de dados está localizada no repositório de exemplos que você clonou anteriormente. No clone local, vá para o seguinte caminho de diretório: cli/jobs/pipelines-with-components/nyc_taxi_data_regression
. Nesse diretório, crie um arquivo YAML chamado data-registry.yml
e use o seguinte YAML como o conteúdo do arquivo:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/
O valor path
aponta para o subdiretório data_transformed
, que contém os dados compartilhados usando o registro.
Para criar os dados no registro, use o az ml data create
. No exemplo a seguir, substitua <registry-name>
pelo nome do registro.
az ml data create --file data-registry.yml --registry-name <registry-name>
Se você receber um erro informando que os dados com esse nome e versão já existem no registro, você pode editar o campo version
em data-registry.yml
ou especificar uma versão diferente na CLI que substitua o valor da versão em data-registry.yml
.
# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version
Dica
Se o comando version=$(date +%s)
não definir a variável $version
em seu ambiente, substitua $version
por um número aleatório.
Salve o name
e a version
dos dados da saída do comando az ml data create
e use-os com o comando az ml data show
para exibir detalhes do ativo.
az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>
Dica
Se você usou um nome ou uma versão de dados diferente, substitua os parâmetros --name
e --version
adequadamente.
Você também pode usar az ml data list --registry-name <registry-name>
para listar todos os ativos de dados no registro.
Criar um ambiente e um componente no registro
Para criar um ambiente e um componente no registro, use as etapas no artigo Como compartilhar modelos, componentes e ambientes. O ambiente e o componente são usados no trabalho de treinamento na próxima seção.
Dica
Você pode usar um ambiente e um componente do workspace em vez de usar os do registro.
Executar um trabalho de pipeline em um workspace usando o componente do registro
Ao executar um trabalho de pipeline que usa um componente e dados de um registro, os recursos de computação são locais para o workspace. No exemplo a seguir, o trabalho usa o componente de treinamento do Scikit Learn e o ativo de dados criado nas seções anteriores para treinar um modelo.
Observação
O aspecto principal é que esse pipeline será executado em um workspace usando dados de treinamento que não está no workspace específico. Os dados estão em um registro que pode ser usado com qualquer workspace em sua organização. Você pode executar esse trabalho de treinamento em qualquer workspace ao qual tenha acesso sem se preocupar em disponibilizar os dados de treinamento e o ambiente nesse workspace.
Verifique se você está no diretório cli/jobs/pipelines-with-components/nyc_taxi_data_regression
. Edite a seção component
na seção train_job
do arquivo single-job-pipeline.yml
para fazer referência ao componente de treinamento e o path
na seção training_data
para referenciar o ativo de dados criado nas seções anteriores. O exemplo a seguir mostra como fica o single-job-pipeline.yml
após a edição. Substitua o <registry_name>
pelo nome do seu registro:
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset
jobs:
train_job:
type: command
component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
compute: azureml:cpu-cluster
inputs:
training_data:
type: uri_folder
path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
outputs:
model_output:
type: mlflow_model
test_data:
Aviso
- Antes de executar o trabalho de pipeline, confirme se o espaço de trabalho no qual você executará o trabalho está em uma região do Azure com suporte para o registro no qual você criou os dados.
- Confirme se o workspace tem um cluster de cálculo com o nome
cpu-cluster
ou edite o campocompute
emjobs.train_job.compute
com o nome da computação.
Execute o trabalho de pipeline com o comando az ml job create
.
az ml job create --file single-job-pipeline.yml
Dica
Se você não tiver configurado o workspace e o grupo de recursos padrão, conforme explicado na seção de pré-requisitos, será necessário especificar os parâmetros --workspace-name
e --resource-group
para que az ml job create
funcione.
Para obter mais informações sobre trabalho em execução, consulte os seguintes artigos:
Compartilhar dados do workspace para o registro
As etapas a seguir mostram como compartilhar um ativo de dados existente de um workspace para um registro.
Primeiro, crie um ativo de dados no workspace. Certifique-se de estar no diretório cli/assets/data
. O local-folder.yml
localizado neste diretório é usado para criar um ativo de dados no workspace. Os dados especificados neste arquivo estão disponíveis no diretório cli/assets/data/sample-data
. O YAML a seguir é o conteúdo do arquivo local-folder.yml
:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/
Para criar o ativo de dados no workspace, use o seguinte comando:
az ml data create -f local-folder.yml
Para obter mais informações sobre como criar ativos de dados em um workspace, confira Como criar ativos de dados.
O ativo de dados criado no workspace pode ser compartilhado com um registro. No registro, ele pode ser usado em vários workspaces. Observe que estamos passando os parâmetros --share_with_name
e --share_with_version
na função compartilhamento. Esses parâmetros são opcionais e, se você não passá-los, esses dados serão compartilhados com o mesmo nome e versão que no workspace.
O exemplo a seguir demonstra o uso do parâmetro para compartilhar um ativo de dados. Substitua <registry-name>
pelo nome do registro ao qual os dados serão compartilhados.
az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>