AI 数据集生成和模型微调框架 Distilabel 高级指南:深度功能与最佳实践

系列文章:

AI 数据集生成和模型微调框架 Distilabel 入门指南:基本概念、安装与快速开始

AI 数据集生成和模型微调框架 Distilabel 基础指南:概念与入门(一)

AI 数据集生成和模型微调框架 Distilabel 基础指南:概念与入门(二)

AI 数据集生成和模型微调框架 Distilabel 实践: Pipeline实现原理解读

AI 数据集生成和模型微调框架 Distilabel 高级指南:深度功能与最佳实践

正文:


前面的文章介绍了 Distilabel 的基本概念以及核心的 Pipeline 实现原理。本文会介绍 Distilabel 中的一些深度使用概念和功能,并介绍一些最佳实践的教程。

使用 Distiset 数据集对象

在 Distilabel 中,Pipeline 会返回一个特殊类型的 Hugging Face datasets.DatasetDict,它被称为 Distiset

Distiset 是一个类似字典的对象,包含了由 Pipeline 生成的不同配置,每个配置对应 Pipeline 中 DAG(有向无环图)中每个叶节点的步骤。每个配置对应数据集的一个子集。这一概念借鉴了 datasets 的理念,允许你在同一个仓库内上传相同数据集的不同配置,每个配置可以包含不同的列(即不同的配置),并可以无缝推送到 Hugging Face Hub。

下面是如何创建一个类似 datasets.DatasetDict 的 Distiset 对象的示例:

from datasets import Dataset
from distilabel.distiset import Distisetdistiset = Distiset({"leaf_step_1": Dataset.from_dict({"instruction": [1, 2, 3]}),"leaf_step_2": Dataset.from_dict({"instruction": [1, 2, 3, 4], "generation": [5, 6, 7, 8]}),}
)
注意事项:如果只有一个叶节点,即 Pipeline 的最后一步,配置名称不会是最后一步的名称,而是设置为 "default",因为这与 Hugging Face Hub 上的标准数据集更一致。

Distiset 方法

我们可以与 Pipeline 生成的不同部分进行交互,并将它们视为不同的配置。Distiset 只有两个方法:

1. 训练/测试集拆分

为不同的配置或子集创建训练/测试拆分。

>>> distiset.train_test_split(train_size=0.9)
Distiset({leaf_step_1: DatasetDict({train: Dataset({features: ['instruction'],num_rows: 2})test: Dataset({features: ['instruction'],num_rows: 1})})leaf_step_2: DatasetDict({train: Dataset({features: ['instruction', 'generation'],num_rows: 3})test: Dataset({features: ['instruction', 'generation'],num_rows: 1})})
})

2. 推送到 Hugging Face Hub

将 Distiset 推送到 Hugging Face 仓库,每个子集对应不同的配置:

distiset.push_to_hub("my-org/my-dataset",commit_message="Initial commit",private=False,token=os.getenv("HF_TOKEN"),generate_card=True,include_script=False
)
注意:从版本 1.3.0 起,你可以自动将创建 Pipeline 的脚本推送到同一个仓库。例如,假设你有一个文件如下:
# sample_pipe.pywith Pipeline() as pipe:...
distiset = pipe.run()
distiset.push_to_hub("my-org/my-dataset",include_script=True
)
执行该命令后,你可以访问该仓库, sample_pipe.py 文件将被存储,方便与社区分享你的 Pipeline。

1)自定义 Docstring

Distilabel 包含一个自定义插件,可自动为不同组件生成一个展示集。信息通过解析步骤的 docstring 提取。你可以查看 UltraFeedback 源代码中的 docstring,并在组件展示集中查看相应的条目,了解 docstring 的渲染方式。

如果你创建了自己的组件,并希望引用在 README 卡片中自动呈现(如果你打算将最终的 Distiset 分享到 Hugging Face Hub),你可能需要添加Citations部分。例如:

class MagpieGenerator(GeneratorTask, MagpieBase):r"""Generator task the generates instructions or conversations using Magpie....Citations:```@misc{xu2024magpiealignmentdatasynthesis,title={Magpie: Alignment Data Synthesis from Scratch by Prompting Aligned LLMs with Nothing},author={Zhangchen Xu and Fengqing Jiang and Luyao Niu and Yuntian Deng and Radha Poovendran and Yejin Choi and Bill Yuchen Lin},year={2024},eprint={2406.08464},archivePrefix={arXiv},primaryClass={cs.CL},url={https://arxiv.org/abs/2406.08464},}```"""

