Sdílet prostřednictvím


Práce s tabulkami ve službě Azure Machine Learning

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

Azure Machine Learning podporuje typ tabulky (mltable). To umožňuje vytvoření podrobného plánu , který definuje, jak načíst datové soubory do paměti jako datový rámec Pandas nebo Spark. V tomto článku se dozvíte:

  • Kdy místo souborů nebo složek používat tabulky Azure Machine Learning
  • Postup instalace mltable sady SDK
  • Definování podrobného plánu načítání dat pomocí mltable souboru
  • Příklady, které ukazují, jak mltable se používá ve službě Azure Machine Learning
  • Jak používat během interaktivního mltable vývoje (například v poznámkovém bloku)

Požadavky

Důležité

Ujistěte se, že máte v prostředí Pythonu nainstalovaný nejnovější mltable balíček:

pip install -U mltable azureml-dataprep[pandas]

Klonování úložiště příkladů

Fragmenty kódu v tomto článku jsou založené na příkladech v úložišti GitHub s příklady v úložišti Azure Machine Learning. Pokud chcete úložiště naklonovat do vývojového prostředí, použijte tento příkaz:

git clone --depth 1 https://github.com/Azure/azureml-examples

Tip

Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště. Tím se zkracuje doba potřebná k dokončení operace.

Příklady relevantní pro tabulky Azure Machine Learning najdete v této složce naklonovaného úložiště:

cd azureml-examples/sdk/python/using-mltable

Úvod

Tabulkymltable služby Azure Machine Learning umožňují definovat, jak chcete datové soubory načíst do paměti, jako datový rámec Pandas nebo Spark. Tabulky mají dvě klíčové funkce:

  1. Soubor MLTable. Soubor založený na YAML, který definuje podrobný plán načítání dat. V souboru MLTable můžete zadat:
    • Umístění úložiště nebo umístění dat – místní, v cloudu nebo na veřejném serveru HTTP.
    • Vzory globbingu nad cloudovým úložištěm Tato umístění můžou určovat sady názvů souborů se zástupnými znaky (*).
    • Transformace čtení – například typ formátu souboru (text s oddělovači, Parquet, Delta, json), oddělovače, záhlaví atd.
    • Převody typu sloupce (pro vynucení schématu)
    • Vytvoření nového sloupce pomocí informací o struktuře složek – například vytvoření sloupce s rokem a měsícem pomocí {year}/{month} struktury složek v cestě.
    • Podmnožina dat , která se mají načíst – například filtrování řádků, keep/drop sloupců, pořizování náhodných vzorků.
  2. Rychlý a efektivní modul pro načtení dat do datového rámce Pandas nebo Spark podle podrobného plánu definovaného v souboru MLTable. Modul spoléhá na Rust pro vysokou rychlost a efektivitu paměti.

Tabulky Azure Machine Learning jsou užitečné v těchto scénářích:

  • Potřebujete převést umístění úložiště na globus .
  • Potřebujete vytvořit tabulku pomocí dat z různých umístění úložiště (například různých kontejnerů objektů blob).
  • Cesta obsahuje relevantní informace, které chcete zachytit ve svých datech (například datum a čas).
  • Schéma dat se často mění.
  • Chcete snadno reprodukovatelnost kroků načítání dat.
  • Potřebujete jenom podmnožinu velkých dat.
  • Vaše data obsahují umístění úložiště, která chcete streamovat do relace Pythonu. Například chcete streamovat path v následující struktuře řádků JSON: [{"path": "abfss://fs@account.dfs.core.windows.net/my-images/cats/001.jpg", "label":"cat"}].
  • Chcete trénovat modely ML pomocí služby Azure Machine Learning AutoML.

Tip

Pro tabulková data nevyžaduje Azure Machine Learning použití tabulek (Azure Machine Learning Tablesmltable). Můžete použít typy Azure Machine Learning File (uri_file) a Folder (uri_folder) a vlastní logika analýzy načte data do datového rámce Pandas nebo Spark.

U jednoduchého souboru CSV nebo složky Parquet je jednodušší místo tabulek používat soubory a složky Azure Machine Learning.

