Criar e gerenciar ativos de dados

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Este artigo mostra como criar e gerenciar ativos de dados no Azure Machine Learning.

Os ativos de dados podem ajudar quando você precisa:

  • Controle de versão: os ativos de dados suportam o controle de versão de dados.
  • Reprodutibilidade: Depois de criar uma versão do ativo de dados, ela é imutável. Não pode ser modificado ou eliminado. Portanto, trabalhos de treinamento ou pipelines que consomem o ativo de dados podem ser reproduzidos.
  • Auditabilidade: Como a versão do ativo de dados é imutável, você pode controlar as versões do ativo, quem atualizou uma versão e quando as atualizações de versão ocorreram.
  • Linhagem: Para qualquer ativo de dados, você pode visualizar quais trabalhos ou pipelines consomem os dados.
  • Facilidade de uso: um ativo de dados de aprendizado de máquina do Azure se assemelha aos favoritos do navegador da Web (favoritos). Em vez de lembrar URIs (caminhos de armazenamento longos) que fazem referência aos seus dados usados com frequência no Armazenamento do Azure, você pode criar uma versão do ativo de dados e, em seguida, acessar essa versão do ativo com um nome amigável (por exemplo: azureml:<my_data_asset_name>:<version>).

Gorjeta

Para acessar seus dados em uma sessão interativa (por exemplo, um bloco de anotações) ou um trabalho, não é necessário criar primeiro um ativo de dados. Você pode usar URIs de armazenamento de dados para acessar os dados. Os URIs do Datastore oferecem uma maneira simples de acessar dados para começar a usar o aprendizado de máquina do Azure.

Pré-requisitos

Para criar e trabalhar com ativos de dados, você precisa:

Criar ativos de dados

Ao criar seu ativo de dados, você precisa definir o tipo de ativo de dados. O Azure Machine Learning dá suporte a três tipos de ativos de dados:

Type API Cenários canônicos
Ficheiro
Fazer referência a um único ficheiro
uri_file Leia um único arquivo no Armazenamento do Azure (o arquivo pode ter qualquer formato).
Pasta
Fazer referência a uma pasta
uri_folder Leia uma pasta de arquivos parquet/CSV no Pandas/Spark.

Leia dados não estruturados (imagens, texto, áudio, etc.) localizados em uma pasta.
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.

AutoML com tabelas.

Leia dados não estruturados (imagens, texto, áudio, etc.) espalhados por vários locais de armazenamento.

Nota

Use novas linhas incorporadas em arquivos csv somente se você registrar os dados como um MLTable. Novas linhas incorporadas em arquivos csv podem causar valores de campo desalinhados quando você lê os dados. MLTable tem o support_multi_line parâmetro disponível na read_delimited transformação, para interpretar quebras de linha cotadas como um registro.

Ao consumir o ativo de dados em um trabalho do Azure Machine Learning, você pode montar ou baixar o ativo no(s) nó(s) de computação. Para mais informações, visite Modes.

Além disso, você deve especificar um path parâmetro que aponte para o local do ativo de dados. Os caminhos suportados incluem:

Location Exemplos
Um caminho no computador local ./home/username/data/my_data
Um caminho em um Datastore azureml://datastores/<data_store_name>/paths/<path>
Um caminho em um servidor http(s) público(s) https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Um caminho no Armazenamento do Azure (Blob) wasbs://<containername>@<accountname>.blob.core.windows.net/<path_to_data>/
(ADLS gen2) abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
(ADLS gen1) adl://<accountname>.azuredatalakestore.net/<path_to_data>/

Nota

Quando você cria um ativo de dados a partir de um caminho local, ele será carregado automaticamente no armazenamento de dados de nuvem padrão do Azure Machine Learning.

Criar um ativo de dados: tipo de ficheiro

Um ativo de dados de um tipo File (uri_file) aponta para um único arquivo no armazenamento (por exemplo, um arquivo CSV). Você pode criar um ativo de dados digitado por arquivo com:

Crie um arquivo YAML e copie e cole o trecho de código a seguir. Certifique-se de atualizar os <> espaços reservados com o botão

  • Nome do seu ativo de dados
  • a versão
  • descrição
  • caminho para um único arquivo em um local suportado
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: './<path>/<file>' (this will be automatically uploaded to cloud storage)
# blob:  'wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>/<file>'
# ADLS gen2: 'abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/<file>'
# Datastore: 'azureml://datastores/<data_store_name>/paths/<path>/<file>'

