Azure Machine Learning'de tablolarla çalışma

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Azure Machine Learning bir Tablo türünü (mltable ) destekler. Bu, pandas veya Spark veri çerçevesi olarak belleğe veri dosyalarının nasıl yüklendiğini tanımlayan bir şema oluşturulmasını sağlar. Bu makalede şunları öğreneceksiniz:

  • Dosyalar veya Klasörler yerine Azure Machine Learning Tabloları ne zaman kullanılır?
  • SDK'yi mltable yükleme
  • Dosya kullanarak mltable veri yükleme şeması tanımlama
  • Azure Machine Learning'de nasıl mltable kullanıldığını gösteren örnekler
  • Etkileşimli geliştirme sırasında nasıl kullanılır mltable (örneğin, bir not defterinde)

Önkoşullar

  • Azure aboneliği. Mevcut bir Azure aboneliğiniz yoksa başlamadan önce ücretsiz hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin

  • Python için Azure Machine Learning SDK'sı

  • Azure Machine Learning çalışma alanı

Önemli

Python ortamınızda en son mltable paketin yüklü olduğundan emin olun:

pip install -U mltable azureml-dataprep[pandas]

Örnek deposunu kopyalama

Bu makaledeki kod parçacıkları, Azure Machine Learning örnekleri GitHub deposundaki örnekleri temel alır. Depoyu geliştirme ortamınıza kopyalamak için şu komutu kullanın:

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

İpucu

Depoya yalnızca en son işlemeyi kopyalamak için kullanın --depth 1 . Bu işlem, işlemi tamamlamak için gereken süreyi azaltır.

Kopyalanan deponun bu klasöründe Azure Machine Learning Tabloları ile ilgili örnekler bulabilirsiniz:

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

Giriş

Azure Machine Learning Tabloları (mltable), veri dosyalarınızı belleğe nasıl yüklemek istediğinizi Pandas ve/veya Spark veri çerçevesi olarak tanımlamanıza olanak sağlar. Tabloların iki temel özelliği vardır:

  1. MLTable dosyası. Veri yükleme şemasını tanımlayan YAML tabanlı bir dosya. MLTable dosyasında şunları belirtebilirsiniz:
    • Verilerin depolama konumu veya konumları : yerel, bulutta veya genel bir http(s) sunucusunda.
    • Bulut depolaması üzerinde globing desenleri. Bu konumlar, joker karakterlerle (* ) dosya adı kümelerini belirtebilir.
    • okuma dönüştürmesi - örneğin, dosya biçimi türü (sınırlandırılmış metin, Parquet, Delta, json), sınırlayıcılar, üst bilgiler vb.
    • Sütun türü dönüştürmeleri (şemayı zorlamak için).
    • Klasör yapısı bilgilerini kullanarak yeni sütun oluşturma ( örneğin, yoldaki {year}/{month} klasör yapısını kullanarak bir yıl ve ay sütunu oluşturma).
    • Yüklenecek verilerin alt kümeleri; örneğin, satırları filtreleyin, sütunları tutun/bırakın, rastgele örnekler alın.
  2. MLTable dosyasında tanımlanan şemaya göre verileri Pandas veya Spark veri çerçevesine yüklemek için hızlı ve verimli bir altyapı . Motor, yüksek hız ve bellek verimliliği için Rust'a dayanır.

Azure Machine Learning Tabloları şu senaryolarda kullanışlıdır:

  • Depolama konumları üzerinde glob yapmanız gerekir.
  • Farklı depolama konumlarından (örneğin, farklı blob kapsayıcıları) verileri kullanarak bir tablo oluşturmanız gerekir.
  • Yol, verilerinizde yakalamak istediğiniz ilgili bilgileri (örneğin, tarih ve saat) içerir.
  • Veri şeması sık sık değişir.
  • Veri yükleme adımlarınızın kolayca yeniden üretilebilir olmasını istiyorsunuz.
  • Yalnızca büyük verilerin bir alt kümesine ihtiyacınız vardır.
  • Verileriniz, Python oturumunuza akışla aktarmak istediğiniz depolama konumlarını içerir. Örneğin, aşağıdaki JSON satırları yapısında akış path yapmak istiyorsunuz: [{"path": "abfss://fs@account.dfs.core.windows.net/my-images/cats/001.jpg", "label":"cat"}].
  • Azure Machine Learning AutoML kullanarak ML modellerini eğitmek istiyorsunuz.

İpucu

Tablosal veriler için Azure Machine Learning, Azure Machine Learning Tablolarının (mltable ) kullanılmasını gerektirmez. Azure Machine Learning Dosyası () ve Klasör (uri_fileuri_folder) türlerini kullanabilirsiniz ve kendi ayrıştırma mantığınız verileri Pandas veya Spark veri çerçevesine yükler.

