Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
OneLake es la capa de almacenamiento de lago abierto de Fabric con acceso compatible con Azure Storage. Expone los datos de Fabric a través de onelake.dfs.fabric.microsoft.com para el acceso a ADLS Gen2/DFS y de onelake.blob.fabric.microsoft.com para el acceso a la API Blob. En este artículo se describe cómo Azure Machine Learning puede usar estas superficies de almacenamiento a través de almacenes de datos de AML, las entradas y salidas de los puntos de conexión por lotes y el acceso directo abfss:// desde cuadernos de notas o scripts.
Azure Machine Learning proporciona tres puntos de integración principales con OneLake:
-
Almacenes de datos: registre una ubicación de Fabric Lakehouse
Filescomo almacén de datos Azure Machine Learning y haga referencia a ella desde trabajos y recursos de datos. Azure Machine Learning también admite un vínculo directo a las tablas de Lakehouse de Fabric, pero ese patrón implica una copia a ADLS Gen2 y no se aborda en este documento. - Puntos de conexión por lotes - invocar implementaciones por lotes con entradas y salidas que residen en OneLake (actualmente, mediante un almacén de datos registrado o mediante un almacén de datos Blob/ADLS respaldado por accesos directos).
- Acceso directo a las API de OneLake/ABFSS: lectura y escritura de OneLake directamente desde cuadernos y scripts que se ejecutan en entornos en tiempo de ejecución de Azure Machine Learning.
| Punto de integración en Azure Machine Learning | Entorno de OneLake | superficie de Azure Machine Learning | ¿Se copian los datos en ADLS Gen2? | URI principal que se va a usar en Azure Machine Learning |
|---|---|---|---|---|
| Almacén de datos de OneLake | Sección Lakehouse /Files. |
CLI/SDK (YAML) | No | azureml://datastores/<name>/paths/<path> |
| Tabla de lakehouse de OneLake (vinculada a la interfaz de usuario) | Sección Lakehouse /Tables. |
Estudio de Azure Machine Learning (INTERFAZ de usuario) | Sí - copiado mediante una canalización de Fabric en ADLS Gen2 y, a continuación, registrado | azureml://datastores/<adls_ds>/paths/<path> |
| Entrada/salida del endpoint de Batch | Lakehouse /Files (a través del acceso directo de ADLS). |
CLI/ SDK/REST | Optional |
azureml://datastores/<name>/paths/<path> o abfss://... |
| Direct OneLake API/ABFSS |
/Files y /Tables |
Cuadernos y scripts en recursos de proceso de Azure Machine Learning | No | abfss://<workspace>@onelake.dfs.fabric.microsoft.com/<lakehouse>.Lakehouse/Files/... |
Note
azureml://es un esquema de URI específico de Azure Machine Learning, no un protocolo de almacenamiento. El plano de control y el entorno de ejecución de datos de Azure Machine Learning lo utilizan para resolver la ubicación del almacenamiento subyacente (Blob, ADLS Gen2, OneLake, entre otros) mediante los metadatos de conexión y las credenciales registradas en el almacén de datos especificado.
OneLake como almacén de datos de Azure Machine Learning
Un datastore es una abstracción con ámbito del área de trabajo de Azure Machine Learning sobre una ubicación de almacenamiento externa (OneLake, Azure Blob, ADLS Gen2, Azure Files). Almacena los metadatos de conexión de un recurso de almacenamiento existente, el punto de conexión, el contenedor, el sistema de archivos o el elemento, y las credenciales o la configuración de identidad, sin aprovisionar ni copiar los datos en sí. Varias experiencias dentro de Azure Machine Learning pueden hacer referencia a almacenes de datos mediante un URI estable (azureml://datastores/<name>/paths/<path>).
Note
Estudio de Azure Machine Learning no enumera actualmente OneLake como un tipo de almacén de datos en la interfaz de usuario, pero la CLI y el SDK admiten la creación y administración de almacenes de datos de OneLake a través de la definición de YAML.
Metadatos de conexión necesarios desde Microsoft Fabric
En Fabric, en la página Propiedades del elemento lakehouse, anote:
-
Punto de conexión : para OneLake, use
onelake.dfs.fabric.microsoft.comoonelake.blob.fabric.microsoft.comsegún el protocolo que quiera usar. - GUID del área de trabajo
- GUID del elemento (el GUID del lakehouse)
Creación del almacén de datos en 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.
Con CLI de Azure, cree el almacén de datos en el área de trabajo de Azure Machine Learning de destino. Sustituya los marcadores de posición <name_of_AML_workspace> y <name_of_datastore> por los valores adecuados.
az ml datastore create --file ./onelake-datastore.yml \
--resource-group rg-amlonelake \
--workspace-name <name_of_AML_workspace>
Uso de un almacén de datos en trabajos de Azure Machine Learning
Una vez registrado un almacén de datos Azure Machine Learning, su azureml:// URI está disponible para su uso a través de diversas experiencias. En el ejemplo siguiente se muestra cómo hacer referencia a un almacén de datos de OneLake en un trabajo de Azure Machine Learning. El siguiente URI es válido como un trabajo Input/Output, en definiciones de recursos de datos y en cualquier lugar Azure Machine Learning acepta una ruta de acceso de almacén de datos, excepto los puntos de conexión por lotes, que actualmente no admiten OneLake como un tipo de almacén de datos para la entrada o salida.
En el ejemplo de trabajo siguiente se copia un archivo de una ubicación a otra dentro del mismo almacén de datos de OneLake. Puede usar una combinación de varios destinos de almacenamiento admitidos (Blob, ADLS Gen2, OneLake) como entradas y salidas en el mismo trabajo.
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>
Experiencias de Azure Machine Learning que pueden hacer referencia a un almacén de datos de OneLake directamente
| # | Azure Machine Learning superficie/interfaz | Dirección | Direccionamiento de OneLake | Source |
|---|---|---|---|---|
| 1 |
Azure Machine Learning empleos - Input / Output (CLI v2, SDK v2 command, pipeline, sweep) |
R/W | azureml://datastores/<onelake_ds>/paths/... |
Acceso a datos en un trabajo |
| 2 |
Recursos de datos (uri_file, uri_folder) registrados en una ruta de acceso de almacén de datos de OneLake |
R (los recursos son referencias de solo lectura) |
azureml://datastores/<onelake_ds>/paths/... encapsulado con control de versiones |
Creación de recursos de datos |
| 3 | Entorno de ejecución de datos de Azure Machine Learning mediante azureml-fsspec en notebooks o scripts sobre proceso de cálculo de Azure Machine Learning |
R/W |
azureml://datastores/<onelake_ds>/paths/... abierto con fsspec.open(...) o AzureMachineLearningFileSystem |
Acceso a datos desde OneLake durante el desarrollo interactivo |
OneLake con puntos de conexión por lotes
Azure Machine Learning permite usar Fabric para acceder a los puntos de conexión por lotes para la implementación de modelos para realizar inferencias asincrónicas de larga duración con modelos de aprendizaje automático y canalizaciones.
En este patrón, el objetivo arquitectónico es mantener una sola copia física de los datos de características de entrada y las predicciones de salida accesibles para ambas plataformas: Fabric y Azure Machine Learning. Un archivo en ADLS tiene dos direcciones válidas: un URI azureml://datastores/... que los puntos de conexión por lotes de Azure Machine Learning aceptan como entrada o salida, y una ruta de lakehouse (habilitada mediante un acceso directo de ADLS) que los cuadernos, las canalizaciones y los puntos de conexión de análisis de SQL de Fabric pueden consultar. Este patrón no implica ninguna copia, sin sincronización programada, sin segunda fuente de verdad. La vista de lakehouse y la vista de Azure Machine Learning son proyecciones de la misma cuenta de almacenamiento.
Los puntos de conexión de Batch se encuentran entre dos carpetas visibles para OneLake:
-
Entradas - una ubicación
/Filesseleccionada (zona de aterrizaje sin procesar, solicitudes clasificadas, particiones diarias) preparada por el equipo de ingeniería de datos de Fabric. Azure Machine Learning lo lee a través de un almacén de datos de ADLS Gen2 que apunta al mismo almacenamiento que el acceso directo. -
Salidas - una ubicación de predicciones
/Filesque el trabajo por lotes escribe en la misma cuenta de ADLS Gen2, que aparece en el lakehouse a través de un acceso directo y está disponible de inmediato para cuadernos de Fabric, flujos de datos o un paso de carga de una tabla Delta.
Más ampliamente, este patrón es adecuado para escenarios en los que ya tiene datos en ADLS Gen2. Por ejemplo, un lago de datos existente que alimenta cargas de trabajo de análisis o aprendizaje automático. En lugar de migrar o duplicar esos datos en OneLake, un acceso directo de OneLake muestra la ubicación de ADLS existente dentro de un lago de Fabric, mientras que la misma cuenta permanece registrada como almacén de datos.
Acceso de API o SDK de OneLake desde cuadernos y scripts de Azure Machine Learning
Cuando el código se ejecuta en un recurso de proceso de Azure Machine Learning (instancia de proceso, clúster de proceso o proceso sin servidor), puede leer y escribir en OneLake directamente mediante la ruta abfss:// o la ruta de su almacén de datos de OneLake. El SDK y las API de OneLake ofrecen un punto de integración flexible y pueden usarse para la exploración basada en cuadernos, scripts de entrenamiento personalizados y componentes que necesitan acceso tanto a /Files como a /Tables a través de los recursos de proceso de Azure Machine Learning.
OneLake usa un URI abfss:// para los archivos de OneLake y se puede usar como ruta de entrada válida para trabajos con autenticación basada en identidades o en entidades de servicio:
abfss://<workspace_guid>@<endpoint>/<item_guid>/Files/<path>
Rendimiento y escalabilidad: elegir el lector adecuado en Azure Machine Learning
fsspec (y el backend de OneLake adlfs sobre el que se asienta) es una abstracción del sistema de archivos a nivel de Python. Es conveniente para los cuadernos, pero no es en sí mismo un motor de datos paralelo; su simultaneidad está limitada por un único proceso de Python. Por lo tanto, el rendimiento depende del lector y del motor sentado sobre él. La documentación del entorno de ejecución de datos de Azure Machine Learning recomienda explícitamente utilizar el entorno de ejecución de datos de Azure Machine Learning en lugar de las descargas con Python del lado cliente para descargar datos de entrenamiento, y señala las limitaciones observadas en el rendimiento del almacenamiento «cuando el código cliente usa Python para descargar datos del almacenamiento, debido a problemas con el bloqueo global del intérprete (GIL)».
Uso de Azure Machine Learning Spark para el procesamiento de datos a gran escala en OneLake
OneLake está diseñado como un lago analítico, y el punto de conexión abfss:// está diseñado para los patrones de lectura paralela y particionada que usa Spark. Para ETL a escala de TB, ingeniería de características o preparación distribuida de datos de entrenamiento, use Azure Machine Learning Spark sobre fsspec, idealmente en un clúster de varios nodos:
Spark sin servidor en Azure Machine Learning o un grupo de Spark de Synapse conectado: ejecute trabajos o cuadernos de Spark dentro de Azure Machine Learning y lea OneLake directamente a través de
abfss://. Consulte Apache Spark en Azure Machine Learning.Fabric Spark: los cuadernos y trabajos de Spark que se ejecutan dentro de Fabric tienen acceso de primera clase a la misma instancia de Lakehouse y pueden entregar salidas seleccionadas a Azure Machine Learning a través del almacén de datos de OneLake.
En el ejemplo siguiente se muestra cómo leer una tabla Delta de lakehouse desde una sesión de Spark en un proceso de Azure Machine Learning:
df = (
spark.read.format("delta")
.load(
"abfss://<workspace_guid>@onelake.dfs.fabric.microsoft.com/"
"<item_guid>/Tables/<table-name>"
)
)
OneLake y Azure Machine Learning mltable
Actualmente, la lectura de datos con respaldo de OneLake a través de mltable falla al transmitir el archivo. Entre los errores observados se incluyen ScriptExecution.StreamAccess.NotFound y Invalid argument (os error 22). Los recursos de proceso de Azure Machine Learning pueden resolver y leer OneLake a través de azureml-fsspec, pyarrow o mediante el SDK de Azure Storage Data Lake con el mismo datastore y la misma identidad.
En lugar de la tabla de ML, considere una de las siguientes alternativas:
- Para las lecturas de OneLake, prioriza los recursos de datos de
uri_file/uri_foldery cárgalos conazureml-fsspec+ pyarrow / pandas / polars / DuckDB (nodo único), o con Spark enabfss://(distribuido). La documentación de Microsoft Learnmltableseñala que para una carpeta Parquet simple o un archivo CSV,uri_file/uri_folderson la opción recomendada. - Si
mltablela semántica es realmente necesaria —lo más habitual es como entrada para AutoML, que exigetype: mltable—, primero prepare los datos en una cuenta de ADLS Gen2 y creemltableen esa ubicación.mltablees confiable en ADLS Gen2 hoy en día. - El patrón de acceso directo de OneLake (descrito en el contexto de los puntos de conexión por lotes) encaja de forma natural con ML Table: el mismo archivo físico reside en ADLS Gen2 (donde
mltablefunciona) y aparece en el lakehouse de Fabric mediante un acceso directo (donde las herramientas de Fabric lo ven), sin necesidad de copiarlo.
mltable agrupa varias funcionalidades que uri_file / uri_folder no proporcionan de forma predeterminada. En la tabla siguiente se muestra el equivalente más cercano al leer OneLake directamente.
mltable funcionalidad |
Alternativa |
|---|---|
Esquema declarativo y portátil de lectura (delimitador, codificación, cabecera, tamaño de partición, tipos de columna) almacenado como archivo MLTable junto con los datos |
Fijar los ajustes de lectura en Python (pyarrow.parquet.ParquetDataset, pandas.read_csv(...), polars.scan_parquet(...), duckdb.read_parquet(...)) y mantener ese módulo cargador bajo control de código fuente |
Transformaciones integradas en el momento de la lectura (filter, drop_columns, convert_column_types, take_random_sample) |
Aplique los equivalentes en el motor que elija: polars / duckdb los fotogramas diferidos insertan filtros y proyecciones de forma similar; Spark en abfss:// hace lo mismo a escala |
| Composición de rutas de acceso de varios orígenes: una tabla que abarca varios archivos, carpetas, patrones globales e incluso cuentas de almacenamiento | Use fs.glob(...) de azureml-fsspec, pyarrow.dataset.dataset(paths) o el spark.read.parquet(*paths) de Spark para leer una lista de rutas de acceso como un único conjunto de datos lógico. |
eval_mount
/
eval_download modos en trabajos de Azure Machine Learning (resolver rutas desde el archivo MLTable al enviar el trabajo, montar solo aquello a lo que se hace referencia) |
Materializar un subconjunto seleccionado previamente (un cuaderno de Fabric o un trabajo de preprocesamiento de Azure Machine Learning escribe en una carpeta dedicada /Files/curated/...) y apuntarlo a uri_folder |
Versionado de la receta de lectura (no solo de los datos) mediante un activo de datos de tipo mltable |
Versiona el script de carga junto con el código del modelo en Git, o bien combina un activo de datos uri_folder con un pequeño módulo de carga registrado junto al script de entrenamiento. |
**Entrada de AutoML: AutoML requiere type: mltable (Configurar el entrenamiento de AutoML) |
Preparar los datos en ADLS Gen2 (el acceso directo desde el lakehouse mantiene una sola copia física) y crear allí el mltable |
Para el entrenamiento y la puntuación personalizados en OneLake, use uri_file / uri_folder más un motor de su elección (pyarrow / polars / duckdbnodo único o Spark distribuido en Azure Machine Learning). Estas opciones ofrecen las mismas funcionalidades funcionales que mltable con un rendimiento comparable o mejor. Para AutoML, redirija a través de ADLS Gen2 hasta que se admita mltable a través de OneLake. Puede usar un acceso directo a OneLake para evitar la duplicación de datos y seguir teniendo los datos disponibles en Fabric para otros casos de uso.
Considerations
Modelo de identidad. OneLake usa el modelo de identidad de SaaS, por lo que no expone un identificador de suscripción. En lugar del control de acceso basado en roles de Azure (Azure RBAC) en la cuenta de almacenamiento, el acceso se rige por los roles del área de trabajo de Fabric (Administrador, Miembro, Colaborador, Visor) en el lakehouse de destino. El almacén de datos oneLake admite dos modos de credenciales, que se documentan en Creación de almacenes de datos. Para configurar el almacén de datos y acceder al Fabric lakehouse, necesita un usuario con el rol Colaborador del área de trabajo de Fabric y el rol de administrador del área de trabajo de Azure Machine Learning.
Copia única de datos. El almacén de datos de OneLake y el acceso directo de ABFSS conservan el principio de "copia única" de OneLake. El patrón de acceso directo para los puntos de conexión de lote respeta este principio desde el punto de vista lógico, pero requiere una cuenta de ADLS Gen2 como almacenamiento físico subyacente.
Colocación conjunta en la misma región. Coloque el espacio de trabajo de Azure Machine Learning, los recursos de proceso y la capacidad de Fabric o la región de OneLake en la misma región para evitar el tráfico de salida entre regiones.