Citations可以包含任意数量的 bibtex 引用。你可以根据需要添加多个元素,每个Citation都会是 @misc{...} 的形式。这些信息将自动在 README 中使用,特别是当你调用 distiset.push_to_hub 时。如果找不到Citations,但在参考文献中找到指向 https://arxiv.org/ 的 URL,系统会自动尝试获取 Bibtex 等价项。

2)图像数据集

如果你对图像数据集感兴趣,Distiset 对象有一个新方法 transform_columns_to_image,专门用于在将数据集推送到 Hugging Face Hub 之前,将图像转换为 PIL.Image.Image 对象。

从版本 1.5.0 起,新增了 ImageGeneration 任务,能够从文本生成图像。默认情况下,所有的过程将使用图像的字符串表示形式,但为了充分利用 Hugging Face Hub 的功能,如果数据集将存储在 Hub 上,建议使用适当的图像对象。例如,以下是一个提取自 "examples/image_generation.py" 的Pipeline:

with Pipeline(name="image_generation_pipeline") as pipeline:img_generation = ImageGeneration(name="flux_schnell",llm=igm,InferenceEndpointsImageGeneration(model_id="black-forest-labs/FLUX.1-schnell"))...if __name__ == "__main__":distiset = pipeline.run(use_cache=False, dataset=ds)distiset = distiset.transform_columns_to_image("image")distiset.push_to_hub(...)

3. 从磁盘保存和加载

这些方法与 datasets.load_from_disk 和 datasets.Dataset.save_to_disk 相同,因此参数直接传递给这些方法。你可以使用 storage_options 参数将 Distiset 保存在云提供商中,包括 distilabel 工件(如 pipeline.yamlpipeline.log 和 README.md)。

1)保存到磁盘

distiset.save_to_disk("my-dataset",save_card=True,save_pipeline_config=True,save_pipeline_log=True
)

2)从本地磁盘加载

以相同的方式加载使用Distiset.save_to_disk保存的Distiset:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java后端开发day23--面向对象进阶(四)--抽象类、接口、内部类

(以下内容全部来自上述课程) 1.抽象类 父类定义抽象方法后,子类的方法就必须重写,抽象方法在的类就是抽象类。 1.定义 抽象方法 将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样…

第48天:Web开发-JavaEE应用依赖项Log4j日志Shiro验证FastJson数据XStream格式

#知识点 1、安全开发-JavaEE-第三方依赖开发安全 2、安全开发-JavaEE-数据转换&FastJson&XStream 3、安全开发-JavaEE-Shiro身份验证&Log4j日志处理 一、Log4j 一个基于Java的日志记录工具,当前被广泛应用于业务系统开发,开发者可以利用该工…

JavaScript——前端基础3

目录 JavaScript简介 优点 可做的事情 运行 第一个JavaScript程序 搭建开发环境 安装的软件 操作 在浏览器中使用JavaScript文件 分离JS 使用node运行JS文件 语法 变量与常量 原生数据类型 模板字符串 字符串的内置方法 数组 对象 对象数组和JSON if条件语…

坐标变换及视图变换和透视变换(相机透视模型)

文章目录 2D transformationScaleReflectionShear(切变)Rotation around originTranslationReverse变换顺序复杂变换的分解 齐次坐标(Homogenous Coordinates)3D transformationScale&TranslationRotation Viewing / Camera t…

DBGPT安装部署使用

简介 DB-GPT是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。 目的是构建大模型领域的基础设施,通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Mul…

【windows driver】 开发环境简明安装教程

一、下载路径 https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads 二、安装步骤: 1、安装Visual Studio IDE 笔者建议安装最新版本,可以向下兼容。发文截止到目前,VS2022是首选,当前笔者由于项…

回文重新排序

回文串就两种情况&#xff0c;一种是有一个奇数个的字母&#xff0c;另一种是没有的。所以我们需要统计出题目给出的字母是否为奇数个&#xff0c;且奇数个只能有一个&#xff0c;如果超过一个就不能构成回文串了。 #include<iostream> #include<string> #include…

如何在docker上部署java服务

目录结构 首先 Dockerfile FROM bladex/alpine-java:openjdk17_cn_slimMAINTAINER admin@rsz.comENV TZ=Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneRUN mkdir -p /xhWORKDIR /xhEXPOSE 8106ADD ./blade-system.…

FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台

文章目录 前言一、生态系统1. 金融AI代理&#xff08;Financial AI Agents&#xff09;2. 金融大型语言模型&#xff08;Financial LLMs&#xff09;3. LLMOps4. 数据操作&#xff08;DataOps&#xff09;5. 多源LLM基础模型&#xff08;Multi-Source LLM Foundation Models&am…

