| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 18 小时前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 17 天前 | ||
| 3 个月前 | ||
| 18 小时前 |
FLUX DanceGRPO 使用指南
目录
简介
以 MindSpeed MM 仓库复现 DanceGRPO 后训练方法来帮助用户快速入门,前期需要完成代码仓、环境、数据集以及权重等准备工作,再按照说明中的启动方式启动训练,以下为具体的操作说明。
参考实现
DanceGRPO开源代码仓以及对应commit id如下:
url=https://github.com/XueZeyue/DanceGRPO
commit_id=2149f36f22db601f9dbf70472fea11576f62a0f6
环境安装
【模型开发时推荐使用配套的环境版本】
请参考安装指南
1. 仓库拉取
git clone https://gitcode.com/Ascend/MindSpeed-MM.git
git clone https://github.com/NVIDIA/Megatron-LM.git
cd Megatron-LM
git checkout core_v0.12.1
cp -r megatron ../MindSpeed-MM/
cd ..
cd MindSpeed-MM
mkdir -p logs data ckpt
cd ..
2. 环境搭建
请参考安装指南创建Python环境并安装 torch 和 TorchNPU。
conda activate test
# 安装加速库
git clone https://gitcode.com/Ascend/MindSpeed.git
cd MindSpeed
git checkout 5176c6f5f133111e55a404d82bd2dc14a809a6ab
cp -r mindspeed ../MindSpeed-MM/
cd ..
# 安装dance grpo依赖库
cd MindSpeed-MM
pip install -r ./examples/dancegrpo/requirements-lint.txt
cd ..
git clone https://github.com/tgxs002/HPSv2.git
cd HPSv2
git checkout 866735ecaae999fa714bd9edfa05aa2672669ee3
pip install -e .
cd ..
3.Decord搭建
【X86版安装】
pip install decord==0.6.0
【ARM版安装】
apt方式安装请参考链接
yum方式安装请参考脚本
权重下载
创建保存权重的目录:
Note
如无法顺利访问HuggingFace社区下载资源,推荐前往ModelScope下载,需关注待下载文件的正确性与安全性。
cd MindSpeed-MM
mkdir ckpt/flux
mkdir ckpt/hps_ckpt
cd ..
下载FLUX预训练权重 FLUX预训练权重 ,下载至MindSpeed MM工程根目录下的ckpt/flux目录中。
下载HPS-v2.1预训练权重 HPS-v2.1预训练权重
,将其中的HPS_v2.1_compressed.pt下载至MindSpeed MM工程根目录下的ckpt/hps_ckpt目录中。
下载CLIP预训练权重 CLIP预训练权重
,将其中的open_clip_pytorch_model.bin下载至MindSpeed MM工程根目录下的ckpt/hps_ckpt目录中。
数据集准备及处理
下载FLUX DanceGRPO使用的提示词数据集。在文件页面点击download raw file下载文件至MindSpeed MM工程根目录的data目录下。
数据集下载完成后要对数据进行预处理,在启动预处理之前,可以根据自身训练配置需要修改数据预处理脚本的配置,以FLUX模型为例:
- vae模型权重所在路径为
LOAD_PATH,默认为ckpt/flux; - 预处理后的数据集存放路径为
OUTPUT_DIR,默认为data/rl_embeddings; - 提示词文件路径为
PROMPT_DIR,默认为data/prompts.txt。
上述注意点修改完毕后,可启动脚本进行数据预处理:
cd MindSpeed-MM
bash examples/dancegrpo/preprocess_flux_rl_embeddings.sh
处理后的数据默认会存储在MindSpeed MM根目录下的data/rl_embeddings目录中。
训练
1. 准备工作
配置脚本前需要完成前置准备工作,包括:环境安装、权重下载、数据集准备及处理,详情可查看对应章节。
2. 启动训练
以 FLUX 模型为例,在启动训练之前,可根据自身训练配置需要修改启动脚本的配置:
- 根据使用机器的情况,修改
NNODES、NPUS_PER_NODE配置, 例如单机8卡 可设置NNODES为 1 、NPUS_PER_NODE为8; - 如果为多机训练,需要保证各个节点的
MASTER_ADDR一致,且为其中一台节点的IP;各节点的MASTER_PORT配置为相同端口号;从IP为MASTER_ADDR的节点开始,将各节点的NODE_RANK配置为从0开始依次递增的整数; - 数据集配置信息路径为
MM_DATA,默认路径为./examples/dancegrpo/data_dancegrpo.json; - 模型配置信息路径为
MM_MODEL,默认路径为./examples/dancegrpo/model_dancegrpo.json; - DiT模型预训练权重加载路径为
LOAD_PATH,默认路径为ckpt/flux,用户也可以根据自身权重存放位置进行调整; - 训练权重的保存路径为
SAVE_PATH,默认为save_dir; - 模型训练过程的reward值保存文件的路径为
HPS_REWARD_SAVE_PATH,默认为./hps_reward.txt。
在启动训练前,可根据自身训练配置需要修改数据集配置data_dancegrpo.json:
- dataset_param.basic_parameters.data_path表示预处理数据中的元数据文件videos2caption.json的路径。
在启动训练前,可根据自身训练配置需要修改模型配置model_dancegrpo.json:
- reward.ckpt_dir表示奖励模型预训练权重的路径。
上述注意点修改完毕后,可启动脚本开启训练:
bash examples/dancegrpo/posttrain_flux_dancegrpo.sh
注意:所有节点的代码、权重、数据等路径的层级要保持一致,且启动训练脚本的时候都位于MindSpeed MM目录下
训练完成后,会在logs目录中生成运行日志文件,生成训练reward记录文件。
Atlas 950 服务器性能测试脚本
如需在 Atlas 950 服务器上进行纯性能测试,可使用 posttrain_flux_dancegrpo_A5.sh 脚本。该脚本默认通过 --no-save_images 关闭采样图片的落盘,以减少 I/O 开销、专注于性能评估:
bash examples/dancegrpo/posttrain_flux_dancegrpo_A5.sh
注意:如需保留采样图片用于可视化,请将脚本中的
--no-save_images \一行删除,恢复默认的图片保存行为(图片会写入./images/flux_grpo/step{N}/目录下)。
性能数据
| 模型 | 机器型号 | 集群 | 任务 | GBS | 端到端 SPS |
|---|---|---|---|---|---|
| FLUX DanceGRPO | Atlas 200T A2 Box16 | 1*8 | 微调 | 32 | 0.1123 |
注:此处 SPS 代表 Samples per Second。
FAQ
- 对于CPU型号为x86的设备,建议使用torchvision版本为
0.25.0+cpu,若遇到有关torchvision的导包问题,建议优先检查环境中的torchvision版本是否为+cpu版本。