Mengintegrasikan OneLake dengan Azure Machine Learning

OneLake adalah lapisan penyimpanan open lake Fabric dengan akses kompatibel dengan Azure Storage. Ini menyediakan data Fabric melalui onelake.dfs.fabric.microsoft.com untuk akses ADLS Gen2/DFS dan onelake.blob.fabric.microsoft.com untuk akses ke Blob API. Artikel ini menjelaskan cara Azure Machine Learning dapat menggunakan surface ini melalui datastore AML, input dan output endpoint batch, serta akses langsung abfss:// dari notebook atau skrip.

Azure Machine Learning menyediakan tiga titik integrasi utama dengan OneLake:

  1. Datastore - daftarkan lokasi Fabric Lakehouse Files sebagai datastore Azure Machine Learning dan referensikan dari pekerjaan dan aset data. Azure Machine Learning juga mendukung tautan langsung ke tabel Fabric Lakehouse, tetapi pola itu melibatkan salinan ke ADLS Gen2 dan tidak tercakup dalam dokumen ini.
  2. Titik akhir batch - panggil penyebaran batch dengan input dan output yang hidup di OneLake (hari ini melalui datastore terdaftar atau melalui datastore Blob/ADLS yang didukung pintasan).
  3. OneLake API / akses ABFSS langsung - baca dan tulis OneLake langsung dari notebook dan skrip yang berjalan di lingkungan runtime Azure Machine Learning.
Titik integrasi di Azure Machine Learning Permukaan OneLake antarmuka Azure Machine Learning Apakah data disalin ke ADLS Gen2? URI utama untuk digunakan dalam Azure Machine Learning
Datastore OneLake Bagian Lakehouse /Files. CLI / SDK (YAML) No azureml://datastores/<name>/paths/<path>
Tabel lakehouse OneLake (ditautkan dengan UI) Bagian Lakehouse /Tables. Studio Azure Machine Learning (UI) Ya - disalin melalui alur Fabric ke ADLS Gen2, lalu didaftarkan azureml://datastores/<adls_ds>/paths/<path>
Input/output titik akhir batch Lakehouse /Files (melalui pintasan ADLS). CLI / SDK / REST Optional azureml://datastores/<name>/paths/<path> atau abfss://...
API OneLake Langsung / ABFSS /Files dan /Tables Notebook / skrip pada komputasi Azure Machine Learning No abfss://<workspace>@onelake.dfs.fabric.microsoft.com/<lakehouse>.Lakehouse/Files/...

Note

azureml://adalah skema URI khusus Azure Machine Learning, bukan protokol penyimpanan. Azure Machine Learning menggunakan lapisan kontrol dan runtime data untuk menentukan lokasi penyimpanan yang mendasarinya (Blob, ADLS Gen2, OneLake, dan lainnya) menggunakan metadata koneksi dan kredensial yang terdaftar pada datastore yang diberi nama.

OneLake sebagai Azure Machine Learning Datastore

