Táblák használata az Azure Machine Learningben
ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)
Az Azure Machine Learning 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 Azure Machine Learning-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 Learning használatára - Hogyan használható az
mltable
interaktív fejlesztés során (például egy jegyzetfüzetben)
Előfeltételek
Azure-előfizetés. Ha még nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes fiókot. Az Azure Machine Learning ingyenes vagy fizetős verziójának kipróbálása
Egy Azure Machine Learning-munkaterület
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 Learning-példák GitHub-adattárában található példákon 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 Learning-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 Learning-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:
- 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.
- 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 Learning-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"}]
. - Gépi tanulási modelleket szeretne betaníteni az Azure Machine Learning AutoML használatával.
Tipp.
Táblázatos adatok esetén az Azure Machine Learning nem igényli az Azure Machine Learning-táblák (mltable
) használatát. Használhat Azure Machine Learning-fájl (uri_file
) és mappa (uri_folder
) típusokat, é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 Learning Files/Mappák használata táblák helyett.
Azure Machine Learning 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 Machine Learning releváns 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 Learning Tables egy egyszerű mechanizmust biztosít a fájlok adatbetöltési lépéseinek MLTable
szerializálásához (mentéséhez). 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 Learning 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.
A gyorsútmutató-jegyzetfüzet az Azure Machine Learning-példák GitHub-adattárában 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 Learning-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 Learningben, 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ára MLTable
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 Learning Tables 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 Learning-adattár | azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path> |
Feljegyzés
mltable
Kezeli az Azure Storage- és Az Azure Machine Learning-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
mltable
Kezeli az Azure Storage- és Az Azure Machine Learning-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 Learning Tables a következő forrásból támogatja az 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 Learning-példák példáiban 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 Learning-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 Learningben, 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 Learning Tables rövid útmutatója bemutatja, hogyan olvashatja el a parquet-fájlokat.
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 Learningben, a rendszer feltölti az mltable
adategységet a felhőbeli tárolóba, és "könyvjelzővel". 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.