Tworzenie zasobów danych i zarządzanie nimi

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

W tym artykule pokazano, jak tworzyć zasoby danych i zarządzać nimi w usłudze Azure Machine Edukacja.

Zasoby danych mogą pomóc, gdy potrzebujesz następujących możliwości:

  • Przechowywanie wersji: zasoby danych obsługują przechowywanie wersji danych.
  • Powtarzalność: po utworzeniu wersji zasobu danych jest ona niezmienna. Nie można go modyfikować ani usuwać. W związku z tym zadania szkoleniowe lub potoki, które używają zasobu danych, można odtworzyć.
  • Inspekcja: ponieważ wersja zasobu danych jest niezmienna, można śledzić wersje zasobów, które zaktualizowały wersję i kiedy wystąpiły aktualizacje wersji.
  • Pochodzenie: w przypadku dowolnego zasobu danych można wyświetlić, które zadania lub potoki zużywają dane.
  • Łatwość użycia: zasób danych usługi Azure Machine Learning przypomina zakładki przeglądarki internetowej (ulubione). Zamiast pamiętać długie ścieżki magazynowania odwołujące się do często używanych danych w usłudze Azure Storage, możesz utworzyć wersję zasobu danych, a następnie uzyskać dostęp do tej wersji zasobu z przyjazną nazwą (na przykład: azureml:<my_data_asset_name>:<version>).

Napiwek

Aby uzyskać dostęp do danych w sesji interaktywnej (na przykład notesu) lub zadania, nie musisz najpierw tworzyć zasobu danych. Aby uzyskać dostęp do danych, możesz użyć identyfikatorów URI magazynu danych. Identyfikatory URI magazynu danych oferują prosty sposób uzyskiwania dostępu do danych dla osób rozpoczynających pracę z usługą Azure Machine Learning.

Wymagania wstępne

Aby utworzyć zasoby danych i pracować z nimi, potrzebne są następujące elementy:

Tworzenie zasobów danych

Podczas tworzenia zasobu danych należy ustawić typ zasobu danych. Usługa Azure Machine Edukacja obsługuje trzy typy zasobów danych:

Type Interfejs API Scenariusze kanoniczne
Plik
Odwołanie do pojedynczego pliku
uri_file Odczyt pojedynczego pliku w usłudze Azure Storage (plik może mieć dowolny format).
Folder
Odwołuje się do folderu
uri_folder Odczytaj folder plików parquet/CSV do biblioteki Pandas/Spark.

Odczytywanie danych bez struktury (obrazów, tekstu, dźwięku itp.) znajdujących się w folderze.
Tabela
Odwołanie do tabeli danych
mltable Masz złożony schemat, który podlega częstym zmianom lub potrzebujesz podzbioru dużych danych tabelarycznych.

AutoML z tabelami.

Odczytywanie danych bez struktury (obrazów, tekstu, dźwięku itp.) danych rozmieszczonych w wielu lokalizacjach przechowywania.

Uwaga

Nie używaj osadzonych linii nowego wiersza w plikach CSV, chyba że zarejestrujesz dane jako tabelę MLTable. Osadzone linie nowego wiersza w plikach CSV mogą powodować nieprawidłowe wartości pól podczas odczytywania danych. Tabela MLTable ma ten parametr support_multi_linew read_delimited transformacji, aby interpretować cudzysłów wierszy jako jeden rekord.

Gdy używasz zasobu danych w zadaniu usługi Azure Machine Edukacja, możesz zainstalować lub pobrać zasób do węzłów obliczeniowych. Aby uzyskać więcej informacji, przeczytaj tryby.

Ponadto należy określić parametr wskazujący lokalizację path zasobu danych. Obsługiwane ścieżki obejmują:

