Gegevensassets maken en beheren

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel wordt beschreven hoe u gegevensassets maakt en beheert in Azure Machine Learning.

Gegevensassets kunnen u helpen wanneer u deze mogelijkheden nodig hebt:

  • Versiebeheer: gegevensassets ondersteunen versiebeheer van gegevens.
  • Reproduceerbaarheid: Nadat u een gegevensassetversie hebt gemaakt, is deze onveranderbaar. Het kan niet worden gewijzigd of verwijderd. Daarom kunnen trainingstaken of pijplijnen die de gegevensasset gebruiken, worden gereproduceerd.
  • Controlebaarheid: omdat de gegevensassetversie onveranderbaar is, kunt u de assetversies bijhouden, die een versie hebben bijgewerkt en wanneer de versie-updates hebben plaatsgevonden.
  • Herkomst: Voor elk gegeven gegevensasset kunt u bekijken welke taken of pijplijnen de gegevens verbruiken.
  • Gebruiksgemak: Een Azure Machine Learning-gegevensasset lijkt op bladwijzers van webbrowsers (favorieten). In plaats van lange opslagpaden (URI's) te onthouden die verwijzen naar uw veelgebruikte gegevens in Azure Storage, kunt u een versie van een gegevensasset maken en die versie van de asset vervolgens openen met een beschrijvende naam (bijvoorbeeld: azureml:<my_data_asset_name>:<version>).

Fooi

Als u toegang wilt krijgen tot uw gegevens in een interactieve sessie (bijvoorbeeld een notebook) of een taak, hoeft u niet eerst een gegevensasset te maken. U kunt datastore-URI's gebruiken om toegang te krijgen tot de gegevens. Gegevensopslag-URI's bieden een eenvoudige manier om toegang te krijgen tot gegevens voor degenen die aan de slag gaan met Azure Machine Learning.

Vereisten

Als u gegevensassets wilt maken en ermee wilt werken, hebt u het volgende nodig:

Gegevensassets maken

Wanneer u uw gegevensasset maakt, moet u het gegevensassettype instellen. Azure Machine Learning ondersteunt drie typen gegevensassets:

Type API Canonieke scenario's
Bestand
Naar één bestand verwijzen
uri_file Lees één bestand in Azure Storage (het bestand kan elke indeling hebben).
Map
Naar een map verwijzen
uri_folder Lees een map met parquet-/CSV-bestanden in Pandas/Spark.

Niet-gestructureerde gegevens lezen (afbeeldingen, tekst, audio, enzovoort) die zich in een map bevinden.
Tabel
Verwijzen naar een gegevenstabel
mltable U hebt een complex schema dat onderhevig is aan frequente wijzigingen, of u hebt een subset met grote tabelgegevens nodig.

AutoML met tabellen.

Niet-gestructureerde gegevens (afbeeldingen, tekst, audio, enzovoort) lezen die verspreid zijn over meerdere opslaglocaties.

Notitie

Gebruik geen ingesloten nieuwe regels in CSV-bestanden, tenzij u de gegevens registreert als MLTable. Ingesloten nieuwe lijnen in CSV-bestanden kunnen verkeerd uitgelijnde veldwaarden veroorzaken wanneer u de gegevens leest. MLTable heeft deze parameter support_multi_linein read_delimited transformatie om regeleinden tussen aanhalingseinden als één record te interpreteren.

Wanneer u de gegevensasset in een Azure Machine Learning-taak gebruikt, kunt u de asset koppelen of downloaden naar de rekenknooppunten. Lees Modi voor meer informatie.

U moet ook een path parameter opgeven die verwijst naar de locatie van de gegevensasset. Ondersteunde paden zijn onder andere:

Locatie Voorbeelden
Een pad op uw lokale computer ./home/username/data/my_data
Een pad in een gegevensarchief azureml://datastores/<data_store_name>/paths/<path>
Een pad op een openbare HTTP(s)-server https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Een pad in Azure Storage (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>/

Notitie

Wanneer u een gegevensasset maakt op basis van een lokaal pad, wordt deze automatisch geüpload naar het standaardgegevensarchief van de Azure Machine Learning-cloud.

Een gegevensasset maken: bestandstype

Een gegevensasset dat een bestand (uri_file) is, verwijst naar één bestand in de opslag (bijvoorbeeld een CSV-bestand). U kunt een gegevensasset met bestandstypen maken met behulp van:

Maak een YAML-bestand en kopieer en plak de volgende code. U moet de <> tijdelijke aanduidingen bijwerken met de naam van uw gegevensasset, de versie, beschrijving en het pad naar één bestand op een ondersteunde locatie.

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

Voer vervolgens de volgende opdracht uit in de CLI (werk de <filename> tijdelijke aanduiding bij naar de YAML-bestandsnaam):

az ml data create -f <filename>.yml

Een gegevensasset maken: maptype

Een gegevensasset dat een maptype (uri_folder) is, is een type dat verwijst naar een map in de opslag (bijvoorbeeld een map met verschillende submappen van afbeeldingen). U kunt een gegevensasset met maptypen maken met behulp van:

Maak een YAML-bestand en kopieer en plak de volgende code. U moet de <> tijdelijke aanduidingen bijwerken met de naam van uw gegevensasset, de versie, beschrijving en het pad naar een map op een ondersteunde locatie.

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

Voer vervolgens de volgende opdracht uit in de CLI (werk de <filename> tijdelijke aanduiding bij naar de BESTANDSNAAM in de YAML-bestandsnaam):

az ml data create -f <filename>.yml

Een gegevensasset maken: tabeltype

Azure Machine Learning-tabellen (MLTable) hebben uitgebreide functionaliteit, die uitgebreider wordt behandeld in het werken met tabellen in Azure Machine Learning. In plaats van deze documentatie hier te herhalen, geven we een voorbeeld van het maken van een tabelgetypeerde gegevensasset, met behulp van Titanic-gegevens in een openbaar beschikbaar Azure Blob Storage-account.

Maak eerst een nieuwe map met de naam gegevens en maak een bestand met de naam MLTable:

mkdir data
touch MLTable

Kopieer en plak vervolgens de volgende YAML in het MLTable-bestand dat u in de vorige stap hebt gemaakt:

Let op

Wijzig de naam van het MLTable bestand niet in MLTable.yaml of MLTable.yml. Azure Machine Learning verwacht een MLTable bestand.

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

Voer vervolgens de volgende opdracht uit in de CLI. Zorg ervoor dat u de <> tijdelijke aanduidingen bijwerkt met de gegevensassetnaam en versiewaarden.

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

Belangrijk

Dit path moet een map zijn die een geldig MLTable bestand bevat.

Gegevensassets maken van taakuitvoer

U kunt een gegevensasset maken op basis van een Azure Machine Learning-taak door de name parameter in de uitvoer in te stellen. In dit voorbeeld verzendt u een taak waarmee gegevens uit een openbaar blobarchief worden gekopieerd naar uw standaard Azure Machine Learning-gegevensarchief en een gegevensasset wordt gemaakt met de naam job_output_titanic_asset.

Een YAML-bestand met taakspecificatie maken (<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
    

Verzend vervolgens de taak met behulp van de CLI:

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

Gegevensassets beheren

Een gegevensasset verwijderen

Belangrijk

Het verwijderen van gegevensassets wordt standaard niet ondersteund.

Als azure machine learning verwijdering van gegevensassets heeft toegestaan, zou dit de volgende nadelige gevolgen hebben:

  • Productietaken die gegevensassets verbruiken die later zijn verwijderd, mislukken.
  • Het zou moeilijker worden om een ML-experiment te reproduceren .
  • Taakherkomst zou breken, omdat het onmogelijk zou worden om de verwijderde gegevensassetversie weer te geven.
  • U zou niet goed kunnen bijhouden en controleren , omdat versies mogelijk ontbreken.

Daarom biedt de onveranderbaarheid van gegevensassets een beveiligingsniveau bij het werken in een team dat productieworkloads maakt.

Wanneer een gegevensasset ten onrechte is gemaakt, bijvoorbeeld met een onjuiste naam, type of pad, biedt Azure Machine Learning oplossingen voor het afhandelen van de situatie zonder de negatieve gevolgen van verwijdering:

Ik wil deze gegevensasset verwijderen omdat... Oplossing
De naam is onjuist De gegevensasset archiveren
Het team gebruikt de gegevensasset niet meer De gegevensasset archiveren
De lijst met gegevensassets wordt onbelangrijke e-mail De gegevensasset archiveren
Het pad is onjuist Maak een nieuwe versie van de gegevensasset (dezelfde naam) met het juiste pad. Lees Gegevensassets maken voor meer informatie.
Het heeft een onjuist type Op dit moment staat Azure Machine Learning het maken van een nieuwe versie met een ander type niet toe in vergelijking met de eerste versie.
(1) De gegevensasset archiveren
(2) Maak een nieuwe gegevensasset onder een andere naam met het juiste type.

Een gegevensasset archiveren

Als u een gegevensasset archivert, wordt deze standaard verborgen voor zowel lijstquery's (bijvoorbeeld in de CLI az ml data list) als de vermelding van gegevensassets in de gebruikersinterface van Studio. U kunt nog steeds verwijzen naar en een gearchiveerd gegevensasset in uw werkstromen gebruiken. U kunt het volgende archiveren:

  • alle versies van de gegevensasset onder een bepaalde naam, of
  • een specifieke gegevensassetversie

Alle versies van een gegevensasset archiveren

Als u alle versies van de gegevensasset onder een bepaalde naam wilt archiveren, gebruikt u:

Voer de volgende opdracht uit (werk de <> tijdelijke aanduiding bij met de naam van uw gegevensasset):

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

Een specifieke gegevensassetversie archiveren

Als u een specifieke versie van een gegevensasset wilt archiveren, gebruikt u:

Voer de volgende opdracht uit (werk de <> tijdelijke aanduidingen bij met de naam van uw gegevensasset en versie):

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

Een gearchiveerde gegevensasset herstellen

U kunt een gearchiveerde gegevensasset herstellen. Als alle versies van de gegevensasset zijn gearchiveerd, kunt u geen afzonderlijke versies van de gegevensasset herstellen. U moet alle versies herstellen.

Alle versies van een gegevensasset herstellen

Als u alle versies van de gegevensasset onder een bepaalde naam wilt herstellen, gebruikt u:

Voer de volgende opdracht uit (werk de <> tijdelijke aanduiding bij met de naam van uw gegevensasset):

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

Een specifieke gegevensassetversie herstellen

Belangrijk

Als alle gegevensassetversies zijn gearchiveerd, kunt u geen afzonderlijke versies van de gegevensasset herstellen. U moet alle versies herstellen.

Als u een specifieke versie van een gegevensasset wilt herstellen, gebruikt u:

Voer de volgende opdracht uit (werk de <> tijdelijke aanduidingen bij met de naam van uw gegevensasset en versie):

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

Gegevensherkomst

Gegevensherkomst wordt algemeen begrepen als de levenscyclus die de oorsprong van de gegevens omvat en waar deze zich in de loop van de tijd in de opslag verplaatst. Verschillende soorten achterwaarts ogende scenario's gebruiken dit, bijvoorbeeld het oplossen van problemen, het traceren van hoofdoorzaken in ML-pijplijnen en foutopsporing. Analyse van gegevenskwaliteit, naleving en 'what if'-scenario's maken ook gebruik van herkomst. Gegevensherkomst wordt visueel weergegeven om gegevens weer te geven die van de bron naar de bestemming worden verplaatst. Daarnaast worden gegevenstransformaties behandeld. Gezien de complexiteit van de meeste zakelijke gegevensomgevingen, kunnen deze weergaven moeilijk te begrijpen worden zonder consolidatie of maskering van randapparatuurgegevenspunten.

In een Azure Machine Learning-pijplijn tonen uw gegevensassets de oorsprong van de gegevens en hoe de gegevens zijn verwerkt, bijvoorbeeld:

Screenshot showing data lineage in the job details.

U kunt de taken weergeven die de gegevensasset gebruiken in de gebruikersinterface van Studio. Selecteer eerst Gegevens in het linkermenu en selecteer vervolgens de naam van de gegevensasset. U kunt de taken zien die de gegevensasset gebruiken:

Screenshot that shows the jobs that consume a data asset.

Met de taakweergave in gegevensassets kunt u eenvoudiger taakfouten vinden en een analyse van de oorzaak van de route uitvoeren in uw ML-pijplijnen en foutopsporing.

Taggen van gegevensassets

Gegevensassets ondersteunen taggen. Dit zijn extra metagegevens die worden toegepast op de gegevensasset in de vorm van een sleutel-waardepaar. Gegevenstags bieden veel voordelen:

  • Beschrijving van gegevenskwaliteit. Als uw organisatie bijvoorbeeld gebruikmaakt van een medalsight lakehouse-architectuur , kunt u assets taggen met medallion:bronze (onbewerkt), medallion:silver (gevalideerd) en medallion:gold (verrijkt).
  • Biedt efficiënt zoeken en filteren van gegevens, zodat gegevens kunnen worden gedetecteerd.
  • Helpt bij het identificeren van gevoelige persoonlijke gegevens, om de toegang tot gegevens correct te beheren en te beheren. Bijvoorbeeld sensitivity:PII/sensitivity:nonPII.
  • Bepaal of gegevens zijn goedgekeurd door een verantwoorde AI-audit (RAI). Bijvoorbeeld RAI_audit:approved/RAI_audit:todo.

U kunt tags toevoegen aan gegevensassets als onderdeel van hun aanmaakstroom of u kunt tags toevoegen aan bestaande gegevensassets. In deze sectie worden beide weergegeven.

Tags toevoegen als onderdeel van de stroom voor het maken van gegevensassets

Maak een YAML-bestand en kopieer en plak de volgende code. U moet de <> tijdelijke aanduidingen bijwerken met de naam van uw gegevensasset, de versie, beschrijving, tags (sleutel-waardeparen) en het pad naar één bestand op een ondersteunde locatie.

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

Voer vervolgens de volgende opdracht uit in de CLI (werk de <filename> tijdelijke aanduiding bij naar de YAML-bestandsnaam):

az ml data create -f <filename>.yml

Tags toevoegen aan een bestaande gegevensasset

Voer de volgende opdracht uit in de Azure CLI en werk de tijdelijke aanduidingen bij met de <> naam van uw gegevensasset, versie- en sleutelwaardepaar voor de tag.

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

Best practices voor versiebeheer

Normaal gesproken organiseren uw ETL-processen uw mapstructuur in Azure Storage op tijd, bijvoorbeeld:

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

Met de combinatie van gestructureerde mappen met tijd/versie en Azure Machine Learning-tabellen (MLTable) kunt u versiegegevenssets maken. We gebruiken een hypothetisch voorbeeld om te laten zien hoe u versiegegevens kunt bereiken met Azure Machine Learning-tabellen. Stel dat u elke week camera-afbeeldingen uploadt naar Azure Blob Storage, in de volgende structuur:

/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

Notitie

Hoewel we laten zien hoe u versie-installatiekopiegegevens (jpeg) gebruikt, kan dezelfde methodologie worden toegepast op elk bestandstype (bijvoorbeeld Parquet, CSV).

Met Azure Machine Learning-tabellen (mltable) maakt u een tabel met paden met de gegevens tot het einde van de eerste week in 2023 en maakt u vervolgens een gegevensasset:

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)

Aan het einde van de volgende week heeft uw ETL de gegevens bijgewerkt om meer gegevens op te nemen:

/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

Uw eerste versie (20230108) blijft alleen bestanden koppelen/downloaden van year=2022/week=52 en year=2023/week=1 omdat de paden in het MLTable bestand worden gedeclareerd. Dit zorgt voor reproduceerbaarheid voor uw experimenten. Als u een nieuwe versie van de gegevensasset wilt maken die deze bevat year=2023/week2, gebruikt u:

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)

U hebt nu twee versies van de gegevens, waarbij de naam van de versie overeenkomt met de datum waarop de afbeeldingen naar de opslag zijn geüpload:

  1. 20230108: De afbeeldingen tot 2023-jan-08.
  2. 20230115: De afbeeldingen tot 2023-jan-15.

In beide gevallen maakt MLTable een tabel met paden die alleen de afbeeldingen tot die datums bevatten.

In een Azure Machine Learning-taak kunt u deze paden in de versie van MLTable koppelen of downloaden naar uw rekendoel met behulp van de eval_download of eval_mount modi:

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)

Notitie

De eval_mount en eval_download modi zijn uniek voor MLTable. In dit geval evalueert de AzureML-gegevensruntime het MLTable bestand en koppelt u de paden op het rekendoel.

Volgende stappen