Compartilhar dados entre espaços de trabalho com registros (visualização)
O registo do Azure Machine Learning permite-lhe colaborar entre espaços de trabalho dentro da sua organização. Usando registros, você pode compartilhar modelos, componentes, ambientes e dados. A partilha de dados com registos é atualmente uma funcionalidade de pré-visualização. Neste artigo, vai aprender a:
- Crie um ativo de dados no Registro.
- Compartilhar um ativo de dados existente do espaço de trabalho para o registro
- Use o ativo de dados do registro como entrada para um trabalho de treinamento de modelo em um espaço de trabalho.
Importante
Esta funcionalidade está atualmente em pré-visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos 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.
Cenário-chave abordado pelo compartilhamento de dados usando o Registro do Azure Machine Learning
Você pode querer ter dados compartilhados entre várias equipes, projetos ou espaços de trabalho em um local central. Esses dados não têm controles de acesso confidenciais e podem ser amplamente usados na organização.
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 espaços de trabalho em diferentes regiões.
Nesses cenários, você pode criar um ativo de dados em um registro ou compartilhar um ativo de dados existente de um espaço de trabalho para um registro. Esse ativo de dados pode ser usado em vários espaços de trabalho.
Cenários NÃO abordados pelo compartilhamento de dados usando o registro do Azure Machine Learning
Compartilhamento de 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/espaços de trabalho enquanto o registro é acessível por muitos outros usuários na organização.
Compartilhamento de dados disponíveis no armazenamento existente que não devem ser copiados ou que são muito grandes ou 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 possa ser replicada.
Tipos de ativos de dados suportados pelo registo do Azure Machine Learning
Gorjeta
Confira os seguintes cenários canônicos ao decidir se deseja usar uri_file
o , uri_folder
ou mltable
para o seu cenário.
Você pode criar três tipos de ativos de dados:
Type | V2 API | Cenário canônico |
---|---|---|
Arquivo: Fazer referência a um único arquivo | uri_file |
Ler/gravar um único ficheiro - o ficheiro pode ter qualquer formato. |
Pasta: Fazer referência a uma única pasta | uri_folder |
Você deve ler/gravar um diretório de arquivos parquet/CSV no Pandas/Spark. Deep-learning com imagens, texto, áudio, arquivos de vídeo localizados em um diretório. |
Tabela: Fazer referência a uma tabela de dados | mltable |
Tem um esquema complexo sujeito a alterações frequentes ou precisa de um subconjunto de dados tabulares grandes. |
Caminhos suportados pelo registo do Azure Machine Learning
Ao criar um ativo de dados, você deve especificar um parâmetro de caminho que aponte para o local dos dados. Atualmente, os únicos caminhos suportados são para locais no computador local.
Gorjeta
"Local" significa o armazenamento local para o computador que está a utilizar. 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 registos do Azure Machine Learning e os conceitos de Dados no Azure Machine Learning.
Um registro do Azure Machine Learning para compartilhar dados. Para criar um registo, consulte Saiba como criar um registo.
Uma área de trabalho do Azure Machine Learning. Se você não tiver um, use as etapas no artigo Guia de início rápido: criar recursos do espaço de trabalho para criar um.
Importante
A região do Azure (local) onde você cria seu espaço de trabalho deve estar na lista de regiões com suporte para o registro do Azure Machine Learning.
O ambiente e o componente criados a partir do artigo Como compartilhar modelos, componentes e ambientes .
A CLI do Azure e a
ml
extensão ou o SDK do Python do Azure Machine Learning v2:Para instalar a CLI e a extensão 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 Windows para Linux.
Os exemplos também pressupõem que você tenha configurado padrões para a CLI do Azure para que não seja necessário especificar os parâmetros para sua assinatura, espaço de trabalho, grupo de recursos ou local. Para definir as configurações padrão, use os seguintes comandos. Substitua os seguintes parâmetros pelos valores para sua configuração:
- Substitua
<subscription>
pelo seu ID da subscrição do Azure. - Substitua
<workspace>
pelo nome do espaço de trabalho do Azure Machine Learning. - Substitua
<resource-group>
pelo grupo de recursos do Azure que contém seu espaço de trabalho. - Substitua
<location>
pela região do Azure que contém seu espaço de trabalho.
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Você pode ver quais são seus padrões atuais usando o
az configure -l
comando.- Substitua
Repositório de exemplos de clonagem
Os exemplos de código neste artigo são baseados no nyc_taxi_data_regression
exemplo 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 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 SDK
Gorjeta
Esta etapa só é necessária ao usar o Python SDK.
Crie uma conexão de cliente com o espaço de trabalho e o registro do Azure Machine Learning. No exemplo a seguir, substitua os valores de <...>
espaço reservado pelos valores apropriados para sua configuração. Por exemplo, sua ID de assinatura do Azure, nome do espaço de trabalho, 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 registo
O ativo de dados criado nesta etapa é usado posteriormente neste artigo ao enviar um trabalho de treinamento.
Gorjeta
O mesmo comando az ml data create
CLI pode ser usado para criar dados em um espaço de trabalho ou registro. Executar o comando com --workspace-name
o comando cria os dados em um espaço de trabalho, enquanto executar o 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
. Neste 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 path
valor aponta para o data_transformed
subdiretório, que contém os dados que são compartilhados usando o registro.
Para criar os dados no Registro, use o az ml data create
arquivo . Nos exemplos a seguir, substitua <registry-name>
pelo nome do seu 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 version
campo ou data-registry.yml
especificar uma versão diferente na CLI que substitui 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
Gorjeta
Se o version=$(date +%s)
comando não definir a $version
variável em seu ambiente, substitua $version
por um número aleatório.
Salve o name
e version
dos dados da saída do az ml data create
comando e use-os com az ml data show
o comando para exibir detalhes do ativo.
az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>
Gorjeta
Se você usou um nome de dados ou versão diferente, substitua os --name
parâmetros e --version
de acordo.
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.
Gorjeta
Você pode usar um ambiente e um componente do espaço de trabalho em vez de usar os do Registro.
Executar um trabalho de pipeline em um espaço de trabalho 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 espaço de trabalho. No exemplo a seguir, o trabalho usa o componente de treinamento Scikit Learn e o ativo de dados criado nas seções anteriores para treinar um modelo.
Nota
O aspeto principal é que esse pipeline será executado em um espaço de trabalho usando dados de treinamento que não estão no espaço de trabalho específico. Os dados estão em um registro que pode ser usado com qualquer espaço de trabalho em sua organização. Você pode executar esse trabalho de treinamento em qualquer espaço de trabalho ao qual tenha acesso sem ter se preocupar em disponibilizar os dados de treinamento nesse espaço de trabalho.
Verifique se você está no cli/jobs/pipelines-with-components/nyc_taxi_data_regression
diretório. Edite a component
seção sob a train_job
seção do arquivo para se referir ao componente de treinamento e path
na training_data
seção para se referir ao ativo de single-job-pipeline.yml
dados criado nas seções anteriores. O exemplo a seguir mostra a aparência após a single-job-pipeline.yml
edição. Substitua o <registry_name>
pelo nome do seu registo:
$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 que é suportada pelo registro no qual você criou os dados.
- Confirme se o espaço de trabalho tem um cluster de computação com o nome
cpu-cluster
ou edite ocompute
campo abaixojobs.train_job.compute
com o nome do seu cálculo.
Execute o trabalho de pipeline com o az ml job create
comando.
az ml job create --file single-job-pipeline.yml
Gorjeta
Se você não configurou o espaço de trabalho padrão e o grupo de recursos conforme explicado na seção de pré-requisitos, será necessário especificar os --workspace-name
parâmetros e --resource-group
para que funcione az ml job create
.
Para obter mais informações sobre como executar trabalhos, consulte os seguintes artigos:
Compartilhar dados do espaço de trabalho para o registro
As etapas a seguir mostram como compartilhar um ativo de dados existente de um espaço de trabalho para um registro.
Primeiro, crie um ativo de dados no espaço de trabalho. Certifique-se de que você está no cli/assets/data
diretório. O local-folder.yml
localizado neste diretório é usado para criar um ativo de dados no espaço de trabalho. Os dados especificados neste arquivo estão disponíveis no cli/assets/data/sample-data
diretório. O seguinte YAML é o conteúdo do local-folder.yml
arquivo:
$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 espaço de trabalho, 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 espaço de trabalho, consulte Como criar ativos de dados.
O ativo de dados criado no espaço de trabalho pode ser compartilhado com um registro. A partir do registro, ele pode ser usado em vários espaços de trabalho. Note que estamos passando --share_with_name
e --share_with_version
parâmetro na função share. Esses parâmetros são opcionais e, se você não passar, esses dados serão compartilhados com o mesmo nome e versão do espaço de trabalho.
O exemplo a seguir demonstra o uso do comando share para compartilhar um ativo de dados. Substitua <registry-name>
pelo nome do registro no 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>