Táblák használata az Azure Machine Tanulás

ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)

Az Azure Machine Tanulás támogatja a táblatípust (mltable). Ez lehetővé teszi egy terv létrehozását, amely meghatározza, hogyan tölthet be adatfájlokat a memóriába Pandas- vagy Spark-adatkeretként. Ebből a cikkből megtudhatja:

  • Mikor érdemes az Azure Machine Tanulás-táblákat használni fájlok vagy mappák helyett?
  • Az SDK telepítése mltable
  • Adatbetöltési terv definiálása fájl használatával mltable
  • Példák az mltable Azure Machine Tanulás
  • Hogyan használható az mltable interaktív fejlesztés során (például egy jegyzetfüzetben)

Előfeltételek

Fontos

Győződjön meg arról, hogy a legújabb mltable csomag telepítve van a Python-környezetben:

pip install -U mltable azureml-dataprep[pandas]

A példák adattárának klónozása

A jelen cikkben szereplő kódrészletek az Azure Machine Tanulás GitHub-adattár példáin alapulnak. Az adattár a fejlesztői környezetbe való klónozásához használja a következő parancsot:

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

Tipp.

Csak a legújabb véglegesítés klónozására használható --depth 1 az adattárban. Ez csökkenti a művelet végrehajtásához szükséges időt.

Az Azure Machine Tanulás-táblákra vonatkozó példákat a klónozott adattár ezen mappájában találja:

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

Bevezetés

Az Azure Machine Tanulás -táblák (mltable) segítségével meghatározhatja, hogyan szeretné betölteni az adatfájlokat a memóriába Pandas- és/vagy Spark-adatkeretként. A táblák két fő funkcióval rendelkeznek:

  1. Egy MLTable-fájl. YAML-alapú fájl, amely meghatározza az adatbetöltési tervet. Az MLTable fájlban megadhatja a következőket:
    • Az adatok tárolási helye vagy helye – helyi, felhőbeli vagy nyilvános HTTP-kiszolgálón.
    • Mintázatok bűzlése a felhőbeli tárterületen. Ezek a helyek megadhatnak fájlnévkészleteket helyettesítő karakterekkel (*).
    • olvasási átalakítás – például a fájlformátum típusa (tagolt szöveg, Parquet, Delta, json), elválasztójelek, fejlécek stb.
    • Oszloptípus-átalakítások (séma kényszerítéséhez).
    • Új oszlop létrehozása mappastruktúra-információk használatával – például egy év és egy hónap oszlop létrehozása az {year}/{month} elérési út mappastruktúrájának használatával.
    • A betöltendő adatok részhalmazai – például sorok szűrése, oszlopok megtartása/elvetése, véletlenszerű minták készítése.
  2. Gyors és hatékony motor az adatok Pandas- vagy Spark-adatkeretbe való betöltéséhez az MLTable-fájlban meghatározott terv szerint. A motor a Rustra támaszkodik a nagy sebességű és memóriahatékonyság érdekében.

Az Azure Machine Tanulás-táblák az alábbi esetekben hasznosak:

  • A tárolóhelyek között kell kóstálnia .
  • Különböző tárolási helyekről (például különböző blobtárolókból) származó adatokkal kell létrehoznia egy táblát.
  • Az elérési út az adatokban rögzíteni kívánt releváns információkat (például dátumot és időt) tartalmazza.
  • Az adatséma gyakran változik.
  • Az adatbetöltési lépések egyszerű reprodukálhatóságát szeretné elérni.
  • Csak nagy méretű adatok egy részhalmazára van szüksége.
  • Az adatok olyan tárolási helyeket tartalmaznak, amelyeket a Python-munkamenetbe szeretne streamelni. Például a következő JSON-vonalak szerkezetében szeretne streamelni path : [{"path": "abfss://fs@account.dfs.core.windows.net/my-images/cats/001.jpg", "label":"cat"}].
  • Be szeretné tanítani az ml-modelleket az Azure Machine Tanulás AutoML használatával.

Tipp.

Táblázatos adatok esetén az Azure Machine Tanulás nem igényli az Azure Machine Tanulás Táblák (mltable) használatát. Az Azure Machine Tanulás Fájl (uri_file) és Mappa (uri_folder) típusokat használhatja, és saját elemzési logikája betölti az adatokat egy Pandas- vagy Spark-adatkeretbe.