type: uri_file
name: <NAME OF DATA ASSET>
version: <VERSION>
description: <DESCRIPTION>
path: <SUPPORTED PATH>

Em seguida, execute o seguinte comando na CLI. Certifique-se de atualizar o espaço reservado <filename> para o nome do arquivo YAML.

az ml data create -f <filename>.yml

Criar um ativo de dados: Tipo de pasta

Um ativo de dados do tipo Pasta (uri_folder) aponta para uma pasta em um recurso de armazenamento - por exemplo, uma pasta que contém várias subpastas de imagens. Você pode criar um ativo de dados digitado em pasta com:

Copie e cole o código a seguir em um novo arquivo YAML. Certifique-se de atualizar os <> espaços reservados com o botão

  • Nome do seu ativo de dados
  • A versão
  • Description
  • Caminho para uma pasta em um local suportado
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: './<path>/<folder>' (this will be automatically uploaded to cloud storage)
# blob:  'wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>/<folder>'
# ADLS gen2: 'abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/<folder>'
# Datastore: 'azureml://datastores/<data_store_name>/paths/<path>/<folder>'

type: uri_folder
name: <NAME OF DATA ASSET>
version: <VERSION>
description: <DESCRIPTION>
path: <SUPPORTED PATH>

Em seguida, execute o seguinte comando na CLI. Certifique-se de atualizar o espaço reservado <filename> para o nome do arquivo YAML.

az ml data create -f <filename>.yml

Criar um ativo de dados: Tipo de tabela

As Tabelas do Azure Machine Learning (MLTable) têm uma funcionalidade avançada, descrita em mais detalhes em Trabalhando com tabelas no Azure Machine Learning. Em vez de repetir essa documentação aqui, leia este exemplo que descreve como criar um ativo de dados do tipo tabela, com dados do Titanic localizados em uma conta de Armazenamento de Blob do Azure disponível publicamente.

Primeiro, crie um novo diretório chamado dados e crie um arquivo chamado MLTable:

mkdir data
touch MLTable

Em seguida, copie e cole o seguinte YAML no arquivo MLTable criado na etapa anterior:

Atenção

Não renomeie o MLTable arquivo para MLTable.yaml ou MLTable.yml. O aprendizado de máquina do Azure espera um MLTable arquivo.

paths:
- file: wasbs://data@azuremlexampledata.blob.core.windows.net/titanic.csv
transformations:
- read_delimited:
    delimiter: ','
    empty_as_string: false
    encoding: utf8
    header: all_files_same_headers
    include_path_column: false
    infer_column_types: true
    partition_size: 20971520
    path_column: Path
    support_multi_line: false
- filter: col('Age') > 0
- drop_columns:
  - PassengerId
- convert_column_types:
  - column_type:
      boolean:
        false_values:
        - 'False'
        - 'false'
        - '0'
        mismatch_as: error
        true_values:
        - 'True'
        - 'true'
        - '1'
    columns: Survived
type: mltable

Execute o seguinte comando na CLI. Certifique-se de atualizar os <> espaços reservados com o nome do ativo de dados e os valores de versão.

az ml data create --path ./data --name <DATA ASSET NAME> --version <VERSION> --type mltable

Importante

O path deve ser uma pasta que contém um arquivo válido MLTable .

Criação de ativos de dados a partir de saídas de tarefa

Você pode criar um ativo de dados a partir de um trabalho do Azure Machine Learning. Para fazer isso, defina o name parâmetro na saída. Neste exemplo, você envia um trabalho que copia dados de um repositório de blob público para seu armazenamento de dados padrão do Azure Machine Learning e cria um ativo de dados chamado job_output_titanic_asset.

Criar um arquivo YAML de especificação de trabalho (<file-name>.yml):

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# path: Set the URI path for the data. Supported paths include
# local: `./<path>
# Blob: wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
# ADLS: abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
# Datastore: azureml://datastores/<data_store_name>/paths/<path>
# Data Asset: azureml:<my_data>:<version>

# type: What type of data are you pointing to?
# uri_file (a specific file)
# uri_folder (a folder)
# mltable (a table)

# mode: Set INPUT mode:
# ro_mount (read-only mount)
# download (download from storage to node)
# mode: Set the OUTPUT mode
# rw_mount (read-write mount)
# upload (upload data from node to storage)

type: command
command: cp ${{inputs.input_data}} ${{outputs.output_data}}
compute: azureml:cpu-cluster
environment: azureml://registries/azureml/environments/sklearn-1.1/versions/4
inputs:
  input_data:
    mode: ro_mount
    path: azureml:wasbs://data@azuremlexampledata.blob.core.windows.net/titanic.csv
    type: uri_file
