Praca z tabelami w usłudze Azure Machine Learning
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
Usługa Azure Machine Learning obsługuje typ tabeli (mltable
). Dzięki temu można utworzyć strategię, która definiuje sposób ładowania plików danych do pamięci jako ramki danych biblioteki Pandas lub Spark. Z tego artykułu dowiesz się:
- Kiedy należy używać tabel usługi Azure Machine Learning zamiast plików lub folderów
- Jak zainstalować zestaw
mltable
SDK - Jak zdefiniować strategię ładowania danych przy użyciu
mltable
pliku - Przykłady pokazujące sposób
mltable
użycia w usłudze Azure Machine Learning - Jak używać elementu
mltable
podczas programowania interakcyjnego (na przykład w notesie)
Wymagania wstępne
Subskrypcja platformy Azure. Jeśli nie masz jeszcze subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Learning
Obszar roboczy usługi Azure Machine Learning
Ważne
Upewnij się, że masz zainstalowany najnowszy mltable
pakiet w środowisku języka Python:
pip install -U mltable azureml-dataprep[pandas]
Klonowanie repozytorium przykładów
Fragmenty kodu w tym artykule są oparte na przykładach w repozytorium GitHub przykładów usługi Azure Machine Learning. Aby sklonować repozytorium do środowiska deweloperskiego, użyj następującego polecenia:
git clone --depth 1 https://github.com/Azure/azureml-examples
Napiwek
Użyj polecenia --depth 1
, aby sklonować tylko najnowsze zatwierdzenie do repozytorium. Skraca to czas potrzebny do ukończenia operacji.
Przykłady dotyczące tabel usługi Azure Machine Learning można znaleźć w tym folderze sklonowanego repozytorium:
cd azureml-examples/sdk/python/using-mltable
Wprowadzenie
Tabele usługi Azure Machine Learning (mltable
) umożliwiają zdefiniowanie sposobu ładowania plików danych do pamięci jako ramki danych Biblioteki Pandas i/lub Spark. Tabele mają dwie kluczowe funkcje:
- Plik MLTable. Plik oparty na języku YAML, który definiuje strategię ładowania danych. W pliku MLTable można określić:
- Lokalizacja magazynu lub lokalizacje danych — lokalna, w chmurze lub na publicznym serwerze http(s).
- Wzorce globbing w magazynie w chmurze. Te lokalizacje mogą określać zestawy nazw plików z symbolami wieloznacznymi (
*
). - przekształcenie odczytu — na przykład typ formatu pliku (rozdzielany tekst, Parquet, Delta, json), ograniczniki, nagłówki itp.
- Konwersje typów kolumn (w celu wymuszenia schematu).
- Tworzenie nowej kolumny przy użyciu informacji o strukturze folderów — na przykład utworzenie kolumny rok i miesiąc przy użyciu
{year}/{month}
struktury folderów w ścieżce. - Podzestawy danych do załadowania — na przykład przefiltruj wiersze, zachowaj/upuść kolumny, pobierz losowe próbki.
- Szybki i wydajny aparat ładowania danych do ramki danych Pandas lub Spark zgodnie z strategią zdefiniowaną w pliku MLTable. Silnik opiera się na Rust w celu zapewnienia wysokiej szybkości i wydajności pamięci.
Tabele usługi Azure Machine Learning są przydatne w następujących scenariuszach:
- Należy wykonać globover w lokalizacjach przechowywania.
- Musisz utworzyć tabelę przy użyciu danych z różnych lokalizacji przechowywania (na przykład różnych kontenerów obiektów blob).
- Ścieżka zawiera istotne informacje, które mają zostać przechwycone w danych (na przykład data i godzina).
- Schemat danych często się zmienia.
- Potrzebujesz łatwej powtarzalności kroków ładowania danych.
- Potrzebny jest tylko podzbiór dużych danych.
- Dane zawierają lokalizacje magazynu, które mają być przesyłane strumieniowo do sesji języka Python. Na przykład chcesz przesyłać strumieniowo
path
w następującej strukturze wierszy JSON:[{"path": "abfss://fs@account.dfs.core.windows.net/my-images/cats/001.jpg", "label":"cat"}]
. - Chcesz wytrenować modele uczenia maszynowego przy użyciu rozwiązania Azure Machine Learning AutoML.
Napiwek
W przypadku danych tabelarycznych usługa Azure Machine Learning nie wymaga użycia tabel usługi Azure Machine Learning (mltable
). Możesz użyć typów plików () i folderów (uri_file
uri_folder
) usługi Azure Machine Learning, a własna logika analizowania ładuje dane do ramki danych biblioteki Pandas lub Spark.
W przypadku prostego pliku CSV lub folderu Parquet łatwiej jest używać plików/folderów usługi Azure Machine Learning zamiast tabel.
Przewodnik Szybki start dotyczący tabel usługi Azure Machine Learning
W tym przewodniku Szybki start utworzysz tabelę (mltable
) danych NYC Green Taxi z usługi Azure Open Datasets. Dane mają format parquet i obejmują lata 2008-2021. Na publicznie dostępnym koncie magazynu obiektów blob pliki danych mają następującą strukturę folderów:
/
└── green
├── puYear=2008
│ ├── puMonth=1
│ │ ├── _committed_2983805876188002631
│ │ └── part-XXX.snappy.parquet
│ ├── ...
│ └── puMonth=12
│ ├── _committed_2983805876188002631
│ └── part-XXX.snappy.parquet
├── ...
└── puYear=2021
├── puMonth=1
│ ├── _committed_2983805876188002631
│ └── part-XXX.snappy.parquet
├── ...
└── puMonth=12
├── _committed_2983805876188002631
└── part-XXX.snappy.parquet
Te dane wymagają załadowania do ramki danych biblioteki Pandas:
- Tylko pliki parquet od lat 2015-19
- Losowa próbka danych
- Tylko wiersze o odległości odgrywania większej niż 0
- Odpowiednie kolumny dla uczenia maszynowego
- Nowe kolumny — rok i miesiąc — przy użyciu informacji o ścieżce (
puYear=X/puMonth=Y
)
Kod biblioteki Pandas obsługuje to. Jednak osiągnięcie powtarzalności stanie się trudne, ponieważ należy wykonać jedną z następujących czynności:
- Udostępnij kod, co oznacza, że jeśli schemat ulegnie zmianie (na przykład nazwa kolumny może ulec zmianie), wszyscy użytkownicy muszą zaktualizować swój kod
- Pisanie potoku ETL, który ma duże obciążenie
Tabele usługi Azure Machine Learning zapewniają lekki mechanizm serializacji (zapisywania) kroków ładowania danych w MLTable
pliku. Następnie ty i członkowie zespołu będą mogli odtworzyć ramkę danych biblioteki Pandas. Jeśli schemat ulegnie zmianie, wystarczy zaktualizować MLTable
plik zamiast aktualizacji w wielu miejscach obejmujących kod ładowania danych w języku Python.
Sklonuj notes Szybkiego startu lub utwórz nowy notes/skrypt
Jeśli używasz wystąpienia obliczeniowego usługi Azure Machine Learning, utwórz nowy notes. Jeśli używasz środowiska IDE, należy utworzyć nowy skrypt języka Python.
Ponadto notes Szybkiego startu jest dostępny w repozytorium GitHub z przykładami usługi Azure Machine Learning. Użyj tego kodu, aby sklonować notes i uzyskać do niego dostęp:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/using-mltable/quickstart
Instalowanie zestawu mltable
SDK języka Python
Aby załadować dane NYC Green Taxi Do tabeli usługi Azure Machine Learning, musisz mieć mltable
zestaw SDK języka Python i pandas
zainstalować go w środowisku języka Python za pomocą następującego polecenia:
pip install -U mltable azureml-dataprep[pandas]
Tworzenie pliku MLTable
Użyj zestawu mltable
SDK języka Python, aby utworzyć plik MLTable, aby udokumentować strategię ładowania danych. W tym celu skopiuj i wklej następujący kod do notesu/skryptu, a następnie wykonaj ten kod:
import mltable
# glob the parquet file paths for years 2015-19, all months.
paths = [
{
"pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2015/puMonth=*/*.parquet"
},
{
"pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2016/puMonth=*/*.parquet"
},
{
"pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2017/puMonth=*/*.parquet"
},
{
"pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2018/puMonth=*/*.parquet"
},
{
"pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2019/puMonth=*/*.parquet"
},
]
# create a table from the parquet paths
tbl = mltable.from_parquet_files(paths)
# table a random sample
tbl = tbl.take_random_sample(probability=0.001, seed=735)
# filter trips with a distance > 0
tbl = tbl.filter("col('tripDistance') > 0")
# Drop columns
tbl = tbl.drop_columns(["puLocationId", "doLocationId", "storeAndFwdFlag"])
# Create two new columns - year and month - where the values are taken from the path
tbl = tbl.extract_columns_from_partition_format("/puYear={year}/puMonth={month}")
# print the first 5 records of the table as a check
tbl.show(5)
Opcjonalnie możesz załadować obiekt MLTable do biblioteki Pandas przy użyciu:
# You can load the table into a pandas dataframe
# NOTE: The data is in East US region and the data is large, so this will take several minutes (~7mins)
# to load if you are in a different region.
# df = tbl.to_pandas_dataframe()
Zapisywanie kroków ładowania danych
Następnie zapisz wszystkie kroki ładowania danych do pliku MLTable. Zapisanie kroków ładowania danych w pliku MLTable umożliwia odtworzenie ramki danych Biblioteki Pandas w późniejszym momencie bez konieczności ponownego definiowania kodu za każdym razem.
Możesz zapisać plik YAML w tabeli MLTable w zasobie magazynu w chmurze lub zapisać go w zasobach ścieżki lokalnej.
# save the data loading steps in an MLTable file to a cloud storage resource
# NOTE: the tbl object was defined in the previous snippet.
tbl.save(path="azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/titanic", colocated=True, show_progress=True, overwrite=True)
# save the data loading steps in an MLTable file to a local resource
# NOTE: the tbl object was defined in the previous snippet.
tbl.save("./titanic")
Ważne
- Jeśli colocated == True, skopiujemy dane do tego samego folderu z plikiem YAML MLTable, jeśli nie są one obecnie kolokowane, i użyjemy ścieżek względnych w pliku YAML MLTable.
- Jeśli colocated == False, nie przeniesiemy danych, użyjemy ścieżek bezwzględnych dla danych w chmurze i użyjemy ścieżek względnych dla danych lokalnych.
- Nie obsługujemy tej kombinacji parametrów: dane są przechowywane w zasobie lokalnym, kolokowane == False,
path
są przeznaczone dla katalogu w chmurze. Przekaż dane lokalne do chmury i zamiast tego użyj ścieżek danych w chmurze dla tabeli MLTable.
Odtwórz kroki ładowania danych
Po serializacji kroków ładowania danych do pliku można je odtworzyć w dowolnym momencie za pomocą metody load(). W ten sposób nie trzeba ponownie definiować kroków ładowania danych w kodzie i łatwiej udostępnić plik.
import mltable
# load the previously saved MLTable file
tbl = mltable.load("./nyc_taxi/")
tbl.show(5)
# You can load the table into a pandas dataframe
# NOTE: The data is in East US region and the data is large, so this will take several minutes (~7mins)
# to load if you are in a different region.
# load the table into pandas
# df = tbl.to_pandas_dataframe()
# print the head of the data frame
# df.head()
# print the shape and column types of the data frame
# print(f"Shape: {df.shape}")
# print(f"Columns:\n{df.dtypes}")
Tworzenie zasobu danych w celu pomocy w udostępnianiu i powtarzalności
Być może plik MLTable jest obecnie zapisany na dysku, co utrudnia udostępnianie członkom zespołu. Podczas tworzenia zasobu danych w usłudze Azure Machine Learning tabela MLTable jest przesyłana do magazynu w chmurze i "zakładka". Członkowie zespołu mogą następnie uzyskać dostęp do tabeli MLTable z przyjazną nazwą. Ponadto zasób danych jest wersjonowany.
az ml data create --name green-quickstart --version 1 --path ./nyc_taxi --type mltable
Uwaga
Ścieżka wskazuje folder zawierający MLTable
plik.
Odczytywanie zasobu danych w sesji interakcyjnej
Teraz, gdy tabela MLTable jest przechowywana w chmurze, ty i członkowie zespołu mogą uzyskać do niej dostęp za pomocą przyjaznej nazwy w sesji interakcyjnej (na przykład notesu):
import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
# connect to the AzureML workspace
# NOTE: the subscription_id, resource_group, workspace variables are set
# in a previous code snippet.
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
# get the latest version of the data asset
# Note: The version was set in the previous snippet. If you changed the version
# number, update the VERSION variable below.
VERSION="1"
data_asset = ml_client.data.get(name="green-quickstart", version=VERSION)
# create a table
tbl = mltable.load(f"azureml:/{data_asset.id}")
tbl.show(5)
# load into pandas
# NOTE: The data is in East US region and the data is large, so this will take several minutes (~7mins) to load if you are in a different region.
df = tbl.to_pandas_dataframe()
Odczytywanie zasobu danych w zadaniu
Jeśli ty lub członek zespołu chcesz uzyskać dostęp do tabeli w zadaniu, skrypt szkoleniowy języka Python będzie zawierał następujące elementy:
# ./src/train.py
import argparse
import mltable
# parse arguments
parser = argparse.ArgumentParser()
parser.add_argument('--input', help='mltable to read')
args = parser.parse_args()
# load mltable
tbl = mltable.load(args.input)
# load into pandas
df = tbl.to_pandas_dataframe()
Zadanie wymaga pliku conda, który zawiera zależności pakietów języka Python:
# ./conda_dependencies.yml
dependencies:
- python=3.10
- pip=21.2.4
- pip:
- mltable
- azureml-dataprep[pandas]
Zadanie należy przesłać przy użyciu:
Utwórz następujący plik YAML zadania:
# mltable-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: ./src
command: python train.py --input ${{inputs.green}}
inputs:
green:
type: mltable
path: azureml:green-quickstart:1
compute: cpu-cluster
environment:
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: conda_dependencies.yml
W interfejsie wiersza polecenia utwórz zadanie:
az ml job create -f mltable-job.yml
Tworzenie plików MLTable
Aby bezpośrednio utworzyć plik MLTable, zalecamy użycie mltable
zestawu SDK języka Python do tworzenia plików MLTable — jak pokazano w przewodniku Szybki start tabel usługi Azure Machine Learning — zamiast edytora tekstów. W tej sekcji opisano możliwości w zestawie mltable
SDK języka Python.
Typy obsługiwanych plików
Tabelę MLTable można utworzyć z różnymi typami plików:
Typ pliku | MLTable Python SDK |
---|---|
Rozdzielany tekst (na przykład pliki CSV) |
from_delimited_files(paths=[path]) |
Parquet | from_parquet_files(paths=[path]) |
Delta Lake | from_delta_lake(delta_table_uri=<uri_pointing_to_delta_table_directory>,timestamp_as_of='2022-08-26T00:00:00Z') |
Linie JSON | from_json_lines_files(paths=[path]) |
Ścieżki (Utwórz tabelę z kolumną ścieżek do strumienia) |
from_paths(paths=[path]) |
Aby uzyskać więcej informacji, przeczytaj zasób referencyjny MLTable
Definiowanie ścieżek
W przypadku tekstu rozdzielanego, parquet, wierszy JSON i ścieżek zdefiniuj listę słowników języka Python, które definiują ścieżkę lub ścieżki, z których mają być odczytywane:
import mltable
# A List of paths to read into the table. The paths are a python dict that define if the path is
# a file, folder, or (glob) pattern.
paths = [
{
"file": "<supported_path>"
}
]
tbl = mltable.from_delimited_files(paths=paths)
# alternatively
# tbl = mltable.from_parquet_files(paths=paths)
# tbl = mltable.from_json_lines_files(paths=paths)
# tbl = mltable.from_paths(paths=paths)
Tabela MLTable obsługuje następujące typy ścieżek:
Lokalizacja | Przykłady |
---|---|
Ścieżka na komputerze lokalnym | ./home/username/data/my_data |
Ś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 | wasbs://<container_name>@<account_name>.blob.core.windows.net/<path> abfss://<file_system>@<account_name>.dfs.core.windows.net/<path> |
Długi magazyn danych usługi Azure Machine Learning | azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path> |
Uwaga
mltable
obsługuje przekazywanie poświadczeń użytkownika dla ścieżek w magazynach danych usługi Azure Storage i Azure Machine Learning. Jeśli nie masz uprawnień do danych w magazynie bazowym, nie możesz uzyskać dostępu do danych.
Uwaga dotycząca definiowania ścieżek dla tabel usługi Delta Lake
W porównaniu z innymi typami plików definiowanie ścieżek odczytu tabel usługi Delta Lake różni się. W przypadku tabel usługi Delta Lake ścieżka wskazuje pojedynczy folder (zazwyczaj w usłudze ADLS Gen2), który zawiera folder "_delta_log" i pliki danych. obsługiwana jest podróż w czasie. Poniższy kod pokazuje, jak zdefiniować ścieżkę dla tabeli usługi Delta Lake:
import mltable
# define the cloud path containing the delta table (where the _delta_log file is stored)
delta_table = "abfss://<file_system>@<account_name>.dfs.core.windows.net/<path_to_delta_table>"
# create an MLTable. Note the timestamp_as_of parameter for time travel.
tbl = mltable.from_delta_lake(
delta_table_uri=delta_table,
timestamp_as_of='2022-08-26T00:00:00Z'
)
Aby uzyskać najnowszą wersję danych usługi Delta Lake, możesz przekazać bieżący znacznik czasu do pliku timestamp_as_of
.
import mltable
# define the relative path containing the delta table (where the _delta_log file is stored)
delta_table_path = "./working-directory/delta-sample-data"
# get the current timestamp in the required format
current_timestamp = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
print(current_timestamp)
tbl = mltable.from_delta_lake(delta_table_path, timestamp_as_of=current_timestamp)
df = tbl.to_pandas_dataframe()
Ważne
Ograniczenie: mltable
nie obsługuje wyodrębniania klucza partycji podczas odczytywania danych z usługi Delta Lake.
Transformacja mltable
extract_columns_from_partition_format
nie będzie działać podczas odczytywania danych usługi Delta Lake za pośrednictwem metody mltable
.
Ważne
mltable
obsługuje przekazywanie poświadczeń użytkownika dla ścieżek w magazynach danych usługi Azure Storage i Azure Machine Learning. Jeśli nie masz uprawnień do danych w magazynie bazowym, nie możesz uzyskać dostępu do danych.
Pliki, foldery i globy
Tabele usługi Azure Machine Learning obsługują odczytywanie z:
- pliki, na przykład:
abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
- foldery, na przykład
abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
- wzorce glob (s), na przykład
abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
- kombinacja plików, folderów i wzorców symboli globbingowych
Obsługiwane przekształcenia ładowania danych
Pełne, aktualne szczegóły obsługiwanych przekształceń ładowania danych można znaleźć w dokumentacji referencyjnej tabeli MLTable.
Przykłady
Przykłady w repozytorium GitHub z przykładami usługi Azure Machine Learning stały się podstawą fragmentów kodu w tym artykule. Użyj tego polecenia, aby sklonować repozytorium do środowiska deweloperskiego:
git clone --depth 1 https://github.com/Azure/azureml-examples
Napiwek
Użyj polecenia --depth 1
, aby sklonować tylko najnowsze zatwierdzenie do repozytorium. Skraca to czas potrzebny do ukończenia operacji.
Ten folder klonowania hostuje przykłady dotyczące tabel usługi Azure Machine Learning:
cd azureml-examples/sdk/python/using-mltable
Plik rozdzielany
Najpierw utwórz tabelę MLTable na podstawie pliku CSV za pomocą następującego kodu:
import mltable
from mltable import MLTableHeaders, MLTableFileEncoding, DataType
# create paths to the data files
paths = [{"file": "wasbs://data@azuremlexampledata.blob.core.windows.net/titanic.csv"}]
# create an MLTable from the data files
tbl = mltable.from_delimited_files(
paths=paths,
delimiter=",",
header=MLTableHeaders.all_files_same_headers,
infer_column_types=True,
include_path_column=False,
encoding=MLTableFileEncoding.utf8,
)
# filter out rows undefined ages
tbl = tbl.filter("col('Age') > 0")
# drop PassengerId
tbl = tbl.drop_columns(["PassengerId"])
# ensure survived column is treated as boolean
data_types = {
"Survived": DataType.to_bool(
true_values=["True", "true", "1"], false_values=["False", "false", "0"]
)
}
tbl = tbl.convert_column_types(data_types)
# show the first 5 records
tbl.show(5)
# You can also load into pandas...
# df = tbl.to_pandas_dataframe()
# df.head(5)
Zapisywanie kroków ładowania danych
Następnie zapisz wszystkie kroki ładowania danych do pliku MLTable. Podczas zapisywania kroków ładowania danych w pliku MLTable można odtworzyć ramkę danych biblioteki Pandas w późniejszym momencie bez konieczności ponownego definiowania kodu za każdym razem.
# save the data loading steps in an MLTable file
# NOTE: the tbl object was defined in the previous snippet.
tbl.save("./titanic")
Odtwórz kroki ładowania danych
Teraz, gdy plik ma zserializowane kroki ładowania danych, możesz odtworzyć je w dowolnym momencie za load()
pomocą metody . W ten sposób nie trzeba ponownie definiować kroków ładowania danych w kodzie i łatwiej udostępnić plik.
import mltable
# load the previously saved MLTable file
tbl = mltable.load("./titanic/")
Tworzenie zasobu danych w celu pomocy w udostępnianiu i powtarzalności
Być może plik MLTable jest obecnie zapisany na dysku, co utrudnia udostępnianie członkom zespołu. Podczas tworzenia zasobu danych w usłudze Azure Machine Learning tabela MLTable jest przesyłana do magazynu w chmurze i "zakładka". Członkowie zespołu mogą następnie uzyskać dostęp do tabeli MLTable z przyjazną nazwą. Ponadto zasób danych jest wersjonowany.
import time
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
# Update with your details...
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"
# set the version number of the data asset to the current UTC time
VERSION = time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
# connect to the AzureML workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
my_data = Data(
path="./titanic",
type=AssetTypes.MLTABLE,
description="The titanic dataset.",
name="titanic-cloud-example",
version=VERSION,
)
ml_client.data.create_or_update(my_data)
Teraz, gdy tabela MLTable jest przechowywana w chmurze, ty i członkowie zespołu mogą uzyskać do niej dostęp za pomocą przyjaznej nazwy w sesji interakcyjnej (na przykład notesu):
import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
# connect to the AzureML workspace
# NOTE: subscription_id, resource_group, workspace were set in a previous snippet.
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
# get the latest version of the data asset
# Note: The version was set in the previous code cell.
data_asset = ml_client.data.get(name="titanic-cloud-example", version=VERSION)
# create a table
tbl = mltable.load(f"azureml:/{data_asset.id}")
# load into pandas
df = tbl.to_pandas_dataframe()
df.head(5)
Możesz również łatwo uzyskać dostęp do zasobu danych w zadaniu.
Pliki Parquet
Przewodnik Szybki start dotyczący tabel usługi Azure Machine Learning wyjaśnia, jak odczytywać pliki parquet.
Ścieżki: tworzenie tabeli plików obrazów
Możesz utworzyć tabelę zawierającą ścieżki w magazynie w chmurze. W tym przykładzie znajduje się kilka obrazów psów i kotów znajdujących się w magazynie w chmurze w następującej strukturze folderów:
/pet-images
/cat
0.jpeg
1.jpeg
...
/dog
0.jpeg
1.jpeg
Obiekt mltable
może utworzyć tabelę zawierającą ścieżki magazynu tych obrazów i ich nazwy folderów (etykiety), których można użyć do przesyłania strumieniowego obrazów. Ten kod tworzy tabelę MLTable:
import mltable
# create paths to the data files
paths = [{"pattern": "wasbs://data@azuremlexampledata.blob.core.windows.net/pet-images/**/*.jpg"}]
# create the mltable
tbl = mltable.from_paths(paths)
# extract useful information from the path
tbl = tbl.extract_columns_from_partition_format("{account}/{container}/{folder}/{label}")
tbl = tbl.drop_columns(["account", "container", "folder"])
df = tbl.to_pandas_dataframe()
print(df.head())
# save the data loading steps in an MLTable file
tbl.save("./pets")
Ten kod pokazuje, jak otworzyć lokalizację magazynu w ramce danych biblioteki Pandas i wykreślić obrazy:
# plot images on a grid. Note this takes ~1min to execute.
import matplotlib.pyplot as plt
from PIL import Image
fig = plt.figure(figsize=(20, 20))
columns = 4
rows = 5
for i in range(1, columns*rows +1):
with df.Path[i].open() as f:
img = Image.open(f)
fig.add_subplot(rows, columns, i)
plt.imshow(img)
plt.title(df.label[i])
Tworzenie zasobu danych w celu pomocy w udostępnianiu i powtarzalności
Być może plik mltable
jest obecnie zapisany na dysku, co utrudnia udostępnianie członkom zespołu. Podczas tworzenia zasobu danych w usłudze Azure Machine Learning mltable
element jest przekazywany do magazynu w chmurze i "zakładki". Członkowie zespołu mogą następnie uzyskać dostęp do elementu mltable
o przyjaznej nazwie. Ponadto zasób danych jest wersjonowany.
import time
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
# set the version number of the data asset to the current UTC time
VERSION = time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
# connect to the AzureML workspace
# NOTE: subscription_id, resource_group, workspace were set in a previous snippet.
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
my_data = Data(
path="./pets",
type=AssetTypes.MLTABLE,
description="A sample of cat and dog images",
name="pets-mltable-example",
version=VERSION,
)
ml_client.data.create_or_update(my_data)
Teraz, gdy element mltable
jest przechowywany w chmurze, Ty i Twoi członkowie zespołu będą mogli uzyskać do niego dostęp za pomocą przyjaznej nazwy w sesji interaktywnej (na przykład notesu):
import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
# connect to the AzureML workspace
# NOTE: subscription_id, resource_group, workspace were set in a previous snippet.
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
# get the latest version of the data asset
# Note: the variable VERSION is set in the previous code
data_asset = ml_client.data.get(name="pets-mltable-example", version=VERSION)
# the table from the data asset id
tbl = mltable.load(f"azureml:/{data_asset.id}")
# load into pandas
df = tbl.to_pandas_dataframe()
df.head()
Możesz również załadować dane do zadania.