العمل مع الجداول في Azure التعلم الآلي

ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)

يدعم Azure التعلم الآلي نوع الجدول (mltable). يسمح هذا بإنشاء مخطط يحدد كيفية تحميل ملفات البيانات في الذاكرة كإطار بيانات Pandas أو Spark. في هذه المقالة، سوف تتعرف على:

  • متى تستخدم Azure التعلم الآلي Tables بدلا من الملفات أو المجلدات
  • كيفية تثبيت mltable SDK
  • كيفية تعريف مخطط تحميل البيانات باستخدام mltable ملف
  • أمثلة توضح كيفية mltable استخدام في Azure التعلم الآلي
  • كيفية استخدام أثناء mltable التطوير التفاعلي (على سبيل المثال، في دفتر ملاحظات)

المتطلبات الأساسية

هام

تأكد من تثبيت أحدث mltable حزمة في بيئة Python الخاصة بك:

pip install -U mltable azureml-dataprep[pandas]

استنساخ مستودع الأمثلة

تستند القصاصات البرمجية في هذه المقالة إلى أمثلة في Azure التعلم الآلي أمثلة GitHub repo. لاستنساخ المستودع إلى بيئة التطوير الخاصة بك، استخدم هذا الأمر:

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

تلميح

استخدم --depth 1 لاستنساخ أحدث تثبيت للمستودع فقط. وهذا يقلل من الوقت اللازم لإكمال العملية.

يمكنك العثور على أمثلة ذات صلة ب Azure التعلم الآلي Tables في هذا المجلد من المستودع المستنسخ:

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

مقدمة

تسمح لك جداول Azure التعلم الآلي (mltable) بتحديد الطريقة التي تريد بها تحميل ملفات البيانات في الذاكرة، كإطار بيانات Pandas و/أو Spark. تحتوي الجداول على ميزتين رئيسيتين:

  1. ملف MLTable. ملف مستند إلى YAML يحدد مخطط تحميل البيانات. في ملف MLTable، يمكنك تحديد:
    • موقع تخزين البيانات أو مواقعها - محلي أو في السحابة أو على خادم (خوادم) http عام.
    • Globbing patterns عبر التخزين السحابي. يمكن لهذه المواقع تحديد مجموعات من أسماء الملفات، مع أحرف البدل (*).
    • تحويل القراءة - على سبيل المثال، نوع تنسيق الملف (النص المحدد، Parquet، Delta، json)، المحددات، الرؤوس، إلخ.
    • تحويلات نوع العمود (لفرض المخطط).
    • إنشاء عمود جديد، باستخدام معلومات بنية المجلد - على سبيل المثال، إنشاء عمود سنة وشهر، باستخدام {year}/{month} بنية المجلد في المسار.
    • مجموعات فرعية من البيانات لتحميلها - على سبيل المثال، تصفية الصفوف، والاحتفاظ/إسقاط الأعمدة، وأخذ عينات عشوائية.
  2. محرك سريع وفعال لتحميل البيانات في إطار بيانات Pandas أو Spark، وفقا للمخطط المحدد في ملف MLTable. يعتمد المحرك على Rust للحصول على سرعة عالية وكفاءة في الذاكرة.

تعد Azure التعلم الآلي Tables مفيدة في هذه السيناريوهات:

  • تحتاج إلى جمع عبر مواقع التخزين.
  • تحتاج إلى إنشاء جدول باستخدام بيانات من مواقع تخزين مختلفة (على سبيل المثال، حاويات blob مختلفة).
  • يحتوي المسار على المعلومات ذات الصلة التي تريد التقاطها في بياناتك (على سبيل المثال، التاريخ والوقت).
  • يتغير مخطط البيانات بشكل متكرر.
  • تريد إمكانية إعادة إنتاج سهلة لخطوات تحميل البيانات.
  • تحتاج فقط إلى مجموعة فرعية من البيانات الكبيرة.
  • تحتوي بياناتك على مواقع تخزين تريد دفقها إلى جلسة عمل Python. على سبيل المثال، تريد الدفق path في بنية خطوط JSON التالية: [{"path": "abfss://fs@account.dfs.core.windows.net/my-images/cats/001.jpg", "label":"cat"}].
  • تريد تدريب نماذج التعلم الآلي باستخدام Azure التعلم الآلي AutoML.

تلميح

بالنسبة للبيانات الجدولية، لا يتطلب Azure التعلم الآلي استخدام Azure التعلم الآلي Tables (mltable). يمكنك استخدام أنواع Azure التعلم الآلي File (uri_file) و Folder (uri_folder)، ويحمل منطق التحليل الخاص بك البيانات في إطار بيانات Pandas أو Spark.