Rychlý start k tabulkám služby Azure Machine Learning

V tomto rychlém startu vytvoříte tabulku (mltable) dat zelené taxi z Azure Open Datasets z NYC. Data mají parketový formát a pokrývají roky 2008–2021. U veřejně přístupného účtu úložiště objektů blob mají datové soubory tuto strukturu složek:

/
└── 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

Pomocí těchto dat je potřeba načíst do datového rámce Pandas:

  • Pouze parketové soubory pro roky 2015-19
  • Náhodný vzorek dat
  • Pouze řádky s roztrhanou vzdáleností větší než 0
  • Relevantní sloupce pro Machine Learning
  • Nové sloupce – rok a měsíc – pomocí informací o cestě (puYear=X/puMonth=Y)

Kód Pandas to zpracovává. Dosažení reprodukovatelnosti by však bylo obtížné, protože musíte:

  • Sdílet kód, což znamená, že pokud se schéma změní (například název sloupce může změnit), musí všichni uživatelé aktualizovat svůj kód.
  • Zápis kanálu ETL, který má velkou režii

Tabulky Azure Machine Learning poskytují lehký mechanismus serializace (uložení) kroků načítání dat v MLTable souboru. Pak můžete vy a členové vašeho týmu reprodukovat datový rámec Pandas. Pokud se schéma změní, aktualizujete soubor jenom MLTable místo aktualizací na mnoha místech, které zahrnují kód načítání dat Pythonu.

Klonování poznámkového bloku rychlého startu nebo vytvoření nového poznámkového bloku nebo skriptu

Pokud používáte výpočetní instanci Služby Azure Machine Learning, vytvořte nový poznámkový blok. Pokud používáte integrované vývojové prostředí (IDE), měli byste vytvořit nový skript Pythonu.

Poznámkový blok rychlého startu je navíc k dispozici v úložišti GitHub s příklady služby Azure Machine Learning. Pomocí tohoto kódu můžete naklonovat poznámkový blok a přistupovat k němu:

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/using-mltable/quickstart

mltable Instalace sady Python SDK

Pokud chcete načíst data zelené taxi NYC do tabulky Azure Machine Learning, musíte mít mltable v prostředí Pythonu nainstalovanou sadu Python SDK a pandas nainstalovat ji pomocí tohoto příkazu:

pip install -U mltable azureml-dataprep[pandas]

Vytvoření souboru MLTable

mltable Pomocí sady Python SDK vytvořte soubor MLTable a dokumentujte podrobný plán načítání dat. V takovém případě zkopírujte a vložte následující kód do poznámkového bloku nebo skriptu a pak tento kód spusťte:

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)

Volitelně můžete zvolit načtení objektu MLTable do Pandas pomocí:

# 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()

Uložení kroků načítání dat

Dále uložte všechny kroky načítání dat do souboru MLTable. Uložení kroků načítání dat v souboru MLTable umožňuje reprodukovat datový rámec Pandas později v čase, aniž byste museli kód pokaždé znovu definovat.

Soubor YAML tabulky MLTable můžete uložit do prostředku cloudového úložiště nebo ho můžete uložit do prostředků místní cesty.

# 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")

Důležité

  • Pokud je colocated == True, zkopírujeme data do stejné složky se souborem MLTable yaml, pokud nejsou aktuálně společné, a použijeme relativní cesty v souboru MLTable yaml.
  • Pokud je colocated == False, nepřesuneme data, použijeme absolutní cesty pro cloudová data a použijeme relativní cesty pro místní data.
  • Tuto kombinaci parametrů nepodporujeme: data jsou uložená v místním prostředku, colocated == False, path cílí na cloudový adresář. Nahrajte místní data do cloudu a místo toho použijte cesty ke cloudovým datům pro MLTable.

Reprodukování kroků načítání dat

Teď, když jste serializovali kroky načítání dat do souboru, můžete je reprodukovat v jakémkoli okamžiku pomocí metody load(). Tímto způsobem nemusíte předefinovat kroky načítání dat v kódu a snadněji sdílet soubor.

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}")