outputs:
  output_data:
    mode: rw_mount
    path: azureml://datastores/workspaceblobstore/paths/quickstart-output/titanic.csv
    type: uri_file
    name: job_output_titanic_asset
    

Em seguida, envie o trabalho usando a CLI:

az ml job create --file <file-name>.yml

Gerir recursos de dados

Eliminar um ativo de dados

Importante

Por design, a exclusão de ativos de dados não é suportada.

Se o aprendizado de máquina do Azure permitisse a exclusão de ativos de dados, isso teria os seguintes efeitos adversos e negativos:

  • Os trabalhos de produção que consomem ativos de dados que foram excluídos posteriormente falhariam.
  • Tornar-se-ia mais difícil reproduzir uma experiência de ML.
  • A linhagem de trabalho quebraria, porque se tornaria impossível visualizar a versão do ativo de dados excluído.
  • Você não seria capaz de rastrear e auditar corretamente, uma vez que as versões podem estar faltando.

Portanto, a imutabilidade dos ativos de dados fornece um nível de proteção ao trabalhar em uma equipe criando cargas de trabalho de produção.

Para um ativo de dados criado por engano - por exemplo, com um nome, tipo ou caminho incorreto - o Azure Machine Learning oferece soluções para lidar com a situação sem as consequências negativas da exclusão:

Quero eliminar este ativo de dados porque... Solução
O nome está incorreto Arquivar o ativo de dados
A equipe não usa mais o ativo de dados Arquivar o ativo de dados
Ele atrapalha a listagem de ativos de dados Arquivar o ativo de dados
O caminho está incorreto Crie uma nova versão do ativo de dados (mesmo nome) com o caminho correto. Para obter mais informações, visite Criar ativos de dados.
Tem um tipo incorreto No momento, o Azure Machine Learning não permite a criação de uma nova versão com um tipo diferente em comparação com a versão inicial.
(1) Arquivar o ativo de dados
(2) Crie um novo ativo de dados com um nome diferente com o tipo correto.

Arquivar um ativo de dados

O arquivamento de um ativo de dados o oculta por padrão das consultas de lista (por exemplo, na CLI az ml data list) e da listagem de ativos de dados na interface do usuário do Studio. Você ainda pode continuar a referenciar e usar um ativo de dados arquivados em seus fluxos de trabalho. Pode arquivar:

  • Todas as versões do ativo de dados sob um determinado nome

ou

  • Uma versão específica do ativo de dados

Arquivar todas as versões de um ativo de dados

Para arquivar todas as versões do ativo de dados sob um determinado nome, use:

Execute o seguinte comando. Certifique-se de atualizar os <> espaços reservados com suas informações.

az ml data archive --name <NAME OF DATA ASSET>

Arquivar uma versão específica do ativo de dados

Para arquivar uma versão específica do ativo de dados, use:

Execute o seguinte comando. Certifique-se de atualizar os <> espaços reservados com o nome do seu ativo de dados e versão.

az ml data archive --name <NAME OF DATA ASSET> --version <VERSION TO ARCHIVE>

Restaurar um ativo de dados arquivado

Você pode restaurar um ativo de dados arquivado. Se todas as versões do ativo de dados forem arquivadas, você não poderá restaurar versões individuais do ativo de dados - você deverá restaurar todas as versões.

Restaurar todas as versões de um ativo de dados

Para restaurar todas as versões do ativo de dados sob um determinado nome, use:

Execute o seguinte comando. Certifique-se de atualizar os <> espaços reservados com o nome do seu ativo de dados.

az ml data restore --name <NAME OF DATA ASSET>

Restaurar uma versão específica do ativo de dados

Importante

Se todas as versões do ativo de dados foram arquivadas, você não pode restaurar versões individuais do ativo de dados - você deve restaurar todas as versões.

Para restaurar uma versão específica do ativo de dados, use:

Execute o seguinte comando. Certifique-se de atualizar os <> espaços reservados com o nome do seu ativo de dados e versão.

az ml data restore --name <NAME OF DATA ASSET> --version <VERSION TO ARCHIVE>

Linhagem de dados

A linhagem de dados é amplamente entendida como o ciclo de vida que abrange a origem dos dados e para onde eles se movem ao longo do tempo no armazenamento. Diferentes tipos de cenários retrógrados usam-no, por exemplo

  • Resolução de Problemas
  • Rastreando causas raiz em pipelines de ML
  • Depuração

