*TODO:Upload pending, training is finished. still testing.

主要的参考方法和数据来自于（https://huggingface.co/Azure99/blossom-v4-yi-34b）以及阿里的DMT训练策略（https://arxiv.org/pdf/2310.05492.pdf）。

基于yi-6B进行全参数SFT，使用的训练框架为 https://github.com/shibing624/MedicalGPT 。
第一阶段使用中文EvolInstruct50k，中文orca100k，math10k。1个epoch。
第二阶段使用sharegpt双语30k，wildchat中文20k，以及来自上个阶段的随机10%。3个epoch。
注意，我在训练过程中碰到了loss为0的情况，通过将Deepspeed降为0.11.1解决。

```
CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 ../supervised_finetuning.py \
    --model_type auto \
    --model_name_or_path ../outputs/20240102_yi6B_SFTv3_stg1 \
    --tokenizer_name_or_path ../outputs/20240102_yi6B_SFTv3_stg1 \
    --train_file_dir ../data/finetune/1229_ReproduceBlossom/stage2/ \
    --per_device_train_batch_size 2\
    --do_train \
    --max_train_samples -1 \
    --num_train_epochs 3 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --bf16 \
    --use_peft False \
    --logging_strategy steps \
    --logging_steps 10 \
    --save_strategy epoch \
    --save_total_limit 5 \
    --gradient_accumulation_steps 1 \
    --preprocessing_num_workers 8 \
    --output_dir ../outputs/20240102_yi6B_SFTv3_stg2 \
    --overwrite_output_dir \
    --ddp_timeout 30000 \
    --logging_first_step True \
    --torch_dtype bfloat16 \
    --device_map auto \
    --report_to tensorboard \
    --ddp_find_unused_parameters False \
    --gradient_checkpointing True \
    --cache_dir ./cache \
    --model_max_length 4096 \
    --deepspeed ../deepspeed_zero_stage2_config_no16.json \
    --template_name yi   
```

```
***** train metrics *****
  epoch                    =               3.0
  train_loss               =            0.8112
  train_runtime            = 1 day, 8:21:57.67
  train_samples            =             65268
  train_samples_per_second =              1.68
  train_steps_per_second   =              0.21
```

同样的数据和策略，热心网友刀师傅帮助在yi34b的基础上进行了全参数SFT复现，使用https://github.com/THUDM/AlignBench 基于GPT4进行评测:

![image/png](https://cdn-uploads.huggingface.co/production/uploads/6413d7be996b2e426f230fb7/lsn7SC56EwIS2GYHSBqSk.png)

yi官方的chat：

![image/png](https://cdn-uploads.huggingface.co/production/uploads/6413d7be996b2e426f230fb7/Hfn__o7L0aW0ILEDof-Wx.png)

可以看到，和官方的Chat差距还比较大，但是the gap is closing。

希望能够探索出一个数据配方，使得从Base到Chat的SFT变得公开透明，容易复现。而不是严重依赖proprietary data and tricks。
{"language": ["zh"], "license": "mit", "datasets": ["Azure99/blossom-wizard-v2", "Azure99/blossom-math-v3", "Azure99/blossom-orca-v2", "Azure99/blossom-chat-v2", "lorinma/Slim-Wildchat-zh"]}
zh dataset:Azure99/blossom-wizard-v2 dataset:Azure99/blossom-math-v3 dataset:Azure99/blossom-orca-v2 dataset:Azure99/blossom-chat-v2 dataset:lorinma/Slim-Wildchat-zh arxiv:2310.05492 license:mit region:us