news 2026/8/7 15:41:11

【RL】verl 数据处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【RL】verl 数据处理

您的 Eurus-2-RL-Data 数据集需要做两个主要适配:文件格式转换字段映射配置

快速解决方案

1. 转换文件格式(推荐)

将 arrow 文件转换为 parquet 格式:

fromdatasetsimportload_datasetimportos# 加载原始数据ds=load_dataset("PRIME-RL/Eurus-2-RL-Data")# 保存为 parquet 格式output_dir="/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data-parquet"os.makedirs(output_dir,exist_ok=True)ds["train"].to_parquet(os.path.join(output_dir,"train.parquet"))ds["validation"].to_parquet(os.path.join(output_dir,"validation.parquet"))

2. 配置数据路径

在训练命令中使用转换后的文件:

python3 -m verl.trainer.main_fastrl\data.train_files=/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data-parquet/train.parquet\data.val_files=/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data-parquet/validation.parquet

详细适配说明

数据格式兼容性

FastRL 的RLHFDataset类默认使用datasets.load_dataset("parquet", data_files=parquet_file)读取数据 1 。虽然您的数据是 arrow 格式,但可以通过以下方式处理:

方案一:格式转换(推荐)

如上所示,转换为 parquet 格式,这是最简单直接的方案。

方案二:自定义数据集类

如果不想转换格式,可以创建自定义数据集类:

fromverl.utils.datasetimportRLHFDatasetfromdatasetsimportload_datasetclassEurusDataset(RLHFDataset):def_read_files_and_tokenize(self):# 直接加载 arrow 格式if"train"inself.data_files[0]:self.dataframe=load_dataset("arrow",data_files=self.data_files)["train"]else:self.dataframe=load_dataset("arrow",data_files=self.data_files)["validation"]print(f"dataset len:{len(self.dataframe)}")self.dataframe=self.maybe_filter_out_long_prompts(self.dataframe)

然后在配置中指定:

data:custom_cls:path:/path/to/your/custom_dataset.pyname:EurusDataset

字段映射验证

您的数据字段与 FastRL 默认配置兼容 2 :

  • prompt✓ - 对应配置中的prompt_key: prompt
  • data_source✓ - 对应配置中的reward_fn_key: data_source
  • reward_model- 可用于多奖励模型场景
  • ability,extra_info- 额外信息,训练时会保留

多文件配置

如果您想直接使用原始的多个 arrow 文件,可以这样配置:

data:train_files:-/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data/eurus-2-rl-data-train-00000-of-00004.arrow-/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data/eurus-2-rl-data-train-00001-of-00004.arrow-/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data/eurus-2-rl-data-train-00002-of-00004.arrow-/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data/eurus-2-rl-data-train-00003-of-00004.arrowval_files:/data/oss_bucket_0/seadawn/openlm_hub/eurus-2-rl-data/eurus-2-rl-data-validation.arrow

RLHFDataset支持文件列表输入 3 ,会自动合并多个文件。

Notes

  • 如果使用自定义数据集类,需要确保它继承自torch.utils.data.Dataset4
  • 数据会被下载到本地缓存目录(默认~/.cache/verl/rlhf) 5
  • 可以通过filter_overlong_prompts过滤过长的提示 6

Citations

File:verl/utils/dataset/rl_dataset.py (L92-93)

ifnotisinstance(data_files,list|ListConfig):data_files=[data_files]

File:verl/utils/dataset/rl_dataset.py (L101-101)

self.cache_dir=os.path.expanduser(config.get("cache_dir","~/.cache/verl/rlhf"))

File:verl/utils/dataset/rl_dataset.py (L109-109)

self.filter_overlong_prompts=config.get("filter_overlong_prompts",True)

File:verl/utils/dataset/rl_dataset.py (L130-136)

def_read_files_and_tokenize(self):dataframes=[]forparquet_fileinself.data_files:# read parquet files and cachedataframe=datasets.load_dataset("parquet",data_files=parquet_file)["train"]dataframes.append(dataframe)self.dataframe:datasets.Dataset=datasets.concatenate_datasets(dataframes)

File:verl/trainer/config/data/legacy_data.yaml (L16-20)

# The field in the dataset where the prompt is located. Default is 'prompt'.prompt_key:prompt# The field used to select the reward function (if using different ones per example).reward_fn_key:data_source

File:verl/trainer/main_ppo.py (L300-308)

if"custom_cls"indata_configanddata_config.custom_cls.get("path",None)isnotNone:# Dynamically load the custom dataset classdataset_cls=load_extern_type(data_config.custom_cls.path,data_config.custom_cls.name)# Verify that the custom dataset class inherits from torch.utils.data.Datasetifnotissubclass(dataset_cls,Dataset):raiseTypeError(f"The custom dataset class '{data_config.custom_cls.name}' from "f"'{data_config.custom_cls.path}' must inherit from torch.utils.data.Dataset")

是的,FastRL 会自动合并多个文件,但默认不支持直接处理 arrow 格式。

自动合并多个文件

RLHFDataset类会自动合并多个文件。在_read_files_and_tokenize方法中,它遍历所有文件路径,加载每个文件,然后使用datasets.concatenate_datasets将它们合并成一个数据集 1 :

def_read_files_and_tokenize(self):dataframes=[]forparquet_fileinself.data_files:# read parquet files and cachedataframe=datasets.load_dataset("parquet",data_files=parquet_file)["train"]dataframes.append(dataframe)self.dataframe:datasets.Dataset=datasets.concatenate_datasets(dataframes)

Arrow 格式支持

默认情况下,RLHFDataset只支持 parquet 格式 2 。要支持 arrow 格式,有两种方案:

方案一:修改加载方式(简单)

