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ê precisar desses recursos:

  • 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 aqueles que estão começando 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:

Tipo 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 Você 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

Por favor, não use novas linhas incorporadas em arquivos csv, a menos que você registre os dados como um MLTable. Novas linhas incorporadas em arquivos csv podem causar valores de campo desalinhados quando você lê os dados. MLTable tem esse parâmetro support_multi_lineem 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, leia Modos.

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

Localização 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 arquivo

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

Crie um arquivo YAML e copie e cole o código a seguir. Você deve atualizar os <> espaços reservados com o nome do seu ativo de dados, a versão, a descrição e 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 (atualize o espaço reservado para o <filename> nome do arquivo YAML):

az ml data create -f <filename>.yml

Criar um ativo de dados: Tipo de pasta

Um ativo de dados que é um tipo de pasta () é aquele que aponta para uma pasta no armazenamento (uri_folderpor exemplo, uma pasta que contém várias subpastas de imagens). Você pode criar um ativo de dados digitado de pasta usando:

Crie um arquivo YAML e copie e cole o código a seguir. Você precisa atualizar os <> espaços reservados com o nome do seu ativo de dados, a versão, a descrição e o 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 (atualize o espaço reservado para o nome do arquivo para o <filename> 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 funcionalidades avançadas, abordadas com mais detalhes em Trabalhando com tabelas no Azure Machine Learning. Em vez de repetir essa documentação aqui, fornecemos um exemplo de criação de um ativo de dados do tipo tabela, usando 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 que você criou 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

Em seguida, 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 trabalho

Você pode criar um ativo de dados a partir de um trabalho do Azure Machine Learning definindo 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

Excluir 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:

  • 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.

Quando um ativo de dados foi criado erroneamente - 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, leia Criar ativos de dados.
Tem um tipo incorreto Atualmente, 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 (atualize o espaço reservado com o <> nome do seu ativo de dados):

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 (atualize os <> espaços reservados com o nome do ativo de dados e da 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 (atualize o espaço reservado 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 (atualize os <> espaços reservados com o nome do ativo de dados e da 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 retrospetivos o usam, por exemplo, solução de problemas, rastreamento de causas raiz em pipelines de ML e 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 do Azure Machine Learning, seus ativos de dados mostram a origem dos dados e como os dados foram processados, por exemplo:

Screenshot showing data lineage in the job details.

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. Você pode ver os trabalhos consumindo o ativo de dados:

Screenshot that shows the jobs that consume a data asset.

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

Marcação de ativos de dados

Os ativos de dados suportam a marcação, que são metadados extras aplicados ao ativo de dados na forma de 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 de casa de lago medalhão, você pode marcar ativos com medallion:bronze (bruto), medallion:silver (validado) e medallion:gold (enriquecido).
  • Fornece pesquisa e filtragem eficientes de dados, para ajudar na descoberta de dados.
  • Ajuda a identificar dados pessoais confidenciais, para gerenciar e controlar adequadamente o acesso aos dados. Por exemplo, sensitivity:PII/sensitivity:nonPII.
  • Identifique se os dados são aprovados a partir de 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. Você deve atualizar os <> espaços reservados com o nome do seu ativo de dados, a versão, a descrição, as tags (pares chave-valor) e 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>'

# 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>

Em seguida, execute o seguinte comando na CLI (atualize o espaço reservado para o <filename> 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 e atualize os espaços reservados com seu <> nome de ativo de dados, versão e 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 de Aprendizado de Máquina do Azure (MLTable) permite que você construa conjuntos de dados com versão. Para mostrar como obter dados versionados com as Tabelas do Azure Machine Learning, usamos um exemplo hipotético. Suponha que você tenha um processo que carrega imagens da câmera para o armazenamento de Blob do Azure todas as semanas, na seguinte 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

Embora demonstremos como fazer a versão de dados de imagem (), a mesma metodologia pode ser aplicada a qualquer tipo de arquivo (jpegpor exemplo, Parquet, CSV).

Com as Tabelas de Aprendizado de Máquina do Azure (mltable), você constrói uma Tabela de caminhos que inclui os dados até o final da primeira semana de 2023 e, em seguida, cria 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, o 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

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

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