Criar e gerenciar ativos de dados

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

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

Os ativos de dados podem ajudar quando você precisa desses recursos:

  • Controle de versão: os ativos de dados dão suporte ao controle de versão de dados.
  • Reprodutibilidade: Depois de criar uma versão de ativo de dados, ela será imutável. Não pode ser modificado ou excluído. Portanto, os 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 acompanhar as versões do ativo, quem atualizou uma versão e quando ocorreram as atualizações da versão.
  • Linhagem: para um determinado ativo de dados, é possível exibir quais trabalhos ou pipelines consomem dados.
  • Facilidade de uso: um ativo de dados de machine learning do Azure é semelhante aos indicadores do navegador da Web (favoritos). Em vez de se lembrar de longos caminhos de armazenamento (URIs) que fazem referência aos dados usados com frequência no Armazenamento do Azure, você pode criar uma versão de 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>).

Dica

Para acessar seus dados em uma sessão interativa (por exemplo, um notebook) ou em um trabalho, não será necessário criar um ativo de dados primeiro. Você pode usar URIs do armazenamento de dados para acessar os dados. Os URIs do armazenamento de dados oferecem uma maneira simples de acessar dados para aqueles que estão começando a usar o machine learning do Azure.

Pré-requisitos

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

Criar ativos de dados

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

Type API Cenários canônicos
Arquivo
Referenciar um só arquivo
uri_file Leia um único arquivo no Armazenamento do Azure (o arquivo pode ter qualquer formato).
Pasta
Referenciar 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
Referenciar 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.) que estão distribuídos em vários locais de armazenamento.

Observação

Não use novas linhas inseridas em arquivos csv, a menos que você registre os dados como uma MLTable. As novas linhas inseridas em arquivos csv podem causar valores de campo desalinhados quando você lê os dados. O MLTable tem esse parâmetro support_multi_lineem read_delimited transformação para interpretar quebras de linha entre aspas como um registro.

Ao consumir o ativo de dados em um trabalho do Azure Machine Learning, você pode montar ou baixar o ativo para os nós de computação. Para obter mais informações, leia Modos.

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

Localização Exemplos
Um caminho no computador local ./home/username/data/my_data
Um caminho em um armazenamento de dados azureml://datastores/<data_store_name>/paths/<path>
Um caminho em um servidor https(s) público 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>/

Observação

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

Criar um ativo de dados: tipo de arquivo

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

Crie um arquivo YAML e copie e cole o seguinte código. Você deve atualizar os espaços reservados <> com o nome do ativo de dados, a versão, a descrição e o caminho para um único arquivo em um local compatível.

$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 <filename> para o nome de arquivo YAML):

az ml data create -f <filename>.yml

Criar um ativo de dados: tipo de pasta

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

Crie um arquivo YAML e copie e cole o seguinte código. Você precisa atualizar os espaços reservados <> com o nome do ativo de dados, a versão, a descrição e o caminho para uma pasta em um local compatível.

$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 <filename> para o nome do arquivo de YAML):

az ml data create -f <filename>.yml

Criar um ativo de dados: tipo de tabela

As tabelas (MLTable) do Azure Machine Learning têm uma funcionalidade avançada, que é abordada 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 de tabela, usando dados Titanic localizados em uma conta do Armazenamento de Blobs do Azure disponível publicamente.

Primeiro, crie um novo diretório chamado data 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:

Cuidado

Não renomeie o arquivo MLTable para MLTable.yaml ou MLTable.yml. O Azure Machine Learning espera um arquivo MLTable.

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. Atualize 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 MLTable válido.

Criando ativos de dados a partir de saídas de trabalho

Você pode criar um ativo de dados de um trabalho do Azure Machine Learning definindo o parâmetro name na saída. Neste exemplo, você envia um trabalho que copia dados de um repositório de blobs público para o Datastore do Azure Machine Learning padrão e cria um ativo de dados chamado job_output_titanic_asset.

Crie 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

Gerenciar ativos de dados

Excluir um ativo de dados

Importante

Por padrão, não há suporte para a exclusão de ativos de dados.

