Aracılığıyla paylaş


Veri varlıklarını oluşturma ve yönetme

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

Bu makalede Azure Machine Learning'de veri varlıklarının nasıl oluşturulacağı ve yönetileceğini gösterilmektedir.

Veri varlıkları, ihtiyacınız olduğunda size yardımcı olabilir:

  • Sürüm oluşturma: Veri varlıkları, veri sürümü oluşturma işlemini destekler.
  • Yeniden üretilebilirlik: Bir veri varlığı sürümü oluşturduktan sonra sabittir. Değiştirilemez veya silinemez. Bu nedenle, veri varlığını kullanan eğitim işleri veya işlem hatları yeniden oluşturulabilir.
  • Denetlenebilirlik: Veri varlığı sürümü sabit olduğundan, varlık sürümlerini, sürümü güncelleştirenleri ve sürüm güncelleştirmelerinin ne zaman gerçekleştiğini izleyebilirsiniz.
  • Köken: Belirli bir veri varlığı için hangi işlerin veya işlem hatlarının verileri tükettiğine bakabilirsiniz.
  • Kullanım kolaylığı: Azure makine öğrenmesi veri varlığı, web tarayıcısı yer işaretlerine (sık kullanılanlar) benzer. Azure Depolama'da sık kullanılan verilerinize başvuran uzun depolama yollarını (URI' ler) hatırlamak yerine, bir veri varlığı sürümü oluşturabilir ve varlığın bu sürümüne kolay bir adla erişebilirsiniz (örneğin: azureml:<my_data_asset_name>:<version>).

İpucu

Etkileşimli bir oturumda (örneğin, bir not defteri) veya bir işte verilerinize erişmek için, önce bir veri varlığı oluşturmanız gerekmez. Verilere erişmek için Datastore URI'lerini kullanabilirsiniz. Veri deposu URI'leri, Azure makine öğrenmesini kullanmaya başlamak için verilere erişmek için basit bir yol sunar.

Önkoşullar

Veri varlıkları oluşturmak ve bunlarla çalışmak için şunları yapmanız gerekir:

Veri varlıkları oluşturma

Veri varlığınızı oluştururken veri varlığı türünü ayarlamanız gerekir. Azure Machine Learning üç veri varlığı türünü destekler:

Tür API Kurallı Senaryolar
Dosya
Tek bir dosyaya başvurma
uri_file Azure Depolama'da tek bir dosyayı okuyun (dosyanın herhangi bir biçimi olabilir).
Klasör
Klasöre başvurma
uri_folder Pandas/Spark'ta parquet/CSV dosyalarının bir klasörünü okuyun.

Bir klasörde bulunan yapılandırılmamış verileri (görüntüler, metin, ses vb.) okuyun.
Table
Veri tablosuna başvurma
mltable Sık yapılan değişikliklere tabi olan karmaşık bir şema nesneniz var veya büyük tablosal verilerin bir alt kümesine ihtiyacınız var.

Tablolu AutoML.

Birden çok depolama konumuna yayılmış yapılandırılmamış verileri (görüntüler, metin, ses vb.) okuyun.

Not

Csv dosyalarında yalnızca verileri MLTable olarak kaydettiğinizde eklenmiş yeni satırlar kullanın. Csv dosyalarına eklenen yeni satırlar, verileri okuduğunuzda yanlış hizalanmış alan değerlerine neden olabilir. MLTable, tırnak içinde satır sonlarını tek bir kayıt olarak yorumlamak için dönüştürmede kullanılabilir parametresine sahiptirsupport_multi_line.read_delimited

Veri varlığını bir Azure Machine Learning işinde kullandığınızda, varlığı işlem düğümlerine bağlayabilir veya indirebilirsiniz . Daha fazla bilgi için lütfen Modlar'ı ziyaret edin.

Ayrıca, veri varlığı konumuna işaret eden bir path parametre belirtmeniz gerekir. Desteklenen yollar şunlardır:

Konum Örnekler
Yerel bilgisayarınızdaki bir yol ./home/username/data/my_data
Veri deposundaki bir yol azureml://datastores/<data_store_name>/paths/<path>
Ortak http(ler) sunucusundaki yol https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Azure Depolama'da bir yol (Blob) wasbs://<containername>@<accountname>.blob.core.windows.net/<path_to_data>/
(ADLS 2. Nesil) abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
(ADLS 1. nesil) adl://<accountname>.azuredatalakestore.net/<path_to_data>/