Basit bir CSV dosyası veya Parquet klasörü için Tablolar yerine Azure Machine Learning Dosyaları/Klasörleri kullanmak daha kolaydır .

Azure Machine Learning Tabloları Hızlı Başlangıcı

Bu hızlı başlangıçta, Azure Açık Veri Kümelerinden NYC Yeşil Taksi Verilerinin tablosunu (mltable) oluşturacaksınız. Verilerin bir parquet biçimi vardır ve 2008-2021 yıllarını kapsar. Genel olarak erişilebilen bir blob depolama hesabında veri dosyaları şu klasör yapısına sahiptir:

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

Bu verilerle bir Pandas veri çerçevesine yüklemeniz gerekir:

  • 2015-19 yılları için yalnızca parquet dosyaları
  • Verilerin rastgele bir örneği
  • Yalnızca kopyalama uzaklığı 0'dan büyük olan satırlar
  • Machine Learning için ilgili sütunlar
  • Yeni sütunlar - yıl ve ay - yol bilgilerini kullanarak (puYear=X/puMonth=Y)

Pandas kodu bunu işler. Ancak, aşağıdakilerden birini kullanmanız gerektiğinden, yeniden üretilebilirlik elde etmek zor olabilir:

  • Kodu paylaşma, başka bir deyişle şema değişirse (örneğin, bir sütun adı değişebilir) tüm kullanıcıların kodlarını güncelleştirmeleri gerekir
  • Ağır ek yüke sahip bir ETL işlem hattı yazma

Azure Machine Learning Tabloları, dosyadaki veri yükleme adımlarını seri hale getirmek (kaydetmek) için basit bir MLTable mekanizma sağlar. Ardından siz ve ekibinizin üyeleri Pandas veri çerçevesini yeniden oluşturabilirsiniz. Şema değişirse, Python veri yükleme kodunu içeren birçok yerdeki güncelleştirmeler yerine yalnızca dosyayı güncelleştirirsiniz MLTable .

Hızlı başlangıç not defterini kopyalama veya yeni bir not defteri/betik oluşturma

Azure Machine Learning işlem örneği kullanıyorsanız Yeni bir not defteri oluşturun. IDE kullanıyorsanız yeni bir Python betiği oluşturmanız gerekir.

Ayrıca, hızlı başlangıç not defteri Azure Machine Learning örnekleri GitHub deposunda bulunur. Not Defteri'ni kopyalamak ve bunlara erişmek için bu kodu kullanın:

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

Python SDK'sını mltable yükleme

NYC Yeşil Taksi Verilerini bir Azure Machine Learning Tablosuna yüklemek için Python SDK'sına sahip mltable olmanız ve pandas Python ortamınızda şu komutla yüklü olması gerekir:

pip install -U mltable azureml-dataprep[pandas]

MLTable dosyası yazma

Python SDK'sını mltable kullanarak mlTable dosyası oluşturun ve veri yükleme şemasını belgeleyin. Bunun için aşağıdaki kodu kopyalayıp Not Defterinize/Betiğinize yapıştırın ve ardından bu kodu yürütür:

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)

İsteğe bağlı olarak, aşağıdakileri kullanarak MLTable nesnesini Pandas'a yüklemeyi seçebilirsiniz:

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

Veri yükleme adımlarını kaydetme

Ardından, tüm veri yükleme adımlarınızı bir MLTable dosyasına kaydedin. Veri yükleme adımlarınızı mlTable dosyasına kaydetmek, Pandas veri çerçevenizi daha sonraki bir zamanda yeniden oluşturmanıza olanak tanır ve kodu her seferinde yeniden tanımlamanıza gerek kalmadan.

MLTable yaml dosyasını bir bulut depolama kaynağına kaydedebilir veya yerel yol kaynaklarına kaydedebilirsiniz.

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

Önemli

  • == True birlikte konumlandırıldıysa, şu anda birlikte bulunamazlarsa mlTable yaml dosyasıyla aynı klasöre verileri kopyalarız ve MLTable yaml'de göreli yollar kullanırız.
  • Birlikte konumlandırılmış == False ise verileri taşımayacağız, bulut verileri için mutlak yollar kullanacağız ve yerel veriler için göreli yollar kullanacağız.
  • Bu parametre bileşimini desteklemiyoruz: veriler yerel bir kaynakta depolanır, birlikte konumlandırılmış == False, path bir bulut dizinini hedefler. Lütfen yerel verilerinizi buluta yükleyin ve bunun yerine MLTable için bulut veri yollarını kullanın.