بالنسبة لملف CSV بسيط أو مجلد Parquet، من الأسهل استخدام Azure التعلم الآلي Files/Folders بدلا من Tables.

التشغيل السريع لجداول Azure التعلم الآلي

في هذا التشغيل السريع، يمكنك إنشاء جدول (mltable) من بيانات سيارة الأجرة الخضراء في مدينة نيويورك من مجموعات بيانات Azure المفتوحة. تحتوي البيانات على تنسيق باركيه، وتغطي السنوات 2008-2021. على حساب تخزين كائن ثنائي كبير الحجم يمكن الوصول إليه بشكل عام، تحتوي ملفات البيانات على بنية المجلد هذه:

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

باستخدام هذه البيانات، تحتاج إلى التحميل في إطار بيانات Pandas:

  • ملفات parquet فقط لسنوات 2015-19
  • عينة عشوائية من البيانات
  • الصفوف التي تحتوي على مسافة تمزق أكبر من 0 فقط
  • الأعمدة ذات الصلة التعلم الآلي
  • أعمدة جديدة - السنة والشهر - باستخدام معلومات المسار (puYear=X/puMonth=Y)

تعالج التعليمات البرمجية ل Pandas هذا. ومع ذلك، قد يصبح تحقيق إمكانية إعادة الإنتاج صعبا لأنه يجب عليك إما:

  • مشاركة التعليمات البرمجية، ما يعني أنه إذا تغير المخطط (على سبيل المثال، قد يتغير اسم العمود) فيجب على جميع المستخدمين تحديث التعليمات البرمجية الخاصة بهم
  • كتابة مسار ETL، الذي يحتوي على حمل ثقيل

توفر Azure التعلم الآلي Tables آلية خفيفة الوزن لتسلسل (حفظ) خطوات تحميل البيانات في MLTable ملف. بعد ذلك، يمكنك أنت وأعضاء فريقك إعادة إنتاج إطار بيانات Pandas. إذا تغير المخطط، يمكنك تحديث MLTable الملف فقط، بدلا من التحديثات في العديد من الأماكن التي تتضمن رمز تحميل بيانات Python.

استنساخ دفتر ملاحظات التشغيل السريع أو إنشاء دفتر ملاحظات/برنامج نصي جديد

إذا كنت تستخدم مثيل حساب Azure التعلم الآلي، قم بإنشاء دفتر ملاحظات جديد. إذا كنت تستخدم IDE، يجب إنشاء برنامج نصي Python جديد.

بالإضافة إلى ذلك، يتوفر دفتر ملاحظات التشغيل السريع في Azure التعلم الآلي أمثلة GitHub repo. استخدم هذه التعليمة البرمجية لنسخ دفتر الملاحظات والوصول إليه:

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

mltable تثبيت Python SDK

لتحميل بيانات سيارة الأجرة الخضراء في مدينة نيويورك في جدول التعلم الآلي Azure، يجب أن يكون لديك mltable Python SDK وتثبيتها pandas في بيئة Python الخاصة بك، مع هذا الأمر:

pip install -U mltable azureml-dataprep[pandas]

تأليف ملف MLTable

mltable استخدم Python SDK لإنشاء ملف MLTable، لتوثيق مخطط تحميل البيانات. لهذا، انسخ التعليمات البرمجية التالية والصقها في دفتر الملاحظات/البرنامج النصي، ثم قم بتنفيذ هذه التعليمة البرمجية:

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)

يمكنك اختياريا اختيار تحميل كائن MLTable في Pandas، باستخدام:

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

حفظ خطوات تحميل البيانات

بعد ذلك، احفظ جميع خطوات تحميل البيانات في ملف MLTable. يتيح لك حفظ خطوات تحميل البيانات في ملف MLTable إعادة إنتاج إطار بيانات Pandas في وقت لاحق، دون الحاجة إلى إعادة تعريف التعليمات البرمجية في كل مرة.

يمكنك حفظ ملف MLTable yaml إلى مورد تخزين سحابي، أو يمكنك حفظه في موارد المسار المحلي.

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

هام

  • إذا كانت colocated == True، فسننسخ البيانات إلى المجلد نفسه باستخدام ملف MLTable yaml إذا لم تكن متعاونة حاليا، وسنستخدم المسارات النسبية في MLTable yaml.
  • إذا كانت colocated == False، فلن ننقل البيانات، وسنستخدم المسارات المطلقة للبيانات السحابية، ونستخدم المسارات النسبية للبيانات المحلية.
  • نحن لا ندعم مجموعة المعلمات هذه: يتم تخزين البيانات في مورد محلي، colocated == False، path وتستهدف دليل سحابة. يرجى تحميل بياناتك المحلية إلى السحابة، واستخدام مسارات البيانات السحابية ل MLTable بدلا من ذلك.

