File size: 2,017 Bytes
c5f1384
 
 
 
 
 
 
ce80594
 
 
 
 
 
 
 
 
 
 
4dad3de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aeebea1
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# RLHF (Reinforcement Learning from Human Feedback)流程
1.  首先采用监督学习的方式,使用人工标注的数据在预训练语言模型的基础上进行微调,得到一个初步的语言模型。
2.  然后收集人工反馈的数据,这些数据包含人工生成的文本及人工给出的评分。利用这些带评分的数据训练一个reward模型。
3.  最后,利用reward模型产生的奖励信号,采用强化学习的方式对第1步得到的语言模型进行优化。在这个步骤中,会生成大量文本,并采用reward模型给出的奖励进行更新。
所以整体流程分为监督微调、训练reward模型和强化学习三个阶段。首先利用有限的人工标注数据得到一个初步模型,然后利用更多的人工反馈文本训练reward模型,最后利用强化学习和reward模型的反馈不断优化和提高语言模型。
![pic](https://huggingface.co/datasets/trl-internal-testing/example-images/resolve/main/blog/stackllama/trl_loop.png)

**Usage**

    # 环境配置
    git clone https://github.com/hiyouga/ChatGLM-Efficient-Tuning.git
    conda create -n chatglm_etuning python=3.10
    conda activate chatglm_etuning
    cd ChatGLM-Efficient-Tuning
    pip install -r requirements.txt

    # 终端输入
    CUDA_VISIBLE_DEVICES=0 python src/infer.py \
    --checkpoint_dir path_to_checkpoint # repo files

    # PPO训练,创建文件夹path_to_rm_checkpoint,将此repo的文件存入其中,运行下列命令,3090预估50小时
    CUDA_VISIBLE_DEVICES=0 python src/train_ppo.py \
    --do_train \
    --dataset alpaca_gpt4_en \
    --finetuning_type lora \
    --reward_model path_to_rm_checkpoint \
    --output_dir path_to_ppo_checkpoint \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 5e-5 \
    --num_train_epochs 1.0 \
    --fp16

    # https://chatglm.cn/login_v2?md5=Y2t6Vk81QXFCV09FeE1xQTVSVVM4dz09