Veri yükleme adımlarını yeniden oluşturma

Artık veri yükleme adımlarını bir dosyaya seri hale getirdiğinize göre, bunları istediğiniz zaman load() yöntemiyle yeniden oluşturabilirsiniz. Bu şekilde, koddaki veri yükleme adımlarınızı yeniden tanımlamanız gerekmez ve dosyayı daha kolay paylaşabilirsiniz.

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

Paylaşıma ve yeniden üretilebilirlik özelliğine yardımcı olacak bir veri varlığı oluşturma

MLTable dosyanız şu anda diske kaydedilmiş olabilir ve bu da ekip üyeleriyle paylaşımı zorlaştırabilir. Azure Machine Learning'de bir veri varlığı oluşturduğunuzda MLTable'ınız bulut depolama alanına yüklenir ve "yer işareti eklenir." Ekip üyeleriniz mltable'a kolay bir adla erişebilir. Ayrıca, veri varlığının sürümü oluşturulur.

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

Not

Yol, dosyayı içeren MLTable klasörü gösterir.

Etkileşimli oturumda veri varlığını okuma

MLTable'ınızı bulutta depoladığınıza göre, siz ve ekip üyeleri etkileşimli bir oturumda (örneğin, bir not defteri) kolay bir adla erişebilirsiniz:

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

bir işteki veri varlığını okuma

Siz veya ekip üyesi bir işte tabloya erişmek istiyorsanız Python eğitim betiğinizde şunlar yer alır:

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

İşiniz için Python paket bağımlılıklarını içeren bir conda dosyası gerekir:

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

İşi şu şekilde gönderebilirsiniz:

Aşağıdaki iş YAML dosyasını oluşturun:

# 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'da işi oluşturun:

az ml job create -f mltable-job.yml

MLTable Dosyaları Yazma

MLTable dosyasını doğrudan oluşturmak için, metin düzenleyicisi yerine Azure Machine Learning Tabloları Hızlı Başlangıcı'nda gösterildiği gibi MLTable dosyalarınızı yazmak için Python SDK'sını kullanmanızı mltable öneririz. Bu bölümde Python SDK'sının mltable özelliklerini özetleyeceğiz.

Desteklenen dosya türleri

Farklı dosya türlerine sahip bir MLTable oluşturabilirsiniz:

Dosya Türü MLTable Python SDK'sı
Sınırlandırılmış Metin
(örneğin, CSV dosyaları)
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 Çizgileri from_json_lines_files(paths=[path])
Yollar
(Akışa almak için bir yol sütunu içeren bir tablo oluşturma)
from_paths(paths=[path])

Daha fazla bilgi için MLTable başvuru kaynağını okuyun

Yolları tanımlama

Sınırlandırılmış metin, parquet, JSON satırları ve yollar için, okunacak yolu veya yolları tanımlayan bir Python sözlükleri listesi tanımlayın:

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 şu yol türlerini destekler:

Konum Örnekler
Yerel bilgisayarınızdaki bir yol ./home/username/data/my_data
Ortak http(ler) sunucusundaki yol https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Azure Depolama'da yol wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
Uzun formlu bir Azure Machine Learning veri deposu azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path>

Not

mltableAzure Depolama ve Azure Machine Learning veri depolarında yollar için kullanıcı kimlik bilgisi geçişlerini işler. Temel alınan depolamadaki veriler üzerinde izniniz yoksa verilere erişemezsiniz.

Delta Lake Tabloları için yolları tanımlamaya ilişkin not

