Share via


Partilhar dados entre áreas de trabalho com registos (pré-visualização)

O registo do Azure Machine Learning permite-lhe colaborar em áreas de trabalho na sua organização. Com os registos, pode partilhar 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 recurso de dados no registo.
  • Partilhar um recurso de dados existente da área de trabalho para o registo
  • Utilize o recurso de dados do registo como entrada para uma tarefa de preparação de modelos numa área 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 pela partilha de dados com o registo do Azure Machine Learning

Poderá querer que os dados sejam partilhados entre várias equipas, projetos ou áreas de trabalho numa localização central. Estes dados não têm controlos de acesso confidenciais e podem ser amplamente utilizados na organização.

Os exemplos incluem:

  • Uma equipa quer partilhar um conjunto de dados público pré-processado e pronto a utilizar em experimentações.
  • A sua organização adquiriu um conjunto de dados específico para um projeto de um fornecedor externo e quer disponibilizá-lo a todas as equipas que trabalham num projeto.
  • Uma equipa quer partilhar recursos de dados entre áreas de trabalho em diferentes regiões.

Nestes cenários, pode criar um recurso de dados num registo ou partilhar um recurso de dados existente de uma área de trabalho para um registo. Em seguida, este recurso de dados pode ser utilizado em várias áreas de trabalho.

Cenários NÃO abordados pela partilha de dados com o registo do Azure Machine Learning

  • Partilhar dados confidenciais que requerem um controlo de acesso detalhado. Não pode criar um recurso de dados num registo para partilhar com um pequeno subconjunto de utilizadores/áreas de trabalho enquanto o registo é acessível por muitos outros utilizadores na organização.

  • Partilhar dados disponíveis no armazenamento existente que não podem ser copiados ou demasiado grandes ou demasiado dispendiosos para serem copiados. Sempre que os recursos de dados são criados num registo, é ingerida uma cópia dos dados no armazenamento do registo para que possam ser replicados.

Tipos de recursos de dados suportados pelo registo do Azure Machine Learning

Dica

Consulte os seguintes cenários canónicos ao decidir se pretende utilizar uri_file, uri_folderou mltable para o seu cenário.

Pode criar três tipos de recursos de dados:

Tipo V2 API Cenário canónico
Ficheiro: Referenciar um único ficheiro uri_file Ler/escrever um único ficheiro – o ficheiro pode ter qualquer formato.
Pasta: Referenciar uma única pasta uri_folder Tem de ler/escrever um diretório de ficheiros parquet/CSV no Pandas/Spark. Aprendizagem profunda com imagens, texto, áudio, ficheiros de vídeo localizados num diretório.
Tabela: Referenciar 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

Quando cria um recurso de dados, tem de especificar um parâmetro de caminho que aponte para a localização de dados. Atualmente, os únicos caminhos suportados são para localizações no seu computador local.

Dica

"Local" significa o armazenamento local do computador que está a utilizar. Por exemplo, se estiver a utilizar um portátil, a unidade local. Se for uma instância de computação do Azure Machine Learning, a unidade "local" da instância de computação.

Pré-requisitos

Antes de seguir os passos neste artigo, certifique-se de que tem os seguintes pré-requisitos:

  • Estar familiarizado com os registos do Azure Machine Learning e os Conceitos de dados no Azure Machine Learning.

  • Um registo do Azure Machine Learning para partilhar dados. Para criar um registo, veja Saiba como criar um registo.

  • Uma área de trabalho do Azure Machine Learning. Se não tiver um, utilize os passos no artigo Início Rápido: Criar recursos da área de trabalho para criar um.

    Importante

    A região do Azure (localização) onde cria a área de trabalho tem de estar na lista de regiões suportadas do registo do Azure Machine Learning.

  • O ambiente e o componente criados a partir do artigo Como partilhar modelos, componentes e ambientes .

  • A CLI do Azure e a ml extensão ou o SDK Python v2 do Azure Machine Learning:

    Para instalar a CLI e a extensão do Azure, veja Instalar, configurar e utilizar a CLI (v2).

    Importante

    • Os exemplos da CLI neste artigo partem do princípio de que está a utilizar a shell do Bash (ou compatível). Por exemplo, a partir de um sistema Linux ou Subsistema Windows para Linux.

    • Os exemplos também partem do princípio de que configurou predefinições para a CLI do Azure para que não tenha de especificar os parâmetros para a sua subscrição, área de trabalho, grupo de recursos ou localização. Para predefinir as predefinições, utilize os seguintes comandos. Substitua os seguintes parâmetros pelos valores da configuração:

      • Substitua <subscription> pelo seu ID da subscrição do Azure.
      • Substitua pelo <workspace> nome da área de trabalho do Azure Machine Learning.
      • Substitua pelo <resource-group> grupo de recursos do Azure que contém a área de trabalho.
      • Substitua pela <location> região do Azure que contém a área de trabalho.
      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
      

      Pode ver quais são as suas predefinições atuais com o az configure -l comando .

Clonar repositório de exemplos

Os exemplos de código neste artigo baseiam-se no nyc_taxi_data_regression exemplo no repositório de exemplos. Para utilizar estes ficheiros no seu ambiente de desenvolvimento, utilize 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

No 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 ligação SDK

Dica

Este passo só é necessário ao utilizar o SDK python.

