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:
Subskrypcja Azure. Jeśli nie masz subskrypcji, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Edukacja.
Obszar roboczy usługi Azure Machine Learning. Tworzenie zasobów obszaru roboczego.
Zainstalowano interfejs wiersza polecenia/zestaw SDK usługi Azure Machine Edukacja.
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_line
w 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.yaml
MLTable
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:
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:
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) imedallion: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/week2
element , 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:
- 20230108: Obrazy do 2023-Jan-08.
- 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.