Se o machine learning 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 posteriormente excluídos falharão.
  • Seria mais difícil reproduzir um experimento de ML.
  • A linhagem do trabalho seria interrompida, porque seria impossível exibir a versão do ativo de dados excluído.
  • Você não conseguiria acompanhar e auditar corretamente, pois as versões poderiam estar faltando.

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

Quando um ativo de dados for 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 excluir esse 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 está desorganizando 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.
Possui um tipo incorreto Atualmente, o Azure Machine Learning não permite a criação de uma nova versão com um tipo diferente da versão inicial.
(1) Arquivar o ativo de dados
(2) Criar um novo ativo de dados com um nome diferente e 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 Estúdio. Você ainda pode continuar a fazer referência e usar um ativo de dados arquivado nos fluxos de trabalho. Você pode arquivar qualquer um deles:

  • todas as versões do ativo de dados com 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 com um determinado nome, use:

Execute o seguinte comando (atualize o espaço reservado <> com o nome do 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 a 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 estiverem arquivadas, não será possível 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 com um determinado nome, use:

Execute o seguinte comando (atualize o espaço reservado <> com o nome do 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 de ativos de dados foram arquivadas, não será possível restaurar versões individuais do ativo de dados. Você deverá 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 a 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 deslocam ao longo do tempo no armazenamento. Diferentes tipos de cenários retroativos o usam, por exemplo, solução de problemas, rastreamento de causas raiz em pipelines de ML e depuração. A análise da qualidade dos dados, a conformidade e cenários hipotéticos também usam linhagem. A linhagem é representada visualmente para mostrar os dados se movendo da origem para o destino e também abrande as transformações de dados. Devido à 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 Machine Learning do Azure, seus ativos de dados mostram a origem dos dados e como eles 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 Estúdio. Primeiro, selecione Dados no menu à esquerda e, em seguida, selecione o nome do ativo de dados. Você pode ver os trabalhos que consomem o ativo de dados:

Screenshot that shows the jobs that consume a data asset.

A exibição de trabalhos em ativos de dados facilita a localização de falhas de trabalho e a análise da causa da rota em pipelines de ML e depuração.

Marcação de ativos de dados

Os ativos de dados dão suporte à 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 a sua organização usa uma arquitetura medallion do Lakehouse, você pode marcar os 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.
  • Determinação se os dados são aprovados em uma auditoria de IA responsável (RAI). Por exemplo, RAI_audit:approved/RAI_audit:todo.

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

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

Crie um arquivo YAML e copie e cole o seguinte código. Você deve atualizar os espaços reservados <> com o nome do seu ativo de dados, a versão, a descrição, as marcas (pares chave-valor) e o caminho para um único arquivo em um local compatível.

$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 <filename> para o nome de arquivo YAML):

az ml data create -f <filename>.yml

Adicionar marcas a um ativo de dados existente

Execute o seguinte comando na CLI do Azure e atualize os espaços reservados <> com o nome do ativo de dados, a versão e o par chave-valor da marca.

az ml data update --name <DATA ASSET NAME> --version <VERSION> --set tags.<KEY>=<VALUE>

Práticas recomendadas de controle de versão

Normalmente, os processos de ETL organizam a 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 (MLTable) do Azure Machine Learning permite que você crie conjuntos de dados com controle de versão. Para mostrar como obter dados com controle de versão 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 Blobs do Azure semanalmente, 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

Observação

Embora demonstremos como versionar dados de imagem (jpeg), a mesma metodologia pode ser aplicada a qualquer tipo de arquivo (por exemplo, Parquet, CSV).

Com as Tabelas (mltable) do Azure Machine Learning, você cria 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, 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 apenas arquivos de year=2022/week=52 e year=2023/week=1 porque os caminhos são declarados no arquivo MLTable. Isso garante a reprodutibilidade dos seus experimentos. Para criar uma nova versão do ativo de dados que inclua year=2023/week2, você usaria:

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, em que 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 cria 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 na tabela MLTable com versão para seu destino de computação usando os modos eval_download 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)

Observação

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

Próximas etapas