إعادة إنتاج خطوات تحميل البيانات

الآن بعد أن قمت بتسلسل خطوات تحميل البيانات في ملف، يمكنك إعادة إنتاجها في أي وقت باستخدام أسلوب load(). بهذه الطريقة، لا تحتاج إلى إعادة تعريف خطوات تحميل البيانات في التعليمات البرمجية، ويمكنك مشاركة الملف بسهولة أكبر.

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

إنشاء أصل بيانات للمساعدة في المشاركة وقابلية إعادة الإنتاج

قد يكون ملف MLTable محفوظا حاليا على القرص، مما يجعل من الصعب مشاركته مع أعضاء الفريق. عند إنشاء أصل بيانات في Azure التعلم الآلي، يتم تحميل MLTable إلى التخزين السحابي و"الإشارة المرجعية". يمكن لأعضاء فريقك بعد ذلك الوصول إلى MLTable باسم مألوف. أيضا، يتم إصدار أصل البيانات.

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

إشعار

يشير المسار إلى المجلد الذي يحتوي على MLTable الملف.

قراءة أصل البيانات في جلسة تفاعلية

الآن بعد أن تم تخزين MLTable في السحابة، يمكنك أنت وأعضاء الفريق الوصول إليه باسم مألوف في جلسة تفاعلية (على سبيل المثال، دفتر ملاحظات):

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

قراءة أصل البيانات في وظيفة

إذا كنت تريد أنت أو أحد أعضاء الفريق الوصول إلى الجدول في وظيفة، فسيحتوي البرنامج النصي للتدريب على Python على:

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

تحتاج مهمتك إلى ملف conda يتضمن تبعيات حزمة Python:

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

يمكنك إرسال المهمة باستخدام:

إنشاء ملف YAML للوظيفة التالية:

# 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

في CLI، قم بإنشاء الوظيفة:

az ml job create -f mltable-job.yml

تأليف ملفات MLTable

لإنشاء ملف MLTable مباشرة، نقترح عليك استخدام mltable Python SDK لتأليف ملفات MLTable - كما هو موضح في التشغيل السريع لجداول Azure التعلم الآلي - بدلا من محرر نص. في هذا القسم، نحدد القدرات في mltable Python SDK.

أنواع الملفات المدعومة

يمكنك إنشاء MLTable مع مجموعة من أنواع الملفات المختلفة:

نوع الملف MLTable Python SDK
نص محدد
(على سبيل المثال، ملفات 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')
خطوط JSON from_json_lines_files(paths=[path])
المسارات
(إنشاء جدول بعمود مسارات للبث)
from_paths(paths=[path])

لمزيد من المعلومات، اقرأ المورد المرجعي MLTable

تحديد المسارات

بالنسبة للنص المحدد وparquet وخطوط JSON والمسارات، حدد قائمة قواميس Python التي تحدد المسار أو المسارات التي يمكن القراءة منها:

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 أنواع المسارات التالية:

الموقع الأمثلة
مسار على الكمبيوتر المحلي ./home/username/data/my_data
مسار على خادم http(s) عام https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
مسار على Azure Storage wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
مخزن بيانات Azure التعلم الآلي طويل النماذج azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path>

إشعار

mltableيعالج تمرير بيانات اعتماد المستخدم للمسارات على Azure Storage ومخازن بيانات Azure التعلم الآلي. إذا لم يكن لديك إذن للبيانات الموجودة على التخزين الأساسي، فلا يمكنك الوصول إلى البيانات.

ملاحظة حول تحديد مسارات جداول Delta Lake

بالمقارنة مع أنواع الملفات الأخرى، يختلف تحديد المسارات لقراءة جداول Delta Lake. بالنسبة لجداول Delta Lake، يشير المسار إلى مجلد واحد (عادة على ADLS gen2) يحتوي على مجلد "_delta_log" وملفات البيانات. السفر عبر الزمن مدعوم. توضح التعليمات البرمجية التالية كيفية تعريف مسار لجدول 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'
)

للحصول على أحدث إصدار من بيانات Delta Lake، يمكنك تمرير الطابع الزمني الحالي إلى 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()

هام

القيد: mltable لا يدعم استخراج مفتاح القسم عند قراءة البيانات من Delta Lake. mltable لن يعمل التحويل extract_columns_from_partition_format عند قراءة بيانات Delta Lake عبر mltable.

هام

mltableيعالج تمرير بيانات اعتماد المستخدم للمسارات على Azure Storage ومخازن بيانات Azure التعلم الآلي. إذا لم يكن لديك إذن للبيانات الموجودة على التخزين الأساسي، فلا يمكنك الوصول إلى البيانات.