Egyszerű CSV-fájlok vagy Parquet-mappák esetén egyszerűbb az Azure Machine Tanulás Files/Folders használata táblák helyett.

Azure Machine Tanulás Tables – rövid útmutató

Ebben a rövid útmutatóban létrehoz egy táblát (mltable) a NYC green taxi adatairól az Azure Open Datasetsből. Az adatok parquet formátumúak, és a 2008–2021-et fedik le. Egy nyilvánosan elérhető Blob Storage-fiókban az adatfájlok mappastruktúrája a következő:

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

Ezekkel az adatokkal be kell töltenie egy Pandas-adatkeretet:

  • Csak a 2015–2019-ben készült parquet-fájlok
  • Az adatok véletlenszerű mintája
  • Csak a 0-nál nagyobb hasadttávolságú sorok
  • A Gépi Tanulás vonatkozó oszlopai
  • Új oszlopok – év és hónap – az elérési út adatainak használatával (puYear=X/puMonth=Y)

Ezt a Pandas-kód kezeli. A reprodukálhatóság elérése azonban nehézkessé válik, mert a következőkre van szükség:

  • Kód megosztása, ami azt jelenti, hogy ha a séma megváltozik (például egy oszlop neve megváltozhat), akkor minden felhasználónak frissítenie kell a kódot
  • ETL-folyamat írása, amely nagy többletterheléssel rendelkezik

Az Azure Machine Tanulás Table egy egyszerű mechanizmust biztosít a fájlok adatbetöltési lépéseinek szerializálására (mentéséreMLTable). Ezután Ön és a csapat tagjai reprodukálhatják a Pandas-adatkeretet. Ha a séma megváltozik, csak a fájlt frissíti ahelyett MLTable , hogy a Python-adatbetöltési kódot tartalmazó számos helyen frissítenének.

A gyorsútmutató-jegyzetfüzet klónozása vagy új jegyzetfüzet/szkript létrehozása

Ha Azure Machine Tanulás számítási példányt használ, hozzon létre egy új jegyzetfüzetet. IDE használata esetén létre kell hoznia egy új Python-szkriptet.

Emellett a gyorsútmutató-jegyzetfüzet az Azure Machine Tanulás GitHub-adattárban is elérhető. Ezzel a kóddal klónozza és érheti el a jegyzetfüzetet:

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

A mltable Python SDK telepítése

Az NYC zöld taxiadatok Azure Machine Tanulás táblába való betöltéséhez rendelkeznie kell a mltable Python SDK-val, és pandas telepítenie kell a Python-környezetben az alábbi paranccsal:

pip install -U mltable azureml-dataprep[pandas]

MLTable-fájl létrehozása

mltable A Python SDK használatával hozzon létre egy MLTable-fájlt az adatbetöltési terv dokumentálásához. Ehhez másolja és illessze be a következő kódot a jegyzetfüzetbe/szkriptbe, majd hajtsa végre a kódot:

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)

Tetszés szerint az MLTable objektumot a Pandasba is betöltheti a következőkkel:

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

Az adatbetöltési lépések mentése

Ezután mentse az összes adatbetöltési lépést egy MLTable-fájlba. Az adatbetöltési lépések MLTable-fájlban való mentése lehetővé teszi, hogy a Pandas-adatkeretet később reprodukálja anélkül, hogy minden alkalommal újra kellene definiálnia a kódot.

Az MLTable yaml-fájlt mentheti egy felhőalapú tárolási erőforrásba, vagy mentheti a helyi elérésiút-erőforrásokba.

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

Fontos

  • Ha az == Igaz, akkor az adatokat ugyanabba a mappába másoljuk az MLTable yaml fájllal, ha jelenleg nincsenek áthelyezve, és relatív elérési utakat fogunk használni az MLTable yaml-ben.
  • Ha az == Hamis, akkor nem fogjuk áthelyezni az adatokat, abszolút elérési utakat használunk a felhőbeli adatokhoz, és relatív elérési utakat használunk a helyi adatokhoz.
  • Ezt a paraméterkombinációt nem támogatjuk: az adatok egy helyi erőforrásban vannak tárolva, az == Hamis érték pedig path egy felhőkönyvtárat céloz meg. Töltse fel a helyi adatokat a felhőbe, és használja helyette az MLTable felhőbeli adatútvonalait.

Adatbetöltési lépések reprodukálása

