已合并
[Modify] Fix document formatting and broken links #2346
且奏长歌创建于 3月31日
[Modify] Fix document formatting and broken links #2346
已合并
共 70 个文件变更+1136-1140
| @@ -263,7 +263,7 @@ MindSpeed MM将以Qwen2.5-VL-3B和Wan2.1-T2V-1.3B模型为例,引导开发者 | |||
| 263 | - VPP: [Virtual Pipeline Parallel](https://arxiv.org/abs/2104.04473) | 263 | - VPP: [Virtual Pipeline Parallel](https://arxiv.org/abs/2104.04473) |
| 264 | - PP: [Pipeline Parallel](https://arxiv.org/abs/2104.04473) | 264 | - PP: [Pipeline Parallel](https://arxiv.org/abs/2104.04473) |
| 265 | - DSP: [Dynamic Sequence Parallel](https://arxiv.org/abs/2403.10266) | 265 | - DSP: [Dynamic Sequence Parallel](https://arxiv.org/abs/2403.10266) |
| 266 | - CP (Ulysses): [Context Parallel](https://docs.nvidia.com/megatron-core/developer-guide/latest/api-guide/context_parallel.html) by leveraging [Deepspeed Ulysses](https://arxiv.org/abs/2309.14509) with Sequence Parallel | 266 | - CP (Ulysses): [Context Parallel](https://docs.nvidia.com/megatron-core/developer-guide/latest/user-guide/features/context_parallel.html) by leveraging [Deepspeed Ulysses](https://arxiv.org/abs/2309.14509) with Sequence Parallel |
| 267 | - CP (Ring Attention): Context Parallel with [Ring Attention](https://arxiv.org/abs/2310.01889) | 267 | - CP (Ring Attention): Context Parallel with [Ring Attention](https://arxiv.org/abs/2310.01889) |
| 268 | - Distributed Optimizer: [Zero Redundancy Optimizer](https://arxiv.org/abs/1910.02054) (ZeRO) | 268 | - Distributed Optimizer: [Zero Redundancy Optimizer](https://arxiv.org/abs/1910.02054) (ZeRO) |
| 269 | - Recomputation: Reducing Activation [Recomputation](https://arxiv.org/abs/2205.05198) | 269 | - Recomputation: Reducing Activation [Recomputation](https://arxiv.org/abs/2205.05198) |
| @@ -1,4 +1,4 @@ | |||
| 1 | ## MindSpeed MM FAQ | 1 | # MindSpeed MM FAQ |
| 2 | 2 | ||
| 3 | | 序号 | 问题简述 | 影响 | 当前方案 | 后续计划 | 相关链接 | | 3 | | 序号 | 问题简述 | 影响 | 当前方案 | 后续计划 | 相关链接 | |
| 4 | |:------:|:------:|:------:|:------:|:------:|:------:| | 4 | |:------:|:------:|:------:|:------:|:------:|:------:| |
| @@ -1,6 +1,6 @@ | |||
| 1 | ## 安全声明 | 1 | # 安全声明 |
| 2 | 2 | ||
| 3 | ### 系统安全加固 | 3 | ## 系统安全加固 |
| 4 | 4 | ||
| 5 | 1. 建议用户在系统中配置开启ASLR(级别2),又称**全随机地址空间布局随机化**,可参考以下方式进行配置: | 5 | 1. 建议用户在系统中配置开启ASLR(级别2),又称**全随机地址空间布局随机化**,可参考以下方式进行配置: |
| 6 | 6 | ||
| @@ -8,11 +8,11 @@ | |||
| 8 | echo 2 > /proc/sys/kernel/randomize_va_space | 8 | echo 2 > /proc/sys/kernel/randomize_va_space |
| 9 | ``` | 9 | ``` |
| 10 | 10 | ||
| 11 | ### 运行用户建议 | 11 | ## 运行用户建议 |
| 12 | 12 | ||
| 13 | 出于安全性及权限最小化角度考虑,不建议使用root等管理员类型账户使用MindSpeed MM。 | 13 | 出于安全性及权限最小化角度考虑,不建议使用root等管理员类型账户使用MindSpeed MM。 |
| 14 | 14 | ||
| 15 | ### 文件权限控制 | 15 | ## 文件权限控制 |
| 16 | 16 | ||
| 17 | 1. 建议用户在主机(包括宿主机)及容器中设置运行系统umask值为0027及以上,保障新增文件夹默认最高权限为750,新增文件默认最高权限为640。 | 17 | 1. 建议用户在主机(包括宿主机)及容器中设置运行系统umask值为0027及以上,保障新增文件夹默认最高权限为750,新增文件默认最高权限为640。 |
| 18 | 2. 建议用户对个人数据、商业资产、源文件、训练过程中保存的各类文件等敏感内容做好权限管控。涉及场景如MindSpeed MM安装目录权限管控、多用户使用共享数据集权限管控,管控权限可参考表1进行设置。 | 18 | 2. 建议用户对个人数据、商业资产、源文件、训练过程中保存的各类文件等敏感内容做好权限管控。涉及场景如MindSpeed MM安装目录权限管控、多用户使用共享数据集权限管控,管控权限可参考表1进行设置。 |
| @@ -40,7 +40,7 @@ | |||
| 40 | | 密钥组件、私钥、证书、加密密文 | 600(rw-------) | | 40 | | 密钥组件、私钥、证书、加密密文 | 600(rw-------) | |
| 41 | | 加解密接口、加解密脚本 | 500(r-x------) | | 41 | | 加解密接口、加解密脚本 | 500(r-x------) | |
| 42 | 42 | ||
| 43 | ### 数据安全声明 | 43 | ## 数据安全声明 |
| 44 | 44 | ||
| 45 | 1. 风险概述: | 45 | 1. 风险概述: |
| 46 | MindSpeed MM 模型框架执行模型的加载与保存操作。需要特别注意的是,其底层实现可能使用 [Python pickle](https://docs.python.org/3/library/pickle.html)模块进行部分文件的序列化/反序列化操作,该模块存在固有的安全风险。 | 46 | MindSpeed MM 模型框架执行模型的加载与保存操作。需要特别注意的是,其底层实现可能使用 [Python pickle](https://docs.python.org/3/library/pickle.html)模块进行部分文件的序列化/反序列化操作,该模块存在固有的安全风险。 |
| @@ -79,7 +79,7 @@ | |||
| 79 | 2. MindSpeed MM内部用到了Pytorch和torch_npu,可能会因为版本不匹配导致运行错误,具体可参考Pytorch及torch_npu[安全声明](https://gitcode.com/Ascend/pytorch/blob/master/SECURITYNOTE.md)。 | 79 | 2. MindSpeed MM内部用到了Pytorch和torch_npu,可能会因为版本不匹配导致运行错误,具体可参考Pytorch及torch_npu[安全声明](https://gitcode.com/Ascend/pytorch/blob/master/SECURITYNOTE.md)。 |
| 80 | 3. MindSpeed MM的依赖库transformers和datasets在使用from_pretrained方法时,存在配置trust_remote_code=True的情况。此设置会直接执行从远程仓库下载的代码,可能包含恶意逻辑或后门程序,导致系统面临代码注入攻击等安全威胁。用户需要确保自己下载的模型和数据的安全性。 | 80 | 3. MindSpeed MM的依赖库transformers和datasets在使用from_pretrained方法时,存在配置trust_remote_code=True的情况。此设置会直接执行从远程仓库下载的代码,可能包含恶意逻辑或后门程序,导致系统面临代码注入攻击等安全威胁。用户需要确保自己下载的模型和数据的安全性。 |
| 81 | 81 | ||
| 82 | ## 公开接口声明 | 82 | # 公开接口声明 |
| 83 | 83 | ||
| 84 | MindSpeed MM 暂时未发布wheel包,无正式对外公开接口,所有功能均通过shell脚本调用。19个入口脚本分别为: | 84 | MindSpeed MM 暂时未发布wheel包,无正式对外公开接口,所有功能均通过shell脚本调用。19个入口脚本分别为: |
| 85 | 85 | ||
| @@ -103,21 +103,21 @@ MindSpeed MM 暂时未发布wheel包,无正式对外公开接口,所有功 | |||
| 103 | - [pretrain_vlm](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/pretrain_vlm.py) | 103 | - [pretrain_vlm](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/pretrain_vlm.py) |
| 104 | - [pretrain_whisper](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/pretrain_whisper.py) | 104 | - [pretrain_whisper](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/pretrain_whisper.py) |
| 105 | 105 | ||
| 106 | ## 通信安全加固 | 106 | # 通信安全加固 |
| 107 | 107 | ||
| 108 | [通信安全加固说明](https://gitcode.com/Ascend/pytorch/blob/master/SECURITYNOTE.md#%E9%80%9A%E4%BF%A1%E5%AE%89%E5%85%A8%E5%8A%A0%E5%9B%BA | 108 | [通信安全加固说明](https://gitcode.com/Ascend/pytorch/blob/master/SECURITYNOTE.md#%E9%80%9A%E4%BF%A1%E5%AE%89%E5%85%A8%E5%8A%A0%E5%9B%BA |
| 109 | ) | 109 | ) |
| 110 | 110 | ||
| 111 | ## 通信矩阵 | 111 | # 通信矩阵 |
| 112 | 112 | ||
| 113 | [通信矩阵说明](https://gitcode.com/Ascend/pytorch/blob/master/SECURITYNOTE.md#%E9%80%9A%E4%BF%A1%E7%9F%A9%E9%98%B5%E4%BF%A1%E6%81%AF) | 113 | [通信矩阵说明](https://gitcode.com/Ascend/pytorch/blob/master/SECURITYNOTE.md#%E9%80%9A%E4%BF%A1%E7%9F%A9%E9%98%B5%E4%BF%A1%E6%81%AF) |
| 114 | 114 | ||
| 115 | ## 特殊场景 | 115 | # 特殊场景 |
| 116 | 116 | ||
| 117 | | 场景 | 使用方法 | 端口 | 可能的风险 | | 117 | | 场景 | 使用方法 | 端口 | 可能的风险 | |
| 118 | |--------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------| -------------- | ------------------------------------------------------------ | | 118 | |--------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------| -------------- | ------------------------------------------------------------ | |
| 119 | | 使用MindSpeed MM进行训练任务时,在Megatron后端场景下每次初始化模型并行组时,默认新增(3 * NPU数量)个随机端口,开启多个分布式优化器时再额外新增(分布式优化器数量 * NPU数量)个随机端口,同时配置1个master-port端口(该端口与torch_npu的master-port端口一致) | MindSpeed MM 调用 Megatron 原生函数 `mpu.initialize_model_parallel` 来初始化模型并行组,并通过使用 PyTorch 分布式训练相关的 API 来启动任意任务。 | [1024,65520]内 | 网络配置错误可能引发端口冲突或连接问题,影响训练效率。 | | 119 | | 使用MindSpeed MM进行训练任务时,在Megatron后端场景下每次初始化模型并行组时,默认新增(3 * NPU数量)个随机端口,开启多个分布式优化器时再额外新增(分布式优化器数量 * NPU数量)个随机端口,同时配置1个master-port端口(该端口与torch_npu的master-port端口一致) | MindSpeed MM 调用 Megatron 原生函数 `mpu.initialize_model_parallel` 来初始化模型并行组,并通过使用 PyTorch 分布式训练相关的 API 来启动任意任务。 | [1024,65520]内 | 网络配置错误可能引发端口冲突或连接问题,影响训练效率。| |
| 120 | 120 | ||
| 121 | ### 公网地址声明 | 121 | ## 公网地址声明 |
| 122 | 122 | ||
| 123 | 代码涉及公网地址参考 [public_address_statement.md](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/public_address_statement.md) | 123 | 代码涉及公网地址参考 [public_address_statement.md](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/public_address_statement.md) |
| @@ -1,4 +1,4 @@ | |||
| 1 | ## Automatic Parallelism For Multi-Modal | 1 | # Automatic Parallelism For Multi-Modal |
| 2 | 2 | ||
| 3 | ## 问题分析 | 3 | ## 问题分析 |
| 4 | 4 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | ## 数据负载均衡(数据分桶重排序) | 1 | # 数据负载均衡(数据分桶重排序) |
| 2 | 2 | ||
| 3 | ### 数据分桶训练 | 3 | ## 数据分桶训练 |
| 4 | 4 | ||
| 5 | 对数据进行分桶重排序,使得数据层的负载达到更好的均衡。 | 5 | 对数据进行分桶重排序,使得数据层的负载达到更好的均衡。 |
| 6 | 6 | ||
| @@ -10,9 +10,9 @@ | |||
| 10 | 10 | ||
| 11 | 2. 数据重排:精度优先,"priority_mode"配置为 "data_reordering_img" | 11 | 2. 数据重排:精度优先,"priority_mode"配置为 "data_reordering_img" |
| 12 | 12 | ||
| 13 | ### 使用方法(Qwen2VL 已支持) | 13 | ## 使用方法(Qwen2VL 已支持) |
| 14 | 14 | ||
| 15 | #### Qwen2VL的数据分桶使用方法 | 15 | ### Qwen2VL的数据分桶使用方法 |
| 16 | 16 | ||
| 17 | 在examples/qwen2vl/data_2b.json中,修改dataloader_param下的sampler_type为"BucketBatchSampler",且"priority_mode"配置为 "data_reordering_img",如下: | 17 | 在examples/qwen2vl/data_2b.json中,修改dataloader_param下的sampler_type为"BucketBatchSampler",且"priority_mode"配置为 "data_reordering_img",如下: |
| 18 | 18 | ||
| @@ -28,4 +28,4 @@ | |||
| 28 | "pin_memory": true, | 28 | "pin_memory": true, |
| 29 | "data_sharding": true, | 29 | "data_sharding": true, |
| 30 | "shuffle": true | 30 | "shuffle": true |
| 31 | } | 31 | } |
| @@ -36,7 +36,7 @@ | |||
| 36 | 36 | ||
| 37 | 2. **使用msprobe工具** | 37 | 2. **使用msprobe工具** |
| 38 | 通过MindStudio Training Tools工具链中的msprobe包启用确定性计算。 | 38 | 通过MindStudio Training Tools工具链中的msprobe包启用确定性计算。 |
| 39 | 使用说明请参考:[msprobe文档](https://gitcode.com/Ascend/mstt/blob/master/debug/accuracy_tools/msprobe/docs/05.data_dump_PyTorch.md#18-seed_all) | 39 | 使用说明请参考:[msprobe文档](https://gitcode.com/Ascend/mstt/blob/master/debug/accuracy_tools/msprobe/docs/zh/dump/pytorch_data_dump_instruct.md#18-seed_all) |
| 40 | 40 | ||
| 41 | ## 必需的环境变量配置 | 41 | ## 必需的环境变量配置 |
| 42 | 42 | ||
| @@ -1,4 +1,4 @@ | |||
| 1 | ## Dynamic DP/CP switch | 1 | # Dynamic DP/CP switch |
| 2 | 2 | ||
| 3 | ## 问题分析 | 3 | ## 问题分析 |
| 4 | 4 | ||
| @@ -36,48 +36,48 @@ hetero-parallel(异构并行)通过解耦多模态模型的并行方案配 | |||
| 36 | 36 | ||
| 37 | 1. 训练启动脚本添加如下参数 | 37 | 1. 训练启动脚本添加如下参数 |
| 38 | 38 | ||
| 39 | ```shell | 39 | ```shell |
| 40 | GPT_ARGS=" | 40 | GPT_ARGS=" |
| 41 | ... | 41 | ... |
| 42 | --hetero-parallel \ | 42 | --hetero-parallel \ |
| 43 | --hetero-encoder-mbs-scale {num} \ # 将图像/音频编码器的mbs调整为文本解码器的num倍,提升计算效率g | 43 | --hetero-encoder-mbs-scale {num} \ # 将图像/音频编码器的mbs调整为文本解码器的num倍,提升计算效率g |
| 44 | " | 44 | " |
| 45 | ``` | 45 | ``` |
| 46 | 46 | ||
| 47 | 2. 在对应`model.json`中需要异构并行的子模块添加`tp/pp/cp、mbs`等参数, 注意,骨干网络不再支持通过shell脚本来initial 并行策略,并且shell脚本中的并行策略都要设为1。 | 47 | 2. 在对应`model.json`中需要异构并行的子模块添加`tp/pp/cp、mbs`等参数, 注意,骨干网络不再支持通过shell脚本来initial 并行策略,并且shell脚本中的并行策略都要设为1。 |
| 48 | 48 | ||
| 49 | ```txt | 49 | ```txt |
| 50 | { | 50 | { |
| 51 | ... | 51 | ... |
| 52 | "image_encoder": { | 52 | "image_encoder": { |
| 53 | "vision_encoder": { | 53 | "vision_encoder": { |
| 54 | ... | ||
| 55 | "tp":1, | ||
| 56 | "pp":1, | ||
| 57 | "cp":1 | ||
| 58 | }, | ||
| 59 | }, | ||
| 60 | "audio_encoder": { | ||
| 54 | ... | 61 | ... |
| 55 | "tp":1, | 62 | "tp":1, |
| 56 | "pp":1, | 63 | "pp":1, |
| 57 | "cp":1 | 64 | "cp":1 |
| 58 | }, | 65 | }, |
| 59 | }, | 66 | "text_decoder": { |
| 60 | "audio_encoder": { | 67 | ... |
| 61 | ... | 68 | "tp":1, |
| 62 | "tp":1, | 69 | "pp":1, |
| 63 | "pp":1, | 70 | "cp":1 |
| 64 | "cp":1 | 71 | }, |
| 65 | }, | 72 | ... |
| 66 | "text_decoder": { | 73 | } |
| 67 | ... | 74 | ``` |
| 68 | "tp":1, | ||
| 69 | "pp":1, | ||
| 70 | "cp":1 | ||
| 71 | }, | ||
| 72 | ... | ||
| 73 | } | ||
| 74 | ``` | ||
| 75 | 75 | ||
| 76 | ```shell | 76 | ```shell |
| 77 | TP=1 | 77 | TP=1 |
| 78 | PP=1 | 78 | PP=1 |
| 79 | CP=1 | 79 | CP=1 |
| 80 | ``` | 80 | ``` |
| 81 | 81 | ||
| 82 | ### 适用范围 | 82 | ### 适用范围 |
| 83 | 83 | ||
| @@ -17,12 +17,12 @@ Ulysses CP算法基于All2All算子,对All2All算子的Input List与Output Lis | |||
| 17 | 17 | ||
| 18 | 1. examples/qwen2vl/finetune_qwen2vl_72b.sh中设置CP大小,默认脚本中为1 | 18 | 1. examples/qwen2vl/finetune_qwen2vl_72b.sh中设置CP大小,默认脚本中为1 |
| 19 | 19 | ||
| 20 | ```shell | 20 | ```shell |
| 21 | CP=1 | 21 | CP=1 |
| 22 | ``` | 22 | ``` |
| 23 | 23 | ||
| 24 | 2. examples/qwen2vl/finetune_qwen2vl_72b.sh中的GPT_ARGS添加 | 24 | 2. examples/qwen2vl/finetune_qwen2vl_72b.sh中的GPT_ARGS添加 |
| 25 | 25 | ||
| 26 | ```shell | 26 | ```shell |
| 27 | --context-parallel-algo ulysses_cp_algo | 27 | --context-parallel-algo ulysses_cp_algo |
| 28 | ``` | 28 | ``` |
| @@ -30,7 +30,7 @@ MindSpore使用[函数式自动微分](https://www.mindspore.cn/tutorials/zh-CN/ | |||
| 30 | 30 | ||
| 31 | + MSAdapter工具介绍 | 31 | + MSAdapter工具介绍 |
| 32 | 32 | ||
| 33 | [MSAdapter](https://openi.pcl.ac.cn/OpenI/MSAdapter.git)是一款MindSpore生态适配工具,在不改变用户原有使用习惯下,将PyTorch/JAX等三方框架代码快速迁移到MindSpore生态上,帮助用户高效使用昇腾算力。该工具的基本原理是使用MindSpore动态图算子来实现PyTorch API接口,由于框架的差异性,部分接口仍存在差异或者不支持,具体支持列表详见[torch接口支持列表](https://openi.pcl.ac.cn/OpenI/MSAdapter/src/branch/master/doc/readthedocs/source_zh/docs/SupportedList.md)。 | 33 | [MSAdapter](https://openi.pcl.ac.cn/OpenI/MSAdapter.git)是一款MindSpore生态适配工具,在不改变用户原有使用习惯下,将PyTorch/JAX等三方框架代码快速迁移到MindSpore生态上,帮助用户高效使用昇腾算力。 |
| 34 | 34 | ||
H | |||
| 35 | ## 软件安装 | 35 | ## 软件安装 |
| 36 | 36 | ||
| @@ -1,4 +1,4 @@ | |||
| 1 | ## MindSpore后端支持说明 | 1 | # MindSpore后端支持说明 |
| 2 | 2 | ||
| 3 | MindSpeed MM已支持接入华为自研AI套件MindSpore,旨在提供华为全栈易用的端到端的多模态模型训练解决方案,以此获得更极致的性能体验。MindSpore后端提供了一套对标PyTorch的API,用户无需进行额外代码适配即可无缝切换。 | 3 | MindSpeed MM已支持接入华为自研AI套件MindSpore,旨在提供华为全栈易用的端到端的多模态模型训练解决方案,以此获得更极致的性能体验。MindSpore后端提供了一套对标PyTorch的API,用户无需进行额外代码适配即可无缝切换。 |
| 4 | 4 | ||
| @@ -6,7 +6,7 @@ MindSpeed MM已支持接入华为自研AI套件MindSpore,旨在提供华为全 | |||
| 6 | 6 | ||
| 7 | ## 🔥🔥🔥Latest News | 7 | ## 🔥🔥🔥Latest News |
| 8 | 8 | ||
| 9 | 🚀🚀🚀 MindSpore后端已支持[CogVideoX](../../examples/mindspore/cogvideox/)、[Qwen2.5VL](../../examples/mindspore/qwen2.5vl/README.md)、[Qwen25Omni](../../examples/mindspore/qwen2.5omni/README.md)、[Qwen3VL](../../examples/mindspore/qwen3vl/README.md)模型。 | 9 | 🚀🚀🚀 MindSpore后端已支持[CogVideoX](../../../examples/mindspore/cogvideox/)、[Qwen2.5VL](../../../examples/mindspore/qwen2.5vl/README.md)、[Qwen25Omni](../../../examples/mindspore/qwen2.5omni/README.md)、[Qwen3VL](../../../examples/mindspore/qwen3vl/README.md)模型。 |
| 10 | 10 | ||
| 11 | ## 版本配套 | 11 | ## 版本配套 |
| 12 | 12 | ||
| @@ -33,7 +33,7 @@ MindSpeed MM + MindSpore后端的依赖配套如下表,安装步骤参考[基 | |||
| 33 | 33 | ||
| 34 | ### 已支持特性概览 | 34 | ### 已支持特性概览 |
| 35 | 35 | ||
| 36 | | 模型 \ 特性 | [TP](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/tensor-parallel.md) | [TP-SP](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/sequence-parallel.md) | [VPP](docs/zh/features/virtual_pipeline_parallel.md) | [PP](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/pipeline-parallel.md) | CP | EP | [Distributed Optimizer](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/distributed-optimizer.md) | [Recomputation](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/recomputation.md) | [LoRA](./docs/zh/features/lora_finetune.md) | | 36 | | 模型 \ 特性 | [TP](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/tensor-parallel.md) | [TP-SP](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/sequence-parallel.md) | [VPP](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/virtual_pipeline_parallel.md) | [PP](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/pipeline-parallel.md) | CP | EP | [Distributed Optimizer](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/distributed-optimizer.md) | [Recomputation](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/recomputation.md) | [LoRA](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/lora_finetune.md) | |
| 37 | |:-------------------:|:------:|:------:|:------:|:---------------------------------------------------------------------------------------:|:------:|:-------:|:------:|:------:|:------:| | 37 | |:-------------------:|:------:|:------:|:------:|:---------------------------------------------------------------------------------------:|:------:|:-------:|:------:|:------:|:------:| |
| 38 | | CogVideoX系列-T2V | ✔ | ✔ | | | CP (Ulysses) | | ✔ | ✔ | | | 38 | | CogVideoX系列-T2V | ✔ | ✔ | | | CP (Ulysses) | | ✔ | ✔ | | |
| 39 | | CogVideoX系列-I2V | ✔ | ✔ | | | CP (Ulysses) | | ✔ | ✔ | | | 39 | | CogVideoX系列-I2V | ✔ | ✔ | | | CP (Ulysses) | | ✔ | ✔ | | |
| @@ -50,7 +50,7 @@ MindSpeed MM + MindSpore后端的依赖配套如下表,安装步骤参考[基 | |||
| 50 | * VPP: [Virtual Pipeline Parallel](https://arxiv.org/abs/2104.04473) | 50 | * VPP: [Virtual Pipeline Parallel](https://arxiv.org/abs/2104.04473) |
| 51 | * PP: [Pipeline Parallel](https://arxiv.org/abs/2104.04473) | 51 | * PP: [Pipeline Parallel](https://arxiv.org/abs/2104.04473) |
| 52 | * DSP: [Dynamic Sequence Parallel](https://arxiv.org/abs/2403.10266) | 52 | * DSP: [Dynamic Sequence Parallel](https://arxiv.org/abs/2403.10266) |
| 53 | * CP (Ulysses): [Context Parallel](https://docs.nvidia.com/megatron-core/developer-guide/latest/api-guide/context_parallel.html) by leveraging [Deepspeed Ulysses](https://arxiv.org/abs/2309.14509) with Sequence Parallel | 53 | * CP (Ulysses): [Context Parallel](https://docs.nvidia.com/megatron-core/developer-guide/latest/user-guide/features/context_parallel.html) by leveraging [Deepspeed Ulysses](https://arxiv.org/abs/2309.14509) with Sequence Parallel |
| 54 | * CP (Ring Attention): Context Parallel with [Ring Attention](https://arxiv.org/abs/2310.01889) | 54 | * CP (Ring Attention): Context Parallel with [Ring Attention](https://arxiv.org/abs/2310.01889) |
| 55 | * Distributed Optimizer: [Zero Redundancy Optimizer](https://arxiv.org/abs/1910.02054) (ZeRO) | 55 | * Distributed Optimizer: [Zero Redundancy Optimizer](https://arxiv.org/abs/1910.02054) (ZeRO) |
| 56 | * Recomputation: Reducing Activation [Recomputation](https://arxiv.org/abs/2205.05198) | 56 | * Recomputation: Reducing Activation [Recomputation](https://arxiv.org/abs/2205.05198) |
| @@ -149,7 +149,7 @@ MindSpeed MM + MindSpore后端的依赖配套如下表,安装步骤参考[基 | |||
| 149 | <td>支持中</td> | 149 | <td>支持中</td> |
| 150 | </tr> | 150 | </tr> |
| 151 | <tr> | 151 | <tr> |
| 152 | <td rowspan="1"><a href="https://gitcode.com/Ascend/MindSpeed-MM/blob/master/examples/mindspore/wan2.1">Wan2.1-I2V</a></td> | 152 | <td rowspan="1"><a href="https://gitcode.com/Ascend/MindSpeed-MM/tree/master/examples/mindspore/wan2.1">Wan2.1-I2V</a></td> |
| 153 | <td><a href="https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B-Diffusers"> 1.3B </a></td> | 153 | <td><a href="https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B-Diffusers"> 1.3B </a></td> |
| 154 | <td> 预训练 </td> | 154 | <td> 预训练 </td> |
| 155 | <td> 1x8 </td> | 155 | <td> 1x8 </td> |
| @@ -161,7 +161,7 @@ MindSpeed MM + MindSpore后端的依赖配套如下表,安装步骤参考[基 | |||
| 161 | <td><a href="https://gitcode.com/Ascend/MindSpeed-MM/tree/2.3.0"> 2.3.0 </a></td> | 161 | <td><a href="https://gitcode.com/Ascend/MindSpeed-MM/tree/2.3.0"> 2.3.0 </a></td> |
| 162 | </tr> | 162 | </tr> |
| 163 | <tr> | 163 | <tr> |
| 164 | <td rowspan="2"><a href="https://gitcode.com/Ascend/MindSpeed-MM/blob/master/examples/mindspore/wan2.1">Wan2.1-T2V</a></td> | 164 | <td rowspan="2"><a href="https://gitcode.com/Ascend/MindSpeed-MM/tree/master/examples/mindspore/wan2.1">Wan2.1-T2V</a></td> |
| 165 | <td><a href="https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B-Diffusers"> 1.3B </a></td> | 165 | <td><a href="https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B-Diffusers"> 1.3B </a></td> |
| 166 | <td> 预训练 </td> | 166 | <td> 预训练 </td> |
| 167 | <td> 1x8 </td> | 167 | <td> 1x8 </td> |
| @@ -276,7 +276,7 @@ MindSpeed MM + MindSpore后端的依赖配套如下表,安装步骤参考[基 | |||
| 276 | 276 | ||
| 277 | MindSpeed MM集成了昇腾profiling采集工具,以提供对模型运行情况的分析。该工具能够依照配置采集模型的算子、显存等关键信息,同时支持动静态两种采集方式,协助开发者分析模型瓶颈,并可根据实际场景需求选择使用。 | 277 | MindSpeed MM集成了昇腾profiling采集工具,以提供对模型运行情况的分析。该工具能够依照配置采集模型的算子、显存等关键信息,同时支持动静态两种采集方式,协助开发者分析模型瓶颈,并可根据实际场景需求选择使用。 |
| 278 | 278 | ||
| 279 | 具体方法见 [README](../../mindspeed_mm/tools/README.md) 的profiling章节。 | 279 | 具体方法见 [README](../tools.md) 的profiling章节。 |
| 280 | 280 | ||
| 281 | ## MindStudio Insight性能分析工具 | 281 | ## MindStudio Insight性能分析工具 |
| 282 | 282 | ||
| @@ -1,4 +1,4 @@ | |||
| 1 | ### MindSpeed MM 公网地址声明 | 1 | # MindSpeed MM 公网地址声明 |
| 2 | 2 | ||
| 3 | - MindSpeed MM 代码中包含公网地址声明如下表所示: | 3 | - MindSpeed MM 代码中包含公网地址声明如下表所示: |
| 4 | 4 | ||
| @@ -20,7 +20,7 @@ | |||
| 20 | | 开发引入 | / | .mindspeed_mm/data/data_utils/utils.py | <https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/deepfloyd_if/pipeline_if.py> | 开源代码参考指引 | | 20 | | 开发引入 | / | .mindspeed_mm/data/data_utils/utils.py | <https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/deepfloyd_if/pipeline_if.py> | 开源代码参考指引 | |
| 21 | | 开发引入 | / | .mindspeed_mm/data/dataloader/dataloader.py | <https://github.com/hpcaitech/Open-Sora/tree/main/opensora/datasets> | 开源代码参考指引 | | 21 | | 开发引入 | / | .mindspeed_mm/data/dataloader/dataloader.py | <https://github.com/hpcaitech/Open-Sora/tree/main/opensora/datasets> | 开源代码参考指引 | |
| 22 | | 开发引入 | / | .mindspeed_mm/data/dataloader/sampler.py | <https://github.com/hpcaitech/Open-Sora/tree/main/opensora/datasets> | 开源代码参考指引 | | 22 | | 开发引入 | / | .mindspeed_mm/data/dataloader/sampler.py | <https://github.com/hpcaitech/Open-Sora/tree/main/opensora/datasets> | 开源代码参考指引 | |
| 23 | | 开源引入 | <https://raw.githubusercontent.com/huggingface/diffusers/main/examples/test_to_image/train_text_to_image_sdxl.py> | ./train_text_to_image_sdxl.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | | 23 | | 开源引入 | <https://raw.githubusercontent.com/huggingface/diffusers/main/examples/text_to_image/train_text_to_image_sdxl.py> | ./train_text_to_image_sdxl.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | |
| 24 | | 开源引入 | <https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_sd3.py> | ./train_dreambooth_sd3.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | | 24 | | 开源引入 | <https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_sd3.py> | ./train_dreambooth_sd3.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | |
| 25 | | 开发引入 | <https://github.com/PKU-YuanGroup/Open-Sora-Plan/blob/main/opensora/sample/pipeline_opensora.py> | mindspeed_mm/tasks/inference/pipeline/opensoraplan_pipeline.py | <https://arxiv.org/abs/2010.02502> | 开源代码参考指引 | | 25 | | 开发引入 | <https://github.com/PKU-YuanGroup/Open-Sora-Plan/blob/main/opensora/sample/pipeline_opensora.py> | mindspeed_mm/tasks/inference/pipeline/opensoraplan_pipeline.py | <https://arxiv.org/abs/2010.02502> | 开源代码参考指引 | |
| 26 | | 开发引入 | / | mindspeed_mm/models/diffusion/diffusers_scheduler.py | <https://arxiv.org/pdf/2205.11487.pdf> | 参考论文地址 | | 26 | | 开发引入 | / | mindspeed_mm/models/diffusion/diffusers_scheduler.py | <https://arxiv.org/pdf/2205.11487.pdf> | 参考论文地址 | |
| @@ -40,10 +40,10 @@ | |||
| 40 | | 开发引入 | / | ./mindspeed_mm/models/predictor/dits/pt_dit_diffusers.py | <https://github.com/PixArt-alpha/PixArt-alpha/blob/0f55e922376d8b797edd44d25d0e7464b260dcab/diffusion/model/nets/PixArtMS.py#L164C9-L168C29> | 开源代码参考指引 | | 40 | | 开发引入 | / | ./mindspeed_mm/models/predictor/dits/pt_dit_diffusers.py | <https://github.com/PixArt-alpha/PixArt-alpha/blob/0f55e922376d8b797edd44d25d0e7464b260dcab/diffusion/model/nets/PixArtMS.py#L164C9-L168C29> | 开源代码参考指引 | |
| 41 | | 开发引入 | / | ./mindspeed_mm/models/predictor/dits/pt_dit_diffusers.py | <https://arxiv.org/abs/2310.00426> | 参考论文地址 | | 41 | | 开发引入 | / | ./mindspeed_mm/models/predictor/dits/pt_dit_diffusers.py | <https://arxiv.org/abs/2310.00426> | 参考论文地址 | |
| 42 | | 开发引入 | / | ./mindspeed_mm/models/predictor/dits/pt_dit_diffusers.py | <https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py> | 开源代码参考指引 | | 42 | | 开发引入 | / | ./mindspeed_mm/models/predictor/dits/pt_dit_diffusers.py | <https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py> | 开源代码参考指引 | |
| 43 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/vision_transformer.py> | 开源代码参考指引 | | 43 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/blob/main/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/vision_transformer.py> | 开源代码参考指引 | |
| 44 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://people.sc.fsu.edu/~jburkardt/presentations/truncated_normal.pdf> | 开源代码参考指引 | | 44 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/blob/main/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://people.sc.fsu.edu/~jburkardt/presentations/truncated_normal.pdf> | 开源代码参考指引 | |
| 45 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://arxiv.org/abs/2010.11929> | 开源代码参考指引 | | 45 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/blob/main/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://arxiv.org/abs/2010.11929> | 开源代码参考指引 | |
| 46 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://github.com/huggingface/transformers/blob/78b2929c0554b79e0489b451ce4ece14d265ead2/src/transformers/models/siglip/configuration_siglip.py#L191> | 开源代码参考指引 | | 46 | | 开源引入 | <https://github.com/deepseek-ai/DeepSeek-VL2/blob/main/deepseek_vl2/models/modeling_deepseek_vl_v2.py> | mindspeed_mm/models/vision/vision_encoders/siglip_vit_model.py | <https://github.com/huggingface/transformers/blob/78b2929c0554b79e0489b451ce4ece14d265ead2/src/transformers/models/siglip/configuration_siglip.py#L191> | 开源代码参考指引 | |
| 47 | | 开源引入 | <https://github.com/XueZeyue/DanceGRPO/blob/main/fastvideo/dataset/latent_flux_rl_datasets.py> | mindspeed_mm/tasks/rl/soragrpo/dataset/latent_flux_rl_datasets.py | <https://github.com/hao-ai-lab/FastVideo/blob/main/LICENSE> | 开源代码参考链接 | | 47 | | 开源引入 | <https://github.com/XueZeyue/DanceGRPO/blob/main/fastvideo/dataset/latent_flux_rl_datasets.py> | mindspeed_mm/tasks/rl/soragrpo/dataset/latent_flux_rl_datasets.py | <https://github.com/hao-ai-lab/FastVideo/blob/main/LICENSE> | 开源代码参考链接 | |
| 48 | | 开源引入 | <https://github.com/XueZeyue/DanceGRPO/blob/main/fastvideo/data_preprocess/preprocess_flux_embedding.py> | mindspeed_mm/tasks/rl/soragrpo/preprocess/data_preprocess.py | <https://github.com/hao-ai-lab/FastVideo/blob/main/LICENSE> | 开源代码参考链接 | | 48 | | 开源引入 | <https://github.com/XueZeyue/DanceGRPO/blob/main/fastvideo/data_preprocess/preprocess_flux_embedding.py> | mindspeed_mm/tasks/rl/soragrpo/preprocess/data_preprocess.py | <https://github.com/hao-ai-lab/FastVideo/blob/main/LICENSE> | 开源代码参考链接 | |
| 49 | | 开源引入 | <https://github.com/XueZeyue/DanceGRPO/blob/main/fastvideo/data_preprocess/preprocess_flux_embedding.py> | mindspeed_mm/tasks/rl/soragrpo/preprocess/flux_data_preprocess.py | <https://github.com/hao-ai-lab/FastVideo/blob/main/LICENSE> | 开源代码参考链接 | | 49 | | 开源引入 | <https://github.com/XueZeyue/DanceGRPO/blob/main/fastvideo/data_preprocess/preprocess_flux_embedding.py> | mindspeed_mm/tasks/rl/soragrpo/preprocess/flux_data_preprocess.py | <https://github.com/hao-ai-lab/FastVideo/blob/main/LICENSE> | 开源代码参考链接 | |
| @@ -56,9 +56,9 @@ | |||
| 56 | | 开源引入 | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/hyvideo/models/transformers/hunyuanvideo_1_5_transformer.py> | mindspeed_mm/models/predictor/dits/hunyuan_video_15_dit.py | <http://arxiv.org/abs/2406.11831> | 参考论文地址 | | 56 | | 开源引入 | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/hyvideo/models/transformers/hunyuanvideo_1_5_transformer.py> | mindspeed_mm/models/predictor/dits/hunyuan_video_15_dit.py | <http://arxiv.org/abs/2406.11831> | 参考论文地址 | |
| 57 | | 开源引入 | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/hyvideo/models/text_encoders/byT5/__init__.py> | mindspeed_mm/models/text_encoder/byt5/__init__.py | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/LICENSE> | 开源代码参考链接 | | 57 | | 开源引入 | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/hyvideo/models/text_encoders/byT5/__init__.py> | mindspeed_mm/models/text_encoder/byt5/__init__.py | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/LICENSE> | 开源代码参考链接 | |
| 58 | | 开源引入 | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/hyvideo/models/text_encoders/byT5/format_prompt.py> | mindspeed_mm/models/text_encoder/byt5/format_prompt.py | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/LICENSE> | 开源代码参考链接 | | 58 | | 开源引入 | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/hyvideo/models/text_encoders/byT5/format_prompt.py> | mindspeed_mm/models/text_encoder/byt5/format_prompt.py | <https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/LICENSE> | 开源代码参考链接 | |
| 59 | | 开源引入 | <https://github.com/huggingface/diffusers/models/transformers/transformer_hidream_image.py> | mindspeed_mm/examples/diffusers/hidream/transformer_patches.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | | 59 | | 开源引入 | <https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_hidream_image.py> | mindspeed_mm/examples/diffusers/hidream/transformer_patches.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | |
| 60 | | 开源引入 | <https://github.com/huggingface/diffusers/models/transformers/transformer_flux.py> | mindspeed_mm/examples/diffusers/flux-kontext/transformer_patches.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | | 60 | | 开源引入 | <https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_flux.py> | mindspeed_mm/examples/diffusers/flux-kontext/transformer_patches.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | |
| 61 | | 开源引入 | <https://github.com/huggingface/diffusers/models/transformers/transformer_flux2.py> | mindspeed_mm/examples/diffusers/flux2/transformer_patches.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | | 61 | | 开源引入 | <https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_flux2.py> | mindspeed_mm/examples/diffusers/flux2/transformer_patches.py | <https://github.com/huggingface/diffusers> | 开源代码参考指引 | |
| 62 | | 开发引入 | / | scripts/install.sh | <https://download.pytorch.org/whl/cu124> | 开源软件安装地址 | | 62 | | 开发引入 | / | scripts/install.sh | <https://download.pytorch.org/whl/cu124> | 开源软件安装地址 | |
| 63 | | 开发引入 | / | scripts/install.sh | <https://download.pytorch.org/whl/cu121> | 开源软件安装地址 | | 63 | | 开发引入 | / | scripts/install.sh | <https://download.pytorch.org/whl/cu121> | 开源软件安装地址 | |
| 64 | | 开发引入 | / | scripts/install.sh | <https://download.pytorch.org/whl/cu120> | 开源软件安装地址 | | 64 | | 开发引入 | / | scripts/install.sh | <https://download.pytorch.org/whl/cu120> | 开源软件安装地址 | |
| @@ -48,7 +48,7 @@ | |||
| 48 | 48 | ||
| 49 | --calculate-per-token-loss:按 token 粒度计算 loss。[详细介绍]( https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/vlm_model_loss_calculate_type.md) | 49 | --calculate-per-token-loss:按 token 粒度计算 loss。[详细介绍]( https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/vlm_model_loss_calculate_type.md) |
| 50 | 50 | ||
| 51 | --ckpt-format torch_dcp: 保存时使用dcp格式。[详细介绍](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/torch_dcp.md) | 51 | --ckpt-format torch_dcp: 保存时使用dcp格式。[详细介绍](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/fsdp2.md) |
| 52 | 52 | ||
| 53 | --init-model-with-meta-device: 使用fsdp2的meta初始化模型,目前仅qwen3vl模型支持,详细使用请参考examples下具体模型readme.md界面。 | 53 | --init-model-with-meta-device: 使用fsdp2的meta初始化模型,目前仅qwen3vl模型支持,详细使用请参考examples下具体模型readme.md界面。 |
| 54 | 54 | ||
| @@ -72,7 +72,7 @@ | |||
| 72 | 72 | ||
| 73 | #### 重计算 | 73 | #### 重计算 |
| 74 | 74 | ||
| 75 | [详细介绍](https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/docs/pytorch/features/recompute_relative.md) | 75 | [详细介绍](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/recomputation.md) |
| 76 | 76 | ||
| 77 | --recompute-granularity: 目前仅支持配置full用于开启全量重计算。 | 77 | --recompute-granularity: 目前仅支持配置full用于开启全量重计算。 |
| 78 | 78 | ||
| @@ -115,7 +115,7 @@ | |||
| 115 | --save : 取值来自SAVE_PATH,权重保存路径。 | 115 | --save : 取值来自SAVE_PATH,权重保存路径。 |
| 116 | 注:仅有该值配置时才会进行权重保存 | 116 | 注:仅有该值配置时才会进行权重保存 |
| 117 | 117 | ||
| 118 | --ckpt-format: 支持配置列表[torch,torch_dcp],权重保存方式。推荐优先使用[torch_dcp](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/torch_dcp.md)。 | 118 | --ckpt-format: 支持配置列表[torch,torch_dcp],权重保存方式。推荐优先使用[torch_dcp](https://gitcode.com/Ascend/MindSpeed/blob/master/docs/zh/features/fsdp2.md)。 |
| 119 | 119 | ||
| 120 | 注:1、当在使用fsdp2进行模型训练时,仅支持使用torch_dcp配置。 | 120 | 注:1、当在使用fsdp2进行模型训练时,仅支持使用torch_dcp配置。 |
| 121 | 2、OUTPUT_ARGS下设置--ckpt-format为torch_dcp与GPT_ARGS下使能--ckpt-format torch_dcp二者作用相同,择一即可。 | 121 | 2、OUTPUT_ARGS下设置--ckpt-format为torch_dcp与GPT_ARGS下使能--ckpt-format torch_dcp二者作用相同,择一即可。 |
| @@ -54,7 +54,7 @@ NVIDIA GPU采用CUDA(Compute Unified Device Architecture)的并行计算架 | |||
| 54 | 目前已知的不支持场景: | 54 | 目前已知的不支持场景: |
| 55 | 55 | ||
| 56 | 当前不支持使用DP(Data Parallel,数据并行)模式的模型迁移。若用户训练脚本中包含NPU平台不支持的torch.nn.parallel.DataParallel接口,则需手动修改该接口为torch.nn.parallel.DistributedDataParallel接口,以执行多卡训练。原脚本需要在GPU环境下基于Python3.10 及以上跑通。 | 56 | 当前不支持使用DP(Data Parallel,数据并行)模式的模型迁移。若用户训练脚本中包含NPU平台不支持的torch.nn.parallel.DataParallel接口,则需手动修改该接口为torch.nn.parallel.DistributedDataParallel接口,以执行多卡训练。原脚本需要在GPU环境下基于Python3.10 及以上跑通。 |
| 57 | APEX库中的FusedAdam融合优化器,目前不支持使用自动迁移或PyTorch GPU2Ascend工具迁移该优化器,需用户手工进行迁移,具体修改方法可单击[Link](https://gitcode.com/Ascend/apex#apexoptimizers)。 | 57 | APEX库中的FusedAdam融合优化器,目前不支持使用自动迁移或PyTorch GPU2Ascend工具迁移该优化器,需用户手工进行迁移,具体修改方法见[Link](https://gitcode.com/Ascend/apex#apexoptimizers)。 |
| 58 | 大模型迁移暂不支持bmtrain框架的迁移。 | 58 | 大模型迁移暂不支持bmtrain框架的迁移。 |
| 59 | bitsandbytes已支持在昇腾上进行安装,具体可单击[Supported Backends](https://github.com/bitsandbytes-foundation/bitsandbytes/blob/main/docs/source/installation.mdx#supported-backendsmulti-backend-supported-backends)进行参考,目前仅支持NF4量化/反量化迁移,用于LLM QLoRA微调,其余功能暂不支持。 | 59 | bitsandbytes已支持在昇腾上进行安装,具体可单击[Supported Backends](https://github.com/bitsandbytes-foundation/bitsandbytes/blob/main/docs/source/installation.mdx#supported-backendsmulti-backend-supported-backends)进行参考,目前仅支持NF4量化/反量化迁移,用于LLM QLoRA微调,其余功能暂不支持。 |
| 60 | 大模型迁移暂不支持colossai三方库中HybridAdam优化器相关接口的迁移。 | 60 | 大模型迁移暂不支持colossai三方库中HybridAdam优化器相关接口的迁移。 |
| @@ -158,95 +158,96 @@ export CPU_AFFINITY_CONF=<mode>,npu<value1>:<value2>-<value3> | |||
| 158 | 158 | ||
| 159 | 1. 仓库拉取 | 159 | 1. 仓库拉取 |
| 160 | 160 | ||
| 161 | ```shell | 161 | ```shell |
| 162 | git clone https://gitcode.com/Ascend/MindSpeed-MM.git | 162 | git clone https://gitcode.com/Ascend/MindSpeed-MM.git |
| 163 | git clone https://github.com/NVIDIA/Megatron-LM.git | 163 | git clone https://github.com/NVIDIA/Megatron-LM.git |
| 164 | cd Megatron-LM | 164 | cd Megatron-LM |
| 165 | git checkout core_v0.12.1 | 165 | git checkout core_v0.12.1 |
| 166 | cp -r megatron ../MindSpeed-MM/ | 166 | cp -r megatron ../MindSpeed-MM/ |
| 167 | cd .. | 167 | cd .. |
| 168 | cd MindSpeed-MM | 168 | cd MindSpeed-MM |
| 169 | mkdir logs | 169 | mkdir logs |
| 170 | mkdir data | 170 | mkdir data |
| 171 | mkdir ckpt | 171 | mkdir ckpt |
| 172 | ``` | 172 | ``` |
| 173 | 173 | ||
| 174 | 2. 环境搭建 | 174 | 2. 环境搭建 |
| 175 | MindSpeed MM套件基于MindSpeed Core构建,采用类Megatron框架,安装方式如下: | ||
| 176 | 175 | ||
| 177 | ```bash | 176 | MindSpeed MM套件基于MindSpeed Core构建,采用类Megatron框架,安装方式如下: |
| 178 | # python3.10 | ||
| 179 | conda create -n test python=3.10 | ||
| 180 | conda activate test | ||
| 181 | 177 | ||
| 182 | # 安装 torch 和 torch_npu,注意要选择对应python版本、x86或arm的torch、torch_npu及apex包 | 178 | ```bash |
| 183 | # 下载路径参考 https://www.hiascend.com/document/detail/zh/Pytorch/730/configandinstg/instg/insg_0001.html | 179 | # python3.10 |
| 184 | pip install torch-2.7.1-cp310-cp310-manylinux_2_28_aarch64.whl | 180 | conda create -n test python=3.10 |
| 185 | pip install torch_npu-2.7.1*-cp310-cp310-manylinux_2_28_aarch64.whl | 181 | conda activate test |
| 186 | 182 | ||
| 187 | # apex for Ascend 参考 https://gitcode.com/Ascend/apex | 183 | # 安装 torch 和 torch_npu,注意要选择对应python版本、x86或arm的torch、torch_npu及apex包 |
| 188 | # 建议从原仓编译安装 | 184 | # 下载路径参考 https://www.hiascend.com/document/detail/zh/Pytorch/730/configandinstg/instg/insg_0001.html |
| 185 | pip install torch-2.7.1-cp310-cp310-manylinux_2_28_aarch64.whl | ||
| 186 | pip install torch_npu-2.7.1*-cp310-cp310-manylinux_2_28_aarch64.whl | ||
| 189 | 187 | ||
| 190 | # 安装加速库 | 188 | # apex for Ascend 参考 https://gitcode.com/Ascend/apex |
| 191 | git clone https://gitcode.com/Ascend/MindSpeed.git | 189 | # 建议从原仓编译安装 |
| 192 | cd MindSpeed | 190 | |
| 193 | # checkout commit from MindSpeed core_v0.12.1 | 191 | # 安装加速库 |
| 194 | git checkout 5176c6f5f133111e55a404d82bd2dc14a809a6ab | 192 | git clone https://gitcode.com/Ascend/MindSpeed.git |
| 195 | # 安装mindspeed及依赖 | 193 | cd MindSpeed |
| 196 | pip install -e . | 194 | # checkout commit from MindSpeed core_v0.12.1 |
| 197 | cd .. | 195 | git checkout 5176c6f5f133111e55a404d82bd2dc14a809a6ab |
| 198 | # 安装mindspeed mm及依赖 | 196 | # 安装mindspeed及依赖 |
| 199 | pip install -e . | 197 | pip install -e . |
| 200 | ``` | 198 | cd .. |
| 199 | # 安装mindspeed mm及依赖 | ||
| 200 | pip install -e . | ||
| 201 | ``` | ||
| 201 | 202 | ||
| 202 | ### 权重下载及转换 | 203 | ### 权重下载及转换 |
| 203 | 204 | ||
| 204 | 1. 权重下载 | 205 | 1. 权重下载 |
| 205 | 206 | ||
| 206 | 从Hugging Face库下载对应的模型权重: | 207 | 从Hugging Face库下载对应的模型权重: |
| 207 | 208 | ||
| 208 | 模型地址: [Qwen2-VL-7B](https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct/tree/main), | 209 | 模型地址: [Qwen2-VL-7B](https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct/tree/main), |
| 209 | 将下载的模型权重保存到本地的`ckpt/hf_path/Qwen2-VL-*B-Instruct`目录下。 | 210 | 将下载的模型权重保存到本地的`ckpt/hf_path/Qwen2-VL-*B-Instruct`目录下。 |
| 210 | 注意:(*表示对应的尺寸)。 | 211 | 注意:(*表示对应的尺寸)。 |
| 211 | 212 | ||
| 212 | 2. 权重转换(hf2mm) | 213 | 2. 权重转换(hf2mm) |
| 213 | |||
| 214 | MindSpeed MM修改了部分原始网络的结构名称,使用`mm-convert`工具对原始预训练权重进行转换。该工具实现了Hugging Face权重和MindSpeed MM权重的互相转换以及PP(Pipeline Parallel)权重的重切分。参考[权重转换工具](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/mm_convert.md) | ||
| 215 | 214 | ||
| 216 | ```bash | 215 | MindSpeed MM修改了部分原始网络的结构名称,使用`mm-convert`工具对原始预训练权重进行转换。该工具实现了Hugging Face权重和MindSpeed MM权重的互相转换以及PP(Pipeline Parallel)权重的重切分。参考[权重转换工具](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/mm_convert.md) |
| 217 | # 7b | ||
| 218 | mm-convert Qwen2VLConverter hf_to_mm \ | ||
| 219 | --cfg.mm_dir "ckpt/mm_path/Qwen2-VL-7B-Instruct" \ | ||
| 220 | --cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2-VL-7B-Instruct" \ | ||
| 221 | --cfg.parallel_config.llm_pp_layers [[1,10,10,7]] \ | ||
| 222 | --cfg.parallel_config.vit_pp_layers [[32,0,0,0]] \ | ||
| 223 | --cfg.parallel_config.tp_size 1 | ||
| 224 | ``` | ||
| 225 | 216 | ||
| 226 | 如果需要用转换后模型训练的话,同步修改`examples/qwen2vl/finetune_qwen2vl_7b.sh`中的`LOAD_PATH`参数,该路径为转换后或者切分后的权重,注意与原始权重 `ckpt/hf_path/Qwen2-VL-7B-Instruct`进行区分。 | 217 | ```bash |
| 218 | # 7b | ||
| 219 | mm-convert Qwen2VLConverter hf_to_mm \ | ||
| 220 | --cfg.mm_dir "ckpt/mm_path/Qwen2-VL-7B-Instruct" \ | ||
| 221 | --cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2-VL-7B-Instruct" \ | ||
| 222 | --cfg.parallel_config.llm_pp_layers [[1,10,10,7]] \ | ||
| 223 | --cfg.parallel_config.vit_pp_layers [[32,0,0,0]] \ | ||
| 224 | --cfg.parallel_config.tp_size 1 | ||
| 225 | ``` | ||
| 227 | 226 | ||
| 228 | ```shell | 227 | 如果需要用转换后模型训练的话,同步修改`examples/qwen2vl/finetune_qwen2vl_7b.sh`中的`LOAD_PATH`参数,该路径为转换后或者切分后的权重,注意与原始权重 `ckpt/hf_path/Qwen2-VL-7B-Instruct`进行区分。 |
| 229 | LOAD_PATH="ckpt/mm_path/Qwen2-VL-7B-Instruct" | 228 | |
| 230 | ``` | 229 | ```shell |
| 230 | LOAD_PATH="ckpt/mm_path/Qwen2-VL-7B-Instruct" | ||
| 231 | ``` | ||
| 231 | 232 | ||
| 232 | 3. 训练后权重转回Hugging Face格式 | 233 | 3. 训练后权重转回Hugging Face格式 |
| 233 | 234 | ||
| 234 | ```bash | 235 | ```bash |
| 235 | mm-convert Qwen2VLConverter mm_to_hf \ | 236 | mm-convert Qwen2VLConverter mm_to_hf \ |
| 236 | --cfg.save_hf_dir "ckpt/mm_to_hf/Qwen2-VL-7B-Instruct" \ | 237 | --cfg.save_hf_dir "ckpt/mm_to_hf/Qwen2-VL-7B-Instruct" \ |
| 237 | --cfg.mm_dir "ckpt/mm_path/Qwen2-VL-7B-Instruct" \ | 238 | --cfg.mm_dir "ckpt/mm_path/Qwen2-VL-7B-Instruct" \ |
| 238 | --cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2-VL-7B-Instruct" \ | 239 | --cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2-VL-7B-Instruct" \ |
| 239 | --cfg.parallel_config.llm_pp_layers [1,10,10,7] \ | 240 | --cfg.parallel_config.llm_pp_layers [1,10,10,7] \ |
| 240 | --cfg.parallel_config.vit_pp_layers [32,0,0,0] \ | 241 | --cfg.parallel_config.vit_pp_layers [32,0,0,0] \ |
| 241 | --cfg.parallel_config.tp_size 1 | 242 | --cfg.parallel_config.tp_size 1 |
| 242 | # 其中: | 243 | # 其中: |
| 243 | # save_hf_dir: mm微调后转换回hf模型格式的目录 | 244 | # save_hf_dir: mm微调后转换回hf模型格式的目录 |
| 244 | # mm_dir: 微调后保存的权重目录 | 245 | # mm_dir: 微调后保存的权重目录 |
| 245 | # hf_dir: Hugging Face权重目录 | 246 | # hf_dir: Hugging Face权重目录 |
| 246 | # llm_pp_layers: llm在每个卡上切分的层数,注意要和微调时model.json中配置的pipeline_num_layers一致 | 247 | # llm_pp_layers: llm在每个卡上切分的层数,注意要和微调时model.json中配置的pipeline_num_layers一致 |
| 247 | # vit_pp_layers: vit在每个卡上切分的层数,注意要和微调时model.json中配置的pipeline_num_layers一致 | 248 | # vit_pp_layers: vit在每个卡上切分的层数,注意要和微调时model.json中配置的pipeline_num_layers一致 |
| 248 | # tp_size: tp并行数量,注意要和微调启动脚本中的配置一致 | 249 | # tp_size: tp并行数量,注意要和微调启动脚本中的配置一致 |
| 249 | ``` | 250 | ``` |
| 250 | 251 | ||
| 251 | ### 数据集准备 | 252 | ### 数据集准备 |
| 252 | 253 | ||
| @@ -7,18 +7,18 @@ | |||
| 7 | 7 | ||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [环境安装](#jump1) | 10 | - [环境安装](#环境安装) |
| 11 | - [环境搭建](#jump1.1) | 11 | - [环境搭建](#1-环境搭建) |
| 12 | - [权重下载及转换](#jump2) | 12 | - [权重下载及转换](#权重下载及转换) |
| 13 | - [权重下载](#jump2.1) | 13 | - [权重下载](#1-权重下载) |
| 14 | - [权重转换](#jump2.2) | 14 | - [权重转换](#2-权重转换hf2mm) |
| 15 | - [数据集准备及处理](#jump3) | 15 | - [数据集准备及处理](#数据集准备及处理) |
| 16 | - [数据集下载](#jump3.1) | 16 | - [数据集下载](#1-数据集下载) |
| 17 | - [微调](#jump4) | 17 | - [微调](#微调) |
| 18 | - [准备工作](#jump4.1) | 18 | - [准备工作](#1-准备工作) |
| 19 | - [配置参数](#jump4.2) | 19 | - [配置参数](#2-配置参数) |
| 20 | - [启动微调](#jump4.3) | 20 | - [启动微调](#3-启动微调) |
| 21 | - [环境变量声明](#jump10) | 21 | - [环境变量声明](#环境变量声明) |
| 22 | 22 | ||
| 23 | ## 版本说明 | 23 | ## 版本说明 |
| 24 | 24 | ||
| @@ -26,7 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | 【训练】 | 27 | 【训练】 |
| 28 | 28 | ||
| 29 | ```shell | 29 | ```bash |
| 30 | url=https://github.com/bytedance-seed/BAGEL | 30 | url=https://github.com/bytedance-seed/BAGEL |
| 31 | commit_id = 57c390 | 31 | commit_id = 57c390 |
| 32 | ``` | 32 | ``` |
| @@ -62,32 +62,35 @@ bash scripts/install.sh --arch x86 --msid 93c45456c7044bacddebc5072316c01006c938 | |||
| 62 | 62 | ||
| 63 | ```bash | 63 | ```bash |
| 64 | bash scripts/install.sh --arch arm --msid 93c45456c7044bacddebc5072316c01006c938f9 | 64 | bash scripts/install.sh --arch arm --msid 93c45456c7044bacddebc5072316c01006c938f9 |
| 65 | ``` | ||
| 65 | 66 | ||
| 66 | --- | 67 | --- |
| 67 | <a id="jump2"></a> | 68 | <a id="jump2"></a> |
| 69 | |||
| 68 | ## 权重下载及转换 | 70 | ## 权重下载及转换 |
| 69 | 71 | ||
| 70 | <a id="jump2.1"></a> | 72 | <a id="jump2.1"></a> |
| 73 | |||
| 71 | ### 1. 权重下载 | 74 | ### 1. 权重下载 |
| 72 | 75 | ||
| 73 | 从Huggingface库下载对应的模型权重: | 76 | 从Huggingface库下载对应的模型权重: |
| 77 | |||
| 74 | - 模型地址: [BAGEL-7B-MoT](https://huggingface.co/ByteDance-Seed/BAGEL-7B-MoT/tree/main); | 78 | - 模型地址: [BAGEL-7B-MoT](https://huggingface.co/ByteDance-Seed/BAGEL-7B-MoT/tree/main); |
| 75 | 79 | ||
| 76 | 将下载的模型权重保存到本地的`ckpt/hf_path/BAGEL-7B-MoT`目录下。 | 80 | 将下载的模型权重保存到本地的`ckpt/hf_path/BAGEL-7B-MoT`目录下。 |
| 77 | 81 | ||
| 78 | <a id="jump2.2"></a> | 82 | <a id="jump2.2"></a> |
| 83 | |||
| 79 | ### 2. 权重转换(hf2mm) | 84 | ### 2. 权重转换(hf2mm) |
| 80 | 85 | ||
| 81 | Bagel模型需要对下载后的权重进行权重转换,运行权重转换脚本: | 86 | Bagel模型需要对下载后的权重进行权重转换,运行权重转换脚本: |
| 82 | ``` | ||
| 83 | 87 | ||
| 88 | ```bash | ||
| 84 | # Bagel | 89 | # Bagel |
| 85 | |||
| 86 | mm-convert BagelConverter hf_to_mm \ | 90 | mm-convert BagelConverter hf_to_mm \ |
| 87 | --cfg.source_path <./ckpt/hf_path/BAGEL-7B-MoT/> \ | 91 | --cfg.source_path <./ckpt/hf_path/BAGEL-7B-MoT/> \ |
| 88 | --cfg.target_path <./ckpt/mm_path/BAGEL-7B-MoT/> \ | 92 | --cfg.target_path <./ckpt/mm_path/BAGEL-7B-MoT/> \ |
| 89 | 93 | ``` | |
| 90 | ```shell | ||
| 91 | 94 | ||
| 92 | 权重转换脚本的参数说明如下: | 95 | 权重转换脚本的参数说明如下: |
| 93 | 96 | ||
| @@ -105,15 +108,15 @@ mm-convert BagelConverter hf_to_mm \ | |||
| 105 | 108 | ||
| 106 | ### 1. 数据集下载 | 109 | ### 1. 数据集下载 |
| 107 | 110 | ||
| 108 | ``` | 111 | ```bash |
| 109 | 112 | ||
| 110 | <https://lf3-static.bytednsdoc.com/obj/eden-cn/nuhojubrps/bagel_example.zip> | 113 | <https://lf3-static.bytednsdoc.com/obj/eden-cn/nuhojubrps/bagel_example.zip> |
| 111 | 114 | ||
| 112 | ```shell | 115 | ``` |
| 113 | 116 | ||
| 114 | 将数据处理成如下格式 | 117 | 将数据处理成如下格式 |
| 115 | 118 | ||
| 116 | ``` | 119 | ```bash |
| 117 | 120 | ||
| 118 | </dataset> | 121 | </dataset> |
| 119 | bagel_example | 122 | bagel_example |
| @@ -121,7 +124,7 @@ bagel_example | |||
| 121 | └── vlm/ | 124 | └── vlm/ |
| 122 | ├── images/ # JPEG / PNG frames | 125 | ├── images/ # JPEG / PNG frames |
| 123 | └── llava_ov_si.jsonl # vision‑language SFT conversations | 126 | └── llava_ov_si.jsonl # vision‑language SFT conversations |
| 124 | ```shell | 127 | ``` |
| 125 | 128 | ||
| 126 | 若需要自行添加数据集,请将数据处理成与上述数据统一格式 | 129 | 若需要自行添加数据集,请将数据处理成与上述数据统一格式 |
| 127 | 130 | ||
| @@ -156,15 +159,14 @@ bagel_example | |||
| 156 | "num_total_samples": 2000 | 159 | "num_total_samples": 2000 |
| 157 | }, | 160 | }, |
| 158 | ...... | 161 | ...... |
| 159 | ```shell | 162 | ``` |
| 160 | 163 | ||
| 161 | 【权重路径配置】 | 164 | 【权重路径配置】 |
| 162 | 165 | ||
| 163 | | 配置文件 | 修改字段 | 修改说明 | | 166 | | 配置文件 | 修改字段 | 修改说明 | |
| 164 | |-----------------------------------------------------| :---: |:------------------------------------| | 167 | |-----------------------------------------------------| :---: |:------------------------------------| |
| 165 | | examples/bagel/data.json | model_path | 修改为下载的tokenizer的权重所对应的路径 | | 168 | | examples/bagel/data.json | model_path | 修改为下载的tokenizer的权重所对应的路径 | |
| 166 | | examples/bagel/model.json | from_pretrained | 修改为权重转换后的权重路径 | | 169 | | examples/bagel/model.json | from_pretrained | 修改为权重转换后的权重路径 | |
| 167 | |||
| 168 | 170 | ||
| 169 | <a id="jump4.3"></a> | 171 | <a id="jump4.3"></a> |
| 170 | 172 | ||
| @@ -182,11 +184,9 @@ bagel_example | |||
| 182 | 184 | ||
| 183 | 启动训练 | 185 | 启动训练 |
| 184 | 186 | ||
| 185 | ``` | 187 | ```bash |
| 186 | 188 | bash examples/bagel/finetune_bagel.sh | |
| 187 | bash examples/bagel/finetune_bagel.sh | 189 | ``` |
| 188 | |||
| 189 | ```shell | ||
| 190 | 190 | ||
| 191 | ## 环境变量声明 | 191 | ## 环境变量声明 |
| 192 | 192 | ||
| @@ -286,19 +286,19 @@ CogvideoX训练阶段的启动文件为shell脚本,主要分为如下4个: | |||
| 286 | 286 | ||
| 287 | 1. 权重配置 | 287 | 1. 权重配置 |
| 288 | 288 | ||
| 289 | 需根据实际任务情况在启动脚本文件(如`pretrain_cogvideox_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 | 289 | 需根据实际任务情况在启动脚本文件(如`pretrain_cogvideox_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 |
| 290 | 290 | ||
| 291 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的权重。 | 291 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的权重。 |
| 292 | 292 | ||
| 293 | 2. 数据集路径配置 | 293 | 2. 数据集路径配置 |
| 294 | 294 | ||
| 295 | 根据实际情况修改`data.json`中的数据集路径,分别为`"data_path":"/data_path/data.jsonl"`、`"data_folder":"/data_path/"`,替换`"/data_path/"`为实际的数据集路径。 | 295 | 根据实际情况修改`data.json`中的数据集路径,分别为`"data_path":"/data_path/data.jsonl"`、`"data_folder":"/data_path/"`,替换`"/data_path/"`为实际的数据集路径。 |
| 296 | 296 | ||
| 297 | 3. VAE及T5模型路径配置 | 297 | 3. VAE及T5模型路径配置 |
| 298 | 298 | ||
| 299 | 根据实际情况修改模型参数配置文件(如`model_cogvideox_i2v.json`)以及`data.json`文件中VAE及T5模型文件的实际路径。其中,T5文件的路径字段为`"from_pretrained": "5b-cogvideo/tokenizer"`及`"from_pretrained": "5b-cogvideo"`,替换`5b-cogvideo`为实际的路径;VAE模型文件的路径字段为`"from_pretrained": "3d-vae.pt"`,替换`3d-vae.pt`为实际的路径。 | 299 | 根据实际情况修改模型参数配置文件(如`model_cogvideox_i2v.json`)以及`data.json`文件中VAE及T5模型文件的实际路径。其中,T5文件的路径字段为`"from_pretrained": "5b-cogvideo/tokenizer"`及`"from_pretrained": "5b-cogvideo"`,替换`5b-cogvideo`为实际的路径;VAE模型文件的路径字段为`"from_pretrained": "3d-vae.pt"`,替换`3d-vae.pt`为实际的路径。 |
| 300 | 300 | ||
| 301 | 当需要卸载VAE和T5时,将模型参数配置文件中的`"load_video_features": false`及`"load_text_features": false`字段中的值分别改为`true`。将`data.json`中的`"use_feature_data"`字段的值改为`true`。 | 301 | 当需要卸载VAE和T5时,将模型参数配置文件中的`"load_video_features": false`及`"load_text_features": false`字段中的值分别改为`true`。将`data.json`中的`"use_feature_data"`字段的值改为`true`。 |
| 302 | 302 | ||
| 303 | 4. 切分策略配置 | 303 | 4. 切分策略配置 |
| 304 | 304 | ||
| @@ -311,54 +311,54 @@ CogvideoX训练阶段的启动文件为shell脚本,主要分为如下4个: | |||
| 311 | * 当开启Encoder-DP时,需要将[model_cogvideox_i2v_1.5.json](i2v_1.5/model_cogvideox_i2v_1.5.json) 或者[model_cogvideox_t2v_1.5.json](t2v_1.5/model_cogvideox_t2v_1.5.json)中的`enable_encoder_dp`选项改为`true`。注意:需要在开启CP/TP,并且`load_video_features`为`false`及`load_text_features`为`false`才能启用,不兼容PP场景、VAE-CP、分层Zero。 | 311 | * 当开启Encoder-DP时,需要将[model_cogvideox_i2v_1.5.json](i2v_1.5/model_cogvideox_i2v_1.5.json) 或者[model_cogvideox_t2v_1.5.json](t2v_1.5/model_cogvideox_t2v_1.5.json)中的`enable_encoder_dp`选项改为`true`。注意:需要在开启CP/TP,并且`load_video_features`为`false`及`load_text_features`为`false`才能启用,不兼容PP场景、VAE-CP、分层Zero。 |
| 312 | 312 | ||
| 313 | * 当开启分层Zero时,需要在[pretrain_cogvideox_t2v_1.5.sh](t2v_1.5/pretrain_cogvideox_t2v_1.5.sh)或者[pretrain_cogvideox_i2v_1.5.sh](i2v_1.5/pretrain_cogvideox_i2v_1.5.sh)里面添加下面的参数。 | 313 | * 当开启分层Zero时,需要在[pretrain_cogvideox_t2v_1.5.sh](t2v_1.5/pretrain_cogvideox_t2v_1.5.sh)或者[pretrain_cogvideox_i2v_1.5.sh](i2v_1.5/pretrain_cogvideox_i2v_1.5.sh)里面添加下面的参数。 |
| 314 | 注意:不兼容Encoder-DP特性、TP场景、PP场景,与VAE-CP效果未验证。 | 314 | 注意:不兼容Encoder-DP特性、TP场景、PP场景,与VAE-CP效果未验证。 |
| 315 | 315 | ||
| 316 | ```shell | 316 | ```shell |
| 317 | --layerzero \ | 317 | --layerzero \ |
| 318 | --layerzero-config ./zero_config.yaml \ | 318 | --layerzero-config ./zero_config.yaml \ |
| 319 | ``` | 319 | ``` |
| 320 | 320 | ||
| 321 | 参数里面的yaml文件如下面所示: | 321 | 参数里面的yaml文件如下面所示: |
| 322 | 322 | ||
| 323 | ```yaml | 323 | ```yaml |
| 324 | zero3_size: 8 | 324 | zero3_size: 8 |
| 325 | transformer_layers: | 325 | transformer_layers: |
| 326 | - mindspeed_mm.models.predictor.dits.sat_dit.VideoDiTBlock | 326 | - mindspeed_mm.models.predictor.dits.sat_dit.VideoDiTBlock |
| 327 | backward_prefetch: 'BACKWARD_PRE' | 327 | backward_prefetch: 'BACKWARD_PRE' |
| 328 | param_dtype: "bf16" | 328 | param_dtype: "bf16" |
| 329 | reduce_dtype: "fp32" | 329 | reduce_dtype: "fp32" |
| 330 | forward_prefetch: True | 330 | forward_prefetch: True |
| 331 | limit_all_gathers: True | 331 | limit_all_gathers: True |
| 332 | ignored_modules: | 332 | ignored_modules: |
| 333 | - ae | 333 | - ae |
| 334 | - text_encoder | 334 | - text_encoder |
| 335 | ``` | 335 | ``` |
| 336 | 336 | ||
| 337 | 该特性和TP不能兼容,开启时TP必须设置为1,使用该特性训练时,保存的权重需要使用下面的转换脚本进行后处理才能用于推理: | 337 | 该特性和TP不能兼容,开启时TP必须设置为1,使用该特性训练时,保存的权重需要使用下面的转换脚本进行后处理才能用于推理: |
| 338 | 338 | ||
| 339 | ```bash | 339 | ```bash |
| 340 | source /usr/local/Ascend/cann/set_env.sh | 340 | source /usr/local/Ascend/cann/set_env.sh |
| 341 | # your_mindspeed_path和your_megatron_path分别替换为之前下载的mindspeed和megatron的路径 | 341 | # your_mindspeed_path和your_megatron_path分别替换为之前下载的mindspeed和megatron的路径 |
| 342 | export PYTHONPATH=$PYTHONPATH:<your_mindspeed_path> | 342 | export PYTHONPATH=$PYTHONPATH:<your_mindspeed_path> |
| 343 | export PYTHONPATH=$PYTHONPATH:<your_megatron_path> | 343 | export PYTHONPATH=$PYTHONPATH:<your_megatron_path> |
| 344 | # cfg.source_path为layerzero训练保存权重的路径,cfg.target_path为输出的megatron格式权重的路径 | 344 | # cfg.source_path为layerzero训练保存权重的路径,cfg.target_path为输出的megatron格式权重的路径 |
| 345 | mm-convert CogVideoConverter layerzero_to_mm \ | 345 | mm-convert CogVideoConverter layerzero_to_mm \ |
| 346 | --cfg.source_path ./save_ckpt/cogvideo/ \ | 346 | --cfg.source_path ./save_ckpt/cogvideo/ \ |
| 347 | --cfg.target_path ./save_ckpt/cogvideo_megatron_ckpt/ | 347 | --cfg.target_path ./save_ckpt/cogvideo_megatron_ckpt/ |
| 348 | ``` | 348 | ``` |
| 349 | 349 | ||
| 350 | 模型参数配置文件中的`head_dim`字段原模型默认配置为64。此字段调整为128会更加亲和昇腾。 | 350 | 模型参数配置文件中的`head_dim`字段原模型默认配置为64。此字段调整为128会更加亲和昇腾。 |
| 351 | 351 | ||
| 352 | 在sh启动脚本中可以修改运行卡数(NNODES为节点数,GPUS_PER_NODE为每个节点的卡数,相乘即为总运行卡数): | 352 | 在sh启动脚本中可以修改运行卡数(NNODES为节点数,GPUS_PER_NODE为每个节点的卡数,相乘即为总运行卡数): |
| 353 | 353 | ||
| 354 | ```shell | 354 | ```shell |
| 355 | GPUS_PER_NODE=8 | 355 | GPUS_PER_NODE=8 |
| 356 | MASTER_ADDR=localhost | 356 | MASTER_ADDR=localhost |
| 357 | MASTER_PORT=29501 | 357 | MASTER_PORT=29501 |
| 358 | NNODES=1 | 358 | NNODES=1 |
| 359 | NODE_RANK=0 | 359 | NODE_RANK=0 |
| 360 | WORLD_SIZE=$(($GPUS_PER_NODE * $NNODES)) | 360 | WORLD_SIZE=$(($GPUS_PER_NODE * $NNODES)) |
| 361 | ``` | 361 | ``` |
| 362 | 362 | ||
| 363 | ### 启动预训练 | 363 | ### 启动预训练 |
| 364 | 364 | ||
| @@ -412,22 +412,22 @@ CogvideoX推理启动文件为shell脚本,主要分为如下4个: | |||
| 412 | 412 | ||
| 413 | 1. 权重配置 | 413 | 1. 权重配置 |
| 414 | 414 | ||
| 415 | 需根据实际任务情况在启动脚本文件(如`inference_cogvideox_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 | 415 | 需根据实际任务情况在启动脚本文件(如`inference_cogvideox_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 |
| 416 | 416 | ||
| 417 | 2. VAE及T5模型路径配置 | 417 | 2. VAE及T5模型路径配置 |
| 418 | 418 | ||
| 419 | 根据实际情况修改模型参数配置文件(如`inference_model_i2v.json`)中VAE及T5模型文件的实际路径。其中,T5文件的路径字段为`"from_pretrained": "5b-cogvideo"`,替换`5b-cogvideo`为实际的路径;VAE模型文件的路径字段为`"from_pretrained": "3d-vae.pt"`,替换`3d-vae.pt`为实际的路径。 | 419 | 根据实际情况修改模型参数配置文件(如`inference_model_i2v.json`)中VAE及T5模型文件的实际路径。其中,T5文件的路径字段为`"from_pretrained": "5b-cogvideo"`,替换`5b-cogvideo`为实际的路径;VAE模型文件的路径字段为`"from_pretrained": "3d-vae.pt"`,替换`3d-vae.pt`为实际的路径。 |
| 420 | 420 | ||
| 421 | 3. prompts配置 | 421 | 3. prompts配置 |
| 422 | 422 | ||
| 423 | | t2v prompts配置文件 | 修改字段 | 修改说明 | | 423 | | t2v prompts配置文件 | 修改字段 | 修改说明 | |
| 424 | |----------------------------------------|:--------------------------------:|:-----------------------------------:| | 424 | |----------------------------------------|:--------------------------------:|:-----------------------------------:| |
| 425 | | examples/cogvideox/samples_prompts.txt | 文件内容 | 自定义prompt | | 425 | | examples/cogvideox/samples_prompts.txt | 文件内容 | 自定义prompt | |
| 426 | 426 | ||
| 427 | | i2v prompts配置文件 | 修改字段 | 修改说明 | | 427 | | i2v prompts配置文件 | 修改字段 | 修改说明 | |
| 428 | |--------------------------------------------|:--------------------------------:|:----------------:| | 428 | |--------------------------------------------|:--------------------------------:|:----------------:| |
| 429 | | examples/cogvideox/samples_i2v_images.txt | 文件内容 | 图片路径 | | 429 | | examples/cogvideox/samples_i2v_images.txt | 文件内容 | 图片路径 | |
| 430 | | examples/cogvideox/samples_i2v_prompts.txt | 文件内容 | 自定义prompt | | 430 | | examples/cogvideox/samples_i2v_prompts.txt | 文件内容 | 自定义prompt | |
| 431 | 431 | ||
| 432 | 如果使用训练后保存的权重改变模型切分策略进行推理,需要使用命令进行转换,权重转换source_path参数请配置训练时的保存路径 | 432 | 如果使用训练后保存的权重改变模型切分策略进行推理,需要使用命令进行转换,权重转换source_path参数请配置训练时的保存路径 |
| 433 | 433 | ||
| @@ -475,34 +475,34 @@ bash examples/cogvideox/i2v_1.5/inference_cogvideox_i2v_1.5.sh | |||
| 475 | 475 | ||
| 476 | 1. 权重下载及转换 | 476 | 1. 权重下载及转换 |
| 477 | 477 | ||
| 478 | 模型权重下载链接(链接下包含模型权重以及tokenizer和text_encoder): | 478 | 模型权重下载链接(链接下包含模型权重以及tokenizer和text_encoder): |
| 479 | 479 | ||
| 480 | + [t2v下载链接](https://huggingface.co/THUDM/CogVideoX1.5-5B/tree/main) | 480 | + [t2v下载链接](https://huggingface.co/THUDM/CogVideoX1.5-5B/tree/main) |
| 481 | + [i2v下载链接](https://huggingface.co/THUDM/CogVideoX1.5-5B-I2V/tree/main) | 481 | + [i2v下载链接](https://huggingface.co/THUDM/CogVideoX1.5-5B-I2V/tree/main) |
| 482 | |||
| 483 | lora微调功能的权重转换使用`mm-convert`命令。 | ||
| 484 | 482 | ||
| 485 | ```bash | 483 | lora微调功能的权重转换使用`mm-convert`命令。 |
| 486 | mm-convert CogVideoConverter --version <t2v or i2v> hf_to_mm \ | ||
| 487 | --cfg.source_path <your source path> \ | ||
| 488 | --cfg.target_path <target path> | ||
| 489 | ``` | ||
| 490 | 484 | ||
| 491 | VAE权重下载 | 485 | ```bash |
| 486 | mm-convert CogVideoConverter --version <t2v or i2v> hf_to_mm \ | ||
| 487 | --cfg.source_path <your source path> \ | ||
| 488 | --cfg.target_path <target path> | ||
| 489 | ``` | ||
| 492 | 490 | ||
| 493 | + [VAE下载链接](https://huggingface.co/zai-org/CogVideoX1.5-5B-SAT/tree/main/vae) | 491 | VAE权重下载 |
| 492 | |||
| 493 | + [VAE下载链接](https://huggingface.co/zai-org/CogVideoX1.5-5B-SAT/tree/main/vae) | ||
| 494 | 494 | ||
| 495 | 2. 数据集准备及处理 | 495 | 2. 数据集准备及处理 |
| 496 | 496 | ||
| 497 | [lora数据集下载链接](https://huggingface.co/datasets/Wild-Heart/Disney-VideoGeneration-Dataset) | 497 | [lora数据集下载链接](https://huggingface.co/datasets/Wild-Heart/Disney-VideoGeneration-Dataset) |
| 498 | |||
| 499 | 原始数据集不包含MM套件所需的data.jsonl文件形式,需要将原始数据集中prompt.txt和videos.txt合并生成data.jsonl文件。 | ||
| 500 | |||
| 501 | 推荐使用提供的`cogvideox_lora_dataset_convert.py`脚本完成转换: | ||
| 502 | 498 | ||
| 503 | ```bash | 499 | 原始数据集不包含MM套件所需的data.jsonl文件形式,需要将原始数据集中prompt.txt和videos.txt合并生成data.jsonl文件。 |
| 504 | python examples/cogvideox/cogvideox_lora_dataset_convert.py --video_path '/data_path/videos.txt' --prompt_path '/data_path/prompt.txt' --output_path '/data_path/data.jsonl' | 500 | |
| 505 | ``` | 501 | 推荐使用提供的`cogvideox_lora_dataset_convert.py`脚本完成转换: |
| 502 | |||
| 503 | ```bash | ||
| 504 | python examples/cogvideox/cogvideox_lora_dataset_convert.py --video_path '/data_path/videos.txt' --prompt_path '/data_path/prompt.txt' --output_path '/data_path/data.jsonl' | ||
| 505 | ``` | ||
| 506 | 506 | ||
| 507 | ### 配置参数 | 507 | ### 配置参数 |
| 508 | 508 | ||
| @@ -524,20 +524,20 @@ CogvideoX lora微调阶段的启动文件为shell脚本,主要分为如下2个 | |||
| 524 | 524 | ||
| 525 | 1. 权重配置 | 525 | 1. 权重配置 |
| 526 | 526 | ||
| 527 | 权重转换完成后根据实际任务情况在启动脚本文件(如`finetune_cogvideox_lora_i2v_1.5.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 | 527 | 权重转换完成后根据实际任务情况在启动脚本文件(如`finetune_cogvideox_lora_i2v_1.5.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 |
| 528 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的lora权重。 | 528 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的lora权重。 |
| 529 | 529 | ||
| 530 | 2. 数据集路径配置 | 530 | 2. 数据集路径配置 |
| 531 | 531 | ||
| 532 | 准备好数据集后,根据实际情况修改`data.json`中的数据集路径,分别为`"data_path":"/data_path/data.jsonl"`、`"data_folder":"/data_path/"`,替换`"/data_path/"`为实际的数据集路径。 | 532 | 准备好数据集后,根据实际情况修改`data.json`中的数据集路径,分别为`"data_path":"/data_path/data.jsonl"`、`"data_folder":"/data_path/"`,替换`"/data_path/"`为实际的数据集路径。 |
| 533 | 533 | ||
| 534 | 3. VAE及T5模型路径配置 | 534 | 3. VAE及T5模型路径配置 |
| 535 | 535 | ||
| 536 | 请参考预训练相同章节 | 536 | 请参考预训练相同章节 |
| 537 | 537 | ||
| 538 | 4. 切分策略配置 | 538 | 4. 切分策略配置 |
| 539 | 539 | ||
| 540 | 请参考预训练相同章节 | 540 | 请参考预训练相同章节 |
| 541 | 541 | ||
| 542 | ### 启动lora微调 | 542 | ### 启动lora微调 |
| 543 | 543 | ||
| @@ -43,7 +43,7 @@ commit_id=1822c5c | |||
| 43 | 43 | ||
| 44 | 【模型开发时推荐使用配套的环境版本】 | 44 | 【模型开发时推荐使用配套的环境版本】 |
| 45 | 45 | ||
| 46 | 请参考[安装指南](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/user-guide/installation.md),完成昇腾软件安装。 | 46 | 请参考[安装指南](https://gitcode.com/Ascend/MindSpeed-MM/tree/master/docs/zh/pytorch/installation.md),完成昇腾软件安装。 |
| 47 | 47 | ||
| 48 | ### 2. 环境搭建 | 48 | ### 2. 环境搭建 |
| 49 | 49 | ||
| @@ -5,17 +5,18 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [简介](#jump0) | 8 | - [简介](#简介) |
| 9 | - [环境安装](#jump1) | 9 | - [环境安装](#环境安装) |
| 10 | - [仓库拉取](#jump1.1) | 10 | - [仓库拉取](#1-仓库拉取) |
| 11 | - [环境搭建](#jump1.2) | 11 | - [环境搭建](#2-环境搭建) |
| 12 | - [权重下载](#jump2) | 12 | - [权重下载](#权重下载) |
| 13 | - [数据集准备及处理](#jump3) | 13 | - [数据集准备及处理](#数据集准备及处理) |
| 14 | - [训练](#jump4) | 14 | - [训练](#训练) |
| 15 | - [准备工作](#jump4.1) | 15 | - [准备工作](#1-准备工作) |
| 16 | - [启动训练](#jump4.2) | 16 | - [三方库修改](#2-三方库修改) |
| 17 | - [启动训练](#3-启动训练) | ||
| 17 | - [性能数据](#性能数据) | 18 | - [性能数据](#性能数据) |
| 18 | - [FAQ](#jump5) | 19 | - [FAQ](#faq) |
| 19 | 20 | ||
| 20 | <a id="jump0"></a> | 21 | <a id="jump0"></a> |
| 21 | 22 | ||
| @@ -174,61 +175,61 @@ echo $(conda info --envs | grep test) | awk '{print $NF}' | |||
| 174 | 175 | ||
| 175 | 1. 将文件`lib/python3.10/site-packages/diffusers/models/embeddings.py`中`FluxPosEmbed`类的`forward`函数的如下代码: | 176 | 1. 将文件`lib/python3.10/site-packages/diffusers/models/embeddings.py`中`FluxPosEmbed`类的`forward`函数的如下代码: |
| 176 | 177 | ||
| 177 | ```python | 178 | ```python |
| 178 | is_mps = ids.device.type == "mps" | 179 | is_mps = ids.device.type == "mps" |
| 179 | freqs_dtype = torch.float32 if is_mps else torch.float64 | 180 | freqs_dtype = torch.float32 if is_mps else torch.float64 |
| 180 | ``` | 181 | ``` |
| 181 | 182 | ||
| 182 | 修改为: | 183 | 修改为: |
| 183 | 184 | ||
| 184 | ```python | 185 | ```python |
| 185 | is_mps = ids.device.type == "mps" | 186 | is_mps = ids.device.type == "mps" |
| 186 | is_npu = ids.device.type == "npu" | 187 | is_npu = ids.device.type == "npu" |
| 187 | freqs_dtype = torch.float32 if is_mps or is_npu else torch.float64 | 188 | freqs_dtype = torch.float32 if is_mps or is_npu else torch.float64 |
| 188 | ``` | 189 | ``` |
| 189 | 190 | ||
| 190 | 2. 将文件`lib/python3.10/site-packages/diffusers/models/embeddings.py`中的`get_1d_rotary_pos_embed`函数的如下代码: | 191 | 2. 将文件`lib/python3.10/site-packages/diffusers/models/embeddings.py`中的`get_1d_rotary_pos_embed`函数的如下代码: |
| 191 | 192 | ||
| 192 | ```python | 193 | ```python |
| 193 | freqs_cos = freqs.cos().repeat_interleave(2, dim=1).float() # [S, D] | 194 | freqs_cos = freqs.cos().repeat_interleave(2, dim=1).float() # [S, D] |
| 194 | freqs_sin = freqs.sin().repeat_interleave(2, dim=1).float() # [S, D] | 195 | freqs_sin = freqs.sin().repeat_interleave(2, dim=1).float() # [S, D] |
| 195 | ``` | 196 | ``` |
| 196 | 197 | ||
| 197 | 修改为: | 198 | 修改为: |
| 198 | 199 | ||
| 199 | ```python | 200 | ```python |
| 200 | freqs_cos = freqs.cos().T.repeat_interleave(2, dim=0).T.contiguous().float() | 201 | freqs_cos = freqs.cos().T.repeat_interleave(2, dim=0).T.contiguous().float() |
| 201 | freqs_sin = freqs.sin().T.repeat_interleave(2, dim=0).T.contiguous().float() | 202 | freqs_sin = freqs.sin().T.repeat_interleave(2, dim=0).T.contiguous().float() |
| 202 | ``` | 203 | ``` |
| 203 | 204 | ||
| 204 | 3. 将文件`lib/python3.10/site-packages/diffusers/models/attention_processor.py`中`Attention`类的`__init__`函数的如下代码: | 205 | 3. 将文件`lib/python3.10/site-packages/diffusers/models/attention_processor.py`中`Attention`类的`__init__`函数的如下代码: |
| 205 | 206 | ||
| 206 | ```python | 207 | ```python |
| 207 | elif qk_norm == "rms_norm": | 208 | elif qk_norm == "rms_norm": |
| 208 | self.norm_q = RMSNorm(dim_head, eps=eps) | 209 | self.norm_q = RMSNorm(dim_head, eps=eps) |
| 209 | self.norm_k = RMSNorm(dim_head, eps=eps) | 210 | self.norm_k = RMSNorm(dim_head, eps=eps) |
| 210 | ``` | 211 | ``` |
| 211 | 212 | ||
| 212 | 修改为: | 213 | 修改为: |
| 213 | 214 | ||
| 214 | ```python | 215 | ```python |
| 215 | elif qk_norm == "rms_norm": | 216 | elif qk_norm == "rms_norm": |
| 216 | self.norm_q = NpuFusedRMSNorm(dim_head, eps=eps) | 217 | self.norm_q = NpuFusedRMSNorm(dim_head, eps=eps) |
| 217 | self.norm_k = NpuFusedRMSNorm(dim_head, eps=eps) | 218 | self.norm_k = NpuFusedRMSNorm(dim_head, eps=eps) |
| 218 | ``` | 219 | ``` |
| 219 | 220 | ||
| 220 | 增加如下类: | 221 | 增加如下类: |
| 221 | 222 | ||
| 222 | ```python | 223 | ```python |
| 223 | class NpuFusedRMSNorm(torch.nn.Module): | 224 | class NpuFusedRMSNorm(torch.nn.Module): |
| 224 | def __init__(self, hidden_size, eps=1e-6): | 225 | def __init__(self, hidden_size, eps=1e-6): |
| 225 | super().__init__() | 226 | super().__init__() |
| 226 | self.weight = nn.Parameter(torch.ones(hidden_size)) | 227 | self.weight = nn.Parameter(torch.ones(hidden_size)) |
| 227 | self.eps = eps | 228 | self.eps = eps |
| 228 | 229 | ||
| 229 | def forward(self, x): | 230 | def forward(self, x): |
| 230 | return torch_npu.npu_rms_norm(x.to(self.weight.dtype), self.weight, epsilon=self.eps)[0] | 231 | return torch_npu.npu_rms_norm(x.to(self.weight.dtype), self.weight, epsilon=self.eps)[0] |
| 231 | ``` | 232 | ``` |
| 232 | 233 | ||
| 233 | ### 3. 启动训练 | 234 | ### 3. 启动训练 |
| 234 | 235 | ||
| @@ -5,16 +5,16 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [简介](#jump0) | 8 | - [简介](#简介) |
| 9 | - [环境安装](#jump1) | 9 | - [环境安装](#环境安装) |
| 10 | - [仓库拉取](#jump1.1) | 10 | - [仓库拉取](#1-仓库拉取) |
| 11 | - [环境搭建](#jump1.2) | 11 | - [环境搭建](#2-环境搭建) |
| 12 | - [权重下载](#jump2) | 12 | - [权重下载](#权重下载) |
| 13 | - [数据集准备及处理](#jump3) | 13 | - [数据集准备及处理](#数据集准备及处理) |
| 14 | - [训练](#jump4) | 14 | - [训练](#训练) |
| 15 | - [准备工作](#jump4.1) | 15 | - [准备工作](#1-准备工作) |
| 16 | - [启动训练](#jump4.2) | 16 | - [启动训练](#2-启动训练) |
| 17 | - [环境变量声明](#jump6) | 17 | - [环境变量声明](#环境变量声明) |
| 18 | 18 | ||
| 19 | <a id="jump0"></a> | 19 | <a id="jump0"></a> |
| 20 | 20 | ||
| @@ -134,11 +134,11 @@ $playground | |||
| 134 | 134 | ||
| 135 | 1. 以图文理解的微调任务为例,可根据实际情况修改[启动脚本](../../examples/deepseekocr/finetune_ocr.sh)的配置,以下配置必须修改: | 135 | 1. 以图文理解的微调任务为例,可根据实际情况修改[启动脚本](../../examples/deepseekocr/finetune_ocr.sh)的配置,以下配置必须修改: |
| 136 | 136 | ||
| 137 | ``` shell | 137 | ``` shell |
| 138 | DATA_PATH="./data/output.jsonl" # 数据集的文件 | 138 | DATA_PATH="./data/output.jsonl" # 数据集的文件 |
| 139 | DATA_DIR="./data" # 数据集依赖图文等文件的目录 | 139 | DATA_DIR="./data" # 数据集依赖图文等文件的目录 |
| 140 | LOAD_PATH="./ckpt/deepseek-ai/DeepSeek-OCR" # huggingface下载的权重路径 | 140 | LOAD_PATH="./ckpt/deepseek-ai/DeepSeek-OCR" # huggingface下载的权重路径 |
| 141 | ``` | 141 | ``` |
| 142 | 142 | ||
| 143 | 2. 根据使用机器的情况,修改`NNODES`、`NPUS_PER_NODE`配置, 例如单机 A2 可设置`NNODES`为 1 、`NPUS_PER_NODE`为8; | 143 | 2. 根据使用机器的情况,修改`NNODES`、`NPUS_PER_NODE`配置, 例如单机 A2 可设置`NNODES`为 1 、`NPUS_PER_NODE`为8; |
| 144 | 144 | ||
| @@ -146,9 +146,9 @@ LOAD_PATH="./ckpt/deepseek-ai/DeepSeek-OCR" # huggingface下载的权重路径 | |||
| 146 | 146 | ||
| 147 | 4. 上述注意点修改完毕后,可启动脚本开启训练: | 147 | 4. 上述注意点修改完毕后,可启动脚本开启训练: |
| 148 | 148 | ||
| 149 | ```bash | 149 | ```bash |
| 150 | bash examples/deepseekocr/finetune_ocr.sh | 150 | bash examples/deepseekocr/finetune_ocr.sh |
| 151 | ``` | 151 | ``` |
| 152 | 152 | ||
| 153 | <a id="jump6"></a> | 153 | <a id="jump6"></a> |
| 154 | 154 | ||
| @@ -5,16 +5,16 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [简介](#jump0) | 8 | - [简介](#简介) |
| 9 | - [环境安装](#jump1) | 9 | - [环境安装](#环境安装) |
| 10 | - [仓库拉取](#jump1.1) | 10 | - [仓库拉取](#1-仓库拉取) |
| 11 | - [环境搭建](#jump1.2) | 11 | - [环境搭建](#2-环境搭建) |
| 12 | - [权重下载](#jump2) | 12 | - [权重下载](#权重下载) |
| 13 | - [数据集准备及处理](#jump3) | 13 | - [数据集准备及处理](#数据集准备及处理) |
| 14 | - [训练](#jump4) | 14 | - [训练](#训练) |
| 15 | - [准备工作](#jump4.1) | 15 | - [准备工作](#1-准备工作) |
| 16 | - [启动训练](#jump4.2) | 16 | - [启动训练](#2-启动训练) |
| 17 | - [环境变量声明](#jump6) | 17 | - [环境变量声明](#环境变量声明) |
| 18 | 18 | ||
| 19 | <a id="jump0"></a> | 19 | <a id="jump0"></a> |
| 20 | 20 | ||
| @@ -125,11 +125,11 @@ $playground | |||
| 125 | 125 | ||
| 126 | 1. 以图文理解的微调任务为例,可根据实际情况修改[启动脚本](../../examples/deepseekocr/finetune_ocr.sh)的配置,以下配置必须修改: | 126 | 1. 以图文理解的微调任务为例,可根据实际情况修改[启动脚本](../../examples/deepseekocr/finetune_ocr.sh)的配置,以下配置必须修改: |
| 127 | 127 | ||
| 128 | ``` shell | 128 | ``` shell |
| 129 | DATA_PATH="./data/output.jsonl" # 数据集的文件 | 129 | DATA_PATH="./data/output.jsonl" # 数据集的文件 |
| 130 | DATA_DIR="./data" # 数据集依赖图文等文件的目录 | 130 | DATA_DIR="./data" # 数据集依赖图文等文件的目录 |
| 131 | LOAD_PATH="./ckpt/deepseek-ai/DeepSeek-OCR-2" # huggingface下载的权重路径 | 131 | LOAD_PATH="./ckpt/deepseek-ai/DeepSeek-OCR-2" # huggingface下载的权重路径 |
| 132 | ``` | 132 | ``` |
| 133 | 133 | ||
| 134 | 2. 根据使用机器的情况,修改`NNODES`、`NPUS_PER_NODE`配置, 例如可设置`NNODES`为 1 、`NPUS_PER_NODE`为8; | 134 | 2. 根据使用机器的情况,修改`NNODES`、`NPUS_PER_NODE`配置, 例如可设置`NNODES`为 1 、`NPUS_PER_NODE`为8; |
| 135 | 135 | ||
| @@ -137,9 +137,9 @@ LOAD_PATH="./ckpt/deepseek-ai/DeepSeek-OCR-2" # huggingface下载的权重路径 | |||
| 137 | 137 | ||
| 138 | 4. 上述注意点修改完毕后,可启动脚本开启训练: | 138 | 4. 上述注意点修改完毕后,可启动脚本开启训练: |
| 139 | 139 | ||
| 140 | ```bash | 140 | ```bash |
| 141 | bash examples/deepseekocr2/finetune_ocr2.sh | 141 | bash examples/deepseekocr2/finetune_ocr2.sh |
| 142 | ``` | 142 | ``` |
| 143 | 143 | ||
| 144 | <a id="jump6"></a> | 144 | <a id="jump6"></a> |
| 145 | 145 | ||
| @@ -3,14 +3,14 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [Qwen Image Edit](#jump1) | 6 | - [Qwen Image Edit](#qwen-image-edit) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [微调](#微调) | 11 | - [微调](#微调) |
| 12 | - [环境搭建](#环境搭建) | 12 | - [环境搭建](#环境搭建) |
| 13 | - [微调](#jump2) | 13 | - [微调](#微调-1) |
| 14 | - [推理](#推理) | 14 | - [推理](#推理) |
| 15 | - [环境搭建及运行](#环境搭建及运行) | 15 | - [环境搭建及运行](#环境搭建及运行) |
| 16 | - [环境变量声明](#环境变量声明) | 16 | - [环境变量声明](#环境变量声明) |
| @@ -243,11 +243,11 @@ Qwen Image Edit 在 **昇腾芯片** 和 **参考芯片** 上的性能对比: | |||
| 243 | 243 | ||
| 244 | 【Qwen Image Edit模型推理】 | 244 | 【Qwen Image Edit模型推理】 |
| 245 | 245 | ||
| 246 | ```shell | 246 | ```shell |
| 247 | vim ./examples/qwen_image/model_inference/inference_qwen_image_edit_bf16.py # 进入运行推理的Python文件 | 247 | vim ./examples/qwen_image/model_inference/inference_qwen_image_edit_bf16.py # 进入运行推理的Python文件 |
| 248 | ``` | 248 | ``` |
| 249 | 249 | ||
| 250 | 1. 修改路径 | 250 | 1. 修改路径 |
| 251 | 251 | ||
| 252 | ```python | 252 | ```python |
| 253 | transformer_path = "Qwen/Qwen-Image-Edit/transformer" | 253 | transformer_path = "Qwen/Qwen-Image-Edit/transformer" |
| @@ -268,41 +268,42 @@ Qwen Image Edit 在 **昇腾芯片** 和 **参考芯片** 上的性能对比: | |||
| 268 | ```python | 268 | ```python |
| 269 | transformer_path = "Qwen/Qwen-Image-Edit/transformer" | 269 | transformer_path = "Qwen/Qwen-Image-Edit/transformer" |
| 270 | transformer_files = [ | 270 | transformer_files = [ |
| 271 | "${transformer_path}/diffusion_pytorch_model-00001-of-00005.safetensors", | 271 | "${transformer_path}/diffusion_pytorch_model-00001-of-00005.safetensors", |
| 272 | "${transformer_path}/diffusion_pytorch_model-00002-of-00005.safetensors", | 272 | "${transformer_path}/diffusion_pytorch_model-00002-of-00005.safetensors", |
| 273 | "${transformer_path}/diffusion_pytorch_model-00003-of-00005.safetensors", | 273 | "${transformer_path}/diffusion_pytorch_model-00003-of-00005.safetensors", |
| 274 | "${transformer_path}/diffusion_pytorch_model-00004-of-00005.safetensors", | 274 | "${transformer_path}/diffusion_pytorch_model-00004-of-00005.safetensors", |
| 275 | "${transformer_path}/diffusion_pytorch_model-00005-of-00005.safetensors" | 275 | "${transformer_path}/diffusion_pytorch_model-00005-of-00005.safetensors" |
| 276 | ] | 276 | ] |
| 277 | 277 | ||
| 278 | text_encoder_path = "Qwen/Qwen-Image-Edit/text_encoder" | 278 | text_encoder_path = "Qwen/Qwen-Image-Edit/text_encoder" |
| 279 | text_encoder_files = [ | 279 | text_encoder_files = [ |
| 280 | "${text_encoder_path}/model-00001-of-00004.safetensors", | 280 | "${text_encoder_path}/model-00001-of-00004.safetensors", |
| 281 | "${text_encoder_path}/model-00002-of-00004.safetensors", | 281 | "${text_encoder_path}/model-00002-of-00004.safetensors", |
| 282 | "${text_encoder_path}/model-00003-of-00004.safetensors", | 282 | "${text_encoder_path}/model-00003-of-00004.safetensors", |
| 283 | "${text_encoder_path}/model-00004-of-00004.safetensors" | 283 | "${text_encoder_path}/model-00004-of-00004.safetensors" |
| 284 | ] | 284 | ] |
| 285 | ``` | 285 | ``` |
| 286 | 286 | ||
| 287 | 2. 创建推理结果路径 | 287 | 2. 创建推理结果路径 |
| 288 | ```shell | ||
| 289 | mkdir -p inference | ||
| 290 | ``` | ||
| 291 | 288 | ||
| 292 | 3. 运行代码 | 289 | ```shell |
| 290 | mkdir -p inference | ||
| 291 | ``` | ||
| 293 | 292 | ||
| 294 | ```shell | 293 | 3. 运行代码 |
| 295 | source /usr/local/Ascend/cann/set_env.sh | 294 | |
| 296 | python examples/qwen_image/model_inference/inference_qwen_image_edit_bf16.py | 295 | ```shell |
| 297 | ``` | 296 | source /usr/local/Ascend/cann/set_env.sh |
| 297 | python examples/qwen_image/model_inference/inference_qwen_image_edit_bf16.py | ||
| 298 | ``` | ||
| 298 | 299 | ||
| 299 | 【lora微调Qwen Image Edit模型推理】 | 300 | 【lora微调Qwen Image Edit模型推理】 |
| 300 | 301 | ||
| 301 | ```shell | 302 | ```shell |
| 302 | vim ./examples/qwen_image/model_inference/inference_qwen_image_edit_lora_bf16.py | 303 | vim ./examples/qwen_image/model_inference/inference_qwen_image_edit_lora_bf16.py |
| 303 | ``` | 304 | ``` |
| 304 | 305 | ||
| 305 | 1. 修改路径 | 306 | 1. 修改路径 |
| 306 | 307 | ||
| 307 | ```python | 308 | ```python |
| 308 | transformer_path = "Qwen/Qwen-Image-Edit/transformer" | 309 | transformer_path = "Qwen/Qwen-Image-Edit/transformer" |
| @@ -322,17 +323,18 @@ Qwen Image Edit 在 **昇腾芯片** 和 **参考芯片** 上的性能对比: | |||
| 322 | 323 | ||
| 323 | `lora_path`是存放 lora 权重的绝对路径,其他权重同上 | 324 | `lora_path`是存放 lora 权重的绝对路径,其他权重同上 |
| 324 | 325 | ||
| 325 | 2. 创建推理结果路径 | 326 | 2. 创建推理结果路径 |
| 326 | ```shell | ||
| 327 | mkdir -p inference | ||
| 328 | ``` | ||
| 329 | 327 | ||
| 330 | 3. 运行代码 | 328 | ```shell |
| 329 | mkdir -p inference | ||
| 330 | ``` | ||
| 331 | 331 | ||
| 332 | ```shell | 332 | 3. 运行代码 |
| 333 | source /usr/local/Ascend/cann/set_env.sh | 333 | |
| 334 | python examples/qwen_image/model_inference/inference_qwen_image_edit_lora_bf16.py | 334 | ```shell |
| 335 | ``` | 335 | source /usr/local/Ascend/cann/set_env.sh |
| 336 | python examples/qwen_image/model_inference/inference_qwen_image_edit_lora_bf16.py | ||
| 337 | ``` | ||
| 336 | 338 | ||
| 337 | <a id="jump3"></a> | 339 | <a id="jump3"></a> |
| 338 | 340 | ||
| @@ -3,15 +3,15 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [FLUX-Kontext](#jump1) | 6 | - [FLUX-Kontext](#flux-kontext) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [微调](#微调) | 8 | - [微调](#微调) |
| 9 | - [环境搭建](#环境搭建) | 9 | - [环境搭建](#环境搭建) |
| 10 | - [微调](#jump2) | 10 | - [微调](#微调-1) |
| 11 | - [性能](#性能) | 11 | - [性能](#性能) |
| 12 | - [推理](#推理) | 12 | - [推理](#推理) |
| 13 | - [环境搭建及运行](#环境搭建及运行) | 13 | - [环境搭建及运行](#环境搭建及运行) |
| 14 | - [性能](#jump3) | 14 | - [性能](#性能-1) |
| 15 | - [环境变量声明](#环境变量声明) | 15 | - [环境变量声明](#环境变量声明) |
| 16 | - [引用](#引用) | 16 | - [引用](#引用) |
| 17 | - [公网地址说明](#公网地址说明) | 17 | - [公网地址说明](#公网地址说明) |
| @@ -3,15 +3,15 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [FLUX](#jump1) | 6 | - [FLUX](#flux) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [微调](#微调) | 8 | - [微调](#微调) |
| 9 | - [环境搭建](#环境搭建) | 9 | - [环境搭建](#环境搭建) |
| 10 | - [微调](#jump2) | 10 | - [微调](#微调-1) |
| 11 | - [性能](#性能) | 11 | - [性能](#性能) |
| 12 | - [推理](#推理) | 12 | - [推理](#推理) |
| 13 | - [环境搭建及运行](#环境搭建及运行) | 13 | - [环境搭建及运行](#环境搭建及运行) |
| 14 | - [性能](#jump3) | 14 | - [性能](#性能-1) |
| 15 | - [环境变量声明](#环境变量声明) | 15 | - [环境变量声明](#环境变量声明) |
| 16 | - [引用](#引用) | 16 | - [引用](#引用) |
| 17 | - [公网地址说明](#公网地址说明) | 17 | - [公网地址说明](#公网地址说明) |
| @@ -3,20 +3,20 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [FLUX2](#jump1) | 6 | - [FLUX2](#flux2) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [环境搭建](#环境搭建) | 8 | - [环境搭建](#环境搭建) |
| 9 | - [微调T2I](#jump2) | 9 | - [微调T2I](#微调t2i) |
| 10 | - [准备工作](#jump3) | 10 | - [准备工作](#准备工作) |
| 11 | - [性能](#jump4) | 11 | - [性能](#性能) |
| 12 | - [微调Img2Img](#jump5) | 12 | - [微调Img2Img](#微调img2img) |
| 13 | - [准备工作](#jump6) | 13 | - [准备工作](#准备工作-1) |
| 14 | - [性能](#jump7) | 14 | - [性能](#性能-1) |
| 15 | - [推理](#推理) | 15 | - [推理](#推理) |
| 16 | - [环境搭建及运行](#环境搭建及运行) | 16 | - [环境搭建及运行](#环境搭建及运行) |
| 17 | - [推理T2I](#jump8) | 17 | - [推理T2I](#推理t2i) |
| 18 | - [推理I2I](#jump9) | 18 | - [推理I2I](#推理i2i) |
| 19 | - [性能](#jump10) | 19 | - [性能](#性能-2) |
| 20 | - [环境变量声明](#环境变量声明) | 20 | - [环境变量声明](#环境变量声明) |
| 21 | - [引用](#引用) | 21 | - [引用](#引用) |
| 22 | - [公网地址说明](#公网地址说明) | 22 | - [公网地址说明](#公网地址说明) |
| @@ -3,18 +3,18 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [HiDream](#jump1) | 6 | - [HiDream](#hidream-i1) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [微调](#微调) | 11 | - [微调](#微调) |
| 12 | - [环境搭建](#环境搭建) | 12 | - [环境搭建](#环境搭建) |
| 13 | - [微调](#jump2) | 13 | - [微调](#微调-1) |
| 14 | - [微调性能](#微调性能) | 14 | - [微调性能](#微调性能) |
| 15 | - [推理](#推理) | 15 | - [推理](#推理) |
| 16 | - [环境搭建及运行](#环境搭建及运行) | 16 | - [环境搭建及运行](#环境搭建及运行) |
| 17 | - [推理性能](#jump3) | 17 | - [推理性能](#推理性能) |
| 18 | - [环境变量声明](#环境变量声明) | 18 | - [环境变量声明](#环境变量声明) |
| 19 | - [引用](#引用) | 19 | - [引用](#引用) |
| 20 | - [公网地址说明](#公网地址说明) | 20 | - [公网地址说明](#公网地址说明) |
| @@ -5,7 +5,7 @@ | |||
| 5 | - [推理](#推理) | 5 | - [推理](#推理) |
| 6 | - [环境搭建](#环境搭建) | 6 | - [环境搭建](#环境搭建) |
| 7 | - [推理](#推理) | 7 | - [推理](#推理) |
| 8 | - [引用](#jump1) | 8 | - [引用](#引用) |
| 9 | - [公网地址说明](#公网地址说明) | 9 | - [公网地址说明](#公网地址说明) |
| 10 | 10 | ||
| 11 | # kolors | 11 | # kolors |
| @@ -3,14 +3,14 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [Qwen Image](#jump1) | 6 | - [Qwen Image](#qwen-image) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [微调](#微调) | 11 | - [微调](#微调) |
| 12 | - [环境搭建](#环境搭建) | 12 | - [环境搭建](#环境搭建) |
| 13 | - [微调](#jump2) | 13 | - [微调](#微调-1) |
| 14 | - [推理](#推理) | 14 | - [推理](#推理) |
| 15 | - [环境搭建及运行](#环境搭建及运行) | 15 | - [环境搭建及运行](#环境搭建及运行) |
| 16 | - [环境变量声明](#环境变量声明) | 16 | - [环境变量声明](#环境变量声明) |
| @@ -3,15 +3,15 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [SANA](#jump1) | 6 | - [SANA](#sana) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [微调](#微调) | 8 | - [微调](#微调) |
| 9 | - [环境搭建](#环境搭建) | 9 | - [环境搭建](#环境搭建) |
| 10 | - [微调](#jump2) | 10 | - [微调](#微调-1) |
| 11 | - [性能](#性能) | 11 | - [性能](#性能) |
| 12 | - [推理](#推理) | 12 | - [推理](#推理) |
| 13 | - [环境搭建及运行](#环境搭建及运行) | 13 | - [环境搭建及运行](#环境搭建及运行) |
| 14 | - [性能](#jump3) | 14 | - [性能](#性能-1) |
| 15 | - [环境变量声明](#环境变量声明) | 15 | - [环境变量声明](#环境变量声明) |
| 16 | - [引用](#引用) | 16 | - [引用](#引用) |
| 17 | - [公网地址说明](#公网地址说明) | 17 | - [公网地址说明](#公网地址说明) |
| @@ -3,11 +3,11 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [SD3/SD3.5](#jump1) | 6 | - [SD3/SD3.5](#stable-diffusion-3--stable-diffusion-35) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [微调](#微调) | 8 | - [微调](#微调) |
| 9 | - [环境搭建](#环境搭建) | 9 | - [环境搭建](#环境搭建) |
| 10 | - [微调](#jump2) | 10 | - [微调](#微调-1) |
| 11 | - [性能](#性能) | 11 | - [性能](#性能) |
| 12 | - [推理](#推理) | 12 | - [推理](#推理) |
| 13 | - [环境搭建及运行](#环境搭建及运行) | 13 | - [环境搭建及运行](#环境搭建及运行) |
| @@ -89,7 +89,7 @@ | |||
| 89 | 89 | ||
| 90 | <a id="jump2"></a> | 90 | <a id="jump2"></a> |
| 91 | 91 | ||
| 92 | ## 微调 | 92 | ### 微调 |
| 93 | 93 | ||
| 94 | 1. 【准备微调数据集】 | 94 | 1. 【准备微调数据集】 |
| 95 | 95 | ||
| @@ -3,19 +3,19 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [SDXL](#jump1) | 6 | - [SDXL](#stable-diffusion-xl) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [预训练](#预训练) | 8 | - [预训练](#预训练) |
| 9 | - [环境搭建](#环境搭建) | 9 | - [环境搭建](#环境搭建) |
| 10 | - [预训练](#jump2) | 10 | - [预训练](#预训练-1) |
| 11 | - [性能](#性能) | 11 | - [性能](#性能) |
| 12 | - [微调](#微调) | 12 | - [微调](#微调) |
| 13 | - [环境搭建](#jump3) | 13 | - [环境搭建](#环境搭建-1) |
| 14 | - [微调](#jump3.1) | 14 | - [微调](#微调-1) |
| 15 | - [性能](#jump3.2) | 15 | - [性能](#性能-1) |
| 16 | - [推理](#推理) | 16 | - [推理](#推理) |
| 17 | - [环境搭建及运行](#环境搭建及运行) | 17 | - [环境搭建及运行](#环境搭建及运行) |
| 18 | - [性能](#jump4) | 18 | - [性能](#性能-2) |
| 19 | - [环境变量声明](#环境变量声明) | 19 | - [环境变量声明](#环境变量声明) |
| 20 | - [引用](#引用) | 20 | - [引用](#引用) |
| 21 | - [公网地址说明](#公网地址说明) | 21 | - [公网地址说明](#公网地址说明) |
| @@ -205,7 +205,7 @@ | |||
| 205 | config_gc() | 205 | config_gc() |
| 206 | ``` | 206 | ``` |
| 207 | 207 | ||
| 208 | <a id="jump2.1"></a> | 208 | <a id="jump2.1"></a> |
| 209 | 209 | ||
| 210 | 3. 【Optional】Ubuntu系统需在文件1216行附近添加 `accelerator.print("")` | 210 | 3. 【Optional】Ubuntu系统需在文件1216行附近添加 `accelerator.print("")` |
| 211 | 211 | ||
| @@ -15,7 +15,6 @@ | |||
| 15 | - [权重下载](#1-权重下载) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [数据集准备及处理](#数据集准备及处理) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据集下载](#1-数据集下载) | 17 | - [数据集下载](#1-数据集下载) |
| 18 | - [数据预处理](#2-数据预处理) | ||
| 19 | - [微调](#微调) | 18 | - [微调](#微调) |
| 20 | - [准备工作](#1-准备工作) | 19 | - [准备工作](#1-准备工作) |
| 21 | - [启动微调](#2-启动微调) | 20 | - [启动微调](#2-启动微调) |
| @@ -5,23 +5,22 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取](#jump1.1) | 9 | - [仓库拉取](#1-仓库拉取) |
| 10 | - [环境搭建](#jump1.2) | 10 | - [环境搭建](#2-环境搭建) |
| 11 | - [权重下载及转换](#jump2) | 11 | - [权重下载及转换](#权重下载及转换) |
| 12 | - [权重下载](#jump2.1) | 12 | - [权重下载](#1-权重下载) |
| 13 | - [权重转换hf2mm](#jump2.2) | 13 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 14 | - [数据集准备及处理](#jump3) | 14 | - [数据集准备及处理](#数据集准备及处理) |
| 15 | - [数据集下载](#jump3.1) | 15 | - [微调](#微调) |
| 16 | - [微调](#jump4) | 16 | - [准备工作](#1-准备工作) |
| 17 | - [准备工作](#jump4.1) | 17 | - [配置参数](#2-配置参数) |
| 18 | - [配置参数](#jump4.2) | 18 | - [启动微调](#3-启动微调) |
| 19 | - [启动微调](#jump4.3) | 19 | - [推理](#推理) |
| 20 | - [推理](#jump5) | 20 | - [配置参数](#1-配置参数) |
| 21 | - [准备工作](#jump5.1) | 21 | - [启动推理](#2-启动推理) |
| 22 | - [启动推理](#jump5.2) | 22 | - [环境变量声明](#环境变量声明) |
| 23 | - [环境变量声明](#jump8) | 23 | - [注意事项](#注意事项) |
| 24 | - [注意事项](#jump9) | ||
| 25 | 24 | ||
| 26 | --- | 25 | --- |
| 27 | <a id="jump1"></a> | 26 | <a id="jump1"></a> |
| @@ -288,7 +287,7 @@ bash examples/glm4.1v/finetune_glm4.1v_9b.sh | |||
| 288 | 287 | ||
| 289 | <a id="jump5.1"></a> | 288 | <a id="jump5.1"></a> |
| 290 | 289 | ||
| 291 | ### 1、配置参数 | 290 | ### 1. 配置参数 |
| 292 | 291 | ||
| 293 | 根据实际情况修改examples/glm4.1v/inference_glm4.1v_9b.json和examples/glm4.1v/inference_glm4.1v_9b.sh中的路径配置,包括tokenizer的加载路径from_pretrained。需注意 | 292 | 根据实际情况修改examples/glm4.1v/inference_glm4.1v_9b.json和examples/glm4.1v/inference_glm4.1v_9b.sh中的路径配置,包括tokenizer的加载路径from_pretrained。需注意 |
| 294 | 293 | ||
| @@ -298,7 +297,7 @@ bash examples/glm4.1v/finetune_glm4.1v_9b.sh | |||
| 298 | 297 | ||
| 299 | <a id="jump5.2"></a> | 298 | <a id="jump5.2"></a> |
| 300 | 299 | ||
| 301 | ### 2、启动推理 | 300 | ### 2. 启动推理 |
| 302 | 301 | ||
| 303 | ```shell | 302 | ```shell |
| 304 | bash examples/glm4.1v/inference_glm4.1v_9b.sh | 303 | bash examples/glm4.1v/inference_glm4.1v_9b.sh |
| @@ -8,21 +8,21 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据集下载](#jump3.1) | 17 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 18 | - [混合数据集处理](#jump3.2) | 18 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 19 | - [微调](#jump4) | 19 | - [微调](#微调) |
| 20 | - [准备工作](#jump4.1) | 20 | - [准备工作](#1-准备工作) |
| 21 | - [配置参数](#jump4.2) | 21 | - [配置参数](#2-配置参数) |
| 22 | - [启动微调](#jump4.3) | 22 | - [启动微调](#3-启动微调) |
| 23 | - [启动推理](#jump4.4) | 23 | - [启动推理](#4-hf权重转换) |
| 24 | - [环境变量声明](#jump10) | 24 | - [环境变量声明](#环境变量声明) |
| 25 | - [注意事项](#jump11) | 25 | - [注意事项](#注意事项) |
| 26 | 26 | ||
| 27 | ## 版本说明 | 27 | ## 版本说明 |
| 28 | 28 | ||
| @@ -89,64 +89,64 @@ pip install decord==0.6.0 | |||
| 89 | 89 | ||
| 90 | 1. 下载预训练的DiT和VAE权重 | 90 | 1. 下载预训练的DiT和VAE权重 |
| 91 | 91 | ||
| 92 | ``` bash | 92 | ``` bash |
| 93 | mkdir HunyuanVideo1.5 | 93 | mkdir HunyuanVideo1.5 |
| 94 | hf download tencent/HunyuanVideo-1.5 --local-dir ./HunyuanVideo1.5 | 94 | hf download tencent/HunyuanVideo-1.5 --local-dir ./HunyuanVideo1.5 |
| 95 | ``` | 95 | ``` |
| 96 | 96 | ||
| 97 | 离线链接: | 97 | 离线链接: |
| 98 | 98 | ||
| 99 | - [tencent/HunyuanVideo-1.5](https://huggingface.co/tencent/HunyuanVideo-1.5/tree/main) | 99 | - [tencent/HunyuanVideo-1.5](https://huggingface.co/tencent/HunyuanVideo-1.5/tree/main) |
| 100 | 100 | ||
| 101 | 2. 下载文本编码器 | 101 | 2. 下载文本编码器 |
| 102 | 102 | ||
| 103 | ``` bash | 103 | ``` bash |
| 104 | hf download Qwen/Qwen2.5-VL-7B-Instruct --local-dir ./HunyuanVideo1.5/text_encoder/llm | 104 | hf download Qwen/Qwen2.5-VL-7B-Instruct --local-dir ./HunyuanVideo1.5/text_encoder/llm |
| 105 | hf download google/byt5-small --local-dir ./HunyuanVideo1.5/text_encoder/byt5-small | 105 | hf download google/byt5-small --local-dir ./HunyuanVideo1.5/text_encoder/byt5-small |
| 106 | modelscope download --model AI-ModelScope/Glyph-SDXL-v2 --local_dir ./HunyuanVideo1.5/text_encoder/Glyph-SDXL-v2 | 106 | modelscope download --model AI-ModelScope/Glyph-SDXL-v2 --local_dir ./HunyuanVideo1.5/text_encoder/Glyph-SDXL-v2 |
| 107 | ``` | 107 | ``` |
| 108 | 108 | ||
| 109 | 离线链接: | 109 | 离线链接: |
| 110 | 110 | ||
| 111 | - [Qwen/Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct/tree/main) | 111 | - [Qwen/Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct/tree/main) |
| 112 | - [google/byt5-small](https://huggingface.co/google/byt5-small/tree/main) | 112 | - [google/byt5-small](https://huggingface.co/google/byt5-small/tree/main) |
| 113 | - [AI-ModelScope/Glyph-SDXL-v2](https://modelscope.cn/models/AI-ModelScope/Glyph-SDXL-v2/files) | 113 | - [AI-ModelScope/Glyph-SDXL-v2](https://modelscope.cn/models/AI-ModelScope/Glyph-SDXL-v2/files) |
| 114 | 114 | ||
| 115 | 3. 下载视觉编码器 | 115 | 3. 下载视觉编码器 |
| 116 | 116 | ||
| 117 | ```bash | 117 | ```bash |
| 118 | hf download black-forest-labs/FLUX.1-Redux-dev --local-dir ./ckpts/vision_encoder/siglip --token <your_hf_token> | 118 | hf download black-forest-labs/FLUX.1-Redux-dev --local-dir ./ckpts/vision_encoder/siglip --token <your_hf_token> |
| 119 | ``` | 119 | ``` |
| 120 | 120 | ||
| 121 | 离线链接: | 121 | 离线链接: |
| 122 | 122 | ||
| 123 | - [black-forest-labs/FLUX.1-Redux-dev](https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev/tree/main) | 123 | - [black-forest-labs/FLUX.1-Redux-dev](https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev/tree/main) |
| 124 | 124 | ||
| 125 | 4. 最终文件结构如下: | 125 | 4. 最终文件结构如下: |
| 126 | 126 | ||
| 127 | ```bash | 127 | ```bash |
| 128 | MindSpeed-MM/HunyuanVideo1.5 | 128 | MindSpeed-MM/HunyuanVideo1.5 |
| 129 | ├── text_encoder | 129 | ├── text_encoder |
| 130 | │ ├── Glyph-SDXL-v2 | 130 | │ ├── Glyph-SDXL-v2 |
| 131 | │ │ ├── assets | 131 | │ │ ├── assets |
| 132 | │ │ │ ├── color_idx.json | 132 | │ │ │ ├── color_idx.json |
| 133 | │ │ │ ├── multilingual_10-lang_idx.json | 133 | │ │ │ ├── multilingual_10-lang_idx.json |
| 134 | │ │ │ └── ... | 134 | │ │ │ └── ... |
| 135 | │ │ └── checkpoints | 135 | │ │ └── checkpoints |
| 136 | │ │ ├── byt5_model.pt | 136 | │ │ ├── byt5_model.pt |
| 137 | │ │ └── ... | 137 | │ │ └── ... |
| 138 | │ ├── llm | 138 | │ ├── llm |
| 139 | │ └── byt5-small | 139 | │ └── byt5-small |
| 140 | └─ scheduler | 140 | └─ scheduler |
| 141 | └─ transformer | 141 | └─ transformer |
| 142 | │ ├── 720p_t2v | 142 | │ ├── 720p_t2v |
| 143 | │ │ ├── config.json | 143 | │ │ ├── config.json |
| 144 | │ │ ├── diffusion_pytorch_model.safetensors | 144 | │ │ ├── diffusion_pytorch_model.safetensors |
| 145 | └─ vae | 145 | └─ vae |
| 146 | └─ scheduler | 146 | └─ scheduler |
| 147 | └─ vision_encoder | 147 | └─ vision_encoder |
| 148 | └─ upsampler | 148 | └─ upsampler |
| 149 | ``` | 149 | ``` |
| 150 | 150 | ||
| 151 | --- | 151 | --- |
| 152 | 152 | ||
| @@ -8,20 +8,20 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [仓库拉取](#jump1.1) | 12 | - [仓库拉取](#1-仓库拉取) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据集下载](#jump3.1) | 17 | - [数据集下载](#1-数据集下载) |
| 18 | - [微调](#jump4) | 18 | - [微调](#微调) |
| 19 | - [推理](#jump5) | 19 | - [推理](#推理) |
| 20 | - [准备工作](#jump5.1) | 20 | - [准备工作](#1-准备工作) |
| 21 | - [配置参数](#jump5.2) | 21 | - [配置参数](#2-配置参数) |
| 22 | - [启动推理](#jump5.3) | 22 | - [启动推理](#3-启动推理) |
| 23 | - [环境变量声明](#jump6) | 23 | - [环境变量声明](#环境变量声明) |
| 24 | - [注意事项](#jump7) | 24 | - [注意事项](#注意事项) |
| 25 | 25 | ||
| 26 | ## 版本说明 | 26 | ## 版本说明 |
| 27 | 27 | ||
| @@ -8,17 +8,17 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [数据集准备及处理](#jump2) | 14 | - [数据集准备及处理](#数据集准备及处理) |
| 15 | - [数据集下载](#jump2.1) | 15 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 16 | - [数据混合数据集处理](#jump2.2) | 16 | - [数据混合数据集处理](#2纯文本或有图无图混合训练数据-以llava-instruct-150k为例) |
| 17 | - [训练](#jump3) | 17 | - [训练](#训练) |
| 18 | - [准备工作](#jump3.1) | 18 | - [准备工作](#1-准备工作) |
| 19 | - [启动训练](#jump3.2) | 19 | - [启动训练](#2-启动训练) |
| 20 | - [环境变量声明](#jump4) | 20 | - [环境变量声明](#环境变量声明) |
| 21 | - [注意事项](#jump5) | 21 | - [注意事项](#注意事项) |
| 22 | 22 | ||
| 23 | ## 版本说明 | 23 | ## 版本说明 |
| 24 | 24 | ||
| @@ -44,7 +44,7 @@ commit_id=3367c8d | |||
| 44 | 44 | ||
| 45 | 【模型开发时推荐使用配套的环境版本】 | 45 | 【模型开发时推荐使用配套的环境版本】 |
| 46 | 46 | ||
| 47 | 请参考[安装指南](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/user-guide/installation.md),完成昇腾软件安装。 | 47 | 请参考[安装指南](https://gitcode.com/Ascend/MindSpeed-MM/tree/master/docs/zh/pytorch/installation.md),完成昇腾软件安装。 |
| 48 | 48 | ||
| 49 | ‼️ 部分特性依赖较新版本的CANN,请使用 8.5.0 以上版本: | 49 | ‼️ 部分特性依赖较新版本的CANN,请使用 8.5.0 以上版本: |
| 50 | 50 | ||
| @@ -8,23 +8,23 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [前置准备](#jump0) | 11 | - [前置准备](#前置准备) |
| 12 | - [下载模型文件](#jump0.1) | 12 | - [下载模型文件](#1-下载模型文件) |
| 13 | - [环境安装](#jump1) | 13 | - [环境安装](#环境安装) |
| 14 | - [环境准备](#jump1.1) | 14 | - [环境准备](#1-环境准备) |
| 15 | - [环境搭建](#jump1.2) | 15 | - [环境搭建](#2-环境搭建) |
| 16 | - [数据集准备及处理](#jump2) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据格式(ltx2_precomputed)](#jump2.1) | 17 | - [数据格式(ltx2_precomputed)](#1-数据格式ltx2_precomputed) |
| 18 | - [数据集元数据格式](#jump2.1.2) | 18 | - [数据集元数据格式](#11-数据集数据格式) |
| 19 | - [预处理脚本(生成 .precomputed)](#jump2.2) | 19 | - [预处理脚本(生成 .precomputed)](#2-预处理脚本生成-precomputed) |
| 20 | - [基本预处理(仅视频,t2v)](#jump2.2.1) | 20 | - [基本预处理(仅视频,t2v)](#21-基本预处理仅视频t2v) |
| 21 | - [带音频的预处理(t2av)](#jump2.2.2) | 21 | - [带音频的预处理(t2av)](#22-带音频的预处理t2av) |
| 22 | - [预处理目录结构](#jump2.1.1) | 22 | - [预处理目录结构](#23-预处理目录结构) |
| 23 | - [训练](#jump3) | 23 | - [训练](#训练) |
| 24 | - [准备工作](#jump3.1) | 24 | - [准备工作](#1-准备工作) |
| 25 | - [配置文件说明](#jump3.2) | 25 | - [配置文件说明](#2-配置文件说明) |
| 26 | - [启动训练(t2v / t2av)](#jump3.3) | 26 | - [启动训练(t2v / t2av)](#3-启动训练t2v--t2av) |
| 27 | - [环境变量声明](#jump4) | 27 | - [环境变量声明](#环境变量声明) |
| 28 | 28 | ||
| 29 | ## 版本说明 | 29 | ## 版本说明 |
| 30 | 30 | ||
| @@ -8,21 +8,21 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [仓库拉取](#jump1.1) | 12 | - [仓库拉取](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#权重下载) |
| 16 | - [权重转换](#jump2.2) | 16 | - [权重转换](#权重转换) |
| 17 | - [数据集准备及处理](#jump3) | 17 | - [数据集准备及处理](#数据集准备及处理) |
| 18 | - [数据集下载](#jump3.1) | 18 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 19 | - [微调](#jump4) | 19 | - [微调](#微调) |
| 20 | - [准备工作](#jump4.1) | 20 | - [准备工作](#1-准备工作) |
| 21 | - [配置参数](#jump4.2) | 21 | - [配置参数](#2-配置参数) |
| 22 | - [启动微调](#jump4.3) | 22 | - [启动微调](#3-启动微调) |
| 23 | - [启动推理](#jump4.4) | 23 | - [启动推理](#4-启动推理) |
| 24 | - [lora微调](#jump5) | 24 | - [lora微调](#lora微调) |
| 25 | - [环境变量声明](#jump6) | 25 | - [环境变量声明](#环境变量声明) |
| 26 | 26 | ||
| 27 | ## 版本说明 | 27 | ## 版本说明 |
| 28 | 28 | ||
| @@ -286,7 +286,7 @@ mm-convert Mistral3Converter merge_mm_lora_dcp_weight_to_base_hf \ | |||
| 286 | 286 | ||
| 287 | ## 环境变量声明 | 287 | ## 环境变量声明 |
| 288 | 288 | ||
| 289 | 以下列出常见的环境变量,详细的命令参数请见[详细变量声明](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/user-guide/args_readme.md) | 289 | 以下列出常见的环境变量,详细的命令参数请见[详细变量声明](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/pytorch/args_readme.md) |
| 290 | 290 | ||
| 291 | | 环境变量 | 描述 | 取值说明 | | 291 | | 环境变量 | 描述 | 取值说明 | |
| 292 | |-------------------------------|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------| | 292 | |-------------------------------|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------| |
| @@ -252,19 +252,19 @@ CogvideoX训练阶段的启动文件为shell脚本,主要分为如下4个:` | |||
| 252 | 252 | ||
| 253 | 1. 权重配置 | 253 | 1. 权重配置 |
| 254 | 254 | ||
| 255 | 需根据实际任务情况在启动脚本文件(如`pretrain_cogvideox_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 | 255 | 需根据实际任务情况在启动脚本文件(如`pretrain_cogvideox_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./CogVideoX-5B-Converted"`,其中`./CogVideoX-5B-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 |
| 256 | 256 | ||
| 257 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的权重。 | 257 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的权重。 |
| 258 | 258 | ||
| 259 | 2. 数据集路径配置 | 259 | 2. 数据集路径配置 |
| 260 | 260 | ||
| 261 | 根据实际情况修改`data.json`中的数据集路径,分别为`"data_path":"/your_data_path/data.jsonl"`、`"data_folder":"/your_data_path/"`,替换`"/your_data_path/"`为实际的数据集路径。 | 261 | 根据实际情况修改`data.json`中的数据集路径,分别为`"data_path":"/your_data_path/data.jsonl"`、`"data_folder":"/your_data_path/"`,替换`"/your_data_path/"`为实际的数据集路径。 |
| 262 | 262 | ||
| 263 | 3. VAE及T5模型路径配置 | 263 | 3. VAE及T5模型路径配置 |
| 264 | 264 | ||
| 265 | 根据实际情况修改模型参数配置文件(如`model_cogvideox_i2v.json`)以及`data.json`文件中VAE及T5模型文件的实际路径。其中,T5文件的路径字段为`"from_pretrained": "5b-cogvideo/tokenizer"`及`"from_pretrained": "5b-cogvideo"`,替换`5b-cogvideo`为实际的路径;VAE模型文件的路径字段为`"from_pretrained": "3d-vae.pt"`,替换`3d-vae.pt`为实际的路径。 | 265 | 根据实际情况修改模型参数配置文件(如`model_cogvideox_i2v.json`)以及`data.json`文件中VAE及T5模型文件的实际路径。其中,T5文件的路径字段为`"from_pretrained": "5b-cogvideo/tokenizer"`及`"from_pretrained": "5b-cogvideo"`,替换`5b-cogvideo`为实际的路径;VAE模型文件的路径字段为`"from_pretrained": "3d-vae.pt"`,替换`3d-vae.pt`为实际的路径。 |
| 266 | 266 | ||
| 267 | 当需要卸载VAE和T5时,将模型参数配置文件中的`"load_video_features": false`及`"load_text_features": false`字段中的值分别改为`true`。将`data.json`中的`"use_feature_data"`字段的值改为`true`。 | 267 | 当需要卸载VAE和T5时,将模型参数配置文件中的`"load_video_features": false`及`"load_text_features": false`字段中的值分别改为`true`。将`data.json`中的`"use_feature_data"`字段的值改为`true`。 |
| 268 | 268 | ||
| 269 | 4. 切分策略配置 | 269 | 4. 切分策略配置 |
| 270 | 270 | ||
| @@ -287,7 +287,7 @@ CogvideoX训练阶段的启动文件为shell脚本,主要分为如下4个:` | |||
| 287 | 参数里面的yaml文件如下面所示: | 287 | 参数里面的yaml文件如下面所示: |
| 288 | 288 | ||
| 289 | ```yaml | 289 | ```yaml |
| 290 | zero3_size: 8 | 290 | zero3_size: 8 |
| 291 | transformer_layers: | 291 | transformer_layers: |
| 292 | - mindspeed_mm.models.predictor.dits.sat_dit.VideoDiTBlock | 292 | - mindspeed_mm.models.predictor.dits.sat_dit.VideoDiTBlock |
| 293 | backward_prefetch: 'BACKWARD_PRE' | 293 | backward_prefetch: 'BACKWARD_PRE' |
| @@ -299,17 +299,17 @@ CogvideoX训练阶段的启动文件为shell脚本,主要分为如下4个:` | |||
| 299 | - ae | 299 | - ae |
| 300 | - text_encoder | 300 | - text_encoder |
| 301 | ``` | 301 | ``` |
| 302 | 302 | ||
| 303 | 该特性和TP不能兼容,开启时TP必须设置为1,使用该特性训练时,保存的权重需要使用下面的转换脚本进行后处理才能用于推理: | 303 | 该特性和TP不能兼容,开启时TP必须设置为1,使用该特性训练时,保存的权重需要使用下面的转换脚本进行后处理才能用于推理: |
| 304 | 304 | ||
| 305 | ```bash | 305 | ```bash |
| 306 | source /usr/local/Ascend/cann/set_env.sh | 306 | source /usr/local/Ascend/cann/set_env.sh |
| 307 | # your_mindspeed_path和your_megatron_path分别替换为之前通过MindSpeed-Core-MS一键脚本拉取的mindspeed和megatron仓库的具体路径。这两个路径通常位于MindSpeed-Core-MS目录的相应子目录中。 | 307 | # your_mindspeed_path和your_megatron_path分别替换为之前通过MindSpeed-Core-MS一键脚本拉取的mindspeed和megatron仓库的具体路径。这两个路径通常位于MindSpeed-Core-MS目录的相应子目录中。 |
| 308 | export PYTHONPATH=$PYTHONPATH:<your_mindspeed_path> | 308 | export PYTHONPATH=$PYTHONPATH:<your_mindspeed_path> |
| 309 | export PYTHONPATH=$PYTHONPATH:<your_megatron_path> | 309 | export PYTHONPATH=$PYTHONPATH:<your_megatron_path> |
| 310 | # input_folder为layerzero训练保存权重的路径,output_folder为输出的megatron格式权重的路径 | 310 | # input_folder为layerzero训练保存权重的路径,output_folder为输出的megatron格式权重的路径 |
| 311 | python <your_mindspeed_path>/mindspeed/core/distributed/layerzero/state/scripts/convert_to_megatron.py --input_folder ./save_ckpt/hunyuanvideo/iter_000xxxx/ --output_folder ./save_ckpt/hunyuanvideo_megatron_ckpt/iter_000xxxx/ --prefix predictor | 311 | python <your_mindspeed_path>/mindspeed/core/distributed/layerzero/state/scripts/convert_to_megatron.py --input_folder ./save_ckpt/hunyuanvideo/iter_000xxxx/ --output_folder ./save_ckpt/hunyuanvideo_megatron_ckpt/iter_000xxxx/ --prefix predictor |
| 312 | ``` | 312 | ``` |
| 313 | 313 | ||
| 314 | 模型参数配置文件中的`head_dim`字段原模型默认配置为64。此字段调整为128会更加亲和昇腾。 | 314 | 模型参数配置文件中的`head_dim`字段原模型默认配置为64。此字段调整为128会更加亲和昇腾。 |
| 315 | 315 | ||
| @@ -5,23 +5,23 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取](#jump1.1) | 9 | - [仓库拉取](#1-仓库拉取) |
| 10 | - [环境搭建](#jump1.2) | 10 | - [环境搭建](#环境搭建) |
| 11 | - [权重下载及转换](#jump2) | 11 | - [权重下载及转换](#权重下载及转换) |
| 12 | - [权重下载](#jump2.1) | 12 | - [权重下载](#1-权重下载) |
| 13 | - [权重转换hf2mm](#jump2.2) | 13 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 14 | - [数据集准备及处理](#jump3) | 14 | - [数据集准备及处理](#数据集准备及处理) |
| 15 | - [数据集下载](#jump3.1) | 15 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 16 | - [微调](#jump4) | 16 | - [微调](#微调) |
| 17 | - [准备工作](#jump4.1) | 17 | - [准备工作](#1-准备工作) |
| 18 | - [配置参数](#jump4.2) | 18 | - [配置参数](#2-配置参数) |
| 19 | - [启动微调](#jump4.3) | 19 | - [启动微调](#3-启动微调) |
| 20 | - [推理](#jump5) | 20 | - [推理](#推理) |
| 21 | - [准备工作](#jump5.1) | 21 | - [准备工作](#准备工作) |
| 22 | - [启动推理](#jump5.2) | 22 | - [启动推理](#启动推理) |
| 23 | - [环境变量声明](#jump6) | 23 | - [环境变量声明](#环境变量声明) |
| 24 | - [注意事项](#jump7) | 24 | - [注意事项](#注意事项) |
| 25 | 25 | ||
| 26 | --- | 26 | --- |
| 27 | <a id="jump1"></a> | 27 | <a id="jump1"></a> |
| @@ -5,8 +5,7 @@ | |||
| 5 | - [参考实现](#参考实现) | 5 | - [参考实现](#参考实现) |
| 6 | - [变更记录](#变更记录) | 6 | - [变更记录](#变更记录) |
| 7 | - [环境安装](#环境安装) | 7 | - [环境安装](#环境安装) |
| 8 | - [仓库拉取](#仓库拉取) | 8 | - [仓库拉取及环境搭建](#仓库拉取及环境搭建) |
| 9 | - [环境搭建](#环境搭建) | ||
| 10 | - [Decord搭建](#decord搭建) | 9 | - [Decord搭建](#decord搭建) |
| 11 | - [权重下载及转换](#权重下载及转换) | 10 | - [权重下载及转换](#权重下载及转换) |
| 12 | - [TextEncoder下载](#textencoder下载) | 11 | - [TextEncoder下载](#textencoder下载) |
| @@ -15,12 +14,12 @@ | |||
| 15 | - [预训练](#预训练) | 14 | - [预训练](#预训练) |
| 16 | - [数据预处理](#数据预处理) | 15 | - [数据预处理](#数据预处理) |
| 17 | - [训练](#训练) | 16 | - [训练](#训练) |
| 18 | - [准备工作](#准备工作-1) | 17 | - [准备工作](#准备工作) |
| 19 | - [参数配置](#参数配置-1) | 18 | - [参数配置](#参数配置) |
| 20 | - [启动训练](#启动训练) | 19 | - [启动训练](#启动训练) |
| 21 | - [权重后处理](#权重后处理) | 20 | - [权重后处理](#权重后处理) |
| 22 | - [I2V lora微调](#i2v-lora微调) | 21 | - [I2V lora微调](#i2v-lora微调) |
| 23 | - [准备工作](#准备工作-2) | 22 | - [准备工作](#准备工作-1) |
| 24 | - [权重转换](#权重转换-1) | 23 | - [权重转换](#权重转换-1) |
| 25 | - [配置参数](#配置参数) | 24 | - [配置参数](#配置参数) |
| 26 | - [启动lora微调](#启动lora微调) | 25 | - [启动lora微调](#启动lora微调) |
| @@ -5,18 +5,18 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取与环境搭建](#jump1.1) | 9 | - [仓库拉取与环境搭建](#1-仓库拉取与环境搭建) |
| 10 | - [权重下载及转换](#jump2) | 10 | - [权重下载及转换](#权重下载及转换) |
| 11 | - [权重下载](#jump2.1) | 11 | - [权重下载](#1-权重下载) |
| 12 | - [数据集准备及处理](#jump3) | 12 | - [数据集准备及处理](#数据集准备及处理) |
| 13 | - [数据集下载](#jump3.1) | 13 | - [数据集下载](#1-数据集下载) |
| 14 | - [预训练](#jump4) | 14 | - [预训练](#微调) |
| 15 | - [准备工作](#jump4.1) | 15 | - [准备工作](#1-准备工作) |
| 16 | - [配置参数](#jump4.2) | 16 | - [配置参数](#2-配置参数) |
| 17 | - [启动预训练](#jump4.3) | 17 | - [启动预训练](#3-启动微调) |
| 18 | - [环境变量声明](#jump5) | 18 | - [环境变量声明](#环境变量声明) |
| 19 | - [注意事项](#jump6) | 19 | - [注意事项](#注意事项) |
| 20 | 20 | ||
| 21 | <a id="jump1"></a> | 21 | <a id="jump1"></a> |
| 22 | 22 | ||
| @@ -5,19 +5,19 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取与环境搭建](#jump1.1) | 9 | - [仓库拉取与环境搭建](#1-仓库拉取与环境搭建) |
| 10 | - [权重下载及转换](#jump2) | 10 | - [权重下载及转换](#权重下载及转换) |
| 11 | - [权重下载](#jump2.1) | 11 | - [权重下载](#1-权重下载) |
| 12 | - [权重转换](#jump2.2) | 12 | - [权重转换](#2-权重转换) |
| 13 | - [数据集准备及处理](#jump3) | 13 | - [数据集准备及处理](#数据集准备及处理) |
| 14 | - [数据集下载](#jump3.1) | 14 | - [数据集下载](#1-数据集下载) |
| 15 | - [微调](#jump4) | 15 | - [微调](#微调) |
| 16 | - [准备工作](#jump4.1) | 16 | - [准备工作](#1-准备工作) |
| 17 | - [配置参数](#jump4.2) | 17 | - [配置参数](#2-配置参数) |
| 18 | - [启动微调](#jump4.3) | 18 | - [启动微调](#3-启动微调) |
| 19 | - [环境变量声明](#jump5) | 19 | - [环境变量声明](#环境变量声明) |
| 20 | - [注意事项](#jump6) | 20 | - [注意事项](#注意事项) |
| 21 | 21 | ||
| 22 | --- | 22 | --- |
| 23 | <a id="jump1"></a> | 23 | <a id="jump1"></a> |
| @@ -5,22 +5,22 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取及环境搭建](#jump1.1) | 9 | - [仓库拉取及环境搭建](#1-仓库拉取及环境搭建) |
| 10 | - [权重下载及转换](#jump2) | 10 | - [权重下载及转换](#权重下载及转换) |
| 11 | - [权重下载](#jump2.1) | 11 | - [权重下载](#1-权重下载) |
| 12 | - [权重转换hf2mm](#jump2.2) | 12 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 13 | - [权重转换mm2hf](#jump2.3) | 13 | - [权重转换mm2hf](#3-权重转换mm2hf) |
| 14 | - [数据集准备及处理](#jump3) | 14 | - [数据集准备及处理](#数据集准备及处理) |
| 15 | - [数据集下载](#jump3.1) | 15 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 16 | - [混合数据集处理](#jump3.2) | 16 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 17 | - [视频音频数据集](#jump3.3) | 17 | - [视频音频数据集](#3视频音频数据集) |
| 18 | - [微调](#jump4) | 18 | - [微调](#微调) |
| 19 | - [准备工作](#jump4.1) | 19 | - [准备工作](#1-准备工作) |
| 20 | - [配置参数](#jump4.2) | 20 | - [配置参数](#2-配置参数) |
| 21 | - [启动微调](#jump4.3) | 21 | - [启动微调](#3-启动微调) |
| 22 | - [环境变量声明](#jump5) | 22 | - [环境变量声明](#环境变量声明) |
| 23 | - [注意事项](#jump6) | 23 | - [注意事项](#注意事项) |
| 24 | 24 | ||
| 25 | --- | 25 | --- |
| 26 | <a id="jump1"></a> | 26 | <a id="jump1"></a> |
| @@ -5,34 +5,34 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取及环境搭建](#jump1.1) | 9 | - [仓库拉取及环境搭建](#1-仓库拉取及环境搭建) |
| 10 | - [权重下载及转换](#jump2) | 10 | - [权重下载及转换](#权重下载及转换) |
| 11 | - [权重下载](#jump2.1) | 11 | - [权重下载](#1-权重下载) |
| 12 | - [权重转换hf2mm](#jump2.2) | 12 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 13 | - [权重转换mm2hf](#jump2.3) | 13 | - [权重转换mm2hf](#3-权重转换mm2hf) |
| 14 | - [数据集准备及处理](#jump3) | 14 | - [数据集准备及处理](#数据集准备及处理) |
| 15 | - [数据集下载](#jump3.1) | 15 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 16 | - [混合数据集处理](#jump3.2) | 16 | - [混合数据集处理](#2-纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 17 | - [微调](#jump4) | 17 | - [微调](#微调) |
| 18 | - [准备工作](#jump4.1) | 18 | - [准备工作](#1-准备工作) |
| 19 | - [配置参数](#jump4.2) | 19 | - [配置参数](#2-配置参数) |
| 20 | - [启动微调](#jump4.3) | 20 | - [启动微调](#3-启动微调) |
| 21 | - [推理](#jump5) | 21 | - [推理](#推理) |
| 22 | - [准备工作](#jump5.1) | 22 | - [准备工作](#1-准备工作以微调环境为基础包括环境安装权重下载及转换-目前支持pp切分的推理) |
| 23 | - [启动推理](#jump5.2) | 23 | - [启动推理](#2-配置参数) |
| 24 | - [视频理解](#jump6) | 24 | - [视频理解](#qwen25vl支持视频理解) |
| 25 | - [加载数据集](#jump6.1) | 25 | - [加载数据集](#1-加载视频数据集) |
| 26 | - [配置参数](#jump6.2) | 26 | - [配置参数](#2-修改模型配置) |
| 27 | - [启动微调](#jump6.3) | 27 | - [启动微调](#3-启动微调) |
| 28 | - [评测](#jump7) | 28 | - [评测](#评测) |
| 29 | - [数据集准备](#jump7.1) | 29 | - [数据集准备](#1-数据集准备) |
| 30 | - [配置参数](#jump7.2) | 30 | - [配置参数](#2-参数配置) |
| 31 | - [启动评测](#jump7.3) | 31 | - [启动评测](#3-启动评测) |
| 32 | - [特性使用介绍](#jump8) | 32 | - [特性使用介绍](#特性使用介绍) |
| 33 | - [lora微调](#jump8.1) | 33 | - [lora微调](#lora微调) |
| 34 | - [环境变量声明](#jump9) | 34 | - [环境变量声明](#环境变量声明) |
| 35 | - [注意事项](#jump10) | 35 | - [注意事项](#注意事项) |
| 36 | 36 | ||
| 37 | --- | 37 | --- |
| 38 | <a id="jump1"></a> | 38 | <a id="jump1"></a> |
| @@ -8,31 +8,31 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-仓库拉取) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [权重转换hf2mm](#jump2.2) | 16 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 17 | - [权重转换mm2hf](#jump2.3) | 17 | - [权重转换mm2hf](#3-训练后权重转回huggingface格式) |
| 18 | - [权重重切分](#jump2.4) | 18 | - [权重重切分](#4-训练后重新切分权重) |
| 19 | - [数据集准备及处理](#jump3) | 19 | - [数据集准备及处理](#数据集准备及处理) |
| 20 | - [数据集下载](#jump3.1) | 20 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 21 | - [混合数据集处理](#jump3.2) | 21 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 22 | - [微调](#jump4) | 22 | - [微调](#微调) |
| 23 | - [准备工作](#jump4.1) | 23 | - [准备工作](#1-准备工作) |
| 24 | - [配置参数](#jump4.2) | 24 | - [配置参数](#2-配置参数) |
| 25 | - [启动微调](#jump4.3) | 25 | - [启动微调](#3-启动微调) |
| 26 | - [DPO算法](#jump5) | 26 | - [DPO算法](#qwen2vl支持dpo算法) |
| 27 | - [数据集准备](#jump5.1) | 27 | - [数据集准备](#1数据集准备以及处理以rlhf-v为例) |
| 28 | - [配置参数](#jump5.2) | 28 | - [配置参数](#2配置参数) |
| 29 | - [启动DPO任务](#jump5.3) | 29 | - [启动DPO任务](#3启动dpo任务) |
| 30 | - [特性使用介绍](#jump6) | 30 | - [特性使用介绍](#特性使用介绍) |
| 31 | - [lora微调](#jump6.1) | 31 | - [lora微调](#lora微调) |
| 32 | - [非均匀CP](#jump6.2) | 32 | - [非均匀CP](#非均匀cp切分) |
| 33 | - [非均匀SP](#jump6.3) | 33 | - [非均匀SP](#非均匀sp切分) |
| 34 | - [环境变量声明](#jump7) | 34 | - [环境变量声明](#环境变量声明) |
| 35 | - [注意事项](#jump8) | 35 | - [注意事项](#注意事项) |
| 36 | 36 | ||
| 37 | ## 版本说明 | 37 | ## 版本说明 |
| 38 | 38 | ||
| @@ -5,20 +5,20 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取及环境搭建](#jump1.1) | 9 | - [仓库拉取及环境搭建](#1-仓库拉取及环境搭建) |
| 10 | - [权重下载及转换](#jump2) | 10 | - [权重下载及转换](#权重下载及转换) |
| 11 | - [权重下载](#jump2.1) | 11 | - [权重下载](#1-权重下载) |
| 12 | - [权重转换hf2mm](#jump2.2) | 12 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 13 | - [权重转换mm2hf](#jump2.3) | 13 | - [权重转换mm2hf](#3-权重转换mm2hf) |
| 14 | - [数据集准备及处理](#jump3) | 14 | - [数据集准备及处理](#数据集准备及处理) |
| 15 | - [数据集下载](#jump3.1) | 15 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 16 | - [混合数据集处理](#jump3.2) | 16 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 17 | - [微调](#jump4) | 17 | - [微调](#微调) |
| 18 | - [准备工作](#jump4.1) | 18 | - [准备工作](#1-准备工作) |
| 19 | - [配置参数](#jump4.2) | 19 | - [配置参数](#2-配置参数) |
| 20 | - [启动微调](#jump4.3) | 20 | - [启动微调](#3-启动微调) |
| 21 | - [环境变量声明](#jump5) | 21 | - [环境变量声明](#环境变量声明) |
| 22 | 22 | ||
| 23 | --- | 23 | --- |
| 24 | <a id="jump1"></a> | 24 | <a id="jump1"></a> |
| @@ -139,7 +139,7 @@ mm-convert WanConverter hf_to_mm \ | |||
| 139 | 139 | ||
| 140 | 如需转回Hugging Face格式,需运行权重转换脚本: | 140 | 如需转回Hugging Face格式,需运行权重转换脚本: |
| 141 | 141 | ||
| 142 | **注**: 如进行layer zero进行训练,则需首先进行其[训练权重后处理](#jump1),再进行如下操作: | 142 | **注**: 如进行layer zero进行训练,则需首先进行其[训练权重后处理](#训练权重后处理),再进行如下操作: |
| 143 | 143 | ||
| 144 | ```shell | 144 | ```shell |
| 145 | mm-convert WanConverter mm_to_hf \ | 145 | mm-convert WanConverter mm_to_hf \ |
| @@ -5,16 +5,16 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [简介](#jump0) | 8 | - [简介](#简介) |
| 9 | - [环境安装](#jump1) | 9 | - [环境安装](#环境安装) |
| 10 | - [仓库拉取](#jump1.1) | 10 | - [仓库拉取](#1-仓库拉取) |
| 11 | - [环境搭建](#jump1.2) | 11 | - [环境搭建](#2-环境搭建) |
| 12 | - [权重下载](#jump2) | 12 | - [权重下载](#权重下载) |
| 13 | - [数据集准备及处理](#jump3) | 13 | - [数据集准备及处理](#数据集准备及处理) |
| 14 | - [训练](#jump4) | 14 | - [训练](#训练) |
| 15 | - [准备工作](#jump4.1) | 15 | - [准备工作](#1-准备工作) |
| 16 | - [启动训练](#jump4.2) | 16 | - [启动训练](#2-启动训练) |
| 17 | - [注意事项](#jump6) | 17 | - [注意事项](#环境变量声明) |
| 18 | 18 | ||
| 19 | <a id="jump0"></a> | 19 | <a id="jump0"></a> |
| 20 | 20 | ||
| @@ -127,12 +127,12 @@ pip install -r MindSpeed-MM/examples/ming/requirements.txt | |||
| 127 | 127 | ||
| 128 | 1. 以图文理解的微调任务为例,可根据实际情况修改[启动脚本](../../examples/ming/finetune_vl.sh)的配置,以下配置必须修改: | 128 | 1. 以图文理解的微调任务为例,可根据实际情况修改[启动脚本](../../examples/ming/finetune_vl.sh)的配置,以下配置必须修改: |
| 129 | 129 | ||
| 130 | ``` shell | 130 | ``` shell |
| 131 | DATA_PATH="./data/mllm_format_llava_instruct_data.json" # 数据集的文件 | 131 | DATA_PATH="./data/mllm_format_llava_instruct_data.json" # 数据集的文件 |
| 132 | DATA_DIR="./data" # 数据集依赖图文等文件的目录 | 132 | DATA_DIR="./data" # 数据集依赖图文等文件的目录 |
| 133 | PROCESSOR_PATH="." # Ming代码仓路径,默认是当前目录(即 Ming 目录) | 133 | PROCESSOR_PATH="." # Ming代码仓路径,默认是当前目录(即 Ming 目录) |
| 134 | LOAD_PATH="./ckpt/Ming-Lite-Omni-1.5" # huggingface下载的权重路径 | 134 | LOAD_PATH="./ckpt/Ming-Lite-Omni-1.5" # huggingface下载的权重路径 |
| 135 | ``` | 135 | ``` |
| 136 | 136 | ||
| 137 | 2. 根据使用机器的情况,修改`NNODES`、`NPUS_PER_NODE`配置, 例如单机 A2 可设置`NNODES`为 1 、`NPUS_PER_NODE`为8; | 137 | 2. 根据使用机器的情况,修改`NNODES`、`NPUS_PER_NODE`配置, 例如单机 A2 可设置`NNODES`为 1 、`NPUS_PER_NODE`为8; |
| 138 | 138 | ||
| @@ -140,10 +140,10 @@ LOAD_PATH="./ckpt/Ming-Lite-Omni-1.5" # huggingface下载的权重路径 | |||
| 140 | 140 | ||
| 141 | 4. 上述注意点修改完毕后,可启动脚本开启训练: | 141 | 4. 上述注意点修改完毕后,可启动脚本开启训练: |
| 142 | 142 | ||
| 143 | ```bash | 143 | ```bash |
| 144 | cd Ming | 144 | cd Ming |
| 145 | bash finetune_vl.sh | 145 | bash finetune_vl.sh |
| 146 | ``` | 146 | ``` |
| 147 | 147 | ||
| 148 | <a id="jump6"></a> | 148 | <a id="jump6"></a> |
| 149 | 149 | ||
| @@ -44,7 +44,7 @@ commit_id=d0cd5ac | |||
| 44 | 44 | ||
| 45 | 【模型开发时推荐使用配套的环境版本】 | 45 | 【模型开发时推荐使用配套的环境版本】 |
| 46 | 46 | ||
| 47 | 请参考[安装指南](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/install_guide.md) | 47 | 请参考[安装指南](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/install_guide.md) |
| 48 | 48 | ||
| 49 | <a id="jump1.1"></a> | 49 | <a id="jump1.1"></a> |
| 50 | 50 | ||
| @@ -8,25 +8,25 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [仓库拉取](#jump1.1) | 12 | - [仓库拉取](#1-仓库拉取) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [Decord安装](#jump1.3) | 14 | - [Decord安装](#3-decord搭建) |
| 15 | - [权重下载及转换](#jump2) | 15 | - [权重下载及转换](#权重下载及转换) |
| 16 | - [权重下载](#jump2.1) | 16 | - [权重下载](#1-权重下载) |
| 17 | - [权重转换](#jump2.2) | 17 | - [权重转换](#2-权重转换) |
| 18 | - [数据集准备及处理](#jump3) | 18 | - [数据集准备及处理](#数据集准备及处理) |
| 19 | - [数据集下载](#jump3.1) | 19 | - [数据集下载](#1-数据集下载) |
| 20 | - [数据集处理](#jump3.2) | 20 | - [数据集处理](#2-数据集处理) |
| 21 | - [预训练](#jump4) | 21 | - [预训练](#预训练) |
| 22 | - [准备工作](#jump4.1) | 22 | - [准备工作](#1-准备工作) |
| 23 | - [配置参数](#jump4.2) | 23 | - [配置参数](#2-配置参数) |
| 24 | - [启动预训练](#jump4.3) | 24 | - [启动预训练](#3-启动预训练) |
| 25 | - [推理](#jump5) | 25 | - [推理](#推理) |
| 26 | - [准备工作](#jump5.1) | 26 | - [准备工作](#1-准备工作) |
| 27 | - [配置参数](#jump5.2) | 27 | - [配置参数](#2-配置参数) |
| 28 | - [启动推理](#jump5.3) | 28 | - [启动推理](#3-启动推理) |
| 29 | - [环境变量声明](#jump6) | 29 | - [环境变量声明](#环境变量声明) |
| 30 | 30 | ||
| 31 | ## 版本说明 | 31 | ## 版本说明 |
| 32 | 32 | ||
| @@ -21,14 +21,14 @@ | |||
| 21 | </tr> | 21 | </tr> |
| 22 | </table> | 22 | </table> |
| 23 | 23 | ||
| 24 | - [环境安装](#jump1) | 24 | - [环境安装](#环境安装) |
| 25 | - [仓库拉取](#jump1.1) | 25 | - [仓库拉取](#1-仓库拉取) |
| 26 | - [环境搭建](#jump1.2) | 26 | - [环境搭建](#2-环境搭建) |
| 27 | - [权重下载](#jump1.3) | 27 | - [权重下载](#3-权重下载) |
| 28 | - [推理](#jump2) | 28 | - [推理](#推理) |
| 29 | - [配置参数](#jump2.1) | 29 | - [配置参数](#1-配置参数) |
| 30 | - [启动推理](#jump2.2) | 30 | - [启动推理](#2-启动推理) |
| 31 | - [环境变量声明](#jump3) | 31 | - [环境变量声明](#环境变量声明) |
| 32 | 32 | ||
| 33 | --- | 33 | --- |
| 34 | <a id="jump1"></a> | 34 | <a id="jump1"></a> |
| @@ -8,28 +8,28 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [权重转换hf2mm](#jump2.2) | 16 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 17 | - [权重转换mm2hf](#jump2.3) | 17 | - [权重转换mm2hf](#3-权重转换mm2hf) |
| 18 | - [数据集准备及处理](#jump3) | 18 | - [数据集准备及处理](#数据集准备及处理) |
| 19 | - [视频音频数据集](#jump3.1) | 19 | - [视频音频数据集](#1视频音频数据集) |
| 20 | - [混合数据集处理](#jump3.2) | 20 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 21 | - [微调](#jump4) | 21 | - [微调](#微调) |
| 22 | - [准备工作](#jump4.1) | 22 | - [准备工作](#1-准备工作) |
| 23 | - [配置参数](#jump4.2) | 23 | - [配置参数](#2-配置参数) |
| 24 | - [启动微调](#jump4.3) | 24 | - [启动微调](#3-启动微调) |
| 25 | - [异构并行微调](#jump5) | 25 | - [异构并行微调](#异构并行微调) |
| 26 | - [准备工作](#jump5.1) | 26 | - [准备工作](#1-准备工作) |
| 27 | - [配置参数](#jump5.2) | 27 | - [配置参数](#2-配置参数) |
| 28 | - [启动异构并行微调](#jump5.3) | 28 | - [启动异构并行微调](#3-启动异构并行微调) |
| 29 | - [特性使用介绍](#jump7) | 29 | - [特性使用介绍](#特性使用介绍) |
| 30 | - [lora微调](#jump7.1) | 30 | - [lora微调](#lora微调) |
| 31 | - [环境变量声明](#jump8) | 31 | - [环境变量声明](#环境变量声明) |
| 32 | - [注意事项](#jump9) | 32 | - [注意事项](#注意事项) |
| 33 | 33 | ||
| 34 | ## 版本说明 | 34 | ## 版本说明 |
| 35 | 35 | ||
| @@ -8,39 +8,39 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及离线转换](#jump2) | 14 | - [权重下载及离线转换](#权重下载及离线转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [权重转换hf2mm](#jump2.2) | 16 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 17 | - [权重转换mm2hf](#jump2.3) | 17 | - [权重转换mm2hf](#3-权重转换mm2hf) |
| 18 | - [权重重切分](#jump2.4) | 18 | - [权重重切分](#4-训练后重新切分权重) |
| 19 | - [权重下载及在线加载](#jump3) | 19 | - [权重下载及在线加载](#权重下载及在线加载) |
| 20 | - [权重下载](#jump3.1) | 20 | - [权重下载](#1-权重下载-1) |
| 21 | - [权重加载](#jump3.2) | 21 | - [权重加载](#2-在线加载) |
| 22 | - [数据集准备及处理](#jump4) | 22 | - [数据集准备及处理](#数据集准备及处理) |
| 23 | - [数据集下载](#jump4.1) | 23 | - [数据集下载](#1-数据集下载) |
| 24 | - [混合数据集处理](#jump4.2) | 24 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 25 | - [微调](#jump5) | 25 | - [微调](#微调) |
| 26 | - [长序列支持](#长序列支持) | 26 | - [长序列支持](#长序列支持) |
| 27 | - [准备工作](#jump5.1) | 27 | - [准备工作](#1-准备工作) |
| 28 | - [配置参数](#jump5.2) | 28 | - [配置参数](#2-配置参数) |
| 29 | - [启动微调](#jump5.3) | 29 | - [启动微调](#3-启动微调) |
| 30 | - [支持FSDP2训练](#jump5.4) | 30 | - [支持FSDP2训练](#4-支持FSDP2训练) |
| 31 | - [推理](#jump6) | 31 | - [推理](#推理) |
| 32 | - [准备工作](#jump6.1) | 32 | - [准备工作](#1准备工作) |
| 33 | - [启动推理](#jump6.2) | 33 | - [启动推理](#2启动推理) |
| 34 | - [视频理解](#jump7) | 34 | - [视频理解](#qwen25vl支持视频理解) |
| 35 | - [加载数据集](#jump7.1) | 35 | - [加载数据集](#1加载视频数据集) |
| 36 | - [配置参数](#jump7.2) | 36 | - [配置参数](#2修改模型配置) |
| 37 | - [启动微调](#jump7.3) | 37 | - [启动微调](#3启动微调) |
| 38 | - [评测](#jump8) | 38 | - [评测](#评测) |
| 39 | - [数据集准备](#jump8.1) | 39 | - [数据集准备](#数据集准备) |
| 40 | - [配置参数](#jump8.2) | 40 | - [配置参数](#参数配置) |
| 41 | - [启动评测](#jump8.3) | 41 | - [启动评测](#启动评测) |
| 42 | - [环境变量声明](#jump9) | 42 | - [环境变量声明](#环境变量声明) |
| 43 | - [注意事项](#jump10) | 43 | - [注意事项](#注意事项) |
| 44 | 44 | ||
| 45 | ## 版本说明 | 45 | ## 版本说明 |
| 46 | 46 | ||
| @@ -530,46 +530,46 @@ WORLD_SIZE=$(($NPUS_PER_NODE * $NNODES)) | |||
| 530 | 530 | ||
| 531 | 1. full模式 | 531 | 1. full模式 |
| 532 | 532 | ||
| 533 | TransformerLayer中的所有组件(layernorm、attention、mlp)都进行重计算,此时可以配置重计算的层数。 | 533 | TransformerLayer中的所有组件(layernorm、attention、mlp)都进行重计算,此时可以配置重计算的层数。 |
| 534 | 534 | ||
| 535 | - `recompute_method`: 控制重计算层数计算的方法,可选值为`uniform`(均匀重计算)或`block`(按块重计算)。 | 535 | - `recompute_method`: 控制重计算层数计算的方法,可选值为`uniform`(均匀重计算)或`block`(按块重计算)。 |
| 536 | - `recompute_num_layers`: 控制重计算的层数,指定需要重计算的层数量。 | 536 | - `recompute_num_layers`: 控制重计算的层数,指定需要重计算的层数量。 |
| 537 | 537 | ||
| 538 | 示例配置如下: | 538 | 示例配置如下: |
| 539 | 539 | ||
| 540 | ```json | 540 | ```json |
| 541 | { | 541 | { |
| 542 | "model_id": "qwen2_5vl", | 542 | "model_id": "qwen2_5vl", |
| 543 | "img_context_token_id": 151655, | 543 | "img_context_token_id": 151655, |
| 544 | "vision_start_token_id": 151652, | 544 | "vision_start_token_id": 151652, |
| 545 | "image_encoder": { | 545 | "image_encoder": { |
| 546 | "vision_encoder": { | 546 | "vision_encoder": { |
| 547 | "recompute_granularity": "full", | 547 | "recompute_granularity": "full", |
| 548 | "recompute_method": "uniform", | 548 | "recompute_method": "uniform", |
| 549 | "recompute_num_layers": 1 | 549 | "recompute_num_layers": 1 |
| 550 | } | ||
| 551 | } | ||
| 550 | } | 552 | } |
| 551 | } | 553 | ``` |
| 552 | } | ||
| 553 | ``` | ||
| 554 | 554 | ||
| 555 | 2. selective模式 | 555 | 2. selective模式 |
| 556 | 556 | ||
| 557 | 仅对TransformerLayer中attention的core_attention组件进行重计算。 | 557 | 仅对TransformerLayer中attention的core_attention组件进行重计算。 |
| 558 | 558 | ||
| 559 | 示例配置如下: | 559 | 示例配置如下: |
| 560 | 560 | ||
| 561 | ```json | 561 | ```json |
| 562 | { | 562 | { |
| 563 | "model_id": "qwen2_5vl", | 563 | "model_id": "qwen2_5vl", |
| 564 | "img_context_token_id": 151655, | 564 | "img_context_token_id": 151655, |
| 565 | "vision_start_token_id": 151652, | 565 | "vision_start_token_id": 151652, |
| 566 | "image_encoder": { | 566 | "image_encoder": { |
| 567 | "vision_encoder": { | 567 | "vision_encoder": { |
| 568 | "recompute_granularity": "selective" | 568 | "recompute_granularity": "selective" |
| 569 | } | ||
| 570 | } | ||
| 569 | } | 571 | } |
| 570 | } | 572 | ``` |
| 571 | } | ||
| 572 | ``` | ||
| 573 | 573 | ||
| 574 | 【huggingface等价模型结构配置(可选)】 | 574 | 【huggingface等价模型结构配置(可选)】 |
| 575 | 575 | ||
| @@ -728,7 +728,7 @@ bash examples/qwen2.5vl/finetune_qwen2_5_vl_72b_fsdp.sh | |||
| 728 | 728 | ||
| 729 | (2)shell文件中的LOAD_PATH的路径为经过权重转换后的模型路径(可PP切分)。 | 729 | (2)shell文件中的LOAD_PATH的路径为经过权重转换后的模型路径(可PP切分)。 |
| 730 | 730 | ||
| 731 | <a id="6.2"></a> | 731 | <a id="jump6.2"></a> |
| 732 | 732 | ||
| 733 | ### 2、启动推理 | 733 | ### 2、启动推理 |
| 734 | 734 | ||
| @@ -8,43 +8,43 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [权重转换hf2mm](#jump2.2) | 16 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 17 | - [权重转换mm2hf](#jump2.3) | 17 | - [权重转换mm2hf](#3-训练后权重转回huggingface格式) |
| 18 | - [权重重切分](#jump2.4) | 18 | - [权重重切分](#4-训练后重新切分权重) |
| 19 | - [数据集准备及处理](#jump3) | 19 | - [数据集准备及处理](#数据集准备及处理) |
| 20 | - [数据集下载](#jump3.1) | 20 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 21 | - [混合数据集处理](#jump3.2) | 21 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 22 | - [微调](#jump4) | 22 | - [微调](#微调) |
| 23 | - [准备工作](#jump4.1) | 23 | - [准备工作](#1-准备工作) |
| 24 | - [配置参数](#jump4.2) | 24 | - [配置参数](#2-配置参数) |
| 25 | - [启动微调](#jump4.3) | 25 | - [启动微调](#3-启动微调) |
| 26 | - [推理](#jump5) | 26 | - [推理](#推理) |
| 27 | - [准备工作](#jump5.1) | 27 | - [准备工作](#1准备工作以微调环境为基础包括环境安装权重下载及转换-目前支持pp切分的推理) |
| 28 | - [配置参数](#jump5.2) | 28 | - [配置参数](#2配置参数) |
| 29 | - [启动推理](#jump5.3) | 29 | - [启动推理](#3启动推理) |
| 30 | - [视频理解](#jump6) | 30 | - [视频理解](#qwen2vl支持视频理解) |
| 31 | - [加载数据集](#jump6.1) | 31 | - [加载数据集](#1加载视频数据集) |
| 32 | - [配置参数](#jump6.2) | 32 | - [配置参数](#2修改模型配置) |
| 33 | - [视频推理](#jump6.3) | 33 | - [视频推理](#3qwen2vl支持视频推理) |
| 34 | - [DPO算法](#jump7) | 34 | - [DPO算法](#qwen2vl支持dpo算法) |
| 35 | - [数据集准备](#jump7.1) | 35 | - [数据集准备](#1数据集准备以及处理以rlhf-v为例) |
| 36 | - [配置参数](#jump7.2) | 36 | - [配置参数](#2配置参数) |
| 37 | - [启动DPO任务](#jump7.3) | 37 | - [启动DPO任务](#3启动dpo任务) |
| 38 | - [评测](#jump8) | 38 | - [评测](#评测) |
| 39 | - [数据集准备](#jump8.1) | 39 | - [数据集准备](#数据集准备) |
| 40 | - [配置参数](#jump8.2) | 40 | - [配置参数](#参数配置) |
| 41 | - [启动评测](#jump8.3) | 41 | - [启动评测](#启动评测) |
| 42 | - [特性使用介绍](#jump9) | 42 | - [特性使用介绍](#特性使用介绍) |
| 43 | - [lora微调](#jump9.1) | 43 | - [lora微调](#lora微调) |
| 44 | - [非均匀CP](#jump9.2) | 44 | - [非均匀CP](#非均匀cp切分) |
| 45 | - [非均匀SP](#jump9.3) | 45 | - [非均匀SP](#非均匀sp切分) |
| 46 | - [环境变量声明](#jump10) | 46 | - [环境变量声明](#环境变量声明) |
| 47 | - [注意事项](#jump11) | 47 | - [注意事项](#注意事项) |
| 48 | 48 | ||
| 49 | ## 版本说明 | 49 | ## 版本说明 |
| 50 | 50 | ||
| @@ -8,20 +8,20 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据集下载](#jump3.1) | 17 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 18 | - [混合数据集处理](#jump3.2) | 18 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 19 | - [微调](#jump4) | 19 | - [微调](#微调) |
| 20 | - [准备工作](#jump4.1) | 20 | - [准备工作](#1-准备工作) |
| 21 | - [配置参数](#jump4.2) | 21 | - [配置参数](#2-配置参数) |
| 22 | - [启动微调](#jump4.3) | 22 | - [启动微调](#3-启动微调) |
| 23 | - [环境变量声明](#jump10) | 23 | - [环境变量声明](#环境变量声明) |
| 24 | - [注意事项](#jump11) | 24 | - [注意事项](#注意事项) |
| 25 | 25 | ||
| 26 | ## 版本说明 | 26 | ## 版本说明 |
| 27 | 27 | ||
| @@ -8,22 +8,22 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [权重转换](#jump2.2) | 16 | - [权重转换](#2-权重转换) |
| 17 | - [数据集准备及处理](#jump3) | 17 | - [数据集准备及处理](#数据集准备及处理) |
| 18 | - [数据集下载](#jump3.1) | 18 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 19 | - [混合数据集处理](#jump3.2) | 19 | - [混合数据集处理](#2混合数据集处理以llava-instruct-150k为例) |
| 20 | - [微调](#jump4) | 20 | - [微调](#微调) |
| 21 | - [准备工作](#jump4.1) | 21 | - [准备工作](#1-准备工作) |
| 22 | - [配置参数](#jump4.2) | 22 | - [配置参数](#2-配置参数) |
| 23 | - [启动微调](#jump4.3) | 23 | - [启动微调](#3-启动微调) |
| 24 | - [支持工具调用数据的微调](#jump4.5) | 24 | - [支持工具调用数据的微调](#4支持工具调用数据的微调) |
| 25 | - [环境变量声明](#jump10) | 25 | - [环境变量声明](#环境变量声明) |
| 26 | - [注意事项](#jump11) | 26 | - [注意事项](#注意事项) |
| 27 | 27 | ||
| 28 | ## 版本说明 | 28 | ## 版本说明 |
| 29 | 29 | ||
| @@ -8,20 +8,19 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据集下载](#jump3.1) | 17 | - [数据集下载](#1-数据集下载-以kan-tts数据集为例) |
| 18 | - [数据转换](#jump3.2) | 18 | - [数据转换](#2-数据转换-以kan-tts数据集为例) |
| 19 | - [数据提取](#jump3.3) | 19 | - [微调](#微调) |
| 20 | - [微调](#jump4) | 20 | - [准备工作](#1-准备工作) |
| 21 | - [准备工作](#jump4.1) | 21 | - [启动微调](#2-启动微调) |
| 22 | - [启动微调](#jump4.2) | 22 | - [环境变量声明](#环境变量声明) |
| 23 | - [环境变量声明](#jump10) | 23 | - [注意事项](#注意事项) |
| 24 | - [注意事项](#jump11) | ||
| 25 | 24 | ||
| 26 | ## 版本说明 | 25 | ## 版本说明 |
| 27 | 26 | ||
| @@ -8,22 +8,22 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据集下载](#jump3.1) | 17 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 18 | - [混合数据集处理](#jump3.2) | 18 | - [混合数据集处理](#2纯文本或有图无图混合训练数据以llava-instruct-150k为例) |
| 19 | - [微调](#jump4) | 19 | - [微调](#微调) |
| 20 | - [准备工作](#jump4.1) | 20 | - [准备工作](#1-准备工作) |
| 21 | - [配置参数](#jump4.2) | 21 | - [配置参数](#2-配置参数) |
| 22 | - [启动微调](#jump4.3) | 22 | - [启动微调](#3-启动微调) |
| 23 | - [启动推理](#jump4.4) | 23 | - [启动推理](#4-启动推理) |
| 24 | - [PMCC](#jump5) | 24 | - [PMCC](#pmccprivacy-and-model-confidential-computing) |
| 25 | - [环境变量声明](#jump10) | 25 | - [环境变量声明](#环境变量声明) |
| 26 | - [注意事项](#jump11) | 26 | - [注意事项](#注意事项) |
| 27 | 27 | ||
| 28 | ## 版本说明 | 28 | ## 版本说明 |
| 29 | 29 | ||
| @@ -234,7 +234,7 @@ data: | |||
| 234 | 234 | ||
| 235 | 开启MoE融合可以提升模型训练性能,开启方式为将`qwen3vl_full_sft_xxB.yaml`文件中修改`use_npu_fused_moe`字段为`true` | 235 | 开启MoE融合可以提升模型训练性能,开启方式为将`qwen3vl_full_sft_xxB.yaml`文件中修改`use_npu_fused_moe`字段为`true` |
| 236 | 236 | ||
| 237 | 注意:FusedMoE特性依赖较新版本,新版本的下载链接和安装方式参考[【环境准备】](#jump1.1)章节。 | 237 | 注意:FusedMoE特性依赖较新版本,新版本的下载链接和安装方式参考[【环境准备】](#1-环境准备)章节。 |
| 238 | 238 | ||
| 239 | 【MoE 专家并行配置】 | 239 | 【MoE 专家并行配置】 |
| 240 | 240 | ||
| @@ -335,7 +335,7 @@ WORLD_SIZE=$(($NPUS_PER_NODE * $NNODES)) | |||
| 335 | 335 | ||
| 336 | 【LoRA微调(可选)】 | 336 | 【LoRA微调(可选)】 |
| 337 | 337 | ||
| 338 | LoRA为框架通用能力,当前已支持30B模型的语言模块LoRA微调,参数介绍请参考[LoRA特性文档](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/features/lora_finetune.md)。 | 338 | LoRA为框架通用能力,当前已支持30B模型的语言模块LoRA微调,参数介绍请参考[LoRA特性文档](https://gitcode.com/Ascend/MindSpeed-MM/blob/master/docs/zh/features/lora_finetune.md)。 |
| 339 | 339 | ||
| 340 | LoRA微调场景下,需要先对原始权重完成以下权重转换 | 340 | LoRA微调场景下,需要先对原始权重完成以下权重转换 |
| 341 | 341 | ||
| @@ -8,20 +8,19 @@ | |||
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#变更记录) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境准备](#jump1.1) | 12 | - [环境准备](#1-环境准备) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [权重下载及转换](#jump2) | 14 | - [权重下载及转换](#权重下载及转换) |
| 15 | - [权重下载](#jump2.1) | 15 | - [权重下载](#1-权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [数据集下载](#jump3.1) | 17 | - [数据集下载](#1-数据集下载以coco2017数据集为例) |
| 18 | - [混合数据集处理](#jump3.2) | 18 | - [微调](#微调) |
| 19 | - [微调](#jump4) | 19 | - [准备工作](#1-准备工作) |
| 20 | - [准备工作](#jump4.1) | 20 | - [配置参数](#2-配置参数) |
| 21 | - [配置参数](#jump4.2) | 21 | - [启动微调](#3-启动微调) |
| 22 | - [启动微调](#jump4.3) | 22 | - [环境变量声明](#环境变量声明) |
| 23 | - [环境变量声明](#jump10) | 23 | - [注意事项](#注意事项) |
| 24 | - [注意事项](#jump11) | ||
| 25 | 24 | ||
| 26 | ## 版本说明 | 25 | ## 版本说明 |
| 27 | 26 | ||
| @@ -3,7 +3,7 @@ | |||
| 3 | <p align="left"> | 3 | <p align="left"> |
| 4 | </p> | 4 | </p> |
| 5 | 5 | ||
| 6 | - [self-forcing](#jump1) | 6 | - [self-forcing](#self-forcing) |
| 7 | - [模型介绍](#模型介绍) | 7 | - [模型介绍](#模型介绍) |
| 8 | - [版本说明](#版本说明) | 8 | - [版本说明](#版本说明) |
| 9 | - [参考实现](#参考实现) | 9 | - [参考实现](#参考实现) |
| @@ -355,32 +355,32 @@ StepVideo推理启动文件为shell脚本,主要分为如下2个: | |||
| 355 | 355 | ||
| 356 | 1. 权重配置 | 356 | 1. 权重配置 |
| 357 | 357 | ||
| 358 | 需根据实际任务情况在启动脚本文件(如`inference_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径(注意推理默认配置tp=4),如`LOAD_PATH="./StepVideo-Converted"`,其中`./StepVideo-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 | 358 | 需根据实际任务情况在启动脚本文件(如`inference_i2v.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径(注意推理默认配置tp=4),如`LOAD_PATH="./StepVideo-Converted"`,其中`./StepVideo-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 |
| 359 | 359 | ||
| 360 | 2. VAE及T5模型路径配置 | 360 | 2. VAE及T5模型路径配置 |
| 361 | 361 | ||
| 362 | 根据实际情况修改模型参数配置文件,如`inference_i2v_model.json`文件中`text_encoder`字段配置两种文本编译器路径`"from_pretrained": "./weights/step_llm/"`及`"from_pretrained": "./weights/hunyuan_clip/clip_text_encoder"`,`ae`字段配置VAE模型路径`"from_pretrained": "./weights/vae/vae_v2.safetensors"` | 362 | 根据实际情况修改模型参数配置文件,如`inference_i2v_model.json`文件中`text_encoder`字段配置两种文本编译器路径`"from_pretrained": "./weights/step_llm/"`及`"from_pretrained": "./weights/hunyuan_clip/clip_text_encoder"`,`ae`字段配置VAE模型路径`"from_pretrained": "./weights/vae/vae_v2.safetensors"` |
| 363 | 363 | ||
| 364 | 在`tokenizer`字段配置两种分词器路径`"from_pretrained": "/model_path/step_llm/step1_chat_tokenizer.model"`,及`"from_pretrained": "/model_path/hunyuan_clip/tokenizer"` | 364 | 在`tokenizer`字段配置两种分词器路径`"from_pretrained": "/model_path/step_llm/step1_chat_tokenizer.model"`,及`"from_pretrained": "/model_path/hunyuan_clip/tokenizer"` |
| 365 | 365 | ||
| 366 | 3. prompts配置 | 366 | 3. prompts配置 |
| 367 | 367 | ||
| 368 | | t2v prompts配置文件 | 修改字段 | 修改说明 | | 368 | | t2v prompts配置文件 | 修改字段 | 修改说明 | |
| 369 | |----------------------------------------|:--------------------------------:|:-----------------------------------:| | 369 | |----------------------------------------|:--------------------------------:|:-----------------------------------:| |
| 370 | | examples/stepvideo/t2v/samples_prompts.txt | 文件内容 | 自定义prompt | | 370 | | examples/stepvideo/t2v/samples_prompts.txt | 文件内容 | 自定义prompt | |
| 371 | 371 | ||
| 372 | | i2v prompts配置文件 | 修改字段 | 修改说明 | | 372 | | i2v prompts配置文件 | 修改字段 | 修改说明 | |
| 373 | |--------------------------------------------|:--------------------------------:|:----------------:| | 373 | |--------------------------------------------|:--------------------------------:|:----------------:| |
| 374 | | examples/stepvideo/i2v/samples_i2v_images.txt | 文件内容 | 图片路径 | | 374 | | examples/stepvideo/i2v/samples_i2v_images.txt | 文件内容 | 图片路径 | |
| 375 | | examples/stepvideo/i2v/samples_i2v_prompts.txt | 文件内容 | 自定义prompt | | 375 | | examples/stepvideo/i2v/samples_i2v_prompts.txt | 文件内容 | 自定义prompt | |
| 376 | 376 | ||
| 377 | 如果使用训练后保存的权重进行推理,需要使用脚本进行转换,权重转换source_path参数请配置训练时的保存路径 | 377 | 如果使用训练后保存的权重进行推理,需要使用脚本进行转换,权重转换source_path参数请配置训练时的保存路径 |
| 378 | 378 | ||
| 379 | ```bash | 379 | ```bash |
| 380 | mm-convert StepVideoConverter resplit \ | 380 | mm-convert StepVideoConverter resplit \ |
| 381 | --cfg.source_path <your source path> \ | 381 | --cfg.source_path <your source path> \ |
| 382 | --cfg.target_path <your target path> | 382 | --cfg.target_path <your target path> \ |
| 383 | ``` | 383 | ``` |
| 384 | 384 | ||
| 385 | ### 启动推理 | 385 | ### 启动推理 |
| 386 | 386 | ||
| @@ -411,22 +411,22 @@ bash examples/stepvideo/i2v/inference_i2v.sh | |||
| 411 | 411 | ||
| 412 | 1. 修改推理配置文件: | 412 | 1. 修改推理配置文件: |
| 413 | 413 | ||
| 414 | | 参数配置文件 | 修改字段 | 修改说明 | | 414 | | 参数配置文件 | 修改字段 | 修改说明 | |
| 415 | |------------------------------------------------------------|:--------------------------------:|:----------------------------------| | 415 | |------------------------------------------------------------|:--------------------------------:|:----------------------------------| |
| 416 | | examples/stepvideo/{task_name}/inference_*_model.json | from_pretrained | 修改为下载的权重所对应路径(包括VAE、Text Encoder) | | 416 | | examples/stepvideo/{task_name}/inference_*_model.json | from_pretrained | 修改为下载的权重所对应路径(包括VAE、Text Encoder) | |
| 417 | | examples/stepvideo/{task_name}/inference_*_model.json | num_inference_videos_per_sample | 每个prompt生成的视频样本数量,建议至少大于2 | | 417 | | examples/stepvideo/{task_name}/inference_*_model.json | num_inference_videos_per_sample | 每个prompt生成的视频样本数量,建议至少大于2 | |
| 418 | | examples/stepvideo/{task_name}/inference_*_model.json | save_path | 生成视频的保存路径 | | 418 | | examples/stepvideo/{task_name}/inference_*_model.json | save_path | 生成视频的保存路径 | |
| 419 | | examples/stepvideo/{task_name}/inference_*.sh | LOAD_PATH | 转换之后的transform部分权重路径 | | 419 | | examples/stepvideo/{task_name}/inference_*.sh | LOAD_PATH | 转换之后的transform部分权重路径 | |
| 420 | 420 | ||
| 421 | | t2v prompts配置文件 | 修改字段 | 修改说明 | | 421 | | t2v prompts配置文件 | 修改字段 | 修改说明 | |
| 422 | |----------------------------------------|:--------------------------------:|:-----------------------------------:| | 422 | |----------------------------------------|:--------------------------------:|:-----------------------------------:| |
| 423 | | examples/stepvideo/t2v/samples_prompts.txt | 文件内容 | 自定义prompt | | 423 | | examples/stepvideo/t2v/samples_prompts.txt | 文件内容 | 自定义prompt | |
| 424 | 424 | ||
| 425 | 2. 启动推理流程生成视频样本: | 425 | 2. 启动推理流程生成视频样本: |
| 426 | 426 | ||
| 427 | ```shell | 427 | ```shell |
| 428 | bash examples/stepvideo/{task_name}/inference_{task_name}.sh | 428 | bash examples/stepvideo/{task_name}/inference_{task_name}.sh |
| 429 | ``` | 429 | ``` |
| 430 | 430 | ||
| 431 | 3. 删除视频样本保存路径下的video_grid.mp4,最终视频样本数量为:prompt条数 * $num_inference_videos_per_sample | 431 | 3. 删除视频样本保存路径下的video_grid.mp4,最终视频样本数量为:prompt条数 * $num_inference_videos_per_sample |
| 432 | 432 | ||
| @@ -476,21 +476,18 @@ data.jsonl中包含成对的视频偏好数据和文本信息,具体示例如 | |||
| 476 | 476 | ||
| 477 | 1. 权重配置 | 477 | 1. 权重配置 |
| 478 | 478 | ||
| 479 | 需根据实际任务情况在启动脚本文件(如`posttrain_t2v_dpo.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./StepVideo-Converted"`,其中`./StepVideo-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 | 479 | 需根据实际任务情况在启动脚本文件(如`posttrain_t2v_dpo.sh`)中的`LOAD_PATH="your_converted_dit_ckpt_dir"`变量中添加转换后的权重的实际路径,如`LOAD_PATH="./StepVideo-Converted"`,其中`./StepVideo-Converted`为转换后的权重的实际路径,其文件夹内容结构如权重转换一节所示。`LOAD_PATH`变量中填写的完整路径一定要正确,填写错误的话会导致权重无法加载但运行并不会提示报错。 |
| 480 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的权重。 | 480 | 根据需要填写`SAVE_PATH`变量中的路径,用以保存训练后的权重。 |
| 481 | |||
| 482 | 2. 偏好数据集路径配置 | 481 | 2. 偏好数据集路径配置 |
| 483 | 482 | ||
| 484 | 根据实际情况修改`data_dpo.json`中的偏好数据集路径,分别为`"data_path":"/data_path/data.jsonl"`替换为实际的data.jsonl所在路径,`"data_folder":"/data_path/"`替换`"/data_path/"`为实际的视频样本所在路径。 | 483 | 根据实际情况修改`data_dpo.json`中的偏好数据集路径,分别为`"data_path":"/data_path/data.jsonl"`替换为实际的data.jsonl所在路径,`"data_folder":"/data_path/"`替换`"/data_path/"`为实际的视频样本所在路径。 |
| 485 | |||
| 486 | 3. VAE及text_encoder、tokenizer路径配置 | 484 | 3. VAE及text_encoder、tokenizer路径配置 |
| 487 | 485 | ||
| 488 | 根据实际情况修改模型参数配置文件,如`posttrain_*_model.json`文件中`text_encoder`字段配置两种文本编译器路径`"from_pretrained": "./weights/step_llm/"`及`"from_pretrained": "./weights/hunyuan_clip/clip_text_encoder"`,`ae`字段配置VAE模型路径`"from_pretrained": "./weights/vae/vae_v2.safetensors"` | 486 | 根据实际情况修改模型参数配置文件,如`posttrain_*_model.json`文件中`text_encoder`字段配置两种文本编译器路径`"from_pretrained": "./weights/step_llm/"`及`"from_pretrained": "./weights/hunyuan_clip/clip_text_encoder"`,`ae`字段配置VAE模型路径`"from_pretrained": "./weights/vae/vae_v2.safetensors"` |
| 489 | `data_dpo.json`文件中`tokenizer_config`字段配置两种分词器路径`"from_pretrained": "/model_path/step_llm/step1_chat_tokenizer.model"` 及`"from_pretrained": "/model_path/hunyuan_clip/tokenizer"` | 487 | `data_dpo.json`文件中`tokenizer_config`字段配置两种分词器路径`"from_pretrained": "/model_path/step_llm/step1_chat_tokenizer.model"` 及`"from_pretrained": "/model_path/hunyuan_clip/tokenizer"` |
| 490 | |||
| 491 | 4. dpo参数配置 | 488 | 4. dpo参数配置 |
| 492 | 489 | ||
| 493 | 根据实际情况修改`posttrain_t2v_model.json`中的直方图文件路径,即将`histogram_path`的值配置为执行生成偏好数据集脚本后,生成的"video_score_histogram.json"文件路径 | 490 | 根据实际情况修改`posttrain_t2v_model.json`中的直方图文件路径,即将`histogram_path`的值配置为执行生成偏好数据集脚本后,生成的"video_score_histogram.json"文件路径 |
| 494 | 491 | ||
| 495 | ### 启动dpo训练 | 492 | ### 启动dpo训练 |
| 496 | 493 | ||
| @@ -331,36 +331,36 @@ bash examples/vace/{model_type}/pretrain_fsdp.sh | |||
| 331 | 331 | ||
| 332 | 1. 【下载DiffSynth-Studio】 | 332 | 1. 【下载DiffSynth-Studio】 |
| 333 | 333 | ||
| 334 | ```shell | 334 | ```shell |
| 335 | cd examples/vace | 335 | cd examples/vace |
| 336 | git clone https://github.com/modelscope/DiffSynth-Studio.git | 336 | git clone https://github.com/modelscope/DiffSynth-Studio.git |
| 337 | cd DiffSynth-Studio | 337 | cd DiffSynth-Studio |
| 338 | git checkout 8332ece | 338 | git checkout 8332ece |
| 339 | cp ../inference/Wan-VACE-Inference.py examples/wanvideo/model_inference | 339 | cp ../inference/Wan-VACE-Inference.py examples/wanvideo/model_inference |
| 340 | ``` | 340 | ``` |
| 341 | 341 | ||
| 342 | 2. 【npu适配】 | 342 | 2. 【npu适配】 |
| 343 | 343 | ||
| 344 | ```shell | 344 | ```shell |
| 345 | vim diffsynth/utils/__init__.py | 345 | vim diffsynth/utils/__init__.py |
| 346 | ``` | 346 | ``` |
| 347 | 347 | ||
| 348 | 将131行的`torch.cuda.mem_get_info(self.device)[1] / (1024 ** 3)` | 348 | 将131行的`torch.cuda.mem_get_info(self.device)[1] / (1024 ** 3)` |
| 349 | 改为`torch.npu.mem_get_info()[1] / (1024 ** 3)` | 349 | 改为`torch.npu.mem_get_info()[1] / (1024 ** 3)` |
| 350 | 350 | ||
| 351 | ```shell | 351 | ```shell |
| 352 | vim diffsynth/vram_management/layers.py | 352 | vim diffsynth/vram_management/layers.py |
| 353 | ``` | 353 | ``` |
| 354 | 354 | ||
| 355 | 将16行的`torch.cuda.mem_get_info(self.computation_device)` | 355 | 将16行的`torch.cuda.mem_get_info(self.computation_device)` |
| 356 | 改为`torch.npu.mem_get_info()` | 356 | 改为`torch.npu.mem_get_info()` |
| 357 | 357 | ||
| 358 | ```shell | 358 | ```shell |
| 359 | vim diffsynth/models/wan_video_dit.py | 359 | vim diffsynth/models/wan_video_dit.py |
| 360 | ``` | 360 | ``` |
| 361 | 361 | ||
| 362 | 将96行的`freqs` | 362 | 将96行的`freqs` |
| 363 | 改为`freqs.to(torch.complex64)` | 363 | 改为`freqs.to(torch.complex64)` |
| 364 | 364 | ||
| 365 | ### 启动推理 | 365 | ### 启动推理 |
| 366 | 366 | ||
| @@ -5,19 +5,19 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取](#jump1.1) | 9 | - [仓库拉取](#1-仓库拉取) |
| 10 | - [环境搭建](#jump1.2) | 10 | - [环境搭建](#2-环境搭建) |
| 11 | - [Decord安装](#jump1.3) | 11 | - [Decord安装](#3-decord搭建) |
| 12 | - [权重下载](#jump2) | 12 | - [权重下载](#权重下载) |
| 13 | - [权重下载与保存](#jump2.1) | 13 | - [权重下载与保存](#1-权重下载与保存) |
| 14 | - [数据集准备](#jump3) | 14 | - [数据集准备](#数据集准备) |
| 15 | - [数据集下载](#jump3.1) | 15 | - [数据集下载](#1-数据集下载) |
| 16 | - [预训练](#jump4) | 16 | - [预训练](#预训练) |
| 17 | - [准备工作](#jump4.1) | 17 | - [准备工作](#1-准备工作) |
| 18 | - [配置参数](#jump4.2) | 18 | - [配置参数](#2-配置参数) |
| 19 | - [启动预训练](#jump4.3) | 19 | - [启动预训练](#3-启动预训练) |
| 20 | - [环境变量声明](#jump5) | 20 | - [环境变量声明](#环境变量声明) |
| 21 | 21 | ||
| 22 | --- | 22 | --- |
| 23 | <a id="jump1"></a> | 23 | <a id="jump1"></a> |
| @@ -5,21 +5,21 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [简介](#jump0) | 8 | - [简介](#简介) |
| 9 | - [参考实现](#jump0.1) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#jump0.2) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境依赖](#jump1.1) | 12 | - [环境依赖](#1-环境依赖) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [安装插件](#jump1.3) | 14 | - [安装插件](#3-安装插件) |
| 15 | - [权重下载及转换](#jump2) | 15 | - [权重下载及转换](#权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [训练](#jump4) | 17 | - [训练](#训练) |
| 18 | - [准备工作](#jump4.1) | 18 | - [准备工作](#1-准备工作) |
| 19 | - [启动训练](#jump4.2) | 19 | - [启动训练](#2-启动训练) |
| 20 | - [日志打点指标说明](#jump4.3) | 20 | - [日志打点指标说明](#3-日志打点指标说明) |
| 21 | - [注意事项](#jump5) | 21 | - [注意事项](#注意事项) |
| 22 | - [性能数据](#jump6) | 22 | - [性能数据](#性能数据) |
| 23 | 23 | ||
| 24 | <a id="jump0"></a> | 24 | <a id="jump0"></a> |
| 25 | 25 | ||
| @@ -325,14 +325,14 @@ python ./examples/data_preprocess/geo3k.py --local_dir=./data/geo3k | |||
| 325 | 325 | ||
| 326 | 1. 容器内启动时可能会遇到不存在`ip`命令的错误,可使用如下命令进行安装: | 326 | 1. 容器内启动时可能会遇到不存在`ip`命令的错误,可使用如下命令进行安装: |
| 327 | 327 | ||
| 328 | ```shell | 328 | ```shell |
| 329 | sudo apt-get install iproute2 | 329 | sudo apt-get install iproute2 |
| 330 | ``` | 330 | ``` |
| 331 | 331 | ||
| 332 | 2. 如果安装vllm ascend失败,提示`fatal error: 'cstdint' file not found`,可能是gcc版本问题,可参考[此处](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha003/softwareinst/instg/instg_0086.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)解决。更多vllm ascend问题可以向[社区](https://github.com/vllm-project/vllm-ascend)求助。 | 332 | 2. 如果安装vllm ascend失败,提示`fatal error: 'cstdint' file not found`,可能是gcc版本问题,可参考[此处](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha003/softwareinst/instg/instg_0086.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)解决。更多vllm ascend问题可以向[社区](https://github.com/vllm-project/vllm-ascend)求助。 |
| 333 | 333 | ||
| 334 | 3. 可以使用[Ray Debugger](https://docs.ray.io/en/latest/ray-observability/ray-distributed-debugger.html)对代码进行调试,在安装完插件后,需要在环境中安装依赖: | 334 | 3. 可以使用[Ray Debugger](https://docs.ray.io/en/latest/ray-observability/ray-distributed-debugger.html)对代码进行调试,在安装完插件后,需要在环境中安装依赖: |
| 335 | 335 | ||
| 336 | ```shell | 336 | ```shell |
| 337 | pip install "ray[default]" debugpy | 337 | pip install "ray[default]" debugpy |
| 338 | ``` | 338 | ``` |
| @@ -5,20 +5,20 @@ | |||
| 5 | 5 | ||
| 6 | ## 目录 | 6 | ## 目录 |
| 7 | 7 | ||
| 8 | - [简介](#jump0) | 8 | - [简介](#简介) |
| 9 | - [参考实现](#jump0.1) | 9 | - [参考实现](#参考实现) |
| 10 | - [变更记录](#jump0.2) | 10 | - [变更记录](#变更记录) |
| 11 | - [环境安装](#jump1) | 11 | - [环境安装](#环境安装) |
| 12 | - [环境依赖](#jump1.1) | 12 | - [环境依赖](#1-环境依赖) |
| 13 | - [环境搭建](#jump1.2) | 13 | - [环境搭建](#2-环境搭建) |
| 14 | - [安装插件](#jump1.3) | 14 | - [安装插件](#3-安装插件) |
| 15 | - [权重下载及转换](#jump2) | 15 | - [权重下载及转换](#权重下载) |
| 16 | - [数据集准备及处理](#jump3) | 16 | - [数据集准备及处理](#数据集准备及处理) |
| 17 | - [训练](#jump4) | 17 | - [训练](#训练) |
| 18 | - [准备工作](#jump4.1) | 18 | - [准备工作](#1-准备工作) |
| 19 | - [启动训练](#jump4.2) | 19 | - [启动训练](#2-启动训练) |
| 20 | - [日志打点指标说明](#jump4.3) | 20 | - [日志打点指标说明](#3-日志打点指标说明) |
| 21 | - [注意事项](#jump5) | 21 | - [注意事项](#注意事项) |
| 22 | 22 | ||
| 23 | <a id="jump0"></a> | 23 | <a id="jump0"></a> |
| 24 | 24 | ||
| @@ -337,22 +337,22 @@ dataset = dataset.load_dataset(data_source) # 将data_source修改为数据集 | |||
| 337 | 337 | ||
| 338 | 1. 容器内启动时可能会遇到不存在`ip`命令的错误,可使用如下命令进行安装: | 338 | 1. 容器内启动时可能会遇到不存在`ip`命令的错误,可使用如下命令进行安装: |
| 339 | 339 | ||
| 340 | ```shell | 340 | ```shell |
| 341 | sudo apt-get install iproute2 | 341 | sudo apt-get install iproute2 |
| 342 | ``` | 342 | ``` |
| 343 | 343 | ||
| 344 | 2. 如果安装vllm ascend失败,提示`fatal error: 'cstdint' file not found`,可能是gcc版本问题,可参考[此处](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha003/softwareinst/instg/instg_0086.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)解决。更多vllm ascend问题可以向[社区](https://github.com/vllm-project/vllm-ascend)求助。 | 344 | 2. 如果安装vllm ascend失败,提示`fatal error: 'cstdint' file not found`,可能是gcc版本问题,可参考[此处](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha003/softwareinst/instg/instg_0086.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)解决。更多vllm ascend问题可以向[社区](https://github.com/vllm-project/vllm-ascend)求助。 |
| 345 | 345 | ||
| 346 | 3. 可以使用[Ray Debugger](https://docs.ray.io/en/latest/ray-observability/ray-distributed-debugger.html)对代码进行调试,在安装完插件后,需要在环境中安装依赖: | 346 | 3. 可以使用[Ray Debugger](https://docs.ray.io/en/latest/ray-observability/ray-distributed-debugger.html)对代码进行调试,在安装完插件后,需要在环境中安装依赖: |
| 347 | 347 | ||
| 348 | ```shell | 348 | ```shell |
| 349 | pip install "ray[default]" debugpy | 349 | pip install "ray[default]" debugpy |
| 350 | ``` | 350 | ``` |
| 351 | 351 | ||
| 352 | 4. 确认插件安装完成,可通过检查文件是否修改成功(`vi ../../verl/verl/__init__.py` 确认文件末尾是否有`import verl_npu`等代码追加),如果没有修改成功,推荐修改安装插件命令为: | 352 | 4. 确认插件安装完成,可通过检查文件是否修改成功(`vi ../../verl/verl/__init__.py` 确认文件末尾是否有`import verl_npu`等代码追加),如果没有修改成功,推荐修改安装插件命令为: |
| 353 | 353 | ||
| 354 | ```shell | 354 | ```shell |
| 355 | pip install -v . | 355 | pip install -v . |
| 356 | ``` | 356 | ``` |
| 357 | 357 | ||
| 358 | --- | 358 | --- |
| @@ -5,30 +5,30 @@ | |||
| 5 | - [版本说明](#版本说明) | 5 | - [版本说明](#版本说明) |
| 6 | - [参考实现](#参考实现) | 6 | - [参考实现](#参考实现) |
| 7 | - [变更记录](#变更记录) | 7 | - [变更记录](#变更记录) |
| 8 | - [环境安装](#jump1) | 8 | - [环境安装](#环境安装) |
| 9 | - [仓库拉取](#jump1.1) | 9 | - [仓库拉取](#1-仓库拉取) |
| 10 | - [环境搭建](#jump1.2) | 10 | - [环境搭建](#2-环境搭建) |
| 11 | - [权重下载及转换](#jump2) | 11 | - [权重下载及转换](#权重下载及转换) |
| 12 | - [权重下载](#jump2.1) | 12 | - [权重下载](#1-权重下载) |
| 13 | - [权重转换hf2mm](#jump2.2) | 13 | - [权重转换hf2mm](#2-权重转换hf2mm) |
| 14 | - [数据集准备及处理](#jump3) | 14 | - [数据集准备及处理](#数据集准备及处理) |
| 15 | - [数据集下载](#jump3.1) | 15 | - [数据集下载](#数据集下载以rewardbench数据集为例) |
| 16 | - [微调](#jump4) | 16 | - [微调](#微调) |
| 17 | - [准备工作](#jump4.1) | 17 | - [准备工作](#1-准备工作) |
| 18 | - [配置参数](#jump4.2) | 18 | - [配置参数](#2-配置参数) |
| 19 | - [启动微调](#jump4.3) | 19 | - [启动微调](#3-启动微调) |
| 20 | - [推理](#jump5) | 20 | - [推理](#推理) |
| 21 | - [准备工作](#jump5.1) | 21 | - [准备工作](#1准备工作以微调环境为基础包括环境安装权重下载及转换) |
| 22 | - [配置参数](#jump5.2) | 22 | - [配置参数](#2配置参数) |
| 23 | - [启动推理](#jump5.3) | 23 | - [启动推理](#3启动推理) |
| 24 | - [评测](#jump6) | 24 | - [评测](#评测) |
| 25 | - [准备工作](#jump6.1) | 25 | - [准备工作](#1准备工作以微调环境为基础包括环境安装权重下载及转换) |
| 26 | - [配置参数](#jump6.2) | 26 | - [配置参数](#2配置参数) |
| 27 | - [启动评测](#jump6.3) | 27 | - [启动评测](#3启动评测) |
| 28 | - [特性使用介绍](#jump7) | 28 | - [特性使用介绍](#特性使用介绍) |
| 29 | - [lora微调](#jump7.1) | 29 | - [lora微调](#lora微调) |
| 30 | - [环境变量声明](#jump8) | 30 | - [环境变量声明](#环境变量声明) |
| 31 | - [注意事项](#jump9) | 31 | - [注意事项](#注意事项) |
| 32 | 32 | ||
| 33 | ## 版本说明 | 33 | ## 版本说明 |
| 34 | 34 | ||
| @@ -277,54 +277,54 @@ LOAD_PATH="ckpt/mm_path/VideoReward" | |||
| 277 | 277 | ||
| 278 | 1. full模式 | 278 | 1. full模式 |
| 279 | 279 | ||
| 280 | TransformerLayer中的所有组件(layernorm、attention、mlp)都进行重计算,此时可以配置重计算的层数。 | 280 | TransformerLayer中的所有组件(layernorm、attention、mlp)都进行重计算,此时可以配置重计算的层数。 |
| 281 | 281 | ||
| 282 | - `recompute_method`: 控制重计算层数计算的方法,可选值为`uniform`(均匀重计算)或`block`(按块重计算)。 | 282 | - `recompute_method`: 控制重计算层数计算的方法,可选值为`uniform`(均匀重计算)或`block`(按块重计算)。 |
| 283 | - `recompute_num_layers`: 控制重计算的层数,指定需要重计算的层数量。 | 283 | - `recompute_num_layers`: 控制重计算的层数,指定需要重计算的层数量。 |
| 284 | 284 | ||
| 285 | 示例配置如下: | 285 | 示例配置如下: |
| 286 | 286 | ||
| 287 | ```json | 287 | ```json |
| 288 | { | 288 | { |
| 289 | "model_id": "videoalign", | 289 | "model_id": "videoalign", |
| 290 | "img_context_token_id": 151656, | 290 | "img_context_token_id": 151656, |
| 291 | "video_token_id": 151656, | 291 | "video_token_id": 151656, |
| 292 | "vision_start_token_id": 151652, | 292 | "vision_start_token_id": 151652, |
| 293 | ... | 293 | ... |
| 294 | "image_encoder": { | 294 | "image_encoder": { |
| 295 | "vision_encoder": { | 295 | "vision_encoder": { |
| 296 | ... | ||
| 297 | "recompute_granularity": "full", | ||
| 298 | "recompute_method": "uniform", | ||
| 299 | "recompute_num_layers": 1 | ||
| 300 | } | ||
| 301 | }, | ||
| 296 | ... | 302 | ... |
| 297 | "recompute_granularity": "full", | ||
| 298 | "recompute_method": "uniform", | ||
| 299 | "recompute_num_layers": 1 | ||
| 300 | } | 303 | } |
| 301 | }, | 304 | ``` |
| 302 | ... | ||
| 303 | } | ||
| 304 | ``` | ||
| 305 | 305 | ||
| 306 | 2. selective模式 | 306 | 2. selective模式 |
| 307 | 307 | ||
| 308 | 仅对TransformerLayer中attention的core_attention组件进行重计算。注意:lora场景无法使用。 | 308 | 仅对TransformerLayer中attention的core_attention组件进行重计算。注意:lora场景无法使用。 |
| 309 | |||
| 310 | 示例配置如下: | ||
| 309 | 311 | ||
| 310 | 示例配置如下: | 312 | ```json |
| 311 | 313 | { | |
| 312 | ```json | 314 | "model_id": "videoalign", |
| 313 | { | 315 | "img_context_token_id": 151656, |
| 314 | "model_id": "videoalign", | 316 | "video_token_id": 151656, |
| 315 | "img_context_token_id": 151656, | 317 | "vision_start_token_id": 151652, |
| 316 | "video_token_id": 151656, | 318 | ... |
| 317 | "vision_start_token_id": 151652, | 319 | "image_encoder": { |
| 318 | ... | 320 | "vision_encoder": { |
| 319 | "image_encoder": { | 321 | ... |
| 320 | "vision_encoder": { | 322 | "recompute_granularity": "selective" |
| 323 | } | ||
| 324 | }, | ||
| 321 | ... | 325 | ... |
| 322 | "recompute_granularity": "selective" | ||
| 323 | } | 326 | } |
| 324 | }, | 327 | ``` |
| 325 | ... | ||
| 326 | } | ||
| 327 | ``` | ||
| 328 | 328 | ||
| 329 | 【模型保存加载及日志信息配置】 | 329 | 【模型保存加载及日志信息配置】 |
| 330 | 330 | ||
| @@ -359,8 +359,8 @@ OUTPUT_ARGS=" | |||
| 359 | 359 | ||
| 360 | ```shell | 360 | ```shell |
| 361 | $save_dir | 361 | $save_dir |
| 362 | ├── latest_checkpointed_iteration.txt | 362 | ├── latest_checkpointed_iteration.txt |
| 363 | ├── ... | 363 | ├── ... |
| 364 | ``` | 364 | ``` |
| 365 | 365 | ||
| 366 | 若开启lora混合训练,保存权重包含lora权重和非lora权重,需要通过转换脚本进行拆分后分别加载。(此功能coming soon) | 366 | 若开启lora混合训练,保存权重包含lora权重和非lora权重,需要通过转换脚本进行拆分后分别加载。(此功能coming soon) |
| @@ -14,7 +14,7 @@ | |||
| 14 | - [权重转换](#权重转换) | 14 | - [权重转换](#权重转换) |
| 15 | - [权重下载及在线加载](#权重下载及在线加载) | 15 | - [权重下载及在线加载](#权重下载及在线加载) |
| 16 | - [Diffusers权重下载](#diffusers权重下载) | 16 | - [Diffusers权重下载](#diffusers权重下载) |
| 17 | - [权重在线加载](#权重在线加载) | 17 | - [在线加载](#在线加载) |
| 18 | - [预训练](#预训练) | 18 | - [预训练](#预训练) |
| 19 | - [数据预处理](#数据预处理) | 19 | - [数据预处理](#数据预处理) |
| 20 | - [特征提取](#特征提取) | 20 | - [特征提取](#特征提取) |
| @@ -165,7 +165,7 @@ mm-convert WanConverter hf_to_mm \ | |||
| 165 | 165 | ||
| 166 | 如需转回Hugging Face格式,需运行权重转换脚本: | 166 | 如需转回Hugging Face格式,需运行权重转换脚本: |
| 167 | 167 | ||
| 168 | **注**: 如进行layer zero进行训练,则需首先进行其[训练权重后处理](#jump1),再进行如下操作: | 168 | **注**: 如进行layer zero进行训练,则需首先进行其[训练权重后处理](#训练权重后处理),再进行如下操作: |
| 169 | 169 | ||
| 170 | ```shell | 170 | ```shell |
| 171 | mm-convert WanConverter mm_to_hf \ | 171 | mm-convert WanConverter mm_to_hf \ |
| @@ -143,7 +143,7 @@ mm-convert WanConverter mm_to_dcp \ | |||
| 143 | 143 | ||
| 144 | 如需转回Hugging Face格式,需运行权重转换脚本: | 144 | 如需转回Hugging Face格式,需运行权重转换脚本: |
| 145 | 145 | ||
| 146 | **注**: wan2.2使用fsdp2进行训练,需首先进行其[训练权重后处理](#jump1),再进行如下操作: | 146 | **注**: wan2.2使用fsdp2进行训练,需首先进行其[训练权重后处理](#训练权重后处理),再进行如下操作: |
| 147 | 147 | ||
| 148 | ```shell | 148 | ```shell |
| 149 | mm-convert WanConverter mm_to_hf \ | 149 | mm-convert WanConverter mm_to_hf \ |
| @@ -358,7 +358,7 @@ GPT_ARGS=" | |||
| 358 | bash examples/wan2.2/A14B/t2v/finetune_lora_{low/high}.sh | 358 | bash examples/wan2.2/A14B/t2v/finetune_lora_{low/high}.sh |
| 359 | ``` | 359 | ``` |
| 360 | 360 | ||
| 361 | 微调完成后,需首先对保存的lora权重进行[权重后处理](#jump1),再使用权重转换工具,将训练好的lora权重与原始权重进行合并 | 361 | 微调完成后,需首先对保存的lora权重进行[权重后处理](#训练权重后处理),再使用权重转换工具,将训练好的lora权重与原始权重进行合并 |
| 362 | 362 | ||
| 363 | ```bash | 363 | ```bash |
| 364 | mm-convert WanConverter merge_lora_to_base \ | 364 | mm-convert WanConverter merge_lora_to_base \ |
这里删除这句话的原因是什么