Vytvoření datového prostředku pro podporu sdílení a reprodukovatelnosti

Možná máte soubor MLTable aktuálně uložený na disku, což znesnadňuje sdílení se členy týmu. Při vytváření datového prostředku ve službě Azure Machine Learning se tabulka MLTable nahraje do cloudového úložiště a přidá se do záložek. Členové týmu pak můžou k tabulce MLTable přistupovat s popisným názvem. Datový asset je také ve verzi.

az ml data create --name green-quickstart --version 1 --path ./nyc_taxi --type mltable

Poznámka:

Cesta odkazuje na složku , která obsahuje MLTable soubor.

Čtení datového assetu v interaktivní relaci

Teď, když máte tabulku MLTable uloženou v cloudu, můžete k ní vy i členové týmu přistupovat s popisným názvem v interaktivní relaci (například poznámkový blok):

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()

Čtení datového assetu v úloze

Pokud vy nebo člen týmu chcete získat přístup k tabulce v úloze, bude trénovací skript Pythonu obsahovat:

# ./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()

Vaše úloha potřebuje soubor conda, který obsahuje závislosti balíčku Pythonu:

# ./conda_dependencies.yml
dependencies:
  - python=3.10
  - pip=21.2.4
  - pip:
      - mltable
      - azureml-dataprep[pandas]

Úlohu byste odeslali pomocí:

Vytvořte následující soubor YAML úlohy:

# 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

V rozhraní příkazového řádku vytvořte úlohu:

az ml job create -f mltable-job.yml

Vytváření souborů MLTable

Pokud chcete přímo vytvořit soubor MLTable, doporučujeme místo textového editoru použít mltable sadu Python SDK k vytváření souborů MLTable , jak je znázorněno v rychlém startu tabulky Azure Machine Learning. V této části popisujeme možnosti v mltable sadě Python SDK.

Podporované typy souborů

Tabulku MLTable můžete vytvořit s řadou různých typů souborů:

Typ souboru MLTable Python SDK
Text s oddělovači
(například soubory 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')
Řádky JSON from_json_lines_files(paths=[path])
Cesty
(Vytvoření tabulky se sloupcem cest ke streamování)
from_paths(paths=[path])

Další informace najdete v referenčním prostředku tabulky MLTable.

Definování cest

Pro text s oddělovači, parquet, řádky JSON a cesty definujte seznam slovníků Pythonu, který definuje cestu nebo cesty, ze kterých se mají číst:

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)

MLTable podporuje tyto typy cest:

Umístění Příklady
Cesta na místním počítači ./home/username/data/my_data
Cesta na veřejném serveru HTTP https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Cesta ve službě Azure Storage wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
Dlouhodobé úložiště dat služby Azure Machine Learning azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path>

Poznámka:

mltable zpracovává předávání přihlašovacích údajů uživatele pro cesty ve službě Azure Storage a úložištích dat Azure Machine Learning. Pokud nemáte oprávnění k datům v podkladovém úložišti, nemůžete k nim přistupovat.

Poznámka k definování cest pro tabulky Delta Lake

V porovnání s ostatními typy souborů se definování cest ke čtení tabulek Delta Lake liší. V případě tabulek Delta Lake cesta odkazuje na jednu složku (obvykle v ADLS Gen2), která obsahuje složku _delta_log a datové soubory. Je podporována doba trvání cesty . Následující kód ukazuje, jak definovat cestu pro tabulku 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'
)

Pokud chcete získat nejnovější verzi dat Delta Lake, můžete do něj předat aktuální časové razítko 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()

Důležité

Omezení: mltable Nepodporuje extrakci klíčů oddílů při čtení dat z Delta Lake. Transformace mltable extract_columns_from_partition_format nebude fungovat při čtení dat Delta Lake přes mltable.

Důležité

mltable zpracovává předávání přihlašovacích údajů uživatele pro cesty ve službě Azure Storage a úložištích dat Azure Machine Learning. Pokud nemáte oprávnění k datům v podkladovém úložišti, nemůžete k nim přistupovat.