Most, hogy szerializálta az adatbetöltési lépéseket egy fájlba, a load() metódussal bármikor reprodukálhatja őket. Így nem kell újradefiniolnia az adatbetöltési lépéseket a kódban, és egyszerűbben megoszthatja a fájlt.

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

Adategység létrehozása a megosztás és a reprodukálhatóság támogatásához

Előfordulhat, hogy az MLTable-fájl jelenleg lemezre van mentve, ami megnehezíti a csapattagokkal való megosztást. Amikor létrehoz egy adategységet az Azure Machine Tanulás, a rendszer feltölti az MLTable-t a felhőbeli tárolóba, és "könyvjelzővel" rendelkezik. A csapattagok ezután rövid névvel elérhetik az MLTable-t. Emellett az adategység verziószámozott.

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

Feljegyzés

Az elérési út a fájlt tartalmazó mappáraMLTable mutat.

Az adategység olvasása interaktív munkamenetben

Most, hogy az MLTable a felhőben van tárolva, Ön és a csapattagok egy interaktív munkamenetben (például egy jegyzetfüzetben) felhasználóbarát névvel férhetnek hozzá:

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

Az adategység beolvasása egy feladatban

Ha Ön vagy egy csapattag hozzá szeretne férni a táblához egy feladatban, a Python-betanítási szkript a következőket tartalmazza:

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

A feladathoz szüksége van egy Conda-fájlra, amely tartalmazza a Python-csomag függőségeit:

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

A feladatot a következővel küldené el:

Hozza létre a következő feladat YAML-fájlt:

# 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

A parancssori felületen hozza létre a feladatot:

az ml job create -f mltable-job.yml

MLTable-fájlok létrehozása

Az MLTable-fájl közvetlen létrehozásához javasoljuk, hogy a mltable Python SDK-val hozza létre az MLTable-fájlokat – ahogyan az az Azure Machine Tanulás Táblázatok rövid útmutatójában látható – szövegszerkesztő helyett. Ebben a szakaszban a Python SDK funkcióit mltable ismertetjük.

Támogatott fájltípusok

Az MLTable különböző fájltípusokkal hozható létre:

Fájltípus MLTable Python SDK
Tagolt szöveg
(például CSV-fájlok)
from_delimited_files(paths=[path])
Parketta 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')
JSON-sorok from_json_lines_files(paths=[path])
Elérési utak
(Táblázat létrehozása streamelendő elérési utak oszlopával)
from_paths(paths=[path])

További információkért olvassa el az MLTable referencia-erőforrást

Útvonalak definiálása

Tagolt szöveg, parquet, JSON-vonalak és elérési utak esetén adja meg a Python-szótárak listáját, amelyek meghatározzák azokat az elérési utakat vagy elérési utakat, amelyekből az olvasást el kell olvasni:

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)

Az MLTable az alábbi elérési utakat támogatja:

Hely Példák
Elérési út a helyi számítógépen ./home/username/data/my_data
Elérési út egy nyilvános HTTP-kiszolgálón https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Elérési út az Azure Storage-ban wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
Hosszú formátumú Azure Machine Tanulás-adattár azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path>

Feljegyzés

mltableKezeli az Azure Storage- és az Azure Machine-Tanulás-adattárak elérési útjaihoz tartozó felhasználói hitelesítő adatokat. Ha nem rendelkezik engedéllyel az alapul szolgáló tároló adataihoz, nem férhet hozzá az adatokhoz.

Megjegyzés a Delta Lake-táblák elérési útjának meghatározásához

A többi fájltípushoz képest a Delta Lake-táblák olvasási útvonalainak meghatározása más. Delta Lake-táblák esetén az elérési út egyetlen mappára mutat (jellemzően az ADLS gen2-ben), amely tartalmazza a "_delta_log" mappát és adatfájlokat. az időutazás támogatott. Az alábbi kód bemutatja, hogyan definiálhat elérési utat egy Delta Lake-tábla számára:

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

A Delta Lake-adatok legújabb verziójának lekéréséhez átadhatja az aktuális időbélyeget.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()

Fontos

Korlátozás: mltable nem támogatja a partíciókulcsok kinyert adatait a Delta Lake-ből való olvasáskor. Az mltable átalakítás extract_columns_from_partition_format nem fog működni, ha Delta Lake-adatokat olvas be.mltable

Fontos