《SegFace: Face Segmentation of Long-Tail Classes》论文分享(侵删)

author{Kartik Narayan and Vibashan VS and Vishal M. Patel} 原文链接&#xff1a;[2412.08647] SegFace: Face Segmentation of Long-Tail Classes 摘要 人脸解析是指将人脸语义分割为眼睛、鼻子、头发等关键面部区域。它是各种高级应用程序的先决条件&#xff0c;包括人脸…

readline模块详解!!【Node.js】

‌“书到用时方恨少&#xff0c;事非经过不知难。”‌ —— 陆游 目录 ‌readline 是什么&#xff1f;‌基本用法&#xff1a;‌创建 Interface 类&#xff1a;核心流程‌&#xff1a; ‌Interface 类的关键事件&#xff1a;line&#xff1a;close&#xff1a;pause&#xff1a…

基于POI的Excel下拉框自动搜索,包括数据验证的单列删除

目录 目标 例子 1.搜索下拉框页 2.数据源页 3.效果 代码以及注意事项 1.代码 2.注意事项 1.基于Excel的话&#xff0c;相当于加入了一个【数据验证】 2.代码中的一些方法说明 目标 期望在Excel利用代码创建具备自动搜索功能的下拉框 例子 1.搜索下拉框页 2.数据源…

UWB人员定位:精准、高效、安全的智能管理解决方案

在现代企业管理、工业生产、安全监测等领域&#xff0c;UWB&#xff08;超宽带&#xff09;人员定位系统正逐步成为高精度定位技术的首选。相较于传统的GPS、Wi-Fi、蓝牙等定位方式&#xff0c;UWB具备厘米级高精度、低延迟、高安全性、抗干扰强等突出优势&#xff0c;能够实现…

如何在Apple不再支持的MacOS上安装Homebrew

手头有一台2012年产的Macbook Pro&#xff0c;系统版本停留在了10.15.7&#xff08;2020年9月24日发布的&#xff09;。MacOS 11及后续的版本都无法安装到这台老旧的电脑上。想通过pkg安装Homebrew&#xff0c;发现Homebrew releases里最新的pkg安装包不支持MacOS 10.15.7&…

某个设备的RJ45网口接头为何不可连接任何POE设备

某个设备的RJ45网口接头不可连接任何POE设备 1.POE设备是什么&#xff1f; POE设备是指支持通过以太网线传输电力和数据的设备&#xff0c;即“Power over Ethernet”&#xff08;PoE&#xff09;技术的设备。这种技术允许网络设备在传输数据的同时&#xff0c;通过标准的RJ4…

【线性代数的理解】 为什么说线性代数研究的是空间变换?旋转矩阵坐标转换矩阵

注&#xff1a; 在线性代数中 &#xff0c;常常不把点看成是点&#xff0c;而是看成是一个由原点出发的向量。所以&#xff0c;点的坐标相当于是向量的坐标。正方形&#xff08;图中灰色图形&#xff09;可以看成是由一大堆向量组成的图形&#xff0c;对这一堆向量进行A变换&a…

Cursor+pycharm接入Codeuim(免费版),Tab自动补全功能平替

如题&#xff0c;笔者在Cursor中使用pycharm写python程序&#xff0c;试用期到了Tab自动补全功能就不能用了&#xff0c;安装Codeuim插件可以代替这个功能。步骤如下&#xff1a; 1. 在应用商店中搜索扩展Codeuim&#xff0c;下载安装 2. 安装完成后左下角会弹出提示框&#x…

操作系统知识点12

1.在操作系统的结构设计中&#xff0c;采用层次结构的操作系统其最大优点是把整体问题局部化 2.非特权指令是指操作系统和用户均可以使用的指令 3.向处理器发出的中断信号称为中断请求 4.轮转法RR是单纯基于时间片考虑的 5.当进程处于就绪状态时&#xff0c;表示进程已获得…

STM32学习——RTC实时时钟(BKP与RTC外设)

RTC实时时钟 RTC实时时钟 想记录或读取日期和事件&#xff0c;就可以通过操作RTC实现 RTC与BKP和PWR经常同时出现 一般情况下&#xff0c;VBTA是电池供电口&#xff0c;需要接备用电池 在BKP备份寄存器写入两个数据&#xff0c;然后再读出之后显示&#xff0c;BKP的数据&a…

C# Unity 唐老狮 No.2 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体…