mlflow.data
The mlflow.data 模块帮助您将模型训练和评估数据集记录到使用 MLflow Tracking 的运行中,并从运行中检索数据集信息。它提供了以下重要接口:
Dataset:表示用于模型训练或评估的数据集,包括特征、目标、预测和元数据,例如数据集的名称、摘要(哈希)、schema、profile 和来源。您可以使用mlflow.log_input()API 将这些元数据记录到 MLflow Tracking 的运行中。mlflow.data提供用于从多种 Python 数据对象构建Datasets的 API,包括 Pandas DataFrames (mlflow.data.from_pandas())、NumPy 数组 (mlflow.data.from_numpy())、Spark DataFrames (mlflow.data.from_spark()/mlflow.data.load_delta())、Polars DataFrames (mlflow.data.from_polars()) 等。DatasetSource: 表示数据集的来源。例如,这可能是存储在 S3 中的文件目录、Delta 表或 Web URL。每个Dataset引用其派生的来源。若对数据应用了转换和过滤,Dataset的特征和目标可能与来源不同。您可以获取记录到 MLflow Tracking 运行中的数据集的DatasetSource,方法是使用mlflow.data.get_source()API。
下面的示例演示如何使用 mlflow.data 将训练数据集记录到一次运行,从运行中检索有关该数据集的信息,并加载数据集的来源。
import mlflow.data
import pandas as pd
from mlflow.data.pandas_dataset import PandasDataset
# Construct a Pandas DataFrame using iris flower data from a web URL
dataset_source_url = "http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv"
df = pd.read_csv(dataset_source_url)
# Construct an MLflow PandasDataset from the Pandas DataFrame, and specify the web URL
# as the source
dataset: PandasDataset = mlflow.data.from_pandas(df, source=dataset_source_url)
with mlflow.start_run():
# Log the dataset to the MLflow Run. Specify the "training" context to indicate that the
# dataset is used for model training
mlflow.log_input(dataset, context="training")
# Retrieve the run, including dataset information
run = mlflow.get_run(mlflow.last_active_run().info.run_id)
dataset_info = run.inputs.dataset_inputs[0].dataset
print(f"Dataset name: {dataset_info.name}")
print(f"Dataset digest: {dataset_info.digest}")
print(f"Dataset profile: {dataset_info.profile}")
print(f"Dataset schema: {dataset_info.schema}")
# Load the dataset's source, which downloads the content from the source URL to the local
# filesystem
dataset_source = mlflow.data.get_source(dataset_info)
dataset_source.load()
- class mlflow.data.dataset.Dataset(source: mlflow.data.dataset_source.DatasetSource, name: Optional[str] = None, digest: Optional[str] = None)[source]
基类:
object表示用于 MLflow Tracking 的数据集,包括数据集的名称、摘要(哈希值)、模式和概况,以及源信息(例如数据集派生自的 S3 存储桶或托管的 Delta 表)。大多数数据集还提供用于训练和评估的特征和目标。
- abstract property schema: Optional[Any]
可选的数据集模式,例如一个表示数据集特征和目标的
mlflow.types.Schema实例。
- property source: mlflow.data.dataset_source.DatasetSource
关于数据集来源的信息,表示为一个
DatasetSource的实例。例如,这可能是该数据集来源的 S3 位置或托管 Delta 表的名称。
- to_dict() dict[str, str][source]
为数据集创建配置字典。
子类应重写此方法以在 config 字典中提供额外字段,例如 schema、profile 等。
返回一个字符串字典,包含以下字段:name, digest, source, source type。
- class mlflow.data.dataset_source.DatasetSource[source]
基类:
object表示数据集在 MLflow Tracking 中的来源,提供诸如云存储位置、delta 表名 / 版本等信息。
- from_json(cls, source_json: str) DatasetSource[source]
- abstract classmethod from_dict(source_dict: dict[typing.Any, typing.Any]) mlflow.data.dataset_source.DatasetSource[source]
根据字典表示构造 DatasetSource 的实例。
- Parameters
source_dict – 一个 DatasetSource 的字典表示。
- Returns
一个 DatasetSource 实例。
- abstract load() Any[source]
加载由
DatasetSource引用的文件/对象。例如,取决于DatasetSource的类型,这可能会将源 CSV 文件从 S3 下载到本地文件系统,或将源 Delta Table 加载为 Spark DataFrame,等等。- Returns
下载的源,例如本地文件系统路径、Spark DataFrame 等。
- abstract to_dict() dict[str, typing.Any][source]
获取 DatasetSource 的与 JSON 兼容的字典表示。
- Returns
DatasetSource 的一个与 JSON 兼容的字典表示。
- to_json() str[source]
获取
DatasetSource的 JSON 字符串表示。- Returns
表示
DatasetSource的 JSON 字符串。
- mlflow.data.get_source(dataset: Dataset | DatasetInput | mlflow.data.dataset.Dataset) mlflow.data.dataset_source.DatasetSource[source]
获取指定数据集或数据集输入的来源。
- Parameters
dataset – 一个
mlflow.data.dataset.Dataset、mlflow.entities.Dataset或mlflow.entities.DatasetInput的实例。- Returns
一个
DatasetSource的实例。
pandas
- mlflow.data.from_pandas(df: pandas.core.frame.DataFrame, source: Optional[Union[str, mlflow.data.dataset_source.DatasetSource]] = None, targets: Optional[str] = None, name: Optional[str] = None, digest: Optional[str] = None, predictions: Optional[str] = None) mlflow.data.pandas_dataset.PandasDataset[source]
从一个 Pandas DataFrame、可选的 targets、可选的 predictions 和 source 构造一个
PandasDataset实例。- Parameters
df – 一个 Pandas DataFrame。
source – 指示 DataFrame 来源,例如文件系统路径、S3 URI、HTTPS URL、带版本的 delta 表名,或 spark 表等。
source可以被指定为 URI、类似路径的字符串,或一个DatasetSource实例。 如果未指定,source 将被假定为调用from_pandas时的代码位置(例如 notebook 单元、脚本等)。targets – 用于监督训练的可选目标列名。该列必须出现在数据框(
df)中。name – 数据集的名称。如果未指定,将生成一个名称。
digest – 数据集的 digest(哈希)。如果未指定,将自动计算 digest。
predictions – 一个可选的 predictions 列名称,用于模型评估。该列必须存在于 dataframe (
df)。
- class mlflow.data.pandas_dataset.PandasDataset[source]
表示一个用于 MLflow Tracking 的 Pandas DataFrame。
- property schema: mlflow.types.schema.Schema | None
一个表示表格数据集的
mlflow.types.Schema实例。如果无法从数据集中推断出模式,则可能为None。
- property source: mlflow.data.dataset_source.DatasetSource
数据集的来源。
- to_dict() dict[str, str][source]
为数据集创建配置字典。
返回一个包含以下字段的字符串字典:name、digest、source、source type、schema 和 profile。
NumPy
- mlflow.data.from_numpy(features: numpy.ndarray | dict[str, numpy.ndarray], source: Optional[Union[str, mlflow.data.dataset_source.DatasetSource]] = None, targets: Optional[Union[numpy.ndarray, dict[str, numpy.ndarray]]] = None, name: Optional[str] = None, digest: Optional[str] = None) mlflow.data.numpy_dataset.NumpyDataset[source]
从 NumPy 特征、可选的 targets 和 source 构造一个
NumpyDataset对象。如果 source 类似路径,则会从该源路径构造一个 DatasetSource 对象。否则,source 被假定为一个 DatasetSource 对象。- Parameters
features – NumPy 特征,表示为一个 np.ndarray 或 命名的 np.ndarrays 的字典。
source – 从中派生 numpy 数据的来源,例如:文件系统路径、S3 URI、HTTPS URL、带版本的 delta 表名,或 spark 表等。
source可以指定为 URI、类路径字符串,或DatasetSource的实例。如果未指定,该 source 被假定为调用from_numpy的代码位置(例如 notebook 单元、脚本等)。targets – 可选的 NumPy 目标,表示为 np.ndarray 或 命名的 np.ndarrays 的字典。
name – 数据集的名称。如果未指定,将生成一个名称。
digest – 数据集摘要(哈希)。如果未指定,将自动计算摘要。
import mlflow import numpy as np x = np.random.uniform(size=[2, 5, 4]) y = np.random.randint(2, size=[2]) dataset = mlflow.data.from_numpy(x, targets=y)
- class mlflow.data.numpy_dataset.NumpyDataset[source]
表示一个用于 MLflow Tracking 的 NumPy 数据集。
- property schema: mlflow.data.schema.TensorDatasetSchema | None
MLflow TensorSpec 模式,表示数据集的特征和目标(可选)。
- property source: mlflow.data.dataset_source.DatasetSource
数据集的来源。
- to_dict() dict[str, str][source]
为数据集创建配置字典。
返回一个字符串字典,包含以下字段:name、digest、source、source type、schema 和 profile。
Spark
- mlflow.data.load_delta(path: Optional[str] = None, table_name: Optional[str] = None, version: Optional[str] = None, targets: Optional[str] = None, name: Optional[str] = None, digest: Optional[str] = None) mlflow.data.spark_dataset.SparkDataset[source]
从 Delta 表加载一个
SparkDataset以用于 MLflow Tracking。- Parameters
path – 指向 Delta 表的路径。必须指定
path或table_name之一。table_name – Delta 表的名称。必须指定
path或table_name。version – Delta 表的版本。如果未指定,将推断出版本。
targets – 可选。包含用于监督学习的目标(标签)的 Delta 表列的名称。
name – 数据集的名称。例如 “wiki_train”。如果未指定,将自动生成名称。
digest – 数据集的摘要(哈希,指纹)。如果未指定,则会自动计算摘要。
- Returns
一个
SparkDataset的实例。
- mlflow.data.from_spark(df: pyspark.sql.DataFrame, path: str | None = None, table_name: str | None = None, version: str | None = None, sql: str | None = None, targets: str | None = None, name: str | None = None, digest: str | None = None, predictions: str | None = None) mlflow.data.spark_dataset.SparkDataset[source]
给定一个 Spark DataFrame,构造一个
SparkDataset对象以用于 MLflow Tracking。- Parameters
df – 用于从中构建 SparkDataset 的 Spark DataFrame。
path – 表示 DataFrame 最初来自的 Spark 或 Delta 源的路径。请注意,path 不必与 DataFrame 完全匹配,因为 DataFrame 可能已被 Spark 操作修改。此路径用于通过
SparkDataset.source.load()在请求时重新加载数据集。如果未指定path、table_name或sql中的任何一个,则会使用 CodeDatasetSource,它将从运行上下文获取信息。table_name – DataFrame 最初来自的 Spark 或 Delta 表的名称。请注意,该表不必与 DataFrame 完全匹配,因为 DataFrame 可能已被 Spark 操作修改。该字段用于通过
SparkDataset.source.load()请求时重新加载数据集。如果未指定path、table_name或sql中的任意一个,则会使用 CodeDatasetSource,从运行上下文中获取信息。version – 如果 DataFrame 最初来自 Delta 表,指定 Delta 表的版本。 这用于通过
SparkDataset.source.load()在请求时重新加载数据集。version与sql不能同时指定。sql – 最初用于构造 DataFrame 的 Spark SQL 语句。注意,Spark SQL 语句不必与 DataFrame 完全匹配,因为 DataFrame 可能已被 Spark 操作修改。此语句用于通过
SparkDataset.source.load()在请求时重新加载数据集。如果未指定path、table_name或sql中的任何一个,则会使用 CodeDatasetSource,从运行上下文获取信息。targets – 可选。包含用于监督学习的目标(标签)的 Data Frame 列的名称。
name – 数据集的名称。例如 “wiki_train”。如果未指定,将自动生成名称。
digest – 数据集的 digest(哈希,指纹)。如果未指定,则会自动计算 digest。
predictions – 可选。包含模型预测的列的名称,如果数据集包含模型预测。如果指定,则该列必须存在于数据框 (
df).
- Returns
一个
SparkDataset的实例。
- class mlflow.data.spark_dataset.SparkDataset[source]
表示一个 Spark 数据集(例如从 Spark 表 / 文件目录 或 Delta 表 派生的数据),用于 MLflow Tracking。
- property schema: mlflow.types.schema.Schema | None
Spark 数据集的 MLflow ColSpec 模式。
- property source: mlflow.data.spark_dataset_source.SparkDatasetSource | mlflow.data.delta_dataset_source.DeltaDatasetSource
Spark 数据集来源信息。
- Returns
一个
SparkDatasetSource或DeltaDatasetSource的实例。
- property targets: str | None
包含用于监督学习的目标(标签)的 Spark DataFrame 列的名称。
- Returns
包含目标的 Spark DataFrame 列的字符串名称。
- to_dict() dict[str, str][source]
为数据集创建配置字典。
返回一个包含以下字段的字符串字典:name、digest、source、source type、schema 和 profile。
Hugging Face
- mlflow.data.huggingface_dataset.from_huggingface(ds, path: Optional[str] = None, targets: Optional[str] = None, data_dir: Optional[str] = None, data_files: Optional[Union[str, Sequence[str], Mapping[str, Union[str, Sequence[str]]]]] = None, revision=None, name: Optional[str] = None, digest: Optional[str] = None, trust_remote_code: Optional[bool] = None, source: Optional[Union[str, mlflow.data.dataset_source.DatasetSource]] = None) mlflow.data.huggingface_dataset.HuggingFaceDataset[source]
从 Hugging Face 数据集创建一个 mlflow.data.huggingface_dataset.HuggingFaceDataset。
- Parameters
ds – 一个 Hugging Face 数据集。必须是 datasets.Dataset 的实例。其他类型,例如 datasets.DatasetDict,不被支持。
path – 用于构建源的 Hugging Face 数据集的路径。 这是 datasets.load_dataset() 函数中与 path 相同的参数。 要能够通过 MLflow 重新加载数据集,path 必须与 hub 上数据集的路径匹配,例如 “databricks/databricks-dolly-15k”。 如果未指定路径,则会使用 CodeDatasetSource,它将从运行上下文获取信息。
targets – Hugging Face dataset.Dataset 中包含用于监督学习的 targets(标签)的列的名称。
data_dir – Hugging Face 数据集配置的 data_dir。此项被 datasets.load_dataset() 函数用于通过
HuggingFaceDataset.source.load()按请求重新加载数据集。data_files – Hugging Face 数据集配置的源数据文件路径。 该路径由 datasets.load_dataset() 函数使用,以便通过
HuggingFaceDataset.source.load()请求时重新加载数据集。revision – 要加载的数据集脚本的版本。该 datasets.load_dataset() 函数用于在通过
HuggingFaceDataset.source.load()请求时重新加载数据集。name – 数据集的名称。例如 “wiki_train”。如果未指定,会自动生成名称。
digest – 数据集的摘要(哈希、指纹)。如果未指定,会自动计算摘要。
trust_remote_code – 是否信任来自数据集仓库的远程代码。
source – 数据集的来源,例如 S3 URI、HTTPS URL 等。
- class mlflow.data.huggingface_dataset.HuggingFaceDataset[source]
表示一个可用于 MLflow Tracking 的 HuggingFace 数据集。
- property ds: datasets.Dataset
Hugging Face 的
datasets.Dataset实例。- Returns
Hugging Face 的
datasets.Dataset实例。
- property schema: mlflow.types.schema.Schema | None
Hugging Face 数据集的 MLflow ColSpec 模式。
- property source: mlflow.data.huggingface_dataset_source.HuggingFaceDatasetSource
Hugging Face 数据集来源信息。
- property targets: str | None
包含用于监督学习的目标(标签)的 Hugging Face 数据集列的名称。
- Returns
Hugging Face 数据集中包含目标的列的字符串名称。
- to_dict() dict[str, str][source]
为数据集创建配置字典。
返回一个字符串字典,包含以下字段:name、digest、source、source type、schema 和 profile。
- to_evaluation_dataset(path=None, feature_names=None) mlflow.data.evaluation_dataset.EvaluationDataset[source]
将数据集转换为 EvaluationDataset 以进行模型评估。使用 mlflow.evaluate() 时必需。
TensorFlow
- mlflow.data.tensorflow_dataset.from_tensorflow(features, source: Optional[Union[str, mlflow.data.dataset_source.DatasetSource]] = None, targets=None, name: Optional[str] = None, digest: Optional[str] = None) mlflow.data.tensorflow_dataset.TensorFlowDataset[source]
从 TensorFlow 数据、可选的 targets 和 source 构造一个 TensorFlowDataset 对象。
如果 source 类似路径,则会从 source 路径构造一个 DatasetSource object。否则,source 被假定为一个 DatasetSource object。
- Parameters
features – 一个 TensorFlow 数据集或特征张量。
source – 数据的来源,例如文件系统路径、S3 URI、HTTPS URL、带版本的 delta 表名,或 Spark 表等。如果 source 不是类似路径的字符串,请直接传入一个 DatasetSource 对象。如果未指定 source,则使用 CodeDatasetSource,它会从运行上下文中获取信息。
targets – 一个 TensorFlow 数据集或表示 targets 的张量。可选。
name – 数据集的名称。如果未指定,将生成一个名称。
digest – 数据集 digest(哈希)。如果未指定,则会自动计算 digest。
- class mlflow.data.tensorflow_dataset.TensorFlowDataset[source]
表示一个用于 MLflow Tracking 的 TensorFlow 数据集。
- property source: mlflow.data.dataset_source.DatasetSource
数据集的来源。
- to_dict() dict[str, str][source]
为数据集创建配置字典。
返回一个字符串字典,包含以下字段:name、digest、source、source type、schema 和 profile。
- to_evaluation_dataset(path=None, feature_names=None) mlflow.data.evaluation_dataset.EvaluationDataset[source]
将数据集转换为 EvaluationDataset 以进行模型评估。仅在数据集是 Tensor 时支持。用于 mlflow.evaluate() 时为必需。
- class mlflow.data.evaluation_dataset.EvaluationDataset[source]
用于模型评估的输入数据集。旨在与
mlflow.models.evaluate()API 一起使用。
polars
- mlflow.data.from_polars(df: polars.dataframe.frame.DataFrame, source: Optional[Union[str, mlflow.data.dataset_source.DatasetSource]] = None, targets: Optional[str] = None, name: Optional[str] = None, digest: Optional[str] = None, predictions: Optional[str] = None) mlflow.data.polars_dataset.PolarsDataset[source]
构造一个
PolarsDataset实例。- Parameters
df – 一个 polars 数据帧。
source – DataFrame 派生的来源,例如文件系统路径、S3 URI、HTTPS URL、带版本的 delta 表名,或 spark 表等。
source可指定为 URI、类似路径的字符串,或一个DatasetSource的实例。如果未指定,source 将被假定为调用from_polars的代码位置(例如笔记本单元、脚本等)。targets – 一个可选的目标列名,用于有监督训练。该列必须出现在
df。name – 数据集的名称。如果未指定,将生成一个名称。
digest – 数据集摘要(哈希)。如果未指定,将自动计算摘要。
predictions – 一个可选的 predictions 列名,用于模型评估。该列必须存在于
df.
- class mlflow.data.polars_dataset.PolarsDataset[source]
用于与 MLflow Tracking 一起使用的 polars DataFrame。
- class PolarsDatasetConfig[source]
- class PolarsDatasetProfile[source]
- property profile: mlflow.data.polars_dataset.PolarsDataset.PolarsDatasetProfile
数据集概况。
- property schema: mlflow.types.schema.Schema | None
表示表格数据集的
mlflow.types.Schema实例。如果无法从数据集中推断模式,可能为
None。
- property source: mlflow.data.dataset_source.DatasetSource
数据集的来源。
- to_dict() mlflow.data.polars_dataset.PolarsDataset.PolarsDatasetConfig[source]
为数据集创建配置字典。
返回一个字符串字典,包含以下字段:name、digest、source、source type、schema 和 profile。
数据集来源
- class mlflow.data.filesystem_dataset_source.FileSystemDatasetSource[source]
表示存储在文件系统上的数据集的来源,例如本地 UNIX 文件系统、像 S3 这样的对象存储服务等。
- abstract classmethod from_dict(source_dict: dict[typing.Any, typing.Any]) mlflow.data.filesystem_dataset_source.FileSystemDatasetSource[source]
- Parameters
source_dict – 一个 FileSystemDatasetSource 的字典表示。
- abstract load(dst_path=None) str[source]
将数据集源下载到本地文件系统。
- Parameters
dst_path – 要下载数据集源到的本地文件系统目标目录的路径。如果该目录不存在,则会创建。如果未指定,数据集源将被下载到本地文件系统上一个新创建的唯一命名目录,除非数据集源已存在于本地文件系统上,在这种情况下会直接返回其本地路径。
- Returns
下载的数据集源在本地文件系统上的路径。
- abstract to_dict() dict[typing.Any, typing.Any][source]
- Returns
一个与 JSON 兼容的字典表示,用于 FileSystemDatasetSource。
- class mlflow.data.http_dataset_source.HTTPDatasetSource[source]
表示存储在网络位置并由 HTTP 或 HTTPS URL 引用的数据集的来源。
- classmethod from_dict(source_dict: dict[typing.Any, typing.Any]) mlflow.data.http_dataset_source.HTTPDatasetSource[source]
- Parameters
source_dict – HTTPDatasetSource 的字典表示。
- load(dst_path=None) str[source]
将数据集源下载到本地文件系统。
- Parameters
dst_path – 本地文件系统目标目录的路径,用于将数据集源下载到该目录。如果该目录不存在,则会创建该目录。如果未指定,数据集源将下载到本地文件系统中一个新创建的唯一命名目录。
- Returns
下载的数据集源在本地文件系统上的路径。
- to_dict() dict[typing.Any, typing.Any][source]
- Returns
HTTPDatasetSource 的 JSON 兼容字典表示。
- class mlflow.data.huggingface_dataset_source.HuggingFaceDatasetSource[source]
表示在 MLflow Tracking 中使用的 Hugging Face 数据集的来源。
- classmethod from_dict(source_dict: dict[typing.Any, typing.Any]) mlflow.data.huggingface_dataset_source.HuggingFaceDatasetSource[source]
- load(**kwargs)[source]
基于 HuggingFaceDatasetSource 加载 Hugging Face 数据集。
- Parameters
kwargs – 用于使用 Hugging Face datasets.load_dataset() 方法加载数据集的其他关键字参数。
- Returns
datasets.Dataset 的一个实例。
- to_dict() dict[typing.Any, typing.Any][source]
获取 DatasetSource 的与 JSON 兼容的字典表示。
- Returns
DatasetSource 的一个与 JSON 兼容的字典表示。
- class mlflow.data.delta_dataset_source.DeltaDatasetSource[source]
表示存储在 delta 表中的数据集的来源。
- classmethod from_dict(source_dict: dict[typing.Any, typing.Any]) mlflow.data.delta_dataset_source.DeltaDatasetSource[source]
- load(**kwargs)[source]
将数据集源加载为 Delta Dataset Source。
- Returns
一个
pyspark.sql.DataFrame的实例。
- to_dict() dict[typing.Any, typing.Any][source]
获取 DatasetSource 的与 JSON 兼容的字典表示。
- Returns
DatasetSource 的一个与 JSON 兼容的字典表示。
- class mlflow.data.spark_dataset_source.SparkDatasetSource[source]
表示存储在 spark 表中的数据集的来源。
- classmethod from_dict(source_dict: dict[typing.Any, typing.Any]) mlflow.data.spark_dataset_source.SparkDatasetSource[source]
- load(**kwargs)[source]
将数据集源加载为 Spark Dataset Source。
- Returns
一个
pyspark.sql.DataFrame的实例。
- to_dict() dict[typing.Any, typing.Any][source]
获取 DatasetSource 的与 JSON 兼容的字典表示。
- Returns
DatasetSource 的一个与 JSON 兼容的字典表示。