mltableKezeli az Azure Storage- és az Azure Machine-Tanulás-adattárak elérési útjaihoz tartozó felhasználói hitelesítő adatokat. Ha nem rendelkezik engedéllyel az alapul szolgáló tároló adataihoz, nem férhet hozzá az adatokhoz.

Fájlok, mappák és globok

Az Azure Machine Tanulás-táblák támogatják a következő forrásból való olvasást:

  • fájl(ok), például: abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
  • mappa(ok), például abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
  • glob minta(ok), például abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
  • fájlok, mappák és globbing minták kombinációja

Támogatott adatbetöltési átalakítások

Az MLTable referenciadokumentációjában megtalálja a támogatott adatbetöltési átalakítások teljes, naprakész részleteit.

Példák

Az Azure Machine-Tanulás példákból a GitHub-adattár lett a jelen cikkben szereplő kódrészletek alapja. Ezzel a paranccsal klónozhatja az adattárat a fejlesztői környezetbe:

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

Tipp.

Csak a legújabb véglegesítés klónozására használható --depth 1 az adattárban. Ez csökkenti a művelet végrehajtásához szükséges időt.

Ez a klónozási adattármappa az Azure Machine-Tanulás-táblákra vonatkozó példákat tárolja:

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

Tagolt fájlok

Először hozzon létre egy MLTable-t egy CSV-fájlból a következő kóddal:

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)

Az adatbetöltési lépések mentése

Ezután mentse az összes adatbetöltési lépést egy MLTable-fájlba. Ha egy MLTable-fájlba menti az adatbetöltési lépéseket, később reprodukálhatja a Pandas-adatkeretet anélkül, hogy minden alkalommal újra kellene definiálnia a kódot.

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

Adatbetöltési lépések reprodukálása

Most, hogy a fájl rendelkezik a szerializált adatbetöltési lépésekkel, a metódussal bármikor reprodukálhatja őket load() . Így nem kell újradefiniolnia az adatbetöltési lépéseket a kódban, és egyszerűbben megoszthatja a fájlt.

import mltable

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

Adategység létrehozása a megosztás és a reprodukálhatóság támogatásához

Előfordulhat, hogy az MLTable-fájl jelenleg lemezre van mentve, ami megnehezíti a csapattagokkal való megosztást. Amikor létrehoz egy adategységet az Azure Machine Tanulás, a rendszer feltölti az MLTable-t a felhőbeli tárolóba, és "könyvjelzővel" rendelkezik. A csapattagok ezután rövid névvel elérhetik az MLTable-t. Emellett az adategység verziószámozott.

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)

Most, hogy az MLTable a felhőben van tárolva, Ön és a csapattagok egy interaktív munkamenetben (például egy jegyzetfüzetben) felhasználóbarát névvel férhetnek hozzá:

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)

Az adategységet egy feladatban is könnyen elérheti.

Parquet-fájlok

Az Azure Machine Tanulás Táblázatok rövid útmutatója ismerteti a parquet-fájlok olvasását.

Elérési utak: Képfájlok táblázatának létrehozása

Létrehozhat egy táblát, amely tartalmazza a felhőbeli tároló elérési útjait. Ez a példa több kutya- és macskaképet tartalmaz a felhőbeli tárolóban, a következő mappastruktúrában:

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

A mltable can construct a table that contains the storage paths of these images and their folder names (labels), amely a képek streameléséhez használható. Ez a kód létrehozza az MLTable-t:

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

Ez a kód bemutatja, hogyan nyithatja meg a tárolási helyet a Pandas adatkeretében, és hogyan ábrázolhatja a képeket:

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

Adategység létrehozása a megosztás és a reprodukálhatóság támogatásához

Előfordulhat, hogy a mltable fájl jelenleg lemezre van mentve, ami megnehezíti a csapattagokkal való megosztást. Amikor létrehoz egy adategységet az Azure Machine Tanulás, a rendszer feltölti a mltable felhőbeli tárolóba, és "könyvjelzővel" jelöli meg. A csapattagok ezután egy rövid névvel érhetik el a mltable nevet. Emellett az adategység verziószámozott.

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)

Most, hogy a mltable felhőben tárolták, Ön és a csapattagok egy interaktív munkamenetben (például egy jegyzetfüzetben) felhasználóbarát névvel férhetnek hozzá:

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

Az adatokat a feladatba is betöltheti.

Következő lépések