Not

Yerel bir yoldan veri varlığı oluşturduğunuzda, bu varlık otomatik olarak varsayılan Azure Machine Learning bulut veri deposuna yüklenir.

Veri varlığı oluşturma: Dosya türü

Dosya (uri_file) türünde bir veri varlığı, depolamadaki tek bir dosyayı (örneğin, csv dosyası) gösterir. Dosya türüne sahip bir veri varlığı oluşturabilirsiniz:

BIR YAML dosyası oluşturun ve aşağıdaki kod parçacığını kopyalayıp yapıştırın. <> Yer tutucuları

  • veri varlığınızın adı
  • sürüm
  • açıklama
  • desteklenen bir konumda tek bir dosyanın yolu
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: './<path>/<file>' (this will be automatically uploaded to cloud storage)
# blob:  'wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>/<file>'
# ADLS gen2: 'abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/<file>'
# Datastore: 'azureml://datastores/<data_store_name>/paths/<path>/<file>'

type: uri_file
name: <NAME OF DATA ASSET>
version: <VERSION>
description: <DESCRIPTION>
path: <SUPPORTED PATH>

Ardından, CLI'da aşağıdaki komutu yürütür. Yer tutucuyu <filename> YAML dosya adına güncelleştirin.

az ml data create -f <filename>.yml

Veri varlığı oluşturma: Klasör türü

Klasör (uri_folder) türündeki veri varlığı, depolama kaynağındaki bir klasörü (örneğin, birkaç resim alt klasörü içeren bir klasörü) işaret eder. Klasör türüne sahip bir veri varlığı oluşturabilirsiniz:

Aşağıdaki kodu kopyalayıp yeni bir YAML dosyasına yapıştırın. <> Yer tutucuları

  • Veri varlığınızın adı
  • Sürüm
  • Açıklama
  • Desteklenen bir konumdaki bir klasörün yolu
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: './<path>/<folder>' (this will be automatically uploaded to cloud storage)
# blob:  'wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>/<folder>'
# ADLS gen2: 'abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/<folder>'
# Datastore: 'azureml://datastores/<data_store_name>/paths/<path>/<folder>'

type: uri_folder
name: <NAME OF DATA ASSET>
version: <VERSION>
description: <DESCRIPTION>
path: <SUPPORTED PATH>

Ardından, CLI'da aşağıdaki komutu yürütür. Yer tutucuyu <filename> YAML dosya adına güncelleştirin.

az ml data create -f <filename>.yml

Veri varlığı oluşturma: Tablo türü

Azure Machine Learning Tabloları (MLTable), Azure Machine Learning'de tablolarla çalışma bölümünde daha ayrıntılı olarak açıklanan zengin işlevlere sahiptir. Bu belgeleri burada yinelemek yerine, genel kullanıma açık bir Azure Blob Depolama hesabında bulunan Titanik verileriyle tablo türündeki bir veri varlığının nasıl oluşturulacağını açıklayan bu örneği okuyun.

İlk olarak data adlı yeni bir dizin oluşturun ve MLTable adlı bir dosya oluşturun:

mkdir data
touch MLTable

Ardından, aşağıdaki YAML'yi kopyalayıp önceki adımda oluşturduğunuz MLTable dosyasına yapıştırın:

Dikkat

Dosyayı veya olarak yeniden adlandırmayın. MLTable MLTable.ymlMLTable.yaml Azure machine learning bir MLTable dosya bekler.

paths:
- file: wasbs://data@azuremlexampledata.blob.core.windows.net/titanic.csv
transformations:
- read_delimited:
    delimiter: ','
    empty_as_string: false
    encoding: utf8
    header: all_files_same_headers
    include_path_column: false
    infer_column_types: true
    partition_size: 20971520
    path_column: Path
    support_multi_line: false
- filter: col('Age') > 0
- drop_columns:
  - PassengerId
- convert_column_types:
  - column_type:
      boolean:
        false_values:
        - 'False'
        - 'false'
        - '0'
        mismatch_as: error
        true_values:
        - 'True'
        - 'true'
        - '1'
    columns: Survived
