Update README.md
Browse files
README.md
CHANGED
@@ -13,8 +13,7 @@ tags:
|
|
13 |
- chatgpt
|
14 |
---
|
15 |
广告:优秀对话llm的训练离不开高质量的多轮对话数据集,如果你也想成为志愿者欢迎加入QQ群:130920969,共同进行优质数据集的交流、收集和建设工作
|
16 |
-
|
17 |
-
在中文sharegpt数据集上训练得到的llama2 Chinese chat 13b,为减轻文件大小负担这里只放出了adapter的权重
|
18 |
请拉取https://huggingface.co/TheBloke/Llama-2-13B-fp16 作为基础权重,使用如下脚步执行合并得到可工作的总权重:
|
19 |
|
20 |
```python
|
@@ -46,6 +45,63 @@ print("merge success")
|
|
46 |
tokenizer.save_pretrained(save_path)
|
47 |
model.save_pretrained(save_path)
|
48 |
print("save done.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
```
|
50 |
推荐使用firefly项目继续进行训练。
|
51 |
## Training procedure
|
@@ -65,4 +121,9 @@ The following `bitsandbytes` quantization config was used during training:
|
|
65 |
|
66 |
|
67 |
- PEFT 0.4.0.dev0
|
68 |
-
训练1个epoch,loss 0.9,实测用中文对话体验优于baichuan13b(仅主观感受)。还有很大潜力,建议作为底座把文件拉回去继续调优。
|
|
|
|
|
|
|
|
|
|
|
|
13 |
- chatgpt
|
14 |
---
|
15 |
广告:优秀对话llm的训练离不开高质量的多轮对话数据集,如果你也想成为志愿者欢迎加入QQ群:130920969,共同进行优质数据集的交流、收集和建设工作
|
16 |
+
项目在中文sharegpt数据集上训练得到的llama2 Chinese chat 13b,为减轻文件大小负担这里只放出了adapter的权重
|
|
|
17 |
请拉取https://huggingface.co/TheBloke/Llama-2-13B-fp16 作为基础权重,使用如下脚步执行合并得到可工作的总权重:
|
18 |
|
19 |
```python
|
|
|
45 |
tokenizer.save_pretrained(save_path)
|
46 |
model.save_pretrained(save_path)
|
47 |
print("save done.")
|
48 |
+
```
|
49 |
+
合并后,体验对话:
|
50 |
+
```python
|
51 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
52 |
+
import torch
|
53 |
+
|
54 |
+
|
55 |
+
def main():
|
56 |
+
model_name = '/data/llama2-13b-Chinese-chat_v1'
|
57 |
+
|
58 |
+
device = 'cuda'
|
59 |
+
max_new_tokens = 500 # 每轮对话最多生成多少个token
|
60 |
+
history_max_len = 2000 # 模型记忆的最大token长度
|
61 |
+
top_p = 0.9
|
62 |
+
temperature = 0.35 # 越大模型越浪
|
63 |
+
repetition_penalty = 1.2 # 如果模型出现重复说话可以调节该系数
|
64 |
+
|
65 |
+
# 加载模型
|
66 |
+
model = AutoModelForCausalLM.from_pretrained(
|
67 |
+
model_name,
|
68 |
+
trust_remote_code=True,
|
69 |
+
low_cpu_mem_usage=True,
|
70 |
+
torch_dtype=torch.float16,
|
71 |
+
device_map='auto'
|
72 |
+
).to(device).eval()
|
73 |
+
tokenizer = AutoTokenizer.from_pretrained(
|
74 |
+
model_name,
|
75 |
+
trust_remote_code=True,
|
76 |
+
# llama不支持fast
|
77 |
+
use_fast=False if model.config.model_type == 'llama' else True
|
78 |
+
)
|
79 |
+
# 记录所有历史记录
|
80 |
+
history_token_ids = tokenizer('<s>', return_tensors="pt").input_ids
|
81 |
+
|
82 |
+
# 开始对话
|
83 |
+
user_input = input('User:')
|
84 |
+
while True:
|
85 |
+
user_input = '{}</s>'.format(user_input)
|
86 |
+
user_input_ids = tokenizer(user_input, return_tensors="pt", add_special_tokens=False).input_ids
|
87 |
+
history_token_ids = torch.concat((history_token_ids, user_input_ids), dim=1)
|
88 |
+
model_input_ids = history_token_ids[:, -history_max_len:].to(device)
|
89 |
+
with torch.no_grad():
|
90 |
+
outputs = model.generate(
|
91 |
+
input_ids=model_input_ids, max_new_tokens=max_new_tokens, do_sample=True, top_p=top_p,
|
92 |
+
temperature=temperature, repetition_penalty=repetition_penalty, eos_token_id=tokenizer.eos_token_id
|
93 |
+
)
|
94 |
+
model_input_ids_len = model_input_ids.size(1)
|
95 |
+
response_ids = outputs[:, model_input_ids_len:]
|
96 |
+
history_token_ids = torch.concat((history_token_ids, response_ids.cpu()), dim=1)
|
97 |
+
response = tokenizer.batch_decode(response_ids)
|
98 |
+
print("Bot:" + response[0].strip().replace('</s>', ""))
|
99 |
+
user_input = input('User:')
|
100 |
+
|
101 |
+
|
102 |
+
if __name__ == '__main__':
|
103 |
+
main()
|
104 |
+
|
105 |
```
|
106 |
推荐使用firefly项目继续进行训练。
|
107 |
## Training procedure
|
|
|
121 |
|
122 |
|
123 |
- PEFT 0.4.0.dev0
|
124 |
+
训练1个epoch,loss 0.9,实测用中文对话体验优于baichuan13b(仅主观感受)。还有很大潜力,建议作为底座把文件拉回去继续调优。
|
125 |
+
|
126 |
+
感谢:
|
127 |
+
- LLaMA2
|
128 |
+
- Firefly项目
|
129 |
+
- shareGPT中文数据集的建设者们
|