datasets 库本身支持 arrow 格式,只需修改一行代码:

# 原代码dataframe=datasets.load_dataset("parquet",data_files=parquet_file)["train"]# 改为dataframe=datasets.load_dataset("arrow",data_files=parquet_file)["train"]

方案二:自定义数据集类(推荐)

创建继承自RLHFDataset的自定义类,重写_read_files_and_tokenize方法 3 :

fromverl.utils.datasetimportRLHFDatasetclassArrowDataset(RLHFDataset):def_read_files_and_tokenize(self):dataframes=[]forarrow_fileinself.data_files:# 直接加载 arrow 格式dataframe=datasets.load_dataset("arrow",data_files=arrow_file)["train"]dataframes.append(dataframe)self.dataframe=datasets.concatenate_datasets(dataframes)print(f"dataset len:{len(self.dataframe)}")self.dataframe=self.maybe_filter_out_long_prompts(self.dataframe)

然后在配置中指定使用自定义类 4 :

data:custom_cls:path:/path/to/your/custom_dataset.pyname:ArrowDataset

Notes

  • 多文件合并功能是内置的,无需额外配置 5
  • datasets 库支持多种格式:parquet、arrow、csv、json 等
  • 自定义数据集类必须继承自torch.utils.data.Dataset6

Wiki pages you might want to explore:

  • Data Generation Pipeline (mit-han-lab/fastrl)

Citations

File:verl/utils/dataset/rl_dataset.py (L92-93)

ifnotisinstance(data_files,list|ListConfig):data_files=[data_files]

File:verl/utils/dataset/rl_dataset.py (L130-136)

def_read_files_and_tokenize(self):dataframes=[]forparquet_fileinself.data_files:# read parquet files and cachedataframe=datasets.load_dataset("parquet",data_files=parquet_file)["train"]dataframes.append(dataframe)self.dataframe:datasets.Dataset=datasets.concatenate_datasets(dataframes)

File:verl/trainer/main_ppo.py (L300-308)

if"custom_cls"indata_configanddata_config.custom_cls.get("path",None)isnotNone:# Dynamically load the custom dataset classdataset_cls=load_extern_type(data_config.custom_cls.path,data_config.custom_cls.name)# Verify that the custom dataset class inherits from torch.utils.data.Datasetifnotissubclass(dataset_cls,Dataset):raiseTypeError(f"The custom dataset class '{data_config.custom_cls.name}' from "f"'{data_config.custom_cls.path}' must inherit from torch.utils.data.Dataset")

File:verl/trainer/config/data/legacy_data.yaml (L283-286)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 0:02:03

同花顺平衡多空看图操作多空理论

{}多空:50,COLORFFFFFF,POINTDOT; J:(C-LLV(L,9))/(HHV(H,9)-LLV(L,9))*100,colormagenta; K:SMA(J,3,1),colorwhite; D:SMA(K,3,1),coloryellow; 动能:100 * (LLV(LOW,60)-EMA(CLOSE,3))/(LLV(LOW,60)-HHV(HIGH,60)),colorligray,LINETHICK2; 多:IF(动能>多空,动能,DRAWNUL…

作者头像 李华
网站建设 2026/8/7 20:34:32

通达信222222测试帖别下载

{} Z1:STRCAT(【,STRCAT(CODE,STKNAME));Z2:STRCAT( 行业:,HYBLOCK);Z3:STRCAT( 地域:,DYBLOCK);Z4:STRCAT(STRCAT( 概念:,GNBLOCK),】);Z5:STRCAT(Z1,Z2);Z6:STRCAT(Z3,Z4);Z7:STRCAT(Z5,Z6);DRAWTEXT_FIX(1,0.35,0.030,0,Z7),COLORGREEN…

作者头像 李华
网站建设 2026/8/7 21:43:34

通达信大盘个股共振指标公式

{}个股:EMA(100*(C-LLV(LOW,34))/(HHV(H,34)-LLV(LOW,34)),3),COLOR1010FF; 大盘:EMA(100*(INDEXC-LLV(INDEXL,34))/(HHV(INDEXH,34)-LLV(INDEXL,34)),3),COLORE67010,LINETHICK2; STICKLINE(个股>大盘,个股,大盘,1,0),COLORRED; STICKLINE(个股<大盘,个股,大盘,1,0),COL…

作者头像 李华
网站建设 2026/8/7 23:01:11

这些核心特征,让芯片散料转编带设备成行业刚需

在电子制造业向自动化、高精度、规模化转型的过程中&#xff0c;芯片散料转编带设备之所以能成为行业刚需&#xff0c;不仅在于其强大的功能&#xff0c;更得益于一系列贴合行业需求的核心特征。这些特征既是设备技术实力的体现&#xff0c;也是企业提升生产效益的关键所在。高…

作者头像 李华
网站建设 2026/8/7 12:59:50

~给媳妇的新称呼~

1、 干饭冲锋小战士&#x1f35a;2、 追剧上头小狂魔&#x1f4fa;3、 奶茶续命小仙女&#x1f9cb;4、 购物车清空大师&#x1f6cd;️5、 撒娇一级表演家&#x1f618;6、 熬夜冠军候补员&#x1f319;7、 碎碎念小话痨&#x1f4ac;8、 零食库存管理员&#x1f35f;9、 生气…

作者头像 李华
网站建设 2026/8/7 15:52:49

java计算机毕业设计社区服务微信小程序 基于微信生态的社区便民服务平台 SpringBoot+微信小程智慧社区服务系统

计算机毕业设计社区服务微信小程序0ah5c9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。“用完即走”的微信小程序把居民从 App 的注册、更新、占内存中解放出来&#xff0c;却能…

作者头像 李华