Datastore adalah abstraksi cakupan ruang kerja Azure Machine Learning atas lokasi penyimpanan eksternal (OneLake, Azure Blob, ADLS Gen2, Azure Files). Ini menyimpan metadata koneksi untuk sumber daya penyimpanan yang ada, titik akhir, kontainer/filesystem/item, dan kredensial atau konfigurasi identitas, tanpa menyediakan atau menyalin data itu sendiri. Berbagai pengalaman dalam Azure Machine Learning dapat mereferensikan datastore dengan menggunakan URI yang stabil (azureml://datastores/<name>/paths/<path>).

Note

Studio Azure Machine Learning saat ini tidak mencantumkan OneLake sebagai jenis datastore di UI, tetapi dukungan CLI dan SDK membuat dan mengelola datastore OneLake melalui definisi YAML.

Metadata koneksi diperlukan dari Microsoft Fabric

Dari halaman Properti item lakehouse di Fabric, ambil:

  • Titik akhir - Untuk OneLake, gunakan onelake.dfs.fabric.microsoft.com atau onelake.blob.fabric.microsoft.com bergantung pada protokol yang ingin Anda gunakan.
  • GUID Ruang Kerja
  • ITEM GUID (GUID lakehouse)

Membuat datastore di Azure Machine Learning

onelake-datastore.yml:

$schema: https://azuremlschemas.azureedge.net/latest/oneLakeDatastore.schema.json
name: <name_of_datastore>
type: onelake
description: Datastore pointing to a Microsoft Fabric lakehouse.
onelake_workspace_name: <workspace_guid>
endpoint: onelake.dfs.fabric.microsoft.com
artifact:
  type: lakehouse
  name: <item_guid>/Files   # Include /Files in the name to point at the lakehouse Files layer; omit it to point at the root of the item.

Dengan menggunakan Azure CLI, buat datastore di ruang kerja Azure Machine Learning target. Ganti placeholder <name_of_AML_workspace> dan <name_of_datastore> dengan nilai yang sesuai.

az ml datastore create --file ./onelake-datastore.yml \
    --resource-group rg-amlonelake \
    --workspace-name <name_of_AML_workspace>

Menggunakan datastore dalam pekerjaan Azure Machine Learning

Setelah datastore Azure Machine Learning terdaftar, azureml:// URI-nya tersedia untuk digunakan melalui berbagai pengalaman. Sampel di sini menunjukkan cara mereferensikan datastore OneLake dalam pekerjaan Azure Machine Learning. URI berikut valid sebagai job Input/Output, dalam definisi aset data, dan di mana pun Azure Machine Learning menerima jalur datastore, kecuali untuk endpoint batch, yang saat ini tidak mendukung OneLake sebagai tipe datastore untuk input atau output.

Sampel pekerjaan berikut menyalin file dari satu lokasi ke lokasi lain dalam datastore OneLake yang sama. Anda dapat menggunakan campuran berbagai target penyimpanan yang didukung (Blob, ADLS Gen2, OneLake) sebagai input dan output dalam pekerjaan yang sama.

type: command
command: cp ${{inputs.input_data}} ${{outputs.output_data}}
compute: azureml:<replace_with_aml_compute_target>
environment: azureml://registries/azureml/environments/sklearn-1.1/versions/4
inputs:
  input_data:
    mode: ro_mount
    path: azureml://datastores/<name_of_datastore>/paths/<folder-path>/<file-name> # Do not include /Files in the <file-name> portion of the path. Reason being that the datastore is already pointed at the /Files layer of the lakehouse via the artifact name in the datastore definition.
    type: uri_file
outputs:
  output_data:
    mode: rw_mount
    path: azureml://datastores/<name_of_datastore>/paths/<folder-path>/<file-name> # Do not include /Files in the <file-name> portion of the path. Reason being that the datastore is already pointed at the /Files layer of the lakehouse via the artifact name in the datastore definition.
    type: uri_file
    # optional: if you want to create a data asset from the output, 
    # then uncomment `name` (`name` can be set without setting `version`, and in this way, we will set `version` automatically for you)
    # name: <name_of_data_asset> # use `name` and `version` to create a data asset from the output
    # version: <version_of_data_asset>

Fitur Azure Machine Learning yang dapat merujuk langsung ke datastore OneLake

# permukaan / antarmuka Azure Machine Learning Arah Alamat OneLake Source
1 Azure Machine Learning job - Input / Output (CLI v2, SDK v2 command, pipeline, sweep) R / W azureml://datastores/<onelake_ds>/paths/... Mengakses data dalam pekerjaan
2 Aset data (uri_file, uri_folder) yang didaftarkan ke jalur datastore OneLake R (aset adalah referensi baca-saja) azureml://datastores/<onelake_ds>/paths/... dibungkus dengan penerapan versi Membuat aset data
3 Azure Machine Learning runtime data melalui azureml-fsspec di buku catatan/skrip pada komputasi Azure Machine Learning R / W azureml://datastores/<onelake_ds>/paths/... dibuka dengan fsspec.open(...) atau AzureMachineLearningFileSystem Mengakses data dari OneLake selama pengembangan interaktif

OneLake dengan titik akhir batch

Azure Machine Learning memungkinkan Anda menggunakan Fabric untuk mengakses titik akhir batch penyebaran model untuk inferensi asinkron yang berjalan lama dengan model dan alur pembelajaran mesin.

Dalam pola ini, tujuan arsitektur adalah untuk menyimpan satu salinan fisik dari data fitur input dan prediksi output yang dapat diakses oleh kedua platform - Fabric dan Azure Machine Learning. Sebuah file di ADLS memiliki dua alamat yang valid - URI azureml://datastores/... yang dapat diterima endpoint batch Azure Machine Learning sebagai input/output, dan jalur lakehouse (diaktifkan melalui pintasan ADLS) yang dapat dikueri oleh notebook Fabric, alur, dan endpoint analitik SQL. Pola ini tidak melibatkan salinan, tidak ada sinkronisasi terjadwal, tidak ada sumber kebenaran kedua. Tampilan lakehouse dan tampilan Azure Machine Learning adalah proyeksi akun penyimpanan yang sama.

Endpoint batch terletak di antara dua folder yang terlihat di OneLake:

  • Input - lokasi terkurasi /Files (area landing mentah, permintaan yang telah diberi skor, partisi harian) yang disiapkan oleh tim rekayasa data Fabric. Azure Machine Learning membacanya melalui datastore ADLS Gen2 yang menunjuk pada penyimpanan yang sama dengan pintasan.
  • Output - lokasi prediksi /Files yang ditulis oleh pekerjaan batch ke akun ADLS Gen2 yang sama, yang muncul di lakehouse melalui pintasan dan segera tersedia untuk notebook Fabric, alur data, atau langkah pemuatan tabel Delta.

Lebih luas lagi, pola ini sangat cocok untuk skenario di mana Anda sudah memiliki data yang mendarat di ADLS Gen2. Misalnya, data lake yang sudah ada yang memasok beban kerja analitik atau ML. Daripada memigrasikan atau menduplikasi data tersebut ke OneLake, pintasan OneLake menampilkan lokasi ADLS yang ada di dalam Fabric lakehouse, sementara akun yang sama tetap terdaftar sebagai datastore.

Akses OneLake SDK atau API dari buku catatan dan skrip Azure Machine Learning

Ketika kode berjalan pada komputasi Azure Machine Learning (instans komputasi, kluster komputasi, atau komputasi tanpa server), kode dapat membaca dan menulis ke OneLake secara langsung melalui abfss:// jalur atau jalur datastore OneLake-nya. OneLake SDK dan API menawarkan titik integrasi yang fleksibel dan dapat digunakan untuk eksplorasi berbasis notebook, skrip pelatihan kustom, dan komponen yang membutuhkan akses /Files dan /Tables melalui komputasi Azure Machine Learning.

OneLake menggunakan URI abfss:// untuk berkas di OneLake dan dapat digunakan sebagai jalur input job yang valid untuk autentikasi berbasis identitas atau service principal:

abfss://<workspace_guid>@<endpoint>/<item_guid>/Files/<path>

Performa dan skalabilitas - memilih pembaca yang tepat di Azure Machine Learning

fsspec(dan backend OneLake adlfs yang dibungkusnya) adalah abstraksi sistem file tingkat Python. Ini nyaman untuk notebook tetapi bukan sendiri mesin data paralel - konkurensinya dibatasi oleh satu proses Python. Oleh karena itu, performa tergantung pada pembaca dan mesin yang duduk di atasnya. Dokumentasi runtime data Azure Machine Learning secara eksplisit merekomendasikan penggunaan runtime data Azure Machine Learning alih-alih pengunduhan Python di sisi klien untuk data pelatihan, dengan mencatat adanya kendala throughput penyimpanan yang teramati "ketika kode klien menggunakan Python untuk mengunduh data dari penyimpanan, karena masalah Global Interpreter Lock (GIL)."

Menggunakan Azure Machine Learning Spark untuk pemrosesan data skala besar di OneLake

OneLake dirancang sebagai danau analitik, dan titik akhir abfss:// dirancang untuk pola pembacaan paralel yang dipartisi yang digunakan oleh Spark. Untuk ETL skala TB, rekayasa fitur, atau persiapan data pelatihan terdistribusi, gunakan Azure Machine Learning Spark melalui fsspec, idealnya pada kluster multi-simpul:

  • Spark tanpa server di Azure Machine Learning atau kumpulan Synapse Spark terlampir - jalankan pekerjaan/notebook Spark di dalam Azure Machine Learning dan baca OneLake langsung melalui abfss://. Lihat Apache Spark di Azure Machine Learning.

  • Fabric Spark - Notebook/pekerjaan Spark yang berjalan di dalam Fabric memiliki akses kelas satu ke lakehouse yang sama dan dapat menyerahkan output yang dikumpulkan untuk Azure Machine Learning melalui datastore OneLake.

Contoh berikut menunjukkan cara membaca tabel Delta lakehouse dalam sesi Spark di komputasi Azure Machine Learning:

df = (
    spark.read.format("delta")
        .load(
            "abfss://<workspace_guid>@onelake.dfs.fabric.microsoft.com/"
            "<item_guid>/Tables/<table-name>"
        )
)

OneLake dan Azure Machine Learning mltable

Saat ini, membaca data yang didukung OneLake melalui mltable gagal saat streaming file. Kesalahan yang diamati meliputi ScriptExecution.StreamAccess.NotFound dan Invalid argument (os error 22). Komputasi Azure Machine Learning dapat mengakses dan membaca OneLake melalui azureml-fsspec, pyarrow, atau Azure Storage Data Lake SDK menggunakan datastore dan identitas yang sama.

Sebagai pengganti Tabel ML, pertimbangkan salah satu alternatif berikut:

  • Untuk membaca dari OneLake, utamakan aset data uri_file / uri_folder dan muat menggunakan azureml-fsspec + pyarrow / pandas / polars / DuckDB (node tunggal), atau dengan Spark di abfss:// (terdistribusi). Dokumentasi Microsoft Learn mltable sendiri mencatat bahwa untuk folder Parquet sederhana atau file CSV, uri_file / uri_folder adalah pilihan yang direkomendasikan.
  • Jika mltable semantik benar-benar diperlukan - paling umum sebagai input untuk AutoML, yang mengharuskan type: mltable - tempatkan data tersebut ke akun ADLS Gen2 terlebih dahulu dan bangun mltable berdasarkan lokasi tersebut. mltable dapat diandalkan pada ADLS Gen2 saat ini.
  • Pola pintasan OneLake (dibahas sebagai bagian dari titik akhir batch) sangat cocok untuk ML Table - file fisik yang sama berada di ADLS Gen2 (tempat mltable berfungsi) dan muncul di lakehouse Fabric melalui pintasan (tempat perkakas Fabric dapat melihatnya), tanpa perlu menyalin data.

mltable mencakup beberapa kemampuan yang uri_file / uri_folder tidak sediakan secara bawaan. Tabel berikut menampilkan padanan yang paling mendekati saat Anda membaca OneLake secara langsung.

mltable Kemampuan Alternatif
Blueprint pembacaan deklaratif dan portabel (pemisah, pengodean, header, ukuran partisi, jenis kolom) yang disimpan sebagai file MLTable bersama data Sematkan pengaturan baca di Python (pyarrow.parquet.ParquetDataset, , pandas.read_csv(...), polars.scan_parquet(...)) duckdb.read_parquet(...)dan pertahankan modul pemuat tersebut di bawah kontrol sumber
Transformasi bawaan saat waktu baca (filter, drop_columns, convert_column_types, take_random_sample) Terapkan padanannya di engine yang Anda pilih - polars / duckdb lazy frames sama-sama menerapkan pushdown pada filter dan proyeksi; Spark on abfss:// melakukan hal yang sama pada skala besar
Komposisi jalur multi-sumber - satu tabel yang mencakup beberapa file, folder, pola glob, dan bahkan akun penyimpanan Gunakan fs.glob(...) dari azureml-fsspec, pyarrow.dataset.dataset(paths), atau spark.read.parquet(*paths) milik Spark untuk membaca daftar path sebagai satu dataset logis
eval_mount / eval_download mode dalam pekerjaan Azure Machine Learning (menyelesaikan jalur dari MLTable file saat pengiriman pekerjaan, hanya memasang apa yang direferensikan) Materialisasikan subset terkurasi di upstream (notebook Fabric atau job prapemrosesan Azure Machine Learning menulis ke folder khusus /Files/curated/...) lalu arahkan ke uri_folder
Pembuatan versi resep pembacaan (bukan hanya datanya) melalui aset data bertipe mltable Versi skrip pemuat dengan kode model di Git, atau pasangkan aset uri_folder data dengan modul loader kecil yang dicentang di samping skrip pelatihan
**Input AutoML—memerlukan type: mltable (Siapkan pelatihan AutoML) Siapkan data ke ADLS Gen2 (pintasan dari lakehouse mempertahankan satu salinan fisik) dan bangun mltable di sana

Untuk pelatihan dan penilaian kustom di OneLake, gunakan uri_file / uri_folder ditambah mesin pilihan Anda (pyarrow / polars / duckdbsimpul tunggal, atau Spark yang didistribusikan dalam Azure Machine Learning). Opsi ini menawarkan kemampuan fungsi yang sama seperti mltable dengan throughput yang sebanding atau lebih baik. Untuk AutoML, rutekan melalui ADLS Gen2 hingga mltable melalui OneLake didukung. Anda dapat menggunakan pintasan ke OneLake untuk menghindari duplikasi data dan masih memiliki data yang tersedia di Fabric untuk kasus penggunaan lainnya.

Considerations

  • Model identitas. OneLake menggunakan model identitas SaaS, sehingga tidak mengekspos ID Langganan. Alih-alih kontrol akses berbasis peran Azure (Azure RBAC) di akun penyimpanan, akses dikendalikan oleh peran ruang kerja Fabric (Admin, Anggota, Kontributor, Penampil) pada lakehouse tujuan. Datastore OneLake mendukung dua mode kredensial, yang didokumenkan dalam Membuat penyimpanan data. Untuk menyiapkan datastore dan mengakses Fabric lakehouse, Anda memerlukan pengguna dengan peran Kontributor ruang kerja Fabric dan peran admin ruang kerja Azure Machine Learning.

  • Salinan data tunggal. Penyimpanan data OneLake dan akses ABFSS langsung mempertahankan prinsip "salinan tunggal" OneLake. Pola pintasan untuk titik akhir batch mempertahankan prinsip ini secara logis tetapi memerlukan akun ADLS Gen2 sebagai penyimpanan fisik yang mendasarinya.

  • Kolokasi wilayah. Tempatkan ruang kerja Azure Machine Learning, sumber daya komputasi, serta kapasitas Fabric atau wilayah OneLake di wilayah yang sama untuk menghindari egress antarwilayah.