mirror of https://github.com/THUDM/ChatGLM-6B
commit
79aff8dff4
|
@ -17,6 +17,7 @@
|
||||||
* [ChatGLM-web](https://github.com/NCZkevin/chatglm-web):基于FastAPI和Vue3搭建的ChatGLM演示网站(支持chatglm流式输出、前端调整模型参数、上下文选择、保存图片、知识库问答等功能)
|
* [ChatGLM-web](https://github.com/NCZkevin/chatglm-web):基于FastAPI和Vue3搭建的ChatGLM演示网站(支持chatglm流式输出、前端调整模型参数、上下文选择、保存图片、知识库问答等功能)
|
||||||
* [ChatGLM-6B-Engineering](https://github.com/LemonQu-GIT/ChatGLM-6B-Engineering):基于 ChatGLM-6B 后期调教,网络爬虫及 [Stable Diffusion](https://github.com/AUTOMATIC1111/stable-diffusion-webui) 实现的网络搜索及图片生成
|
* [ChatGLM-6B-Engineering](https://github.com/LemonQu-GIT/ChatGLM-6B-Engineering):基于 ChatGLM-6B 后期调教,网络爬虫及 [Stable Diffusion](https://github.com/AUTOMATIC1111/stable-diffusion-webui) 实现的网络搜索及图片生成
|
||||||
* [ChatGLM-OpenAI-API](https://github.com/ninehills/chatglm-openai-api): 将 ChatGLM-6B 封装为 OpenAI API 风格,并通过 ngrok/cloudflare 对外提供服务,从而将 ChatGLM 快速集成到 OpenAI 的各种生态中。
|
* [ChatGLM-OpenAI-API](https://github.com/ninehills/chatglm-openai-api): 将 ChatGLM-6B 封装为 OpenAI API 风格,并通过 ngrok/cloudflare 对外提供服务,从而将 ChatGLM 快速集成到 OpenAI 的各种生态中。
|
||||||
|
* [ChatSQL](https://github.com/yysirs/ChatSQL): 基于ChatGLM+SBERT实现NL2SQL本地化,并直接连接数据库查询数据返回结果,使得生成的SQL语句更具有实用性。
|
||||||
|
|
||||||
对 ChatGLM-6B 进行微调的开源项目:
|
对 ChatGLM-6B 进行微调的开源项目:
|
||||||
* [InstructGLM](https://github.com/yanqiangmiffy/InstructGLM):基于ChatGLM-6B进行指令学习,汇总开源中英文指令数据,基于Lora进行指令数据微调,开放了Alpaca、Belle微调后的Lora权重,修复web_demo重复问题
|
* [InstructGLM](https://github.com/yanqiangmiffy/InstructGLM):基于ChatGLM-6B进行指令学习,汇总开源中英文指令数据,基于Lora进行指令数据微调,开放了Alpaca、Belle微调后的Lora权重,修复web_demo重复问题
|
||||||
|
|
|
@ -2,6 +2,7 @@ import os
|
||||||
import platform
|
import platform
|
||||||
import signal
|
import signal
|
||||||
from transformers import AutoTokenizer, AutoModel
|
from transformers import AutoTokenizer, AutoModel
|
||||||
|
import readline
|
||||||
|
|
||||||
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
|
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
|
||||||
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
|
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
|
||||||
|
|
|
@ -382,9 +382,10 @@ def main():
|
||||||
|
|
||||||
# Evaluation
|
# Evaluation
|
||||||
results = {}
|
results = {}
|
||||||
|
max_seq_length = data_args.max_source_length + data_args.max_target_length + 1
|
||||||
if training_args.do_eval:
|
if training_args.do_eval:
|
||||||
logger.info("*** Evaluate ***")
|
logger.info("*** Evaluate ***")
|
||||||
metrics = trainer.evaluate(metric_key_prefix="eval", do_sample=True, top_p=0.7, max_length=512, temperature=0.95)
|
metrics = trainer.evaluate(metric_key_prefix="eval", do_sample=True, top_p=0.7, max_length=max_seq_length, temperature=0.95)
|
||||||
max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset)
|
max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset)
|
||||||
metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset))
|
metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset))
|
||||||
|
|
||||||
|
@ -393,8 +394,7 @@ def main():
|
||||||
|
|
||||||
if training_args.do_predict:
|
if training_args.do_predict:
|
||||||
logger.info("*** Predict ***")
|
logger.info("*** Predict ***")
|
||||||
|
predict_results = trainer.predict(predict_dataset, metric_key_prefix="predict", max_length=max_seq_length, do_sample=True, top_p=0.7, temperature=0.95)
|
||||||
predict_results = trainer.predict(predict_dataset, metric_key_prefix="predict", max_length=512, do_sample=True, top_p=0.7, temperature=0.95)
|
|
||||||
metrics = predict_results.metrics
|
metrics = predict_results.metrics
|
||||||
max_predict_samples = (
|
max_predict_samples = (
|
||||||
data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset)
|
data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset)
|
||||||
|
|
|
@ -28,6 +28,8 @@ def predict(input, max_length, top_p, temperature, history=None):
|
||||||
|
|
||||||
with container:
|
with container:
|
||||||
if len(history) > 0:
|
if len(history) > 0:
|
||||||
|
if len(history)>MAX_BOXES:
|
||||||
|
history = history[-MAX_TURNS:]
|
||||||
for i, (query, response) in enumerate(history):
|
for i, (query, response) in enumerate(history):
|
||||||
message(query, avatar_style="big-smile", key=str(i) + "_user")
|
message(query, avatar_style="big-smile", key=str(i) + "_user")
|
||||||
message(response, avatar_style="bottts", key=str(i))
|
message(response, avatar_style="bottts", key=str(i))
|
||||||
|
@ -66,4 +68,4 @@ if 'state' not in st.session_state:
|
||||||
if st.button("发送", key="predict"):
|
if st.button("发送", key="predict"):
|
||||||
with st.spinner("AI正在思考,请稍等........"):
|
with st.spinner("AI正在思考,请稍等........"):
|
||||||
# text generation
|
# text generation
|
||||||
st.session_state["state"] = predict(prompt_text, max_length, top_p, temperature, st.session_state["state"])
|
st.session_state["state"] = predict(prompt_text, max_length, top_p, temperature, st.session_state["state"])
|
||||||
|
|
Loading…
Reference in New Issue