Análise de qualidade de dados, conformidade e cenários de "e se" também usam linhagem. A linhagem é representada visualmente para mostrar dados que se movem da origem para o destino e, adicionalmente, abrange as transformações de dados. Dada a complexidade da maioria dos ambientes de dados corporativos, essas exibições podem se tornar difíceis de entender sem consolidação ou mascaramento de pontos de dados periféricos.

Em um Pipeline de Aprendizado de Máquina do Azure, os ativos de dados mostram a origem dos dados e como os dados foram processados, por exemplo:

Captura de tela mostrando a linhagem de dados nos detalhes do trabalho.

Você pode exibir os trabalhos que consomem o ativo de dados na interface do usuário do Studio. Primeiro, selecione Dados no menu à esquerda e, em seguida, selecione o nome do ativo de dados. Observe os trabalhos que consomem o ativo de dados:

Captura de tela que mostra os trabalhos que consomem um ativo de dados.

A visualização de trabalhos em Ativos de dados facilita a localização de falhas de trabalho e a análise de causa básica em seus pipelines e depuração de ML.

Marcação de ativos de dados

Os ativos de dados oferecem suporte à marcação, que são metadados extras aplicados ao ativo de dados como um par chave-valor. A marcação de dados oferece muitos benefícios:

  • Descrição da qualidade dos dados. Por exemplo, se sua organização usa uma arquitetura medallion lakehouse, você pode marcar ativos com medallion:bronze (bruto), medallion:silver (validado) e medallion:gold (enriquecido).
  • Pesquisa e filtragem eficientes de dados, para ajudar na descoberta de dados.
  • Identificação de dados pessoais sensíveis, para gerir e reger adequadamente o acesso aos dados. Por exemplo, sensitivity:PII/sensitivity:nonPII.
  • Determinação se os dados são ou não aprovados por uma auditoria de IA responsável (RAI). Por exemplo, RAI_audit:approved/RAI_audit:todo.

Você pode adicionar tags a ativos de dados como parte de seu fluxo de criação ou pode adicionar tags a ativos de dados existentes. Esta seção mostra ambos:

Adicionar tags como parte do fluxo de criação de ativos de dados

Crie um arquivo YAML e copie e cole o código a seguir nesse arquivo YAML. Certifique-se de atualizar os <> espaços reservados com o botão

  • Nome do seu ativo de dados
  • a versão
  • descrição
  • tags (pares chave-valor)
  • caminho para um único arquivo em um local suportado
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: './<path>/<file>' (this will be automatically uploaded to cloud storage)
# blob:  'wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>/<file>'
# ADLS gen2: 'abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/<file>'
# Datastore: 'azureml://datastores/<data_store_name>/paths/<path>/<file>'

# Data asset types, use one of:
# uri_file, uri_folder, mltable

type: uri_file
name: <NAME OF DATA ASSET>
version: <VERSION>
description: <DESCRIPTION>
tags:
    <KEY1>: <VALUE>
    <KEY2>: <VALUE>
path: <SUPPORTED PATH>

Execute o seguinte comando na CLI. Certifique-se de atualizar o espaço reservado <filename> para o nome do arquivo YAML.

az ml data create -f <filename>.yml

Adicionar tags a um ativo de dados existente

Execute o seguinte comando na CLI do Azure. Certifique-se de atualizar os <> espaços reservados com o botão

  • Nome do seu ativo de dados
  • A versão
  • Par chave-valor para a tag
az ml data update --name <DATA ASSET NAME> --version <VERSION> --set tags.<KEY>=<VALUE>

Práticas recomendadas de controle de versão

Normalmente, seus processos ETL organizam sua estrutura de pastas no armazenamento do Azure por tempo, por exemplo:

/
└── 📁 mydata
    ├── 📁 year=2022
    │   ├── 📁 month=11
    │   │   └── 📄 file1
    │   │   └── 📄 file2
    │   └── 📁 month=12
    │       └── 📄 file1
    │   │   └── 📄 file2
    └── 📁 year=2023
        └── 📁 month=1
            └── 📄 file1
    │   │   └── 📄 file2

A combinação de pastas estruturadas de tempo/versão e Tabelas do Azure Machine Learning (MLTable) permite construir conjuntos de dados com versão. Um exemplo hipotético mostra como obter dados versionados com as Tabelas do Azure Machine Learning. Suponha que você tenha um processo que carrega imagens da câmera para o armazenamento de Blob do Azure todas as semanas, nesta estrutura:

/myimages
└── 📁 year=2022
    ├── 📁 week52
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │       └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
└── 📁 year=2023
    ├── 📁 week1
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │       └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg

Nota

Enquanto mostramos como fazer a versão de dados de imagem (jpeg), a mesma abordagem funciona para qualquer tipo de arquivo (por exemplo, Parquet, CSV).

Com as Tabelas de Aprendizado de Máquina do Azure (mltable), construa uma Tabela de caminhos que inclua os dados até o final da primeira semana de 2023. Em seguida, crie um ativo de dados:

import mltable
from mltable import MLTableHeaders, MLTableFileEncoding, DataType
from azure.ai.ml import MLClient
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
from azure.identity import DefaultAzureCredential

# The ** in the pattern below will glob all sub-folders (camera1, ..., camera2)
paths = [
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2022/week=52/**/*.jpeg"
    },
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2023/week=1/**/*.jpeg"
    },
]

tbl = mltable.from_paths(paths)
tbl.save("./myimages")

# Connect to the AzureML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"

ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

# Define the Data asset object
my_data = Data(
    path=mltable_folder,
    type=AssetTypes.MLTABLE,
    description="My images. Version includes data through to 2023-Jan-08.",
    name="myimages",
    version="20230108",
)

# Create the data asset in the workspace
ml_client.data.create_or_update(my_data)

No final da semana seguinte, seu ETL atualizou os dados para incluir mais dados:

/myimages
└── 📁 year=2022
    ├── 📁 week52
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
└── 📁 year=2023
    ├── 📁 week1
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    ├── 📁 week2
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg

A primeira versão (20230108) continua a montar/baixar apenas arquivos de e year=2023/week=1 porque os caminhos são declarados year=2022/week=52 no MLTable arquivo. Isso garante a reprodutibilidade de seus experimentos. Para criar uma nova versão do ativo de dados que inclua year=2023/week2o , use:

import mltable
from mltable import MLTableHeaders, MLTableFileEncoding, DataType
from azure.ai.ml import MLClient
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
from azure.identity import DefaultAzureCredential

# The ** in the pattern below will glob all sub-folders (camera1, ..., camera2)
paths = [
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2022/week=52/**/*.jpeg"
    },
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2023/week=1/**/*.jpeg"
    },
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2023/week=2/**/*.jpeg"
    },
]

# Save to an MLTable file on local storage
tbl = mltable.from_paths(paths)
tbl.save("./myimages")

# Next, you create a data asset - the MLTable file will automatically be uploaded

# Connect to the AzureML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"

ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

# Define the Data asset object
my_data = Data(
    path=mltable_folder,
    type=AssetTypes.MLTABLE,
    description="My images. Version includes data through to 2023-Jan-15.",
    name="myimages",
    version="20230115", # update version to the date
)

# Create the data asset in the workspace
ml_client.data.create_or_update(my_data)

Agora você tem duas versões dos dados, onde o nome da versão corresponde à data em que as imagens foram carregadas no armazenamento:

  1. 20230108: As imagens até 2023-Jan-08.
  2. 20230115: As imagens até 2023-Jan-15.

Em ambos os casos, o MLTable constrói uma tabela de caminhos que inclui apenas as imagens até essas datas.

Em um trabalho do Azure Machine Learning, você pode montar ou baixar esses caminhos no MLTable versionado para seu destino de computação usando os eval_download modos ou eval_mount :

from azure.ai.ml import MLClient, command, Input
from azure.ai.ml.entities import Environment
from azure.identity import DefaultAzureCredential
from azure.ai.ml.constants import InputOutputModes

# connect to the AzureML workspace
ml_client = MLClient.from_config(
    DefaultAzureCredential()
)

# Get the 20230115 version of the data
data_asset = ml_client.data.get(name="myimages", version="20230115")

input = {
    "images": Input(type="mltable",
                   path=data_asset.id,
                   mode=InputOutputModes.EVAL_MOUNT
            )
}

cmd = """
ls ${{inputs.images}}/**
"""

job = command(
    command=cmd,
    inputs=input,
    compute="cpu-cluster",
    environment="azureml://registries/azureml/environments/sklearn-1.1/versions/4"
)

ml_client.jobs.create_or_update(job)

Nota

Os eval_mount modos e eval_download são exclusivos do MLTable. Nesse caso, o recurso de tempo de execução de dados do AzureML avalia o MLTable arquivo e monta os caminhos no destino de computação.

Próximos passos