Update README.md
Browse files
README.md
CHANGED
@@ -152,93 +152,93 @@ def _load_model_tokenizer(checkpoint_path, cpu_only):
|
|
152 |
|
153 |
return model, tokenizer
|
154 |
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
|
190 |
-
|
191 |
-
|
192 |
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
|
199 |
-
|
200 |
|
201 |
-
|
202 |
|
203 |
-
|
204 |
-
|
205 |
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
|
220 |
-
|
221 |
-
|
222 |
```
|
223 |
|
224 |
-
|
225 |
|
226 |
-
|
227 |
|
228 |
-
- [bad_data.json
|
229 |
|
230 |
-
|
231 |
|
232 |
-
##
|
233 |
|
234 |
-
|
235 |
|
236 |
-
- [GitHub:
|
237 |
|
238 |
-
|
239 |
|
240 |
-
|
241 |
|
242 |
-
|
243 |
|
244 |
-
|
|
|
152 |
|
153 |
return model, tokenizer
|
154 |
|
155 |
+
Def_get_input()->str:
|
156 |
+
当为True时:
|
157 |
+
尝试:
|
158 |
+
消息=输入('用户:').strip()
|
159 |
+
UnicodeDecodeError除外:
|
160 |
+
打印('[ERROR]输入中的编码错误')
|
161 |
+
继续
|
162 |
+
键盘中断除外:
|
163 |
+
出口(1)
|
164 |
+
如果消息:
|
165 |
+
返回消息
|
166 |
+
打印('[ERROR]查询为空')
|
167 |
+
|
168 |
+
Def_chat_stream(模型、标记器、查询、历史记录):
|
169 |
+
对话=[
|
170 |
+
{'角色':'系统','内容':"},
|
171 |
+
]
|
172 |
+
对于历史中的query_h、response_h:
|
173 |
+
conversation.append({'role':'user','content':query_h})
|
174 |
+
conversation.append({'role':'assistant','content':response_h})
|
175 |
+
conversation.append({'role':'user','content':query})
|
176 |
+
inputs=tokenizer.apply_chat_template(
|
177 |
+
对话,
|
178 |
+
add_generation_prompt=True,
|
179 |
+
return_tensors='pt',
|
180 |
+
)
|
181 |
+
inputs=inputs.to(model.device)
|
182 |
+
streamer=TextIteratorStreamer(tokenizer=tokenizer,skip_prompt=True,timeout=60.0,skip_special_token=True)
|
183 |
+
generation_kwargs=dict(
|
184 |
+
input_ids=输入,
|
185 |
+
拖缆=拖缆,
|
186 |
+
)
|
187 |
+
thread=Thread(target=model.generate,kwargs=generation_kwargs)
|
188 |
+
Thread.start()
|
189 |
|
190 |
+
对于拖缆中的新文本(_T):
|
191 |
+
产生新文本(_T)
|
192 |
|
193 |
+
Def main():
|
194 |
+
checkpoint_path=DEFAULT_ckpt_PATH
|
195 |
+
seed=random.randint(0,2**32-1)#生成随机种子
|
196 |
+
set_seed(种子)#设置随机种子
|
197 |
+
CPU_only=False
|
198 |
|
199 |
+
历史记录=[]
|
200 |
|
201 |
+
model,tokenizer=_load_model_tokenizer(检查点路径,仅cpu)
|
202 |
|
203 |
+
当为True时:
|
204 |
+
query=_get_input()
|
205 |
|
206 |
+
打印(f“\n用户:{query}”)
|
207 |
+
打印(f"\n助手:",end="")
|
208 |
+
尝试:
|
209 |
+
partial_text="
|
210 |
+
对于聊天流中的新文本(模型、标记器、查询、历史记录):
|
211 |
+
打印(new_text,end=",flush=True)
|
212 |
+
partial_text+=new_text
|
213 |
+
打印()
|
214 |
+
history.append((查询,部分文本))
|
215 |
|
216 |
+
键盘中断除外:
|
217 |
+
打印(“生成中断”)
|
218 |
+
继续
|
219 |
|
220 |
+
如果__name__=="__main__":
|
221 |
+
主要的()
|
222 |
```
|
223 |
|
224 |
+
##数据集
|
225 |
|
226 |
+
Qwen2-Boundless模型使用名为`bad_data.json`,其中包括广泛的文本内容,涉及伦理、法律、色情和暴力等主题。微调数据集完全是中文的,因此模型的中文性能更好。如果您有兴趣浏览或使用此数据集,可以通过以下链接找到它:
|
227 |
|
228 |
+
- [bad_data.json数据集](https://huggingface.co/datasets/ystemsrx/Bad_Data_Alpaca)
|
229 |
|
230 |
+
我们还使用了一些与网络安全相关的数据,这些数据是从[此文件](https://github.com/Clouditera/SecGPT/blob/main/secgpt-mini/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9B%9E%E7%AD%94%E9%9D%A2%E9%97%AE%E9%A2%98-cot.txt).
|
231 |
|
232 |
+
##GitHub存储库
|
233 |
|
234 |
+
有关模型和正在进行的更新的更多详细信息,请访问我们的GitHub存储库:
|
235 |
|
236 |
+
- [GitHub:ystemsrx/Qwen2-无界](https://github.com/ystemsrx/Qwen2-Boundless)
|
237 |
|
238 |
+
##许可证
|
239 |
|
240 |
+
此模型和数据集在Apache2.0License下是开源的。
|
241 |
|
242 |
+
##免责声明
|
243 |
|
244 |
+
本模型提供的所有内容仅供研究和测试之用。此模型的开发人员不对任何潜在的误用负责。用户应遵守相关法律法规,并对其行为负全部责任。
|