ModelScope中qwen模型魔塔的swift训练和官网的训练比,需要的显存小一点,是为什么?
ModelScope中Qwen模型通过魔塔(MoTA)进行Swift训练时,相较于官网推荐的训练方式,所需显存更小,这主要与以下几个因素相关:
魔塔的Swift训练可能采用了更加高效的**参数高效微调(PEFT, Parameter-Efficient Fine-Tuning)**技术,例如LoRA(Low-Rank Adaptation)或QLoRA。这些方法仅对模型的部分参数进行更新,而不是对整个模型权重进行调整,从而显著降低了显存需求。
LoRA/QLoRA的作用:
LoRA通过低秩分解的方式减少需要更新的参数量,而QLoRA进一步结合了量化技术(如4-bit或8-bit加载),在保持模型性能的同时大幅降低显存占用。
官网训练的对比:
官网推荐的训练方式可能默认采用全量微调(Full Fine-Tuning),即对所有模型参数进行更新,这种方式对显存的需求更高。
Swift训练可能启用了更低精度的模型加载方式,例如4-bit量化(load_in_4bit=True)或8-bit量化(load_in_8bit=True)。这种量化技术通过降低模型权重的存储精度来减少显存占用,同时尽可能保持模型性能。
量化的效果:
官网训练的对比:
官网训练可能默认使用FP16(16位浮点数)或FP32(32位浮点数)加载模型,显存占用相对更高。
Swift训练可能通过**梯度累积(Gradient Accumulation)和较小的每设备批次大小(per_device_train_batch_size)**来进一步降低显存需求。
梯度累积的作用:
梯度累积允许在显存有限的情况下模拟更大的批次大小。例如,当gradient_accumulation_steps=8
时,实际效果等同于将批次大小扩大8倍,但显存需求不会增加。
较小的批次大小:
Swift训练可能默认设置较小的per_device_train_batch_size
(如1),以适应显存受限的环境。
官网训练的对比:
官网训练可能默认使用较大的批次大小,导致显存需求更高。
如果Swift训练支持分布式推理或多GPU配置,则可以将模型的计算和存储分布到多个GPU上,从而降低单个GPU的显存压力。
分布式推理的优势:
分布式推理通过将模型分片(Model Sharding)或使用张量并行(Tensor Parallelism)技术,将显存需求分散到多个GPU上。
官网训练的对比:
官网训练可能默认基于单GPU配置,未充分利用分布式推理的优势。
Swift训练可能针对特定任务优化了数据集规模和序列长度(seq_length),从而减少了显存需求。
数据集规模的影响:
较小的数据集意味着每次迭代需要加载的样本数量更少,显存占用更低。
序列长度的影响:
较短的序列长度(如128)相较于长序列(如512或1024)会显著减少显存需求。
官网训练的对比:
官网训练可能默认使用较大的序列长度或未优化的数据集配置。
综上所述,ModelScope中Qwen模型通过魔塔进行Swift训练时,显存需求更小的原因主要包括以下几点: 1. 使用了高效的轻量化训练策略(如LoRA/QLoRA)。 2. 启用了低精度模型加载(如4-bit或8-bit量化)。 3. 优化了梯度累积和批次大小配置。 4. 可能支持分布式推理或多GPU配置。 5. 针对特定任务优化了数据集规模和序列长度。
这些优化措施共同作用,使得Swift训练在显存受限的环境下更具优势。
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352