Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
OneLake è lo strato di archiviazione open lake di Fabric con accesso compatibile con Archiviazione di Azure. Espone i dati di Fabric tramite onelake.dfs.fabric.microsoft.com per l'accesso ad ADLS Gen2/DFS e onelake.blob.fabric.microsoft.com per l'accesso a Blob API. Questo articolo descrive come Azure Machine Learning può usare queste superfici tramite archivi dati AML, input e output di endpoint batch e accesso diretto abfss:// da notebook o script.
Azure Machine Learning fornisce tre punti di integrazione principali con OneLake:
-
Archivi dati: registrare una posizione Fabric Lakehouse
Filescome archivio dati Azure Machine Learning e farvi riferimento da processi e asset di dati. Azure Machine Learning supporta anche il collegamento diretto alle tabelle Fabric Lakehouse, ma questo modello implica una copia in ADLS Gen2 e non è trattato in questo documento. - Endpoint batch - richiamare le distribuzioni batch con input e output archiviati in OneLake (attualmente tramite un datastore registrato o tramite un datastore Blob/ADLS basato su collegamenti).
- OneLake API/accesso diretto ABFSS: lettura e scrittura di OneLake direttamente da notebook e script in esecuzione in ambienti di runtime Azure Machine Learning.
| Punto di integrazione in Azure Machine Learning | Interfaccia OneLake | Interfaccia di Azure Machine Learning | I dati vengono copiati in ADLS Gen2? | URI primario da usare in Azure Machine Learning |
|---|---|---|---|---|
| Archivio dati OneLake | Sezione Lakehouse /Files. |
CLI / SDK (YAML) | No | azureml://datastores/<name>/paths/<path> |
| Tabella lakehouse di OneLake (collegata tramite l'interfaccia utente) | Sezione Lakehouse /Tables. |
studio di Azure Machine Learning (interfaccia utente) | Sì: copiato tramite Fabric pipeline in ADLS Gen2, quindi registrato | azureml://datastores/<adls_ds>/paths/<path> |
| Input/output dell'endpoint Batch | Lakehouse /Files (tramite collegamento ADLS). |
CLI / SDK / REST | Optional |
azureml://datastores/<name>/paths/<path> oppure abfss://... |
| API OneLake diretta / ABFSS |
/Files e /Tables |
Notebook/script nelle risorse di calcolo di Azure Machine Learning | No | abfss://<workspace>@onelake.dfs.fabric.microsoft.com/<lakehouse>.Lakehouse/Files/... |
Note
azureml://è uno schema URI specifico di Azure Machine Learning, non un protocollo di archiviazione. Il piano di controllo di Azure Machine Learning e il runtime dei dati lo usano per determinare la posizione di archiviazione sottostante (Blob, ADLS Gen2, OneLake e altro) utilizzando i metadati di connessione e le credenziali registrati nel datastore denominato.
OneLake come archivio dati Azure Machine Learning
Un archivio dati è un'astrazione con ambito nell'area di lavoro di Azure Machine Learning relativa a una posizione di archiviazione esterna (OneLake, Azure Blob, ADLS Gen2, File di Azure). Archivia i metadati di connessione per una risorsa di archiviazione esistente, l'endpoint, il contenitore/file system/elemento e le credenziali o la configurazione dell'identità, senza effettuare il provisioning o la copia dei dati stessi. Varie esperienze all'interno di Azure Machine Learning possono fare riferimento agli archivi dati usando un URI stabile (azureml://datastores/<name>/paths/<path>).
Note
studio di Azure Machine Learning attualmente non elenca OneLake come tipo di archivio dati nell'interfaccia utente, ma l'interfaccia della riga di comando e l'SDK supportano la creazione e la gestione di archivi dati OneLake tramite la definizione YAML.
Metadati di connessione richiesti da Microsoft Fabric
Dalla pagina Proprietà dell'elemento lakehouse in Fabric acquisire:
-
Endpoint : per OneLake, usare
onelake.dfs.fabric.microsoft.comoonelake.blob.fabric.microsoft.coma seconda del protocollo che si vuole usare. - GUID dell'area di lavoro
- GUID dell'elemento (il GUID del lakehouse)
Creare l'archivio dati in 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.
Usando interfaccia della riga di comando di Azure, creare l'archivio dati nell'area di lavoro di Azure Machine Learning di destinazione. Sostituire i <name_of_AML_workspace> segnaposto e <name_of_datastore> con i valori appropriati.
az ml datastore create --file ./onelake-datastore.yml \
--resource-group rg-amlonelake \
--workspace-name <name_of_AML_workspace>
Usare un archivio dati nei processi di Azure Machine Learning
Dopo aver registrato un archivio dati Azure Machine Learning, il relativo azureml:// URI può essere usato in diverse esperienze. L'esempio seguente illustra come fare riferimento a un archivio dati OneLake in un processo di Azure Machine Learning. L'URI seguente è valido come processo Input/Output, nelle definizioni degli asset di dati e in qualsiasi punto Azure Machine Learning accetta un percorso dell'archivio dati, ad eccezione degli endpoint batch, che attualmente non supportano OneLake come tipo di archivio dati per l'input o l'output.
L'esempio di processo seguente copia un file da una posizione a un'altra all'interno dello stesso archivio dati OneLake. È possibile usare una combinazione di diverse destinazioni di archiviazione supportate (BLOB, ADLS Gen2, OneLake) come input e output nello stesso processo.
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>
Esperienze di Azure Machine Learning che possono fare riferimento direttamente a un archivio dati OneLake
| # | Azure Machine Learning superficie/interfaccia | Direzione | Indirizzamento di OneLake | Source |
|---|---|---|---|---|
| 1 |
Processi di Azure Machine Learning - Input / Output (CLI v2, SDK v2 command, pipeline, sweep) |
R / W | azureml://datastores/<onelake_ds>/paths/... |
Accedere ai dati in un'attività |
| 2 |
Asset di dati (uri_file, uri_folder) registrati in un percorso dell'archivio dati OneLake |
R (gli asset sono riferimenti di sola lettura) |
azureml://datastores/<onelake_ds>/paths/... racchiuso con controllo delle versioni |
Creare asset di dati |
| 3 |
Runtime dei dati di Azure Machine Learning tramite azureml-fsspec nei notebook/script sul calcolo di Azure Machine Learning |
R / W |
azureml://datastores/<onelake_ds>/paths/... aperto con fsspec.open(...) o AzureMachineLearningFileSystem |
Accedere ai dati da OneLake durante lo sviluppo interattivo |
OneLake con endpoint batch
Azure Machine Learning consente di usare Fabric per accedere agli endpoint batch di distribuzione del modello per l'inferenza asincrona a esecuzione prolungata con modelli e pipeline di Machine Learning.
In questo modello, l'obiettivo dell'architettura consiste nel mantenere una singola copia fisica dei dati delle funzionalità di input e delle stime di output accessibili a entrambe le piattaforme, Fabric e Azure Machine Learning. Un file in ADLS ha due indirizzi validi: un URI azureml://datastores/... che gli endpoint batch di Azure Machine Learning accettano come input/output e un percorso del lakehouse (abilitato tramite collegamento ADLS) che i notebook, le pipeline e gli endpoint di analisi SQL di Fabric possono usare per eseguire query. Questo modello non implica alcuna copia, nessuna sincronizzazione pianificata, nessuna seconda fonte di verità. La vista lakehouse e la vista Azure Machine Learning sono proiezioni dello stesso account di archiviazione.
Gli endpoint batch si trovano tra due cartelle visibili a OneLake:
-
Input - una posizione selezionata
/Files(area di landing raw, richieste valutate, partizioni giornaliere) preparata dal team di data engineering di Fabric. Azure Machine Learning lo legge tramite un datastore ADLS Gen2 che punta alla stessa risorsa di archiviazione del collegamento. -
Output - un percorso delle previsioni
/Filesnello stesso account ADLS Gen2, in cui il processo batch scrive i dati, che appare nel lakehouse tramite uno shortcut ed è immediatamente disponibile per i notebook di Fabric, i flussi di dati o una fase di caricamento di una tabella Delta.
In generale, questo modello è particolarmente adatto agli scenari in cui i dati sono già stati inseriti in ADLS Gen2. Ad esempio, un data lake esistente che alimenta carichi di lavoro di analisi o di ML. Invece di eseguire la migrazione o la duplicazione dei dati in OneLake, un collegamento OneLake visualizza la posizione ADLS esistente all'interno di una Fabric lakehouse, mentre lo stesso account rimane registrato come archivio dati.
Accesso a SDK o API di OneLake da notebook e script di Azure Machine Learning
Quando il codice viene eseguito in una risorsa di calcolo di Azure Machine Learning (istanza di calcolo, cluster di calcolo o calcolo serverless), può leggere e scrivere direttamente in OneLake tramite il percorso abfss:// o il percorso dell'archivio dati OneLake. OneLake SDK e le API offrono un punto di integrazione flessibile e possono essere usati per l'esplorazione basata su notebook, script di training personalizzati e componenti che richiedono sia l'accesso /Files sia /Tables tramite le risorse di calcolo di Azure Machine Learning.
OneLake utilizza un URI abfss:// per i file su OneLake e può essere usato come percorso di input valido per il processo per l'autenticazione basata sull'identità o sull'entità servizio:
abfss://<workspace_guid>@<endpoint>/<item_guid>/Files/<path>
Prestazioni e scalabilità: scelta del lettore corretto in Azure Machine Learning
fsspec (e il backend OneLake adlfs che incapsula) è un'astrazione del file system a livello di Python. È utile per i notebook, ma non è un motore dati parallelo. La concorrenza è vincolata da un singolo processo di Python. Le prestazioni dipendono quindi dal lettore e dal motore seduto sopra di esso. La documentazione sul runtime dei dati di Azure Machine Learning raccomanda esplicitamente di usare il runtime dei dati di Azure Machine Learning anziché i download tramite Python sul lato client dei dati di training, segnalando limitazioni di throughput dello storage osservate "quando il codice client usa Python per scaricare i dati dallo storage, a causa di problemi legati al Global Interpreter Lock (GIL)."
Usare Azure Machine Learning Spark per l'elaborazione dei dati su larga scala in OneLake
OneLake è progettato come un lake di analisi e l'endpoint abfss:// viene compilato per i modelli di lettura partizionati paralleli usati da Spark. Per ETL su scala TB, feature engineering o preparazione distribuita dei dati di training, usare Azure Machine Learning Spark con fsspec, preferibilmente in un cluster multinodo:
Spark serverless in Azure Machine Learning oppure un pool Spark di Synapse collegato - esegui processi/notebook Spark all'interno di Azure Machine Learning e leggi OneLake direttamente tramite
abfss://. Vedere Apache Spark in Azure Machine Learning.Fabric Spark - I notebook e i processi Spark in esecuzione all'interno di Fabric hanno accesso nativo allo stesso lakehouse e possono trasferire gli output curati ad Azure Machine Learning tramite il datastore di OneLake.
L'esempio seguente illustra la lettura di una tabella Delta in un lakehouse tramite una sessione Spark in una risorsa di calcolo di Azure Machine Learning:
df = (
spark.read.format("delta")
.load(
"abfss://<workspace_guid>@onelake.dfs.fabric.microsoft.com/"
"<item_guid>/Tables/<table-name>"
)
)
OneLake e Azure Machine Learning mltable
Attualmente, la lettura dei dati basati su OneLake tramite mltable non riesce durante la trasmissione in streaming del file. Gli errori osservati includono ScriptExecution.StreamAccess.NotFound e Invalid argument (os error 22). Le risorse di calcolo di Azure Machine Learning possono risolvere e leggere OneLake tramite azureml-fsspec, pyarrow o l’SDK di Archiviazione di Azure Data Lake, usando lo stesso datastore e la stessa identità.
Al posto della tabella ml, prendere in considerazione una delle alternative seguenti:
- Per le letture di OneLake, preferire gli asset di dati
uri_file/uri_foldere caricarli conazureml-fsspec+ pyarrow / pandas / polars / DuckDB (nodo singolo) oppure con Spark suabfss://(distribuito). La documentazione di Microsoft Learnmltablenota che per una semplice cartella Parquet o file CSV èuri_file/uri_folderla scelta consigliata. - Se
mltablele semantiche sono realmente necessarie, più comunemente come input per AutoML, che richiedetype: mltable, caricare prima i dati in un account ADLS Gen2 e creare l'oggettomltablein quella posizione.mltableè affidabile oggi in ADLS Gen2. - Lo schema di collegamento OneLake (illustrato nell’ambito degli endpoint batch) è una soluzione naturale per ML Table: lo stesso file fisico risiede in ADLS Gen2 (dove
mltablefunziona) ed è esposto nel lakehouse di Fabric tramite un collegamento (dove gli strumenti di Fabric lo vedono), senza alcuna copia.
mltable riunisce diverse funzionalità che uri_file / uri_folder non offrono di base. La tabella seguente elenca l'equivalente più vicino quando si legge direttamente OneLake.
mltable Capacità |
Alternativa |
|---|---|
Progetto di lettura dichiarativo e portabile (delimitatore, codifica, intestazione, dimensioni della partizione, tipi di colonna) persistente come MLTable file insieme ai dati |
Aggiungere le impostazioni di lettura in Python (pyarrow.parquet.ParquetDataset, pandas.read_csv(...), polars.scan_parquet(...), duckdb.read_parquet(...)) e mantenere il modulo del caricatore nel controllo del codice sorgente |
Trasformazioni predefinite in fase di lettura (filter, drop_columns, convert_column_types, take_random_sample) |
Applica gli equivalenti nel motore che scegli - polars / duckdb i lazy frame spingono verso il basso filtri e proiezioni in modo analogo; Spark on abfss:// fa lo stesso su larga scala |
| Composizione di percorsi da più origini - un'unica tabella che comprende più file, cartelle, pattern glob e persino account di archiviazione | Usare fs.glob(...) da azureml-fsspec, pyarrow.dataset.dataset(paths)o Spark spark.read.parquet(*paths) per leggere un elenco di percorsi come un set di dati logico |
eval_mount
/
eval_download modalità nei processi di Azure Machine Learning (risolvere i percorsi dal file MLTable al momento dell'invio del processo, montare solo gli elementi a cui viene fatto riferimento) |
Materializzare a monte un sottoinsieme curato (un notebook di Fabric o un processo di pre-elaborazione di Azure Machine Learning scrive in una cartella dedicata /Files/curated/...) e puntarlo a uri_folder |
Versionamento della ricetta di lettura (non solo dei dati) tramite un asset di dati di tipo mltable |
Versionare lo script di caricamento insieme al codice del modello in Git, oppure abbinare una uri_folder risorsa di dati a un piccolo modulo di caricamento salvato nel repository accanto allo script di addestramento |
**Input di AutoML—AutoML richiede type: mltable (Configurare l'addestramento di AutoML) |
Eseguire il staging dei dati in ADLS Gen2 (collegamento dal lakehouse mantiene una singola copia fisica) e compilare il mltable file |
Per il training personalizzato e l'assegnazione dei punteggi in OneLake, usare uri_file / uri_folder più un motore di propria scelta (pyarrow / polars / duckdb a nodo singolo o Spark distribuito in Azure Machine Learning). Queste opzioni offrono le stesse funzionalità funzionali di mltable con velocità effettiva paragonabile o migliore. Per AutoML, instradare tramite ADLS Gen2 finché mltable su OneLake non sarà supportato. È possibile usare un collegamento a OneLake per evitare la duplicazione dei dati e avere ancora i dati disponibili in Fabric per altri casi d'uso.
Considerazioni
Modello di identità. OneLake usa il modello di identità SaaS, quindi non espone un ID sottoscrizione. Anziché dal controllo degli accessi in base al ruolo di Azure (Azure RBAC) nell'account di archiviazione, l'accesso è regolato dai ruoli dell'area di lavoro Fabric (Amministratore, Membro, Collaboratore, Lettore) nel lakehouse di destinazione. L'archivio dati OneLake supporta due modalità di credenziale, documentate in Creare archivi dati. Per configurare l'archivio dati e accedere a Fabric lakehouse, è necessario un utente con il ruolo collaboratore dell'area di lavoro Fabric e il ruolo di amministratore dell'area di lavoro Azure Machine Learning.
Singola copia dei dati. L'archivio dati OneLake e l'accesso diretto ABFSS mantengono il principio di "copia singola" di OneLake. Il modello di scelta rapida per gli endpoint batch mantiene questo principio logicamente, ma richiede un account ADLS Gen2 come archivio fisico sottostante.
Co-localizzazione della regione. Posizionare l'area di lavoro Azure Machine Learning, il calcolo e la capacità di Fabric o l'area OneLake nella stessa area per evitare l'uscita tra aree.