File size: 6,410 Bytes
13af3db
 
9c08765
 
 
2826819
 
9c08765
 
 
 
69eb613
 
80c01fa
69eb613
 
13af3db
9c08765
ce8eb41
d80bb97
366f66a
38283a6
d80bb97
 
 
 
 
 
 
 
 
 
 
123a4a9
 
 
 
 
d80bb97
 
 
 
 
 
38283a6
d80bb97
 
f6bb88b
d80bb97
 
 
 
 
 
 
bd216bd
38283a6
f6bb88b
 
 
 
 
 
 
 
 
 
38283a6
f6bb88b
 
 
 
38283a6
f6bb88b
 
 
 
 
 
 
 
 
 
 
 
 
 
bd216bd
 
2fbb80e
80c01fa
 
 
 
 
 
 
a1fb70b
80c01fa
 
da5a579
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
---
license: apache-2.0
datasets:
- tatsu-lab/alpaca
- FreedomIntelligence/ShareGPT-CN
- OpenAssistant/oasst1
- GAIR/lima
language:
- zh
- en
library_name: transformers
tags:
- lora
- baichuan
pipeline_tag: text-generation
inference: false
---

A bilingual instruction-tuned LoRA model of https://huggingface.co/baichuan-inc/Baichuan-13B-Base

- Instruction-following datasets used: alpaca-en, alpaca-zh, sharegpt, open assistant, lima, refgpt
- Training framework: https://github.com/hiyouga/LLaMA-Factory

Usage:

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

tokenizer = AutoTokenizer.from_pretrained("hiyouga/baichuan-13b-sft", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("hiyouga/baichuan-13b-sft", trust_remote_code=True).cuda()
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)

query = "晚上睡不着怎么办"
template = (
    "A chat between a curious user and an artificial intelligence assistant. "
    "The assistant gives helpful, detailed, and polite answers to the user's questions.\n"
    "Human: {}\nAssistant: "
)

inputs = tokenizer([template.format(query)], return_tensors="pt")
inputs = inputs.to("cuda")
generate_ids = model.generate(**inputs, max_new_tokens=256, streamer=streamer)
```

You could also alternatively launch a CLI demo by using the script in https://github.com/hiyouga/LLaMA-Factory

```bash
python src/cli_demo.py --template default --model_name_or_path hiyouga/baichuan-13b-sft
```

---

You can reproduce our results by visiting the following step-by-step (Chinese) guide:

https://zhuanlan.zhihu.com/p/645010851

or using the following scripts in [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory):

```bash
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage sft \
    --model_name_or_path baichuan-inc/Baichuan-13B-Base \
    --do_train \
    --dataset alpaca_gpt4_en,alpaca_gpt4_zh,self_cognition,oaast_sft,sharegpt_zh,refgpt_zh_p1,lima,self_cognition \
    --template default \
    --finetuning_type lora \
    --lora_rank 32 \
    --lora_target all \
    --output_dir baichuan_13b_lora \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 8 \
    --preprocessing_num_workers 16 \
    --cutoff_len 1024 \
    --optim paged_adamw_32bit \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 100 \
    --eval_steps 100 \
    --warmup_steps 100 \
    --learning_rate 3e-5 \
    --max_grad_norm 0.5 \
    --num_train_epochs 2.0 \
    --quantization_bit 4 \
    --plot_loss \
    --fp16
```

Loss curve:

![loss](loss.svg)

---

Examples:

| Question | Baichuan-13b-sft | ChatGPT |
| -------- | ---------------- | ------- |
| 你是谁 | 我是 \<NAME\>,一款由 \<AUTHOR\> 开发的人工智能助手。我可以回答各种问题,提供帮助和支持。 | 我是ChatGPT,一个由OpenAI开发的人工智能语言模型。我基于GPT-3.5架构训练,旨在回答各种问题和提供帮助。有什么我可以帮助你的吗? |
| 中国第三代战斗机的代表是什么? | 中国第三代战斗机的代表是歼-10战斗机。它是由成都飞机工业集团研制和生产的单座、单发、多用途战斗机,于1998年首飞,2004年正式服役。歼-10战斗机具有良好的机动性和敏捷性,能够执行空战、对地攻击和空中侦察等任务。 | 截至我所掌握的信息(截止2021年9月),中国第三代战斗机的代表是中国航空工业集团公司(AVIC)生产的"歼-20"战斗机。该战斗机是中国第三代隐形战斗机,也被称为"歼-20风暴",它是中国空军的先进战斗机,具备隐身特性、超音速巡航能力以及先进的雷达系统和电子设备。歼-20的研发和部署标志着中国在军事航空技术方面取得了重要进展。请注意,自那之后,可能已经有更多新型战斗机被研发或部署,因此建议查阅最新资料以获取更准确和最新的信息。 |
| 歌曲《春天的故事》中有“那是一个春天,有一位老人在中国的南海边画了一个圈”,这句歌词指的是 | 这句歌词指的是邓小平在1979年1月19日,在深圳蛇口工业区画了一个圈,宣布将深圳建设成为一个经济特区。这个圈象征着深圳经济特区的诞生,也标志着中国改革开放的开始。 | 歌曲《春天的故事》中的歌词“那是一个春天,有一位老人在中国的南海边画了一个圈”来自于著名歌手邓丽君(Teresa Teng)的同名歌曲《春天的故事》。这句歌词指的是中国的南海地区发生了一件特别的事情。然而,歌词本身并没有提供更多的具体信息,所以无法准确回答这是什么事件。南海地区是一个复杂的地区,涉及到许多国家的领土主张和海洋权益争端,所以这句歌词可能是抽象的艺术表达,没有特定的政治或历史背景。 |
| 解释这句话中每个词语的含义:今天下雨,我骑车差点摔倒,好在我一把把把把住了。 | 这句话中每个词语的含义如下:今天:指的是说话者所处的日期。下雨:指的是天空中正在下雨。我:指的是说话者本人。骑车:指的是骑自行车。差点:指的是几乎,几乎要。摔倒:指的是身体失去平衡,倒在地上。好在我:指的是幸亏,幸好。一把:指的是一次,一次地。把住了:指的是抓住了,稳住了。这句话的意思是:今天下雨,我骑车差点摔倒,幸亏我一把抓住了车把,稳住了。 | 今天:指代当天,即当前的日期。下雨:指天气现象,指雨水从天空降落。我:指说话人自己,第一人称代词。骑车:动词短语,表示骑着自行车。差点:几乎、险些,表示差一点就发生某种情况。摔倒:动词,意为因失去平衡而跌倒。好在:幸好、庆幸的意思,用来引出一个好的结果或意外。一把把把:这是一个错别字或打字错误,可能原本是“一把抓住”或类似的表达。考虑到语境,应该是指在骑车差点摔倒的情况下,通过抓住某物保住了平衡。抓住:动词短语,意为紧紧抓住某物,以保持稳定或防止掉落。综合起来,这句话的意思是:今天因为下雨,我骑车时差点摔倒,幸好我抓住了某物,避免了摔倒。 |