Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
OneLake to otwarta warstwa magazynu danych typu data lake w usłudze Fabric z dostępem kompatybilnym z Azure Storage. Udostępnia dane usługi Fabric za pośrednictwem onelake.dfs.fabric.microsoft.com na potrzeby dostępu ADLS Gen2/DFS oraz onelake.blob.fabric.microsoft.com na potrzeby dostępu za pomocą interfejsu Blob API. W tym artykule opisano, jak usługa Azure Machine Learning może korzystać z tych interfejsów za pośrednictwem magazynów danych AML, wejść i wyjść wsadowego punktu końcowego oraz przez bezpośredni dostęp abfss:// z notesów lub skryptów.
Azure Machine Learning zapewnia trzy podstawowe punkty integracji z usługą OneLake:
-
Magazyny danych — rejestrują lokalizację usługi Fabric Lakehouse
Filesjako magazyn danych Azure Machine Learning i odwołują się do niego z zadań i zasobów danych. Azure Machine Learning obsługuje również bezpośrednie połączenie z tabelami Fabric Lakehouse, ale ten wzorzec wiąże się z kopiowaniem do ADLS Gen2 i nie jest omówiony w tym dokumencie. - Punkty końcowe wsadowe — do wywoływania wdrożeń przetwarzania wsadowego z danymi wejściowymi i wyjściowymi przechowywanymi w usłudze OneLake (obecnie za pośrednictwem zarejestrowanego magazynu danych lub magazynu danych Blob/ADLS opartego na skrócie).
- Interfejsy API usługi OneLake / bezpośredni dostęp przez ABFSS — odczytywanie i zapisywanie danych w usłudze OneLake bezpośrednio z notatników i skryptów działających w środowiskach uruchomieniowych usługi Azure Machine Learning.
| Punkt integracji w Azure Machine Learning | Powierzchnia OneLake | powierzchnia Azure Machine Learning | Czy dane są kopiowane do usługi ADLS Gen2? | Podstawowy identyfikator URI do użycia w Azure Machine Learning |
|---|---|---|---|---|
| Magazyn danych OneLake | Sekcja Lakehouse /Files. |
CLI / SDK (YAML) | No | azureml://datastores/<name>/paths/<path> |
| Tabela lakehouse w usłudze OneLake (połączona z interfejsem użytkownika) | Sekcja Lakehouse /Tables. |
Azure Machine Learning studio (UI) | Tak — skopiowane za pośrednictwem potoku Fabric do usługi ADLS Gen2, a następnie zarejestrowane | azureml://datastores/<adls_ds>/paths/<path> |
| Dane wejściowe/wyjściowe punktu końcowego usługi Batch | Lakehouse /Files (za pośrednictwem skrótu usługi ADLS). |
CLI / SDK / REST | Optional |
azureml://datastores/<name>/paths/<path> lub abfss://... |
| Bezpośredni dostęp do interfejsu API OneLake / ABFSS |
/Files i /Tables |
Notatniki/skrypty w zasobach obliczeniowych usługi Azure Machine Learning | No | abfss://<workspace>@onelake.dfs.fabric.microsoft.com/<lakehouse>.Lakehouse/Files/... |
Note
azureml:// jest schematem identyfikatora URI specyficznym dla usługi Azure Machine Learning, a nie protokołem magazynowania. Płaszczyzna sterowania i środowisko uruchomieniowe danych usługi Azure Machine Learning używają go do ustalania bazowej lokalizacji magazynu (Blob, ADLS Gen2, OneLake i nie tylko) na podstawie metadanych połączenia i poświadczeń zarejestrowanych w magazynie danych o podanej nazwie.
OneLake jako magazyn danych Azure Machine Learning
Magazyn danych to abstrakcja w zakresie obszaru roboczego usługi Azure Machine Learning odnosząca się do zewnętrznej lokalizacji przechowywania danych (OneLake, Azure Blob, ADLS Gen2, Azure Files). Przechowuje metadane połączenia dla istniejącego zasobu magazynowego, punktu końcowego, kontenera/systemu plików/elementu oraz poświadczenia lub konfigurację tożsamości, bez aprowizowania ani kopiowania samych danych. Różne funkcje w usłudze Azure Machine Learning mogą odwoływać się do magazynów danych przy użyciu stabilnego identyfikatora URI (azureml://datastores/<name>/paths/<path>).
Note
Azure Machine Learning studio obecnie nie wyświetla listy OneLake jako typu magazynu danych w interfejsie użytkownika, ale interfejs wiersza polecenia i zestaw SDK obsługują tworzenie magazynów danych OneLake i zarządzanie nimi za pomocą definicji YAML.
Metadane połączenia wymagane przez Microsoft Fabric
Na stronie Właściwości elementu Lakehouse w usłudze Fabric zanotuj:
-
Punkt końcowy — w przypadku usługi OneLake użyj
onelake.dfs.fabric.microsoft.comlubonelake.blob.fabric.microsoft.comw zależności od protokołu, którego chcesz użyć. - Identyfikator GUID obszaru roboczego
- Identyfikator GUID elementu (identyfikator GUID elementu Lakehouse)
Tworzenie magazynu danych w 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.
Za pomocą Azure CLI utwórz magazyn danych w docelowym obszarze roboczym Azure Machine Learning. Zastąp symbole zastępcze <name_of_AML_workspace> i <name_of_datastore> odpowiednimi wartościami.
az ml datastore create --file ./onelake-datastore.yml \
--resource-group rg-amlonelake \
--workspace-name <name_of_AML_workspace>
Używanie magazynu danych w zadaniach Azure Machine Learning
Po zarejestrowaniu magazynu danych usługi Azure Machine Learning można używać jego identyfikatora URI azureml:// w różnych środowiskach. W tym przykładzie pokazano, jak odwoływać się do magazynu danych OneLake w zadaniu Azure Machine Learning. Poniższy identyfikator URI jest prawidłowy jako zadanie Input/Output, w definicjach zasobów danych i w dowolnym miejscu, Azure Machine Learning akceptuje ścieżkę magazynu danych z wyjątkiem punktów końcowych wsadowych, które obecnie nie obsługują usługi OneLake jako typu magazynu danych dla danych wejściowych lub wyjściowych.
Poniższy przykład zadania kopiuje plik z jednej lokalizacji do innej w tym samym magazynie danych OneLake. Możesz używać mieszanki różnych obsługiwanych miejsc docelowych magazynu danych (Blob, ADLS Gen2, OneLake) jako danych wejściowych i wyjściowych w tym samym zadaniu.
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>
Funkcje Azure Machine Learning, które mogą bezpośrednio odwoływać się do magazynu danych OneLake
| # | Azure Machine Learning surface/interfejs | Direction | Adresowanie OneLake | Source |
|---|---|---|---|---|
| 1 |
Zadania w usłudze Azure Machine Learning - Input / Output (CLI v2, SDK v2 command, pipeline, sweep) |
R / W | azureml://datastores/<onelake_ds>/paths/... |
Uzyskiwanie dostępu do danych w zadaniu |
| 2 |
Zasoby danych (uri_file, uri_folder) zarejestrowane dla ścieżki magazynu danych OneLake |
R (zasoby są referencjami tylko do odczytu) |
azureml://datastores/<onelake_ds>/paths/... opakowane mechanizmem wersjonowania |
Tworzenie zasobów danych |
| 3 |
Środowisko uruchomieniowe danych Azure Machine Learning za pośrednictwem azureml-fsspec w notesach/skryptach na zasobach obliczeniowych Azure Machine Learning |
R / W |
azureml://datastores/<onelake_ds>/paths/... otwarto za pomocą fsspec.open(...) lub AzureMachineLearningFileSystem |
Uzyskiwanie dostępu do danych z usługi OneLake podczas programowania interaktywnego |
Usługa OneLake z punktami końcowymi wsadowymi
Azure Machine Learning umożliwia używanie Fabric do uzyskiwania dostępu do punktów końcowych partii wdrażania modelu na potrzeby długotrwałego, asynchronicznego wnioskowania za pomocą modeli i potoków uczenia maszynowego.
W tym wzorcu celem architektury jest zachowanie pojedynczej fizycznej kopii zarówno danych funkcji wejściowych, jak i przewidywań wyjściowych dostępnych dla obu platform — Fabric i Azure Machine Learning. Plik w ADLS ma dwa prawidłowe adresy — identyfikator URI azureml://datastores/..., który punkty końcowe wsadowego przetwarzania w Azure Machine Learning akceptują jako dane wejściowe/wyjściowe, oraz ścieżkę lakehouse (udostępnianą za pośrednictwem skrótu ADLS), której mogą używać w zapytaniach notesy, potoki i punkty końcowe analizy SQL w usłudze Fabric. Ten wzorzec nie wymaga kopiowania, zaplanowanej synchronizacji ani drugiego źródła prawdy. Widok lakehouse i widok Azure Machine Learning są projekcjami tego samego konta magazynu danych.
Punkty końcowe usługi Batch znajdują się między dwoma folderami widocznymi w usłudze OneLake:
-
Dane wejściowe — wyznaczona lokalizacja (surowa strefa lądowania
/Files, ocenione żądania, partycje dzienne) przygotowana przez zespół inżynierii danych Fabric. Azure Machine Learning odczytuje te dane za pośrednictwem magazynu danych ADLS Gen2, który wskazuje na ten sam magazyn, co skrót. -
Dane wyjściowe — lokalizacja predykcji zapisywana przez zadanie wsadowe
/Filesna tym samym koncie usługi ADLS Gen2, która pojawia się w lakehouse za pośrednictwem skrótu i jest natychmiast dostępna dla notebooków Fabric, przepływów danych lub kroku ładowania tabeli Delta.
Mówiąc szerzej, ten wzorzec jest dobrze dostosowany do scenariuszy, w których masz już dane wylądowane w usłudze ADLS Gen2. Na przykład istniejące jezioro danych zasilające obciążenia analityczne lub związane z uczeniem maszynowym. Zamiast migrować lub duplikować te dane do usługi OneLake, skrót OneLake przedstawia istniejącą lokalizację usługi ADLS w Fabric lakehouse, podczas gdy to samo konto pozostaje zarejestrowane jako magazyn danych.
Dostęp do zestawu SDK lub interfejsu API usługi OneLake z notatników i skryptów Azure Machine Learning
Gdy kod działa w zasobie obliczeniowym usługi Azure Machine Learning (wystąpieniu obliczeniowym, klastrze obliczeniowym lub w obliczeniach bezserwerowych), może bezpośrednio odczytywać dane z usługi OneLake i zapisywać je w niej za pomocą ścieżki abfss:// lub ścieżki magazynu danych usługi OneLake. Zestaw SDK i interfejsy API usługi OneLake oferują elastyczny punkt integracji i mogą służyć do eksploracji z użyciem notesów, niestandardowych skryptów treningowych oraz składników, które wymagają dostępu zarówno do /Files, jak i /Tables za pośrednictwem zasobów obliczeniowych Azure Machine Learning.
Usługa OneLake używa identyfikatora URI abfss:// dla plików w usłudze OneLake i może on być używany jako prawidłowa ścieżka wejściowa dla zadania na potrzeby uwierzytelniania opartego na tożsamości lub nazwie głównej usługi:
abfss://<workspace_guid>@<endpoint>/<item_guid>/Files/<path>
Wydajność i skalowalność — wybór odpowiedniego czytnika w Azure Machine Learning
fsspec (oraz backend OneLake adlfs, który otacza) to abstrakcja systemu plików na poziomie Pythona. Jest to wygodne w przypadku notatników, ale samo w sobie nie jest równoległym silnikiem przetwarzania danych — jego stopień współbieżności jest ograniczony do pojedynczego procesu Pythona. W związku z tym wydajność zależy od czytnika i silnika siedzącego na nim.
W dokumentacji środowiska uruchomieniowego danych usługi Azure Machine Learning wyraźnie zaleca się używanie środowiska uruchomieniowego danych usługi Azure Machine Learning zamiast pobierania danych treningowych po stronie klienta przy użyciu języka Python, wskazując na zaobserwowane ograniczenia przepustowości magazynu „gdy kod klienta używa języka Python do pobierania danych z magazynu z powodu problemów z blokadą Global Interpreter Lock (GIL)”.
Używanie platformy Azure Machine Learning Spark do przetwarzania danych na dużą skalę w usłudze OneLake
Usługa OneLake została zaprojektowana jako jezioro analityczne, a punkt końcowy abfss:// utworzono z myślą o równoległych, partycjonowanych wzorcach odczytu danych stosowanych w platformie Spark. W przypadku procesów ETL na skalę TB, inżynierii cech lub rozproszonego przygotowywania danych treningowych należy używać usługi Azure Machine Learning Spark w ramach fsspec, najlepiej w klastrze wielowęzłowym:
Bezserwerowy Spark w Azure Machine Learning lub dołączona pula Spark usługi Synapse — uruchamiaj zadania/notatniki Spark w Azure Machine Learning i odczytuj dane z usługi OneLake bezpośrednio za pomocą
abfss://. Zobacz Apache Spark w Azure Machine Learning.Fabric Spark — notesniki/zadania Spark uruchomione w usłudze Fabric mają bezpośredni dostęp do tego samego lakehouse i mogą przekazywać przygotowane wyniki do usługi Azure Machine Learning za pośrednictwem magazynu danych OneLake.
Poniższy przykład pokazuje odczyt tabeli Delta w lakehouse z sesji Spark w zasobie obliczeniowym usługi Azure Machine Learning:
df = (
spark.read.format("delta")
.load(
"abfss://<workspace_guid>@onelake.dfs.fabric.microsoft.com/"
"<item_guid>/Tables/<table-name>"
)
)
OneLake i Azure Machine Learning mltable
Obecnie odczytywanie danych obsługiwanych przez OneLake za pośrednictwem mltable kończy się niepowodzeniem podczas strumieniowego odczytu pliku. Zaobserwowane błędy obejmują ScriptExecution.StreamAccess.NotFound i Invalid argument (os error 22). Zasoby obliczeniowe usługi Azure Machine Learning mogą uzyskiwać dostęp do danych w usłudze OneLake i je odczytywać za pośrednictwem azureml-fsspec, pyarrow lub zestawu SDK Azure Storage Data Lake przy użyciu tego samego magazynu danych i tej samej tożsamości.
Zamiast tabeli ML należy wziąć pod uwagę jedną z następujących alternatyw:
- Do odczytu z usługi OneLake preferuj zasoby danych
uri_file/uri_folderi wczytuj je za pomocąazureml-fsspec+ pyarrow / pandas / polars / DuckDB (pojedynczy węzeł) lub za pomocą platformy Spark w środowiskuabfss://(w trybie rozproszonym). Sama dokumentacja Microsoft Learnmltablezauważa, że w przypadku prostego folderu Parquet lub pliku CSVuri_file/uri_foldersą zalecanym wyborem. - Jeśli
mltablesemantyki są rzeczywiście wymagane — najczęściej jako dane wejściowe do usługi AutoML, co wymagatype: mltable— najpierw prześlij dane na konto ADLS Gen2 i utwórzmltabledla tej lokalizacji.mltabledziała obecnie niezawodnie w usłudze ADLS Gen2. - Wzorzec skrótu OneLake (omówiony w kontekście wsadowych punktów końcowych) naturalnie pasuje do tabeli ML Table — ten sam fizyczny plik znajduje się w usłudze ADLS Gen2 (gdzie działa
mltable) i jest widoczny w lakehouse Fabric za pośrednictwem skrótu (gdzie widzą go narzędzia Fabric), bez konieczności kopiowania.
mltable łączy kilka funkcji, których uri_file / uri_folder nie oferują domyślnie. Poniższa tabela przedstawia najbardziej zbliżony odpowiednik podczas bezpośredniego odczytu z usługi OneLake.
mltable Możliwości |
Alternatywne rozwiązanie |
|---|---|
Deklaratywna, przenośna specyfikacja odczytu (separator, kodowanie, nagłówek, rozmiar partycji, typy kolumn) zapisywana jako plik MLTable wraz z danymi |
Przypnij ustawienia odczytu w Python (pyarrow.parquet.ParquetDataset, pandas.read_csv(...), polars.scan_parquet(...)), duckdb.read_parquet(...)a następnie zachowaj ten moduł ładujący pod kontrolą źródła |
Wbudowane przekształcenia w czasie odczytu (filter, drop_columns, convert_column_types, take_random_sample) |
Zastosuj odpowiedniki w wybranym silniku — polars / duckdb leniwe ramki danych przenoszą filtry i projekcje jak najniżej; Spark na abfss:// robi to samo na dużą skalę |
| Tworzenie ścieżki z wielu źródeł — jedna tabela obejmująca wiele plików, folderów, wzorców glob, a nawet kont magazynu danych | Użyj fs.glob(...) z azureml-fsspec, pyarrow.dataset.dataset(paths) lub spark.read.parquet(*paths) platformy Spark, aby wczytać listę ścieżek jako jeden logiczny zestaw danych |
eval_mount
/
eval_download tryby w zadaniach Azure Machine Learning (ustalaj ścieżki na podstawie pliku MLTable podczas przesyłania zadania, zamontuj tylko to, do czego istnieją odwołania) |
Zmaterializuj starannie dobrany podzbiór na wcześniejszym etapie (notatnik Fabric lub zadanie wstępnego przetwarzania w Azure Machine Learning zapisuje go w dedykowanym folderze /Files/curated/...) i wskaż go do uri_folder |
Wersjonowanie receptury odczytu (nie tylko danych) za pomocą zasobu danych typu mltable |
Wersjonuj skrypt ładujący razem z kodem modelu w repozytorium Git lub połącz zasób danych uri_folder z małym modułem ładującym zatwierdzonym obok skryptu treningowego |
**Dane wejściowe AutoML — AutoML wymaga type: mltable (Konfigurowanie trenowania AutoML) |
Przechowuj dane etapowo w ADLS Gen2 (skrót z lakehouse’u zachowuje pojedynczą fizyczną kopię) i tam zbuduj mltable |
Do niestandardowego trenowania i oceniania w usłudze OneLake użyj uri_file / uri_folder oraz wybranego aparatu obliczeniowego (pyarrow / polars / duckdb pojedynczy węzeł lub rozproszony mechanizm Spark w usłudze Azure Machine Learning). Te opcje oferują takie same możliwości funkcjonalne, jak mltable w przypadku porównywalnej lub lepszej przepływności. W przypadku AutoML kieruj przez ADLS Gen2, dopóki mltable przez OneLake nie będzie obsługiwane. Możesz użyć skrótu do usługi OneLake, aby uniknąć duplikowania danych i nadal mieć dane dostępne w Fabric w innych przypadkach użycia.
Zagadnienia do rozważenia
Model tożsamości. Usługa OneLake używa modelu tożsamości SaaS, więc nie uwidacznia identyfikatora subskrypcji. Zamiast kontroli dostępu opartej na rolach platformy Azure (Azure RBAC) na koncie magazynu, dostęp jest kontrolowany przez role obszaru roboczego usługi Fabric (Administrator, Członek, Współautor, Osoba przeglądająca) w docelowym lakehouse. Magazyn danych OneLake obsługuje dwa tryby poświadczeń, które są udokumentowane w artykule Tworzenie magazynów danych. Aby skonfigurować magazyn danych i uzyskać dostęp do magazynu Fabric lakehouse, musisz mieć użytkownika z rolą współautora obszaru roboczego Fabric i rolą administratora obszaru roboczego Azure Machine Learning.
Pojedyncza kopia danych. Magazyn danych OneLake i bezpośredni dostęp do systemu ABFSS zachowują zasadę "pojedynczej kopii" usługi OneLake. Wzorzec skrótu dla wsadowych punktów końcowych jest zgodny z tą zasadą pod względem logicznym, ale wymaga konta usługi ADLS Gen2 jako bazowego fizycznego magazynu danych.
Współlokacja regionów. Umieść obszar roboczy usługi Azure Machine Learning, zasoby obliczeniowe oraz pojemność usługi Fabric lub region usługi OneLake w tym samym regionie, aby uniknąć transferu wychodzącego między regionami.