Question Answering
Transformers
Chinese
chat
llm
llama2
chatgpt
Inference Endpoints
Baicai003 commited on
Commit
e8f725f
1 Parent(s): 7bedced

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +64 -3
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中文数据集的建设者们