Ludwig Datasets API 完全指南:用内置数据集动物园零成本训练自定义 AI 模型
人工智能深度学习大模型微调LoRAAutoML【免费下载链接】ludwigLow-code framework for building custom LLMs, neural networks, and other AI models项目地址https://gitcode.com/gh_mirrors/lu/ludwig点击查看免费下载本篇技术指南围绕 Ludwig 开源框架中的Ludwig Datasets API数据集动物园Dataset Zoo展开讲解如何通过几行 Python 代码加载内置数据集、查询数据集元数据、使用官方配套的模型配置直接训练模型以及如何处理 Kaggle 托管数据集、控制下载缓存和导出处理后的 parquet 数据。读者学完后将能够熟练运用ludwig.datasets模块完成从数据集加载到模型训练的完整闭环并理解其底层缓存与流水线机制。一、Ludwig Dataset Zoo 是什么Ludwig 是一个低代码low-code的深度学习框架核心思路是用声明式配置YAML描述输入输出特征与训练参数框架自动完成预处理、模型构建与训练。而Ludwig Dataset Zoo位于 ludwig/datasets 目录是框架内置的一批开箱即用的数据集集合每个数据集都预先配置好了下载地址、列名、列类型、训练/验证/测试文件划分方式甚至附带一个配套的示例 Ludwig 配置。根据 ludwig/datasets/README.md 的说明这些示例配置的目标是在当代笔记本上快速训练出合理结果should train reasonably fast on a current-generation laptop无需 GPU 也能跑通非常适合用于学习、验证框架行为和做基准实验。Dataset Zoo 由两部分基础设施支撑数据集描述配置Dataset Config位于 ludwig/datasets/configs 目录下的众多.yaml文件每个文件描述一个数据集的来源与处理方式配套模型配置Model Config位于 ludwig/datasets/model_configs 目录下的dataset_default.yaml/dataset_best.yaml文件为数据集提供可直接用于LudwigModel的默认或最佳配置。这种数据集配置 模型配置双 YAML 的资产化设计让研究者可以像装即插即用硬件一样装配一个完整的实验。二、最简用法两行代码加载数据集Dataset Zoo 最简单、也最推荐的使用方式是直接以模块名导入数据集from ludwig.datasets import titanic # 加载为单个 dataframe其中包含一个 split 列 dataset_df titanic.load() # 加载为切分后的 dataframe训练集、测试集 train_df, test_df, _ titanic.load(splitTrue)这段代码背后发生了一系列自动化的流水线操作若数据集尚未下载则自动下载原始文件 → 校验 → 解压 → 转换为 pandas DataFrame并附上split列0 表示训练、1 表示验证、2 表示测试。关于流水线的细节见下文下载、处理与导出一节。之所以能直接写from ludwig.datasets import titanic而不需要先调用任何注册函数是因为 ludwig/datasets/init.py 中实现了模块级别的__getattr__魔术方法当访问的名字不在公开 API 集合中时自动调用get_dataset(name)返回对应的DatasetLoader实例。也就是说ludwig.datasets.titanic实质上就是一个配置好 Titanic 数据集参数的加载器对象。三、Datasets API 速查五个核心函数ludwig/datasets/README.md 中正式公开了五个核心 API 函数其具体实现都可以在 ludwig/datasets/init.py 和 ludwig/datasets/utils.py 中找到对应源码。1.list_datasets()— 列出所有可用数据集返回当前 Dataset Zoo 中所有可用数据集的名称列表dataset_names ludwig.datasets.list_datasets()源码实现位于 ludwig/datasets/init.py它会扫描configs目录下所有.yaml文件并解析出各数据集的name最终返回按名称排序的列表。借助这一函数可以快速了解框架内置了哪些数据集例如titanic、higgs、mnist、twitter_bots、goemotions等。2.get_datasets_output_features()— 查询数据集的输出特征传入数据集名称时返回该数据集关联的输出特征即预测目标不传参时返回一个有序字典OrderedDict键为数据集名称值为包含输出特征的字典。output_features ludwig.datasets.get_datasets_output_features(datasettitanic)源码 ludwig/datasets/init.py 还透露了三个可用的可选参数dataset指定数据集名称include_competitions是否包含 Kaggle 竞赛数据集的输出特征默认Trueinclude_data_modalities是否附带数据模态Tabular / Text / Image / Audio信息默认False。该函数会排除 Hugging Face 动态加载的数据集因为它们没有固定的output_features。利用数据模态信息可以快速筛选适合多模态实验的数据集。3.describe_dataset(dataset_name)— 获取人类可读的描述返回指定数据集的可读描述字符串直接来自对应数据集配置中的description字段print(ludwig.datasets.describe_dataset(titanic))其实现见 ludwig/datasets/init.py。例如 Titanic 的描述来自 ludwig/datasets/configs/titanic.yamluse machine learning to create a model that predicts which passengers survived the Titanic shipwreck.4.get_dataset(dataset_name)— 按名称获取数据集模块返回一个DatasetLoader实例用于后续的load()等操作titanic_dataset ludwig.datasets.get_dataset(titanic)源码 ludwig/datasets/init.py 的实现逻辑是根据数据集配置中的loader字段例如dataset_loader.DatasetLoader动态导入对应的 loader 类并实例化。它还接受可选的cache_dir参数用于覆盖默认的缓存目录详见下文缓存机制小节。5.model_configs_for_dataset(dataset_name)— 获取配套模型配置返回一个字典键为配置名称值为 Ludwig 配置字典configs ludwig.datasets.model_configs_for_dataset(higgs) default_higgs_config configs[default] best_higgs_config configs[best]根据 README 的约定配置字典中可能包含两个特殊键default该数据集的默认配置目标是在典型无 GPU 笔记本上 10 分钟内训练到合理性能best当前已知的最佳配置。README 特别提到这是一个很好的贡献机会——如果你找到了更好的配置可以提交 PR 更新它。实现位于 ludwig/datasets/utils.py它会扫描 ludwig/datasets/model_configs 目录下所有以dataset_name_开头的.yaml文件并把文件名后缀作为配置键。例如 ludwig/datasets/model_configs/higgs_default.yaml 和 ludwig/datasets/model_configs/higgs_best.yaml 分别对应default与best两个键——前者使用简单的concatcombiner 加 3 层全连接网络后者则使用了tabnetcombiner 配合更精细的训练超参数batch_size: 8192、指数衰减学习率、early_stop: 30等两者对比即可直观看到配置工程对最终效果的影响。补充说明除了上述五个函数ludwig/datasets/init.py 还提供了download_dataset(dataset_name, output_dir)函数与ludwig datasets命令行入口支持list/describe/download三个子命令让不写 Python 代码也能下载数据集。四、用内置数据集和配置直接训练模型README 给出了一个完整的最小训练示例使用 Titanic 数据集 其默认配置训练一个二分类模型。from ludwig.api import LudwigModel import ludwig.datasets titanic ludwig.datasets.get_dataset(titanic) dataset_df titanic.load() titanic_config titanic.default_model_config model LudwigModel(titanic_config) model.train(dataset_df)这里的关键点是titanic.default_model_config这是DatasetLoader的一个属性见 ludwig/datasets/loaders/dataset_loader.py它从配套模型配置中取出default键对应的配置。Titanic 的默认配置内容如下见 ludwig/datasets/model_configs/titanic_default.yamloutput_features: - name: Survived type: binary input_features: - name: Pclass type: category - name: Sex type: category - name: Age type: number preprocessing: missing_value_strategy: fill_with_mean - name: SibSp type: number - name: Parch type: number - name: Fare type: number preprocessing: missing_value_strategy: fill_with_mean - name: Embarked type: category training: batch_size: 256 epochs: 1可以看到这份配置直接体现了 Ludwig 低代码的哲学output_features声明预测目标Survived二分类input_features声明 7 个输入特征并对Age、Fare显式指定了缺失值策略fill_with_mean用均值填充其余特征由 Ludwig 自动推断与预处理training只指定了batch_size与epochs其余训练细节由框架默认值接管。由于default配置被刻意设计为轻量仅 1 个 epoch、batch_size 256这段代码在普通笔记本电脑上也能快速跑完非常适合作为第一个 Ludwig 实验。五、使用 Kaggle 托管的数据集Dataset Zoo 中相当一部分数据集托管在 Kaggle 平台上例如 Titanic 本身就是一个 Kaggle 竞赛数据集见 ludwig/datasets/configs/titanic.yaml 中的kaggle_competition: titanic。使用这类数据集有两个前置要求需要 Kaggle 账号并在环境中配置好 Kaggle 凭据API Key如果数据集属于Kaggle 竞赛competition还需要在竞赛页面上接受比赛条款accept the terms。凭据的两种配置方式标准方式在用户主目录放置kaggle.json内含username与keyKaggle 客户端会在调用时自动认证编程方式在load()时显式传入kaggle_username与kaggle_key参数。在源码层面download_kaggle_dataset见 ludwig/datasets/kaggle.py会先通过环境变量注入凭据KAGGLE_USERNAME/KAGGLE_KEY并调用api.authenticate()然后根据配置走两条下载路径kaggle_competition存在时 →api.competition_download_files(kaggle_competition, ...)否则 →api.dataset_download_files(kaggle_dataset_id, ...)。如何判断数据集是否来自 Kaggle可以编程式地检查数据集的.is_kaggle_dataset属性见 ludwig/datasets/loaders/dataset_loader.py其判定依据是配置中是否存在kaggle_dataset_id或kaggle_competition字段from ludwig.datasets import titanic if titanic.is_kaggle_dataset: print(This dataset requires Kaggle credentials)另外在调用load()时也可以显式传入凭据train_df titanic.load(kaggle_usernameyour_username, kaggle_keyyour_key)六、下载、处理与导出机制缓存机制LUDWIG_CACHE数据集首先被下载到LUDWIG_CACHE指定的目录中。该目录可以通过环境变量设置默认值为$HOME/.ludwig_cache具体默认值逻辑见 ludwig/utils/fs_utils.py 中的get_default_cache_location在 ludwig/datasets/loaders/dataset_loader.py 中被使用。缓存目录内的组织方式是cache_dir/数据集名_版本号/其下再分raw/原始下载文件与processed/处理后的数据相关路径属性见 ludwig/datasets/loaders/dataset_loader.py。如果需要为某个数据集指定非默认缓存目录README 之外还有两种做法见 ludwig/datasets/init.py 的 docstring在导入数据集前设置LUDWIG_CACHE环境变量使用ludwig.datasets.get_dataset(dataset_name, cache_dirCACHE_DIR)显式指定。四阶段处理流水线数据集加载并非简单的下载即用而是经过一个包含四个阶段的流水线。DatasetLoader的 docstring见 ludwig/datasets/loaders/dataset_loader.py对此有清晰的说明Download下载将数据集文件下载到缓存目录Verify校验校验下载文件的哈希值配置了sha256则严格校验未配置则记录警告Extract解压从归档文件中解压数据若数据不是归档文件则为空操作Transform转换转换为可用于训练的格式内部又细分为transform_files文件 → 文件load_dataframe文件 → DataFrametransform_dataframeDataFrame → DataFramesave_processedDataFrame → parquet 文件对应的状态机定义在DatasetState枚举中见 ludwig/datasets/loaders/dataset_loader.pyNOT_LOADED(0)→DOWNLOADED(1)→EXTRACTED(2)→TRANSFORMED(3)。每次load()都会先检查当前状态已经处理完成TRANSFORMED的数据集会直接复用缓存避免重复下载与转换这正是 Dataset Zoo 高效的原因之一。处理结果parquet 文件数据集自动加载、处理后会以parquet 格式重新保存到缓存中processed/数据集名.parquet后续加载直接pd.read_parquet见 ludwig/datasets/loaders/dataset_loader.py。parquet 是一种高效的列式存储格式Ludwig 训练时会直接消费这份数据。媒体文件图片/音频的特殊处理如果数据集包含图片或音频等媒体文件这些文件会被保存在子目录中并在数据集内以相对路径引用。因此 README 特别提醒训练期间这些文件必须能从 Ludwig 的工作目录访问到Ludwig 需要能够读取这些相对路径。这也是为什么导出功能见下节会同时导出媒体文件的原因。导出处理后的数据集.export()如果要导出处理后的数据集包括它依赖的所有媒体文件使用.export方法。README 给出的示例使用twitter_bots数据集该数据集包含 Twitter 用户头像等图片from ludwig.datasets import twitter_bots # 将 twitter bots 数据集及其图片文件导出到当前工作目录。 twitter_bots.export(.) # 导出后当前目录应包含 # ./twitter_bots.parquet - twitter bots 数据集 # ./profile_images - 账号头像图片文件 # ./profile_background_images - 账号背景图片文件export的源码实现见 ludwig/datasets/loaders/dataset_loader.py它会先确保数据集已完成下载与处理内部调用_download_and_process然后把processed/数据集名.parquet复制到目标目录同时根据配置中的preserve_paths字段支持 glob 通配符见 ludwig/datasets/dataset_config.py把媒体文件目录整体复制过去。如果源路径是目录使用copytree保留完整目录结构。七、深入Dataset Config 字段与自定义 Loader对想要理解 Dataset Zoo 扩展机制的开发者来说DatasetConfig数据类见 ludwig/datasets/dataset_config.py是核心。其主要字段包括字段说明version/name数据集版本号与名称名称需是合法 Python 模块名不能含空格或短横线description人类可读的数据集描述kaggle_competition/kaggle_dataset_idKaggle 竞赛 ID / 数据集 ID任一存在即视为 Kaggle 数据集download_urls下载 URL 列表archive_filenames归档文件名若 URL 末尾已含扩展名则可省略dataset_filenames数据文件名解压后支持 glob 通配符train_filenames/validation_filenames/test_filenames训练/验证/测试文件支持 glob用于构建split列preserve_paths需要随数据集保留的附加文件/目录如图片、音频支持 globsha256文件名 → sha256 摘要的映射用于完整性校验columns/column_types列名覆盖 / 列类型映射按类型转换loader使用的 loader 类相对于ludwig.datasets.loaders默认dataset_loader.DatasetLoaderopenml_task_idOpenML 任务 IDhuggingface_dataset_id/huggingface_subsampleHugging Face 数据集路径与子集名fallback_mirrors下载失败时的备用镜像output_features建议的输出特征帮助用户发现和筛选数据集以 Titanic 为例其完整数据集配置为见 ludwig/datasets/configs/titanic.yamlversion: 1.0 name: titanic kaggle_competition: titanic archive_filenames: titanic.zip sha256: titanic.zip: bb1bda464cc6819d412b41d34be69fd89d26b372dc24c09421c3dbca1b0dbe9f train_filenames: train.csv test_filenames: test.csv description: | The Titanic dataset: use machine learning to create a model that predicts which passengers survived the Titanic shipwreck. output_features: - name: Survived type: binary可以看到这份配置完整描述了从哪下载、文件怎么分、如何校验、预测什么。而需要特殊预处理的复杂数据集例如 HIGGS 需要根据实际行数动态划分训练/验证/测试集见 ludwig/datasets/loaders/higgs.py 中覆写的transform_dataframe则通过自定义 loader 子类实现。Dataset Zoo 的 ludwig/datasets/loaders 目录下已提供 30 个 loader 子类覆盖 Kaggle 竞赛、OpenML、Hugging Face、多标签、NLP、多模态图像/音频等各类数据形态。八、进阶ludwig://与hf://数据集 URI除了在 Python 中以模块方式加载ludwig/datasets/init.py 还实现了两个数据集 URI 协议可以直接在训练配置中引用ludwig://dataset_name引用 Dataset Zoo 内置数据集例如ludwig://titanic。框架会通过get_dataset加载对应 loader并可对training_set/validation_set/test_set参数分别指定同一数据集 URIs 传入时会复用已加载的切分hf://hf_id--hf_subsample引用 Hugging Face 数据集命名约定为hf://hf_id--hf_subsample例如hf://mstz/adult--income表示mstz/adult数据集的income子集解析逻辑见 ludwig/datasets/init.py。Hugging Face 数据集通过共享的hugging_faceloader 动态加载见 ludwig/datasets/loaders/hugging_face.py。这一机制意味着你甚至可以在写配置时直接以 URI 形式引用内置数据集而无需编写任何数据加载代码进一步体现了 Ludwig 的低代码理念。九、命令行工具不写代码也能下载数据集如果你只想下载某个数据集而不做任何模型训练可以使用ludwig datasets命令行入口实现见 ludwig/datasets/init.py# 列出所有可用数据集 ludwig datasets list # 查看某个数据集的描述 ludwig datasets describe titanic # 下载数据集到当前目录可用 -o 指定输出目录 ludwig datasets download titanic ludwig datasets download titanic -o /path/to/output其中download命令最终会调用download_dataset→ loader 的export()即把处理好的 parquet 文件连同媒体文件导出到指定目录。十、总结与实践建议Ludwig Dataset Zoo 的价值在于将数据获取 → 数据整理 → 模型训练这三个环节打造成了可组合的资产上手极快from ludwig.datasets import titanic加两行代码即可拿到带split列的训练数据实验可复现数据集配置ludwig/datasets/configs与配套模型配置ludwig/datasets/model_configs全部以 YAML 形式版本化天然适合复现与协作缓存友好四阶段流水线与LUDWIG_CACHE缓存机制确保重复实验不会重复下载和转换数据可扩展通过自定义 loader 子类任何新数据集都可以在数分钟内接入 Dataset Zoo 体系。实践建议初次使用 Kaggle 托管的竞赛数据集时务必先在 Kaggle 网页端接受比赛条款否则下载会失败如果数据集包含媒体文件训练脚本的运行目录应确保能解析数据集内的相对路径或使用.export()将数据集含媒体导出到工作目录用ludwig datasets list配合get_datasets_output_features(include_data_modalitiesTrue)可以快速为多模态/文本/表格实验筛选合适的数据集调试时可以先用default配置验证流水线再切换到best配置追求效果两份配置的对比本身就是很好的消融实验。无论你是想快速验证 Ludwig 框架能力的新手还是需要标准化数据集资产的进阶研究者ludwig/datasets/README.md 所描述的这套 API 都值得作为进入 Ludwig 生态的第一站。赞分享人工智能深度学习大模型微调LoRAAutoML【免费下载链接】ludwigLow-code framework for building custom LLMs, neural networks, and other AI models项目地址https://gitcode.com/gh_mirrors/lu/ludwig点击查看免费下载相关推荐keras-yolo3训练指南自定义数据集训练YOLOv3模型keras yolo3训练指南自定义数据集训练YOLOv3模型 本文详细介绍了使用keras yolo3项目训练自定义YOLOv3模型的完整流程涵盖了数据准人工智能计算机视觉深度学习OmniParser终极指南5步完成自定义数据集模型训练OmniParser终极指南5步完成自定义数据集模型训练 OmniParser是一个革命性的纯视觉GUI代理屏幕解析工具能够将用户界面截图解析为结构化元素人工智能计算机视觉AI AgentGUI 自动化大模型anomalib 模型训练完全指南从 Engine API 到 Folder 自定义数据集与 CLI 实战anomalib 模型训练完全指南从 Engine API 到 Folder 自定义数据集与 CLI 实战 导读 本文基于开源异常检测库 anomalib 的人工智能计算机视觉深度学习模型评测上一篇推荐项目Boxen下一篇LTX-2 音视频模型微调实操指南从单卡 LoRA 到多卡全量训练的完整路径创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考