Diğer dosya türleriyle karşılaştırıldığında, Delta Lake tablolarını okumak için yollar tanımlamak farklıdır. Delta Lake tabloları için yol, "_delta_log" klasörünü ve veri dosyalarını içeren tek bir klasörü (genellikle ADLS 2. Nesil'de) gösterir. zaman yolculuğu desteklenir. Aşağıdaki kod, Delta Lake tablosu için yol tanımlamayı gösterir:

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 verilerinin en son sürümünü almak için geçerli zaman damgasını içine timestamp_as_ofgeçirebilirsiniz.

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

Önemli

Sınırlama: mltable Delta Lake'ten veri okunurken bölüm anahtarı ayıklamayı desteklemez. mltable aracılığıyla mltableDelta Lake verilerini okurken dönüştürme extract_columns_from_partition_format çalışmaz.

Önemli

mltableAzure Depolama ve Azure Machine Learning veri depolarında yollar için kullanıcı kimlik bilgisi geçişlerini işler. Temel alınan depolamadaki veriler üzerinde izniniz yoksa verilere erişemezsiniz.

Dosyalar, klasörler ve globlar

Azure Machine Learning Tabloları şu kaynaklardan okumayı destekler:

  • dosyaları, örneğin: abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
  • klasör, örneğin abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
  • glob desenleri, örneğin abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
  • dosya, klasör ve globbing desenlerinin birleşimi

Desteklenen veri yükleme dönüştürmeleri

DESTEKLENEN veri yükleme dönüştürmelerinin tam ve güncel ayrıntılarını MLTable başvuru belgelerinde bulabilirsiniz.

Örnekler

Azure Machine Learning örnekleri GitHub deposundaki örnekler, bu makaledeki kod parçacıklarının temeli haline gelmiştir. Depoyu geliştirme ortamınıza kopyalamak için şu komutu kullanın:

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

İpucu

Depoya yalnızca en son işlemeyi kopyalamak için kullanın --depth 1 . Bu işlem, işlemi tamamlamak için gereken süreyi azaltır.

Bu kopya depo klasörü, Azure Machine Learning Tabloları ile ilgili örnekleri barındırıyor:

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

Sınırlandırılmış dosyalar

İlk olarak, şu kodu içeren bir CSV dosyasından MLTable oluşturun:

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)

Veri yükleme adımlarını kaydetme

Ardından, tüm veri yükleme adımlarınızı bir MLTable dosyasına kaydedin. Veri yükleme adımlarınızı bir MLTable dosyasına kaydettiğinizde, pandas veri çerçevenizi her seferinde yeniden tanımlamanıza gerek kalmadan daha sonraki bir zamanda yeniden oluşturabilirsiniz.

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

Veri yükleme adımlarını yeniden oluşturma

Artık dosyada serileştirilmiş veri yükleme adımları olduğuna göre, bunları istediğiniz zaman yöntemiyle load() yeniden oluşturabilirsiniz. Bu şekilde, koddaki veri yükleme adımlarınızı yeniden tanımlamanız gerekmez ve dosyayı daha kolay paylaşabilirsiniz.

import mltable

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

Paylaşıma ve yeniden üretilebilirlik özelliğine yardımcı olacak bir veri varlığı oluşturma

MLTable dosyanız şu anda diske kaydedilmiş olabilir ve bu da ekip üyeleriyle paylaşımı zorlaştırabilir. Azure Machine Learning'de bir veri varlığı oluşturduğunuzda MLTable'ınız bulut depolama alanına yüklenir ve "yer işareti eklenir." Ekip üyeleriniz mltable'a kolay bir adla erişebilir. Ayrıca, veri varlığının sürümü oluşturulur.

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'ınızı bulutta depoladığınıza göre, siz ve ekip üyeleri etkileşimli bir oturumda (örneğin, bir not defteri) kolay bir adla erişebilirsiniz:

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)

Ayrıca bir işteki veri varlığına kolayca erişebilirsiniz.

Parquet dosyaları

Azure Machine Learning Tabloları Hızlı Başlangıcı'nın parquet dosyalarının nasıl okunduğu açıklanmaktadır.

Yollar: Görüntü dosyaları tablosu oluşturma

Bulut depolamadaki yolları içeren bir tablo oluşturabilirsiniz. Bu örnekte, aşağıdaki klasör yapısında, bulut depolama alanında bulunan birkaç köpek ve kedi görüntüsü vardır:

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

, mltable bu görüntülerin depolama yollarını ve görüntüleri akışla aktarmak için kullanılabilecek klasör adlarını (etiketleri) içeren bir tablo oluşturabilir. Bu kod MLTable'ını oluşturur:

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

Bu kod, Pandas veri çerçevesinde depolama konumunu açmayı ve görüntüleri çizmeyi gösterir:

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

Paylaşıma ve yeniden üretilebilirlik özelliğine yardımcı olacak bir veri varlığı oluşturma

Dosyanız mltable şu anda diske kaydedilmiş olabilir ve bu da ekip üyeleriyle paylaşımı zorlaştırabilir. Azure Machine Learning'de bir veri varlığı oluşturduğunuzda , mltable bulut depolama alanına yüklenir ve "yer işareti eklenir." Ekip üyeleriniz daha sonra kolay bir adla öğesine erişebilir mltable . Ayrıca, veri varlığının sürümü oluşturulur.

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)

artık bulutta depolandığına göre mltable , siz ve ekip üyeleriniz etkileşimli bir oturumda (örneğin, bir not defteri) kolay bir adla erişebilirsiniz:

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

Verileri işinize de yükleyebilirsiniz.

Sonraki adımlar