type: mltable

CLI'da aşağıdaki komutu yürütür. Yer tutucuları veri varlığı adı ve sürüm değerleriyle güncelleştirin <> .

az ml data create --path ./data --name <DATA ASSET NAME> --version <VERSION> --type mltable

Önemli

geçerli path MLTable bir dosya içeren bir klasör olmalıdır.

İş çıkışlarından veri varlıkları oluşturma

Azure Machine Learning işinden veri varlığı oluşturabilirsiniz. Bunu yapmak için çıkışta parametresini name ayarlayın. Bu örnekte, bir genel blob deposundaki verileri varsayılan Azure Machine Learning Datastore'nuza kopyalayan ve adlı job_output_titanic_assetbir veri varlığı oluşturan bir iş gönderirsiniz.

İş belirtimi YAML dosyası (<file-name>.yml):

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# path: Set the URI path for the data. Supported paths include
# local: `./<path>
# Blob: wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
# ADLS: abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
# Datastore: azureml://datastores/<data_store_name>/paths/<path>
# Data Asset: azureml:<my_data>:<version>

# type: What type of data are you pointing to?
# uri_file (a specific file)
# uri_folder (a folder)
# mltable (a table)

# mode: Set INPUT mode:
# ro_mount (read-only mount)
# download (download from storage to node)
# mode: Set the OUTPUT mode
# rw_mount (read-write mount)
# upload (upload data from node to storage)

type: command
command: cp ${{inputs.input_data}} ${{outputs.output_data}}
compute: azureml:cpu-cluster
environment: azureml://registries/azureml/environments/sklearn-1.1/versions/4
inputs:
  input_data:
    mode: ro_mount
    path: azureml:wasbs://data@azuremlexampledata.blob.core.windows.net/titanic.csv
    type: uri_file
outputs:
  output_data:
    mode: rw_mount
    path: azureml://datastores/workspaceblobstore/paths/quickstart-output/titanic.csv
    type: uri_file
    name: job_output_titanic_asset
    

Ardından, CLI kullanarak işi gönderin:

az ml job create --file <file-name>.yml

Veri varlıklarını yönetme

Veri varlığını silme

Önemli

Tasarım gereği, veri varlığı silme desteklenmez.

Azure machine learning veri varlığının silinmesine izin verirse aşağıdaki olumsuz ve olumsuz etkilere sahip olabilir:

  • Daha sonra silinen veri varlıklarını kullanan üretim işleri başarısız olur.
  • Ml denemesini yeniden oluşturmak daha zor olacaktır.
  • silinen veri varlığı sürümünü görüntülemek imkansız hale geleceği için iş kökeni bozulacaktı.
  • Sürümler eksik olabileceğinden doğru şekilde izleyemez ve denetleyemezsiniz .

Bu nedenle, veri varlıklarının değişmezliği, üretim iş yükleri oluşturan bir ekipte çalışırken bir koruma düzeyi sağlar.

Yanlışlıkla oluşturulmuş bir veri varlığı için (örneğin, yanlış ad, tür veya yol ile) Azure Machine Learning, silme işleminin olumsuz sonuçları olmadan durumu ele almak için çözümler sunar:

Bu veri varlığını silmek istiyorum çünkü... Çözüm
Ad yanlış Veri varlığını arşivle
Ekip artık veri varlığını kullanmıyor Veri varlığını arşivle
Veri varlığı listesini karışıklığa neden olur Veri varlığını arşivle
Yol yanlış Doğru yola sahip veri varlığının yeni bir sürümünü (aynı ad) oluşturun. Daha fazla bilgi için Veri varlıkları oluşturma'yı ziyaret edin.
Yanlış bir türe sahip Şu anda Azure Machine Learning, ilk sürümle karşılaştırıldığında farklı türde yeni bir sürüm oluşturulmasına izin vermez.
(1) Veri varlığını arşivle
(2) Doğru türde farklı bir ad altında yeni bir veri varlığı oluşturun.

Veri varlığını arşivleme