Crie uma ligação de cliente para a área de trabalho e o registo do Azure Machine Learning. No exemplo seguinte, substitua os valores do <...> marcador de posição pelos valores adequados para a sua configuração. Por exemplo, o ID da subscrição do Azure, o nome da área de trabalho, o nome do registo, 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 recurso de dados criado neste passo é utilizado mais adiante neste artigo ao submeter uma tarefa de preparação.

Dica

O mesmo comando az ml data create da CLI pode ser utilizado para criar dados numa área de trabalho ou registo. Executar o comando com --workspace-name o comando cria os dados numa área de trabalho, ao passo que executar o comando com --registry-name cria os dados no registo.

A origem de dados está localizada no repositório de exemplos que clonou anteriormente. No clone local, aceda ao seguinte caminho de diretório: cli/jobs/pipelines-with-components/nyc_taxi_data_regression. Neste diretório, crie um ficheiro YAML com o nome data-registry.yml e utilize o seguinte YAML como o conteúdo do ficheiro:

$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 partilhados com o registo.

Para criar os dados no registo, utilize o az ml data create. Nos exemplos seguintes, substitua <registry-name> pelo nome do seu registo.

az ml data create --file data-registry.yml --registry-name <registry-name>

Se receber um erro de que os dados com este nome e versão já existem no registo, pode editar o version campo no data-registry.yml ou 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

Dica

Se o version=$(date +%s) comando não definir a $version variável no seu ambiente, substitua por $version um número aleatório.

Guarde o name e version dos dados da saída do comando e utilize-os com az ml data show o az ml data create comando para ver os detalhes do recurso.

az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>

Dica

Se utilizou um nome ou versão de dados diferente, substitua os --name parâmetros e --version em conformidade.

Também pode utilizar para listar az ml data list --registry-name <registry-name> todos os recursos de dados no registo.

Criar um ambiente e um componente no registo

Para criar um ambiente e um componente no registo, utilize os passos no artigo Como partilhar modelos, componentes e ambientes . O ambiente e o componente são utilizados na tarefa de preparação na próxima secção.

Dica

Pode utilizar um ambiente e um componente da área de trabalho em vez de utilizar um do registo.

Executar uma tarefa de pipeline numa área de trabalho com o componente do registo

Ao executar uma tarefa de pipeline que utiliza um componente e dados de um registo, os recursos de computação são locais para a área de trabalho. No exemplo seguinte, a tarefa utiliza o componente de preparação do Scikit Learn e o recurso de dados criado nas secções anteriores para preparar um modelo.

Nota

O aspeto principal é que este pipeline vai ser executado numa área de trabalho com dados de preparação que não estão na área de trabalho específica. Os dados estão num registo que pode ser utilizado com qualquer área de trabalho na sua organização. Pode executar esta tarefa de preparação em qualquer área de trabalho a que tenha acesso sem ter de se preocupar em disponibilizar os dados de preparação nessa área de trabalho.

Verifique se está no cli/jobs/pipelines-with-components/nyc_taxi_data_regression diretório . Edite a component secção na train_job secção do ficheiro para fazer referência ao componente de single-job-pipeline.yml preparação e pathtraining_data na secção para fazer referência ao recurso de dados criado nas secções anteriores. O exemplo seguinte mostra o single-job-pipeline.yml aspeto após a edição. Substitua pelo <registry_name> 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 a tarefa de pipeline, confirme que a área de trabalho na qual irá executar a tarefa está numa região do Azure que é suportada pelo registo no qual criou os dados.
  • Confirme que a área de trabalho tem um cluster de cálculo com o nome cpu-cluster ou edite o compute campo em jobs.train_job.compute com o nome da computação.

Execute a tarefa de pipeline com o az ml job create comando .

az ml job create --file single-job-pipeline.yml 

Dica

Se não tiver configurado a área de trabalho e o grupo de recursos predefinidos, conforme explicado na secção de pré-requisitos, terá de especificar os --workspace-name parâmetros e --resource-group para que funcionem az ml job create .

Para obter mais informações sobre a execução de tarefas, consulte os seguintes artigos:

Partilhar dados da área de trabalho para o registo

Os passos seguintes mostram como partilhar um recurso de dados existente de uma área de trabalho para um registo.

Em primeiro lugar, crie um recurso de dados na área de trabalho. Certifique-se de que está no cli/assets/data diretório . O local-folder.yml localizado neste diretório é utilizado para criar um recurso de dados na área de trabalho. Os dados especificados neste ficheiro estão disponíveis no cli/assets/data/sample-data diretório . O seguinte YAML é o conteúdo do local-folder.yml ficheiro:

$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 recurso de dados na área de trabalho, utilize o seguinte comando:

az ml data create -f local-folder.yml

Para obter mais informações sobre como criar recursos de dados numa área de trabalho, veja Como criar recursos de dados.

O recurso de dados criado na área de trabalho pode ser partilhado num registo. A partir do registo, pode ser utilizado em várias áreas de trabalho. Tenha em atenção que estamos a transmitir --share_with_name e --share_with_version o parâmetro na função share. Estes parâmetros são opcionais e, se não transmitir estes dados, serão partilhados com o mesmo nome e versão que na área de trabalho.

O exemplo seguinte demonstra a utilização do comando partilhar para partilhar um recurso de dados. Substitua <registry-name> pelo nome do registo com o qual os dados serão partilhados.

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>

Passos seguintes