الملفات والمجلدات والقوالب

تدعم جداول Azure التعلم الآلي القراءة من:

  • ملف (ملفات)، على سبيل المثال: abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
  • المجلد (المجلدات)، على سبيل المثال abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
  • نمط (أنماط) glob ، على سبيل المثال abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
  • مجموعة من الملفات والمجلدات وأنماط الكآبة

تحويلات تحميل البيانات المدعومة

ابحث عن تفاصيل كاملة ومحدثة لتحويلات تحميل البيانات المدعومة في الوثائق المرجعية ل MLTable.

الأمثلة

أصبحت الأمثلة في أمثلة Azure التعلم الآلي GitHub repo الأساس لمقتطفات التعليمات البرمجية في هذه المقالة. استخدم هذا الأمر لاستنساخ المستودع إلى بيئة التطوير الخاصة بك:

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

تلميح

استخدم --depth 1 لاستنساخ أحدث تثبيت للمستودع فقط. وهذا يقلل من الوقت اللازم لإكمال العملية.

يستضيف مجلد مستودع النسخ هذا الأمثلة ذات الصلة بجداول التعلم الآلي Azure:

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

ملفات محددة

أولا، قم بإنشاء MLTable من ملف CSV باستخدام هذه التعليمة البرمجية:

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)

حفظ خطوات تحميل البيانات

بعد ذلك، احفظ جميع خطوات تحميل البيانات في ملف MLTable. عند حفظ خطوات تحميل البيانات في ملف MLTable، يمكنك إعادة إنتاج إطار بيانات Pandas في وقت لاحق، دون الحاجة إلى إعادة تعريف التعليمات البرمجية في كل مرة.

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

إعادة إنتاج خطوات تحميل البيانات

الآن بعد أن أصبح الملف يحتوي على خطوات تحميل البيانات المتسلسلة، يمكنك إعادة إنتاجها في أي وقت باستخدام load() الأسلوب . بهذه الطريقة، لا تحتاج إلى إعادة تعريف خطوات تحميل البيانات في التعليمات البرمجية، ويمكنك مشاركة الملف بسهولة أكبر.

import mltable

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

إنشاء أصل بيانات للمساعدة في المشاركة وقابلية إعادة الإنتاج

قد يكون ملف MLTable محفوظا حاليا على القرص، مما يجعل من الصعب مشاركته مع أعضاء الفريق. عند إنشاء أصل بيانات في Azure التعلم الآلي، يتم تحميل MLTable إلى التخزين السحابي و"الإشارة المرجعية". يمكن لأعضاء فريقك بعد ذلك الوصول إلى MLTable باسم مألوف. أيضا، يتم إصدار أصل البيانات.

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)

الآن بعد أن تم تخزين MLTable في السحابة، يمكنك أنت وأعضاء الفريق الوصول إليه باسم مألوف في جلسة تفاعلية (على سبيل المثال، دفتر ملاحظات):

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)

يمكنك أيضا الوصول بسهولة إلى أصل البيانات في وظيفة.

ملفات Parquet

يوضح التشغيل السريع لجداول Azure التعلم الآلي كيفية قراءة ملفات parquet.

المسارات: إنشاء جدول ملفات الصور

يمكنك إنشاء جدول يحتوي على المسارات على التخزين السحابي. يحتوي هذا المثال على العديد من صور الكلاب والقطط الموجودة في التخزين السحابي، في بنية المجلد التالي:

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

mltable يمكن إنشاء جدول يحتوي على مسارات تخزين هذه الصور وأسماء المجلدات الخاصة بها (التسميات)، والتي يمكن استخدامها لدفق الصور. تنشئ هذه التعليمة البرمجية 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")

توضح هذه التعليمة البرمجية كيفية فتح موقع التخزين في إطار بيانات Pandas، ورسم الصور:

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

إنشاء أصل بيانات للمساعدة في المشاركة وقابلية إعادة الإنتاج

قد يكون mltable الملف محفوظا حاليا على القرص، مما يجعل من الصعب مشاركته مع أعضاء الفريق. عند إنشاء أصل بيانات في Azure التعلم الآلي، mltable يتم تحميل إلى التخزين السحابي و"الإشارة المرجعية". يمكن لأعضاء فريقك بعد ذلك الوصول إلى mltable باسم مألوف. أيضا، يتم إصدار أصل البيانات.

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 تم تخزين في السحابة، يمكنك أنت وأعضاء فريقك الوصول إليه باسم مألوف في جلسة تفاعلية (على سبيل المثال، دفتر ملاحظات):

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

يمكنك أيضا تحميل البيانات في وظيفتك.

الخطوات التالية