Bir veri varlığını arşivleme, varsayılan olarak hem liste sorgularından (örneğin, CLI'de az ml data list) hem de Studio kullanıcı arabirimindeki veri varlığı listesinde gizler. İş akışlarınızda arşivlenmiş bir veri varlığına başvurmaya ve kullanmaya devam edebilirsiniz. Aşağıdakilerden birini arşivleyebilirsiniz:

  • Veri varlığının belirli bir ad altındaki tüm sürümleri

veya

  • Belirli bir veri varlığı sürümü

Veri varlığının tüm sürümlerini arşivle

Veri varlığının tüm sürümlerini belirli bir ad altında arşivleyebilmek için şunu kullanın:

Aşağıdaki kodu yürütün. Yer tutucuları bilgilerinizle güncelleştirin <> .

az ml data archive --name <NAME OF DATA ASSET>

Belirli bir veri varlığı sürümünü arşivle

Belirli bir veri varlığı sürümünü arşiv etmek için şunu kullanın:

Aşağıdaki kodu yürütün. Yer tutucuları veri varlığınızın ve sürümünüzün adıyla güncelleştirin <> .

az ml data archive --name <NAME OF DATA ASSET> --version <VERSION TO ARCHIVE>

Arşivlenmiş veri varlığını geri yükleme

Arşivlenmiş bir veri varlığını geri yükleyebilirsiniz. Veri varlığının tüm sürümleri arşivlenmişse, veri varlığının tek tek sürümlerini geri yükleyemezsiniz. Tüm sürümleri geri yüklemeniz gerekir.

Veri varlığının tüm sürümlerini geri yükleme

Veri varlığının belirli bir ad altındaki tüm sürümlerini geri yüklemek için şunu kullanın:

Aşağıdaki kodu yürütün. Yer tutucuları veri varlığınızın adıyla güncelleştirin <> .

az ml data restore --name <NAME OF DATA ASSET>

Belirli bir veri varlığı sürümünü geri yükleme

Önemli

Tüm veri varlığı sürümleri arşivlendiyse, veri varlığının tek tek sürümlerini geri yükleyemezsiniz. Tüm sürümleri geri yüklemeniz gerekir.

Belirli bir veri varlığı sürümünü geri yüklemek için şunu kullanın:

Aşağıdaki kodu yürütün. Yer tutucuları veri varlığınızın ve sürümünüzün adıyla güncelleştirin <> .

az ml data restore --name <NAME OF DATA ASSET> --version <VERSION TO ARCHIVE>

Veri kökeni

Veri kökeni, verilerin kaynağını kapsayan yaşam döngüsü ve zaman içinde depolama alanı boyunca nereye taşınacağı olarak geniş ölçüde anlaşılır. Farklı türde geriye dönük senaryolar kullanır, örneğin

  • Sorun giderme
  • ML işlem hatlarında kök nedenleri izleme
  • Hata ayıklama

Veri kalitesi analizi, uyumluluk ve "durum" senaryolarında da köken kullanılır. Köken, kaynaktan hedefe taşınan verileri göstermek için görsel olarak temsil edilir ve ayrıca veri dönüşümlerini kapsar. Çoğu kurumsal veri ortamlarının karmaşıklığı göz önüne alındığında, bu görünümlerin çevre birimi veri noktalarını birleştirmeden veya maskelemeden anlaşılması zor olabilir.

Azure Machine Learning İşlem Hattı'nda veri varlıkları verilerin kaynağını ve verilerin nasıl işlendiğini gösterir, örneğin:

İş ayrıntılarında veri kökenini gösteren ekran görüntüsü.

Veri varlığını kullanan işleri Studio kullanıcı arabiriminde görüntüleyebilirsiniz. İlk olarak, sol taraftaki menüden Veri'yi seçin ve ardından veri varlığı adını seçin. Veri varlığını kullanan işlere dikkat edin:

Veri varlığını kullanan işleri gösteren ekran görüntüsü.

Veri varlıklarındaki işler görünümü, iş hatalarını bulmayı ve ML işlem hatlarınızda ve hata ayıklamanızda kök neden analizi yapmayı kolaylaştırır.

Veri varlığı etiketleme

Veri varlıkları, anahtar-değer çifti olarak veri varlığına uygulanan ek meta veriler olan etiketlemeyi destekler. Veri etiketleme birçok avantaj sağlar:

  • Veri kalitesi açıklaması. Örneğin, kuruluşunuz bir madalyon göl evi mimarisi kullanıyorsa varlıkları (ham), medallion:silver (doğrulanmış) ve medallion:gold (zenginleştirilmiş) etiketleyebilirsiniz medallion:bronze .
  • Verilerin bulunmasına yardımcı olmak için verilerin verimli bir şekilde aranıp filtrelenmesi.
  • Veri erişimini düzgün bir şekilde yönetmek ve yönetmek için hassas kişisel verilerin tanımlanması. Örneğin, sensitivity:PII/sensitivity:nonPII.
  • Verilerin sorumlu bir yapay zeka (RAI) denetimi tarafından onaylanıp onaylanmadığını belirleme. Örneğin, RAI_audit:approved/RAI_audit:todo.

Veri varlıklarına oluşturma akışlarının bir parçası olarak etiket ekleyebilir veya mevcut veri varlıklarına etiket ekleyebilirsiniz. Bu bölümde her ikisi de gösterilir:

Veri varlığı oluşturma akışının parçası olarak etiket ekleme

Bir YAML dosyası oluşturun ve aşağıdaki kodu kopyalayıp bu YAML dosyasına yapıştırın. <> Yer tutucuları

  • veri varlığınızın adı
  • sürüm
  • açıklama
  • etiketler (anahtar-değer çiftleri)
  • desteklenen bir konumda tek bir dosyanın yolu
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: './<path>/<file>' (this will be automatically uploaded to cloud storage)
# blob:  'wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>/<file>'
# ADLS gen2: 'abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/<file>'
# Datastore: 'azureml://datastores/<data_store_name>/paths/<path>/<file>'

# Data asset types, use one of:
# uri_file, uri_folder, mltable

type: uri_file
name: <NAME OF DATA ASSET>
version: <VERSION>
description: <DESCRIPTION>
tags:
    <KEY1>: <VALUE>
    <KEY2>: <VALUE>
path: <SUPPORTED PATH>

CLI'da aşağıdaki komutu yürütür. Yer tutucuyu <filename> YAML dosya adına güncelleştirin.

az ml data create -f <filename>.yml

Mevcut bir veri varlığına etiket ekleme

Azure CLI'da aşağıdaki komutu yürütür. <> Yer tutucuları

  • Veri varlığınızın adı
  • Sürüm
  • Etiket için anahtar-değer çifti
az ml data update --name <DATA ASSET NAME> --version <VERSION> --set tags.<KEY>=<VALUE>

Sürüm oluşturma en iyi yöntemleri

ETL işlemleriniz genellikle Azure depolamadaki klasör yapınızı zamana göre düzenler, örneğin:

/
└── 📁 mydata
    ├── 📁 year=2022
    │   ├── 📁 month=11
    │   │   └── 📄 file1
    │   │   └── 📄 file2
    │   └── 📁 month=12
    │       └── 📄 file1
    │   │   └── 📄 file2
    └── 📁 year=2023
        └── 📁 month=1
            └── 📄 file1
    │   │   └── 📄 file2

Zaman/sürüm yapılandırılmış klasörleri ve Azure Machine Learning Tablolarının (MLTable) birleşimi, sürümlenmiş veri kümeleri oluşturmanıza olanak tanır. Azure Machine Learning Tablolarıyla sürümlenmiş verilerin nasıl elde edilemeye devam ettiği varsayımsal bir örnektir. Bu yapıda kamera görüntülerini her hafta Azure Blob depolamaya yükleyen bir işleminiz olduğunu varsayalım:

/myimages
└── 📁 year=2022
    ├── 📁 week52
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │       └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
└── 📁 year=2023
    ├── 📁 week1
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │       └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg

Not

Görüntü (jpeg) verilerinin nasıl sürüm yapılacağını göstersek de, aynı yaklaşım herhangi bir dosya türünde (örneğin, Parquet, CSV) çalışır.

Azure Machine Learning Tabloları ()mltable ile, 2023'te ilk haftanın sonuna kadar verileri içeren bir Yol Tablosu oluşturun. Ardından bir veri varlığı oluşturun:

import mltable
from mltable import MLTableHeaders, MLTableFileEncoding, DataType
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

# The ** in the pattern below will glob all sub-folders (camera1, ..., camera2)
paths = [
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2022/week=52/**/*.jpeg"
    },
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2023/week=1/**/*.jpeg"
    },
]