Lokalizacja Przykłady
Ścieżka na komputerze lokalnym ./home/username/data/my_data
Ścieżka w magazynie danych azureml://datastores/<data_store_name>/paths/<path>
Ścieżka na publicznym serwerze HTTP https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Ścieżka w usłudze Azure Storage (Obiekt 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>/

Uwaga

Po utworzeniu zasobu danych na podstawie ścieżki lokalnej zostanie ona automatycznie przekazana do domyślnego magazynu danych usługi Azure Machine Edukacja w chmurze.

Tworzenie zasobu danych: typ pliku

Zasób danych, który jest typem pliku (uri_file) wskazuje pojedynczy plik w magazynie (na przykład plik CSV). Zasób danych wpisanych w pliku można utworzyć przy użyciu:

Utwórz plik YAML i skopiuj i wklej następujący kod. Należy zaktualizować <> symbole zastępcze przy użyciu nazwy zasobu danych, wersji, opisu i ścieżki do pojedynczego pliku w obsługiwanej lokalizacji.

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

Następnie wykonaj następujące polecenie w interfejsie wiersza polecenia (zaktualizuj <filename> symbol zastępczy do nazwy pliku YAML):

az ml data create -f <filename>.yml

Tworzenie zasobu danych: typ folderu

Zasób danych, który jest typem Folderu (uri_folder) jest taki, który wskazuje folder w magazynie (na przykład folder zawierający kilka podfolderów obrazów). Zasób danych wpisanych w folderze można utworzyć przy użyciu:

Utwórz plik YAML i skopiuj i wklej następujący kod. Należy zaktualizować <> symbole zastępcze przy użyciu nazwy zasobu danych, wersji, opisu i ścieżki do folderu w obsługiwanej lokalizacji.

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

Następnie wykonaj następujące polecenie w interfejsie wiersza polecenia (zaktualizuj <filename> symbol zastępczy do nazwy pliku YAML):

az ml data create -f <filename>.yml

Tworzenie zasobu danych: typ tabeli

Tabele usługi Azure Machine Edukacja (MLTable) mają rozbudowane funkcje, szczegółowo opisane w temacie Praca z tabelami w usłudze Azure Machine Edukacja. Zamiast powtarzać tę dokumentację, udostępniamy przykład tworzenia zasobu danych typu Tabela przy użyciu danych Titanic znajdujących się na publicznie dostępnym koncie usługi Azure Blob Storage.

Najpierw utwórz nowy katalog o nazwie data i utwórz plik o nazwie MLTable:

mkdir data
touch MLTable

Następnie skopiuj i wklej następujący kod YAML do pliku MLTable utworzonego w poprzednim kroku:

Uwaga

Nie zmieniaj nazwy pliku na MLTable.yamlMLTable lub MLTable.yml. Usługa Azure Machine Learning oczekuje MLTable pliku.

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

Następnie wykonaj następujące polecenie w interfejsie wiersza polecenia. Upewnij się, że symbole zastępcze są aktualizowane <> przy użyciu wartości nazwy zasobu danych i wersji.

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

Ważne

Powinien path to być folder zawierający prawidłowy MLTable plik.

Tworzenie zasobów danych na podstawie danych wyjściowych zadania

Zasób danych można utworzyć na podstawie zadania usługi Azure Machine Edukacja, ustawiając name parametr w danych wyjściowych. W tym przykładzie przesyłasz zadanie, które kopiuje dane z publicznego magazynu obiektów blob do domyślnego magazynu usługi Azure Machine Edukacja Datastore i tworzy zasób danych o nazwie job_output_titanic_asset.

Utwórz plik YAML specyfikacji zadania (<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
    

Następnie prześlij zadanie przy użyciu interfejsu wiersza polecenia:

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

Zarządzanie zasobami danych

Usuwanie zasobu danych

Ważne

Zgodnie z projektem usuwanie zasobów danych nie jest obsługiwane.

Jeśli usługa Azure Machine Learning zezwoliła na usunięcie zasobów danych, będzie to miało następujące niekorzystne skutki:

  • Zadania produkcyjne, które zużywają zasoby danych, które zostały później usunięte, zakończy się niepowodzeniem.
  • Byłoby trudniej odtworzyć eksperyment ML.
  • Pochodzenie zadania spowodowałoby przerwanie, ponieważ nie można wyświetlić usuniętej wersji zasobu danych.
  • Nie można prawidłowo śledzić i przeprowadzać inspekcji , ponieważ mogą brakować wersji.

W związku z tym niezmienność zasobów danych zapewnia poziom ochrony podczas pracy w zespole tworzącym obciążenia produkcyjne.

Gdy zasób danych został błędnie utworzony — na przykład z nieprawidłową nazwą, typem lub ścieżką — usługa Azure Machine Edukacja oferuje rozwiązania do obsługi sytuacji bez negatywnych konsekwencji usunięcia:

Chcę usunąć ten zasób danych, ponieważ... Rozwiązanie
Nazwa jest nieprawidłowa Archiwizowanie zasobu danych
Zespół nie korzysta już z zasobu danych Archiwizowanie zasobu danych
Zaśmieca listę zasobów danych Archiwizowanie zasobu danych
Ścieżka jest niepoprawna Utwórz nową wersję zasobu danych (taką samą nazwę) z poprawną ścieżką. Aby uzyskać więcej informacji, zobacz Tworzenie zasobów danych.
Ma niepoprawny typ Obecnie usługa Azure Machine Edukacja nie zezwala na tworzenie nowej wersji z innym typem w porównaniu z wersją początkową.
(1) Archiwizowanie zasobu danych
(2) Utwórz nowy zasób danych pod inną nazwą z poprawnym typem.

Archiwizowanie zasobu danych

Archiwizowanie zasobu danych domyślnie ukrywa je przed obydwoma zapytaniami listy (na przykład w interfejsie wiersza polecenia az ml data list) i listą elementów zawartości danych w interfejsie użytkownika programu Studio. Nadal możesz odwoływać się do zarchiwizowanego zasobu danych i używać go w przepływach pracy. Możesz zarchiwizować jedną z następujących czynności:

  • wszystkie wersje zasobu danych pod daną nazwą lub
  • określona wersja zasobu danych

Archiwizowanie wszystkich wersji zasobu danych

Aby zarchiwizować wszystkie wersje zasobu danych pod daną nazwą, użyj:

Wykonaj następujące polecenie (zaktualizuj <> symbol zastępczy przy użyciu nazwy zasobu danych):

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

Archiwizowanie określonej wersji zasobu danych

Aby zarchiwizować określoną wersję zasobu danych, użyj:

Wykonaj następujące polecenie (zaktualizuj <> symbole zastępcze przy użyciu nazwy zasobu danych i wersji):

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

Przywracanie zarchiwizowanego zasobu danych

Możesz przywrócić zarchiwizowany zasób danych. Jeśli wszystkie wersje zasobu danych są archiwizowane, nie można przywrócić poszczególnych wersji zasobu danych — musisz przywrócić wszystkie wersje.

Przywracanie wszystkich wersji zasobu danych

Aby przywrócić wszystkie wersje zasobu danych pod daną nazwą, użyj:

Wykonaj następujące polecenie (zaktualizuj <> symbol zastępczy przy użyciu nazwy zasobu danych):

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

Przywracanie określonej wersji zasobu danych

Ważne

Jeśli wszystkie wersje zasobów danych zostały zarchiwizowane, nie można przywrócić poszczególnych wersji zasobu danych — musisz przywrócić wszystkie wersje.

Aby przywrócić określoną wersję zasobu danych, użyj:

Wykonaj następujące polecenie (zaktualizuj <> symbole zastępcze przy użyciu nazwy zasobu danych i wersji):

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

Pochodzenie danych

Pochodzenie danych jest powszechnie zrozumiałe jako cykl życia obejmujący źródło danych i miejsce, w którym przenosi się w czasie do magazynu. Są używane różne rodzaje scenariuszy wstecznych, na przykład rozwiązywanie problemów, śledzenie głównych przyczyn potoków uczenia maszynowego i debugowanie. Scenariusze analizy jakości danych, zgodności i "analizy warunkowej" również używają pochodzenia danych. Pochodzenie jest reprezentowane wizualnie w celu wyświetlania danych przenoszonych ze źródła do miejsca docelowego i dodatkowo obejmuje przekształcenia danych. Biorąc pod uwagę złożoność większości środowisk danych przedsiębiorstwa, te widoki mogą stać się trudne do zrozumienia bez konsolidacji lub maskowania peryferyjnych punktów danych.

W usłudze Azure Machine Edukacja Pipeline zasoby danych pokazują pochodzenie danych i sposób przetwarzania danych, na przykład:

Screenshot showing data lineage in the job details.

Zadania wykorzystujące zasób danych można wyświetlić w interfejsie użytkownika programu Studio. Najpierw wybierz pozycję Dane z menu po lewej stronie, a następnie wybierz nazwę zasobu danych. Możesz zobaczyć zadania zużywające zasób danych:

Screenshot that shows the jobs that consume a data asset.

Widok zadań w zasobach danych ułatwia znajdowanie błędów zadań i analizowanie przyczyn trasy w potokach uczenia maszynowego i debugowaniu.

Tagowanie zasobów danych

Zasoby danych obsługują tagowanie, czyli dodatkowe metadane stosowane do zasobu danych w postaci pary klucz-wartość. Tagowanie danych zapewnia wiele korzyści:

  • Opis jakości danych. Jeśli na przykład organizacja używa architektury lakehouse medalon, możesz tagować zasoby za pomocą medallion:bronze (nieprzetworzone), medallion:silver (zweryfikowane) i medallion:gold (wzbogacone).
  • Zapewnia wydajne wyszukiwanie i filtrowanie danych w celu ułatwienia odnajdywania danych.
  • Pomaga zidentyfikować poufne dane osobowe, aby prawidłowo zarządzać dostępem do danych i zarządzać nimi. Na przykład sensitivity:PII/sensitivity:nonPII.
  • Określ, czy dane są zatwierdzane z inspekcji odpowiedzialnej sztucznej inteligencji (RAI). Na przykład RAI_audit:approved/RAI_audit:todo.

Tagi można dodawać do zasobów danych w ramach przepływu tworzenia lub dodawać tagi do istniejących zasobów danych. W tej sekcji przedstawiono oba te elementy.

Dodawanie tagów w ramach przepływu tworzenia zasobu danych

Utwórz plik YAML i skopiuj i wklej następujący kod. Należy zaktualizować <> symbole zastępcze przy użyciu nazwy zasobu danych, wersji, opisu, tagów (par klucz-wartość) i ścieżki do pojedynczego pliku w obsługiwanej lokalizacji.

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

Następnie wykonaj następujące polecenie w interfejsie wiersza polecenia (zaktualizuj <filename> symbol zastępczy do nazwy pliku YAML):

az ml data create -f <filename>.yml

Dodawanie tagów do istniejącego zasobu danych

Wykonaj następujące polecenie w interfejsie wiersza polecenia platformy Azure i zaktualizuj <> symbole zastępcze przy użyciu nazwy zasobu danych, wersji i pary klucz-wartość dla tagu.

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

Najlepsze rozwiązania dotyczące przechowywania wersji

Zazwyczaj procesy ETL organizują strukturę folderów w usłudze Azure Storage według czasu, na przykład:

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

Kombinacja folderów strukturalnych czasu/wersji i tabel usługi Azure Machine Edukacja (MLTable) umożliwia konstruowanie zestawów danych w wersji. Aby pokazać, jak uzyskać dane w wersji za pomocą usługi Azure Machine Edukacja Tables, użyjemy hipotetycznego przykładu. Załóżmy, że masz proces, który co tydzień przekazuje obrazy aparatu do usługi Azure Blob Storage w następującej strukturze:

/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

Uwaga

Chociaż pokazujemy, jak wersję danych obrazu (jpeg) można zastosować tę samą metodologię do dowolnego typu pliku (na przykład Parquet, CSV).

Za pomocą usługi Azure Machine Edukacja Tables (mltable) utworzysz tabelę ścieżek zawierających dane do końca pierwszego tygodnia w 2023 r., a następnie utworzysz zasób danych:

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)

Pod koniec następnego tygodnia proces ETL zaktualizował dane w celu uwzględnienia większej liczby danych:

/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

Pierwsza wersja (20230108) nadal instaluje/pobiera pliki tylko z year=2022/week=52 pliku i year=2023/week=1 dlatego, że ścieżki są deklarowane MLTable w pliku. Zapewnia to powtarzalność eksperymentów. Aby utworzyć nową wersję zasobu danych, która zawiera year=2023/week2element , należy użyć:

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)

Masz teraz dwie wersje danych, w których nazwa wersji odpowiada dacie przekazania obrazów do magazynu:

  1. 20230108: Obrazy do 2023-Jan-08.
  2. 20230115: Obrazy do 2023-Jan-15.

W obu przypadkach tabela MLTable tworzy tabelę ścieżek, które zawierają tylko obrazy do tych dat.

W zadaniu usługi Azure Machine Edukacja można zainstalować lub pobrać te ścieżki w wersji mlTable do docelowego obiektu obliczeniowego przy użyciu eval_download trybów lub 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)

Uwaga

Tryby eval_mount i eval_download są unikatowe dla tabeli MLTable. W tym przypadku funkcja środowiska uruchomieniowego danych AzureML ocenia MLTable plik i instaluje ścieżki na docelowym obiekcie obliczeniowym.

Następne kroki