Soubory, složky a globy

Tabulky Azure Machine Learning podporují čtení z:

  • například: abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
  • složky, například abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
  • vzory globů , například abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
  • kombinace souborů, složek a vzorů globbingu

Podporované transformace načítání dat

Úplné aktuální podrobnosti o podporovaných transformacích načítání dat najdete v referenční dokumentaci k tabulce MLTable.

Příklady

Příklady v úložišti Azure Machine Learning pro GitHub se staly základem fragmentů kódu v tomto článku. Pomocí tohoto příkazu naklonujte úložiště do vývojového prostředí:

git clone --depth 1 https://github.com/Azure/azureml-examples

Tip

Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště. Tím se zkracuje doba potřebná k dokončení operace.

Tato složka klonového úložiště hostuje příklady relevantní pro tabulky Azure Machine Learning:

cd azureml-examples/sdk/python/using-mltable

Soubory s oddělovači

Nejprve vytvořte tabulku MLTable ze souboru CSV s tímto kódem:

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)

Uložení kroků načítání dat

Dále uložte všechny kroky načítání dat do souboru MLTable. Když uložíte kroky načítání dat do souboru MLTable, můžete datový rámec Pandas reprodukovat později v čase, aniž byste museli kód pokaždé předefinovat.

# save the data loading steps in an MLTable file
# NOTE: the tbl object was defined in the previous snippet.
tbl.save("./titanic")

Reprodukování kroků načítání dat

Teď, když soubor obsahuje serializované kroky načítání dat, můžete je reprodukovat v jakémkoli okamžiku load() pomocí metody. Tímto způsobem nemusíte předefinovat kroky načítání dat v kódu a snadněji sdílet soubor.

import mltable

# load the previously saved MLTable file
tbl = mltable.load("./titanic/")

Vytvoření datového prostředku pro podporu sdílení a reprodukovatelnosti

Možná máte soubor MLTable aktuálně uložený na disku, což znesnadňuje sdílení se členy týmu. Při vytváření datového prostředku ve službě Azure Machine Learning se tabulka MLTable nahraje do cloudového úložiště a přidá se do záložek. Členové týmu pak můžou k tabulce MLTable přistupovat s popisným názvem. Datový asset je také ve verzi.

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)

Teď, když máte tabulku MLTable uloženou v cloudu, můžete k ní vy i členové týmu přistupovat s popisným názvem v interaktivní relaci (například poznámkový blok):

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)

K datovému assetu můžete také snadno přistupovat v úloze.

Soubory Parquet

Rychlý start tabulek Azure Machine Learning vysvětluje, jak číst soubory parquet.

Cesty: Vytvoření tabulky souborů obrázků

Můžete vytvořit tabulku obsahující cesty v cloudovém úložišti. Tento příklad obsahuje několik obrázků psa a kočky umístěné v cloudovém úložišti v následující struktuře složek:

/pet-images
  /cat
    0.jpeg
    1.jpeg
    ...
  /dog
    0.jpeg
    1.jpeg

Může mltable vytvořit tabulku, která obsahuje cesty k úložišti těchto obrázků a jejich názvy složek (popisky), které lze použít k streamování obrázků. Tento kód vytvoří tabulku 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")

Tento kód ukazuje, jak otevřít umístění úložiště v datovém rámci Pandas a vykreslit obrázky:

# 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])

Vytvoření datového prostředku pro podporu sdílení a reprodukovatelnosti

mltable Možná máte soubor uložený na disku, což znesnadňuje sdílení se členy týmu. Když ve službě Azure Machine Learning vytvoříte datový prostředek, nahraje se mltable do cloudového úložiště a "záložka". Členové vašeho týmu pak budou mít přístup k mltable popisným názvům. Datový asset je také ve verzi.

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)

mltable Když je teď uložený v cloudu, můžete k němu vy i členové vašeho týmu přistupovat pomocí popisného názvu v interaktivní relaci (například poznámkový blok):

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()

Data můžete také načíst do své úlohy.

Další kroky