mlflow.data
mlflow.data
模块帮助你将模型训练和评估数据集记录到 MLflow Tracking 的运行中,以及从运行中检索数据集信息。它提供了以下重要接口:
数据集
: 表示在模型训练或评估中使用的数据集,包括特征、目标、预测以及数据集的名称、摘要(哈希)模式、配置文件和来源等元数据。您可以使用mlflow.log_input()
API 将此元数据记录到 MLflow 跟踪中的运行中。mlflow.data
提供了从各种 Python 数据对象构建数据集
的 API,包括 Pandas 数据帧(mlflow.data.from_pandas()
)、NumPy 数组(mlflow.data.from_numpy()
)、Spark 数据帧(mlflow.data.from_spark()
/mlflow.data.load_delta()
)等。DatasetSource
: 表示数据集的来源。例如,这可能是一个存储在S3中的文件目录、一个Delta表,或是一个网络URL。每个Dataset
都引用其派生来源。如果应用了转换和过滤,Dataset
的特征和目标可能与来源不同。你可以使用mlflow.data.get_source()
API 获取记录到MLflow跟踪中的数据集的DatasetSource
。
以下示例展示了如何使用 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: DatasetSource, name: str | None = None, digest: str | None = None)[源代码]
基类:
object
表示一个用于 MLflow 跟踪的数据集,包括数据集的名称、摘要(哈希)、模式和概况,以及源信息(例如,数据集所源自的 S3 存储桶或托管的 Delta 表)。大多数数据集还公开了用于训练和评估的特征和目标。
- abstract property schema: Any | None
可选的数据集模式,例如一个表示数据集特征和目标的
mlflow.types.Schema
实例。
- property source: DatasetSource
关于数据集来源的信息,表示为一个
DatasetSource
的实例。例如,这可能是数据集所源自的 S3 位置或托管的 Delta 表的名称。
- abstract to_dict() Dict[str, str] [源代码]
为数据集创建配置字典。
子类应重写此方法以在配置字典中提供额外的字段,例如,模式、配置文件等。
返回一个包含以下字段的字符串字典:名称、摘要、源、源类型。
- class mlflow.data.dataset_source.DatasetSource[源代码]
基类:
object
表示在 MLflow Tracking 中使用的数据集的来源,提供诸如云存储位置、delta 表名称/版本等信息。
- from_json(cls, source_json: str) DatasetSource [源代码]
- abstract classmethod from_dict(source_dict: Dict[Any, Any]) DatasetSource [源代码]
从字典表示构建 DatasetSource 的一个实例。
- 参数:
source_dict – 数据集源的字典表示。
- 返回:
一个 DatasetSource 实例。
- abstract load() Any [源代码]
加载由 DatasetSource 引用的文件/对象。例如,根据
DatasetSource
的类型,这可能从 S3 下载源 CSV 文件到本地文件系统,加载源 Delta 表作为 Spark DataFrame 等。- 返回:
下载的源文件,例如本地文件系统路径、Spark DataFrame等。
- abstract to_dict() Dict[str, Any] [源代码]
获取 DatasetSource 的 JSON 兼容字典表示。
- 返回:
DatasetSource 的 JSON 兼容字典表示形式。
- to_json() str [源代码]
获取
DatasetSource
的 JSON 字符串表示。- 返回:
表示
DatasetSource
的 JSON 字符串。
- mlflow.data.get_source(dataset: Dataset | DatasetInput | Dataset) DatasetSource [源代码]
获取指定数据集或数据集输入的源代码。
- 参数:
dataset – 一个
mlflow.data.dataset.Dataset
的实例,或mlflow.entities.Dataset
,或mlflow.entities.DatasetInput
。- 返回:
一个
DatasetSource
的实例。
pandas
- mlflow.data.from_pandas(df: DataFrame, source: str | DatasetSource | None = None, targets: str | None = None, name: str | None = None, digest: str | None = None, predictions: str | None = None) PandasDataset [源代码]
从 Pandas DataFrame、可选的目标、可选的预测和来源构建一个
PandasDataset
实例。- 参数:
df – 一个 Pandas DataFrame。
source – DataFrame 的来源,例如文件系统路径、S3 URI、HTTPS URL、带有版本的 delta 表名或 spark 表等。
source
可以指定为 URI、类路径字符串或DatasetSource
的实例。如果未指定,则假定来源是调用from_pandas
的代码位置(例如笔记本单元格、脚本等)。targets – 监督训练的可选目标列名。此列必须存在于数据框 (
df
) 中。name – 数据集的名称。如果未指定,则会生成一个名称。
digest – 数据集摘要(哈希)。如果未指定,则自动计算摘要。
predictions – 模型评估的可选预测列名称。此列必须存在于数据框 (
df
) 中。
import mlflow import pandas as pd x = pd.DataFrame( [["tom", 10, 1, 1], ["nick", 15, 0, 1], ["juli", 14, 1, 1]], columns=["Name", "Age", "Label", "ModelOutput"], ) dataset = mlflow.data.from_pandas(x, targets="Label", predictions="ModelOutput")
- class mlflow.data.pandas_dataset.PandasDataset[源代码]
表示一个用于 MLflow 跟踪的 Pandas DataFrame。
- property schema: Schema | None
表示表格数据集的
mlflow.types.Schema
实例。如果无法从数据集中推断出模式,则可能为None
。
- property source: DatasetSource
数据集的来源。
- to_dict() Dict[str, str] [源代码]
为数据集创建配置字典。
返回一个包含以下字段的字符串字典:名称、摘要、源、源类型、模式和配置文件。
NumPy
- mlflow.data.from_numpy(features: ndarray | Dict[str, ndarray], source: str | DatasetSource | None = None, targets: ndarray | Dict[str, ndarray] | None = None, name: str | None = None, digest: str | None = None) NumpyDataset [源代码]
从NumPy特征、可选目标和源构建一个
NumpyDataset
对象。如果源是类路径的,那么这将根据源路径构建一个DatasetSource对象。否则,假定源是一个DatasetSource对象。- 参数:
features – NumPy 特性,表示为 np.ndarray 或命名 np.ndarray 的字典。
source – numpy 数据的来源,例如文件系统路径、S3 URI、HTTPS URL、带有版本的 delta 表名或 spark 表等。
source
可以指定为 URI、类路径字符串或DatasetSource
的实例。如果未指定,则假定来源是调用from_numpy
的代码位置(例如笔记本单元格、脚本等)。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)
import mlflow import numpy as np x = { "feature_1": np.random.uniform(size=[2, 5, 4]), "feature_2": 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[源代码]
表示一个用于 MLflow 跟踪的 NumPy 数据集。
- property source: DatasetSource
数据集的来源。
- to_dict() Dict[str, str] [源代码]
为数据集创建配置字典。
返回一个包含以下字段的字符串字典:名称、摘要、源、源类型、模式和配置文件。
Spark
- mlflow.data.load_delta(path: str | None = None, table_name: str | None = None, version: str | None = None, targets: str | None = None, name: str | None = None, digest: str | None = None) SparkDataset [源代码]
从 Delta 表加载一个
SparkDataset
以用于 MLflow 跟踪。- 参数:
path – Delta 表的路径。必须指定
path
或table_name
之一。table_name – Delta 表的名称。必须指定
path
或table_name
中的一个。version – Delta 表的版本。如果未指定,将推断版本。
targets – 可选。包含监督学习目标(标签)的 Delta 表列的名称。
name – 数据集的名称。例如:“wiki_train”。如果未指定,将自动生成一个名称。
digest – 数据集的摘要(哈希,指纹)。如果未指定,则会自动计算摘要。
- 返回:
一个
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) SparkDataset [源代码]
给定一个 Spark DataFrame,构建一个
SparkDataset
对象,用于 MLflow 跟踪。- 参数:
df – 用于构建 SparkDataset 的 Spark DataFrame。
path – DataFrame 最初来自的 Spark 或 Delta 源的路径。请注意,路径不必与 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()
在请求时重新加载数据集。如果指定了sql
,则不能指定version
。sql – 用于构造DataFrame的原始Spark SQL语句。请注意,Spark SQL语句不必与DataFrame完全匹配,因为DataFrame可能已被Spark操作修改。这用于通过
SparkDataset.source.load()
在请求时重新加载数据集。如果未指定path
、table_name
或sql
中的任何一个,则使用CodeDatasetSource,它将从运行上下文中获取信息。targets – 可选。包含监督学习目标(标签)的数据框列的名称。
name – 数据集的名称。例如:“wiki_train”。如果未指定,将自动生成一个名称。
digest – 数据集的摘要(哈希,指纹)。如果未指定,则会自动计算摘要。
predictions – 可选。包含模型预测的列的名称,如果数据集包含模型预测。如果指定,此列必须存在于数据框(
df
)中。
- 返回:
一个
SparkDataset
的实例。
- class mlflow.data.spark_dataset.SparkDataset[源代码]
表示一个用于 MLflow 跟踪的 Spark 数据集(例如,来自 Spark 表/文件目录或 Delta 表的数据)。
- property schema: Schema | None
Spark 数据集的 MLflow ColSpec 模式。
- property source: SparkDatasetSource | DeltaDatasetSource
Spark 数据集来源信息。
- 返回:
一个
SparkDatasetSource
或DeltaDatasetSource
的实例。
- to_dict() Dict[str, str] [源代码]
为数据集创建配置字典。
返回一个包含以下字段的字符串字典:名称、摘要、源、源类型、模式和配置文件。
Hugging Face
- mlflow.data.huggingface_dataset.from_huggingface(ds, path: str | None = None, targets: str | None = None, data_dir: str | None = None, data_files: str | Sequence[str] | Mapping[str, str | Sequence[str]] | None = None, revision=None, name: str | None = None, digest: str | None = None, trust_remote_code: bool | None = None) HuggingFaceDataset [源代码]
从 Hugging Face 数据集创建一个 mlflow.data.huggingface_dataset.HuggingFaceDataset。
- 参数:
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 数据集中包含监督学习目标(标签)的列名。
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 – 是否信任来自数据集仓库的远程代码。
- class mlflow.data.huggingface_dataset.HuggingFaceDataset[源代码]
表示一个用于 MLflow 跟踪的 HuggingFace 数据集。
- property ds: datasets.Dataset
Hugging Face 的
datasets.Dataset
实例。- 返回:
Hugging Face 的
datasets.Dataset
实例。
- property schema: Schema | None
Hugging Face 数据集的 MLflow ColSpec 模式。
- property source: HuggingFaceDatasetSource
Hugging Face 数据集来源信息。
- to_dict() Dict[str, str] [源代码]
为数据集创建配置字典。
返回一个包含以下字段的字符串字典:名称、摘要、源、源类型、模式和配置文件。
- to_evaluation_dataset(path=None, feature_names=None) EvaluationDataset [源代码]
将数据集转换为用于模型评估的 EvaluationDataset。使用 mlflow.evaluate() 时需要。
TensorFlow
- mlflow.data.tensorflow_dataset.from_tensorflow(features, source: str | DatasetSource | None = None, targets=None, name: str | None = None, digest: str | None = None) TensorFlowDataset [源代码]
从 TensorFlow 数据、可选目标和源构建一个 TensorFlowDataset 对象。
如果源路径类似于路径,那么这将根据源路径构造一个 DatasetSource 对象。否则,源路径被假定为一个 DatasetSource 对象。
- 参数:
features – 一个 TensorFlow 数据集或特征张量。
source – 数据来源,例如文件系统路径、S3 URI、HTTPS URL、带有版本的delta表名或spark表等。如果来源不是一个路径字符串,直接传入一个DatasetSource对象。如果没有指定来源,则使用CodeDatasetSource,它将从运行上下文中获取信息。
targets – 一个 TensorFlow 数据集或目标张量。可选。
name – 数据集的名称。如果未指定,则会生成一个名称。
digest – 数据集摘要(哈希)。如果未指定,则自动计算摘要。
- class mlflow.data.tensorflow_dataset.TensorFlowDataset[源代码]
表示一个用于 MLflow 跟踪的 TensorFlow 数据集。
- property source: DatasetSource
数据集的来源。
- to_dict() Dict[str, str] [源代码]
为数据集创建配置字典。
返回一个包含以下字段的字符串字典:名称、摘要、源、源类型、模式和配置文件。
- to_evaluation_dataset(path=None, feature_names=None) EvaluationDataset [源代码]
将数据集转换为用于模型评估的 EvaluationDataset。仅在数据集为张量时支持。使用 mlflow.evaluate() 时必需。
- class mlflow.data.evaluation_dataset.EvaluationDataset[源代码]
用于模型评估的输入数据集。这是为与
mlflow.models.evaluate()
API 一起使用而设计的。
数据集来源
- class mlflow.data.filesystem_dataset_source.FileSystemDatasetSource[源代码]
表示存储在文件系统上的数据集的源,例如本地UNIX文件系统、S3等blob存储服务。
- abstract classmethod from_dict(source_dict: Dict[Any, Any]) FileSystemDatasetSource [源代码]
- 参数:
source_dict – FileSystemDatasetSource 的字典表示。
- abstract load(dst_path=None) str [源代码]
将数据集源下载到本地文件系统。
- 参数:
dst_path – 本地文件系统目标目录的路径,用于下载数据集源。如果目录不存在,则创建该目录。如果未指定,数据集源将下载到本地文件系统上的一个新创建的唯一命名目录,除非数据集源已经存在于本地文件系统中,在这种情况下,直接返回其本地路径。
- 返回:
下载的数据集源在本地文件系统中的路径。
- abstract to_dict() Dict[Any, Any] [源代码]
- 返回:
FileSystemDatasetSource 的 JSON 兼容字典表示形式。
- class mlflow.data.http_dataset_source.HTTPDatasetSource[源代码]
表示存储在网络位置并通过HTTP或HTTPS URL引用的数据集的源。
- classmethod from_dict(source_dict: Dict[Any, Any]) HTTPDatasetSource [源代码]
- 参数:
source_dict – HTTPDatasetSource 的字典表示。
- load(dst_path=None) str [源代码]
将数据集源下载到本地文件系统。
- 参数:
dst_path – 本地文件系统目标目录的路径,用于下载数据集源。如果该目录不存在,则创建它。如果未指定,数据集源将下载到本地文件系统上的一个新创建的唯一命名目录中。
- 返回:
下载的数据集源在本地文件系统中的路径。
- to_dict() Dict[Any, Any] [源代码]
- 返回:
HTTPDatasetSource 的 JSON 兼容字典表示。
- class mlflow.data.huggingface_dataset_source.HuggingFaceDatasetSource[源代码]
表示在MLflow Tracking中使用的Hugging Face数据集的源。
- classmethod from_dict(source_dict: Dict[Any, Any]) HuggingFaceDatasetSource [源代码]
从字典表示构建 DatasetSource 的一个实例。
- 参数:
source_dict – 数据集源的字典表示。
- 返回:
一个 DatasetSource 实例。
- load(**kwargs)[源代码]
基于 HuggingFaceDatasetSource 加载 Hugging Face 数据集。
- 参数:
kwargs – 用于通过 Hugging Face 的 datasets.load_dataset() 方法加载数据集的额外关键字参数。
- 返回:
datasets.Dataset 的一个实例。
- to_dict() Dict[Any, Any] [源代码]
获取 DatasetSource 的 JSON 兼容字典表示。
- 返回:
DatasetSource 的 JSON 兼容字典表示形式。
- class mlflow.data.delta_dataset_source.DeltaDatasetSource[源代码]
表示存储在 delta 表中的数据集的源。
- classmethod from_dict(source_dict: Dict[Any, Any]) DeltaDatasetSource [源代码]
从字典表示构建 DatasetSource 的一个实例。
- 参数:
source_dict – 数据集源的字典表示。
- 返回:
一个 DatasetSource 实例。
- load(**kwargs)[源代码]
加载数据集源作为 Delta 数据集源。
- 返回:
pyspark.sql.DataFrame
的一个实例。
- to_dict() Dict[Any, Any] [源代码]
获取 DatasetSource 的 JSON 兼容字典表示。
- 返回:
DatasetSource 的 JSON 兼容字典表示形式。
- class mlflow.data.spark_dataset_source.SparkDatasetSource[源代码]
表示存储在spark表中的数据集的源。
- classmethod from_dict(source_dict: Dict[Any, Any]) SparkDatasetSource [源代码]
从字典表示构建 DatasetSource 的一个实例。
- 参数:
source_dict – 数据集源的字典表示。
- 返回:
一个 DatasetSource 实例。
- load(**kwargs)[源代码]
将数据集源加载为 Spark 数据集源。
- 返回:
pyspark.sql.DataFrame
的一个实例。
- to_dict() Dict[Any, Any] [源代码]
获取 DatasetSource 的 JSON 兼容字典表示。
- 返回:
DatasetSource 的 JSON 兼容字典表示形式。