Skip to content

PaddleNLP 2.7.0 Release Note

Compare
Choose a tag to compare
@ZHUI ZHUI released this 03 Jan 04:07
· 44 commits to release/2.7 since this release
adf9e6f

很高兴地通知大家,飞桨大模型套件发布v2.7.0版本。这个版本中,我们深入优化套件的大模型能力。从易用性、性能、到稳定性都有巨大提升。

总体而言,当前版本更新有以下亮点:

  • 统一工具链大模型入口。统一预训练、精调、压缩、推理以及部署等环节的实现代码,到 PaddleNLP/llm目录。
  • 全新大模型工具链文档。一站式指引用户从大模型入门到业务部署上线。文档见: https://paddlenlp.readthedocs.io/zh/latest/llm/finetune.html
  • 全断点存储机制 Unified Checkpoint。 在存储断点时将模型权重、优化器权重等进行统一safetensors格式存储,不再区分分布式策略存储,并且支持恢复训练的动态扩缩容,大大提高大模型存储的通用性。
  • 高效微调升级。支持了高效微调+LoRA同时使用,支持了QLoRA等算法。

大模型训推全流程

  • 预训练
    • 统一了预训练入口到 llm/run_pretrain.py
    • 支持了qwen 等模型预训练,支持flash attention。
  • 精调
    • 支持可LoRA + Linear量化同时使用
    • 支持了流水线并行模型 + lora一起使用
    • 支持了NEFTune方法
    • 添加了QLoRA支持
  • 压缩
    • 支持PTQ、QAT量化功能,包括A8W8、WINT8、WINT4、A8W4
    • 支持SmoothQuant、GPTQ、AWQ等量化算法

Unified Checkpoint

  • 在大模型背景下,通常我们需要进行多卡分布式的训练,在保存Checkpoint时所得到的模型权重通常是分片放置的,例如根据张量并行、流水线并行进行切分保存。这种根据分布式策略直接存储Checkpoint的方式非常直接明了,但也存在如下的问题:
    • 对下游推理不够友好,当用户希望获取中间阶段保存的Checkpoint做下游推理时,需要手动对模型权重进行合并。
    • 不利于应对做恢复训练时,可能会面临的分布式策略改变、训练节点数发生变化的情况。用户往往需要手动对Checkpoint进行处理,增加了操作复杂度。
  • 为了最大程度地解决上述的问题,降低用户操作难度,我们对大模型存储框架进行了升级,提出了大模型统一存储方案——Unified Checkpoint。Unified Checkpoint的核心思想是将模型权重、优化器权重等进行统一safetensors格式存储,在Checkpoint存储时不再对分布式策略进行区分,提高大模型存储的通用性。
  • Unified Checkpoint具备以下功能与特点:
    • 权重存储不区分分布式策略,并采用safetensors格式统一存储;
    • 灵活支持大模型训练扩容、缩容等各种情况,能够适配不同分布式训练策略的切换

模型新增

  • moka-ai/m3e-base 检索模型
  • BAAI/bge-small-zh-v1.5 检索模型

基础框架升级

  • Trainer 升级
    • 支持了 "--skip_memory_metrics 0"是,显示实时 显存、内存占用
    • 支持 "--unified_checkpoint" "--unified_checkpoint_config" 支持混合并行下模型save,动态扩缩容重启。
  • 新增 PretrainModelPipe基础类,支持流水线并行训练。
    其他支持
  • 支持了paddlenlp commit id 展示 paddlenlp.version.commit
  • 支持AI Studio download add save to aistudio hub

问题修复

  • 修复了dist_dataloader的一些问题
  • 修复了一些模型动转静问题
  • 修复了GPT训练的一些bug,移除了GPT2。修复了一些seed设置问题
  • 修复了baichuan模型在流水线并行的一些问题。

New Contributors