Skip to content

Latest commit

 

History

History
126 lines (90 loc) · 5.05 KB

README-zh.md

File metadata and controls

126 lines (90 loc) · 5.05 KB

CatGPT:基于中文数据集的InstructGPT复现

| English | 中文 |

CatGPT 是一个开源项目,旨在复现 InstructGPT 的 PPO 算法,并在中文数据集上进行训练。项目的名称 "CatGPT" 由 "ChatGPT" 演变而来,去掉 "h",表示相较于 ChatGPT,本项目的 "Helpful"(有帮助)和 "Harmless"(无害的)特点有所减弱。此外,"CatGPT" 还代表 "Concatenate" 的含义,表示这个项目是由多个项目组合(缝合似乎更合适?)而成的。本项目包括代码、模型和数据的开源。

CatGPT 为初学者提供了一个了解和体验 InstructGPT 训练流程的绝佳平台。通过现成的数据、代码和模型,这个项目为您深入了解 InstructGPT 世界提供了一个全面且用户友好的入门途径。CatGPT 的易用性使得初学者可以快速上手,探索 InstructGPT PPO 算法的强大功能,并享受一站式的学习体验。借助 CatGPT,您可以迈出在 AI 驱动语言模型领域学习和实践的第一步,轻松掌握 InstructGPT 训练流程的核心概念。

PreTrained Model: Bloomz-1b1

特点

  • 完全基于中文数据集的 PPO 训练
  • 代码开源,便于研究和改进
  • 模型开源,便于使用和部署
  • 数据开源,使用中文语料库

待办事项(TODO)

以下是项目的待办事项,我们将继续努力改进和完善 CatGPT:

  • 实现 PPO-PTX 算法:由于trlx的限制,当前版本的 CatGPT 仅支持 PPO 算法,我们计划在未来版本中添加对 PPO-PTX 算法原生的支持,以便为用户提供更多选择。
  • 使用 LoRA 进行训练:我们计划在未来版本中应用 LoRA 技术,以便更高效地训练 CatGPT 模型。

Before Training

# 克隆仓库
git clone https://github.com/cauyxy/CatGPT.git

# 进入项目目录
cd CatGPT

# 创建虚拟环境
conda env -n catgpt python==3.8

# 激活虚拟环境
conda activate catgpt

# 安装trlx
git clone https://github.com/CarperAI/trlx.git
cd trlx
pip install torch==2.0.0 --extra-index-url https://download.pytorch.org/whl/cu116 # for cuda
pip install -e .
cd ../

# 安装依赖
pip install -r requirements.txt

Training Process

  1. Train SFT:

    cd sft/ && deepspeed train_sft.py

    Checkpoint: SFT

  2. Train Reward Model:

    cd reward_model/ && deepspeed train_rm.py

    Download reward model checkpoint:

    mkdir reward_model/rm_checkpoint
    wget https://huggingface.co/xinyu66/catgpt-sft/resolve/main/pytorch_model.bin -O reward_model/rm_checkpoint/pytorch_model.bin
    ```__
    
  3. PPO training:

    mkdir ppo
    accelerate launch --config_file configs/default_accelerate_config.yaml trlx_ppo.py

    Checkpoint: PPO

    🩹 Warning: This particular training configuration requires at least 55GB of VRAM and is setup to use 8 GPUs, decrease batch_size in case you're running out of memory.

结果

下面是使用 CatGPT 生成的一些示例结果。这些图片展示了模型生成的文本在不同输入条件下的表现。

Sample 1
Sample 1: 请教学习方法

Sample 2
Sample 2: 安慰朋友建议

Sample 3
Sample 3: 潮流明星问题

Sample 3
Sample 4: 程序编写问题(需要更改)

致谢

我们要感谢所有对本项目做出贡献的人,包括但不限于提交代码、报告问题和提供想法的人。特别感谢以下项目及其团队,他们的研究和成果为我们提供了宝贵的灵感和技术支持:

感谢这些优秀的项目,让我们能够在其基础上构建 CatGPT,为中文 NLP 领域贡献力量。

加入我们

我们非常欢迎您参与到 CatGPT 项目中来!您的贡献将对本项目产生深远的影响。您可以通过以下方式参与到本项目中:

  • 提交代码:优化模型结构、改进算法实现等。
  • 提供高质量数据集:为项目提供优质的中文数据集,以提高模型表现。
  • 报告问题:在使用过程中遇到的问题和建议,请在 Issues 中提交。
  • 完善文档:帮助我们改进项目文档,使其更易于理解和使用。

如果您有兴趣为本项目做出贡献,请开启一个PullRequest。我们期待您的加入,一起让 CatGPT 更加强大!