tbl = mltable.from_paths(paths)
tbl.save("./myimages")

# Connect to the AzureML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"

ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

# Define the Data asset object
my_data = Data(
    path=mltable_folder,
    type=AssetTypes.MLTABLE,
    description="My images. Version includes data through to 2023-Jan-08.",
    name="myimages",
    version="20230108",
)

# Create the data asset in the workspace
ml_client.data.create_or_update(my_data)

Sonraki haftanın sonunda ETL'niz verileri daha fazla veri içerecek şekilde güncelleştirdi:

/myimages
└── 📁 year=2022
    ├── 📁 week52
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
└── 📁 year=2023
    ├── 📁 week1
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    ├── 📁 week2
    │   ├── 📁 camera1
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg
    │   └── 📁 camera2
    │   │   └── 🖼️ file1.jpeg
    │   │   └── 🖼️ file2.jpeg

İlk sürüm (20230108) yalnızca ve year=2023/week=1 içindeki dosyaları year=2022/week=52 bağlamaya/indirmeye devam eder çünkü yollar dosyada MLTable bildirilir. Bu, denemeleriniz için yeniden üretilebilirlik sağlar. veri varlığının içeren year=2023/week2yeni bir sürümünü oluşturmak için şunu kullanın:

import mltable
from mltable import MLTableHeaders, MLTableFileEncoding, DataType
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

# The ** in the pattern below will glob all sub-folders (camera1, ..., camera2)
paths = [
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2022/week=52/**/*.jpeg"
    },
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2023/week=1/**/*.jpeg"
    },
    {
        "pattern": "abfss://<file_system>@<account_name>.dfs.core.windows.net/myimages/year=2023/week=2/**/*.jpeg"
    },
]

# Save to an MLTable file on local storage
tbl = mltable.from_paths(paths)
tbl.save("./myimages")

# Next, you create a data asset - the MLTable file will automatically be uploaded

# Connect to the AzureML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"

ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

# Define the Data asset object
my_data = Data(
    path=mltable_folder,
    type=AssetTypes.MLTABLE,
    description="My images. Version includes data through to 2023-Jan-15.",
    name="myimages",
    version="20230115", # update version to the date
)

# Create the data asset in the workspace
ml_client.data.create_or_update(my_data)

Artık verilerin iki sürümüne sahipsiniz ve burada sürümün adı görüntülerin depolama alanına yüklendiği tarihe karşılık gelir:

  1. 20230108: 2023-Ocak 08'e kadar olan görüntüler.
  2. 20230115: 2023-Ocak 15'e kadar olan görüntüler.

Her iki durumda da MLTable, yalnızca bu tarihlere kadar olan görüntüleri içeren bir yol tablosu oluşturur.

Azure Machine Learning işinde, veya modlarını kullanarak eval_download sürüme sahip MLTable'daki bu yolları işlem hedefinize bağlayabilir veya eval_mount indirebilirsiniz:

from azure.ai.ml import MLClient, command, Input
from azure.ai.ml.entities import Environment
from azure.identity import DefaultAzureCredential
from azure.ai.ml.constants import InputOutputModes

# connect to the AzureML workspace
ml_client = MLClient.from_config(
    DefaultAzureCredential()
)

# Get the 20230115 version of the data
data_asset = ml_client.data.get(name="myimages", version="20230115")

input = {
    "images": Input(type="mltable",
                   path=data_asset.id,
                   mode=InputOutputModes.EVAL_MOUNT
            )
}

cmd = """
ls ${{inputs.images}}/**
"""

job = command(
    command=cmd,
    inputs=input,
    compute="cpu-cluster",
    environment="azureml://registries/azureml/environments/sklearn-1.1/versions/4"
)

ml_client.jobs.create_or_update(job)

Not

eval_mount ve eval_download modları MLTable için benzersizdir. Bu durumda, AzureML veri çalışma zamanı özelliği dosyayı değerlendirir MLTable ve yolları işlem hedefinde bağlar.

Sonraki adımlar