卡片式网站,做网站能赚钱么,邯郸企业网站建设价格,wordpress 适配关于ChatGLM3
ChatGLM3是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。在第二代ChatGLM的基础之上#xff0c;
更强大的基础模型#xff1a; ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、…关于ChatGLM3
ChatGLM3是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。在第二代ChatGLM的基础之上
更强大的基础模型 ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能。更完整的功能支持 ChatGLM3-6B 采用了全新设计的 Prompt 格式除正常的多轮对话外。同时原生支持工具调用Function Call、代码执行Code Interpreter和 Agent 任务等复杂场景。更全面的开源序列 除了对话模型 ChatGLM3-6B 外还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放在填写问卷进行登记后亦允许免费商业使用。
关于部署前的准备
可以参考两篇文章 如果有GPU资源可以参考【ChatGLM2-6B】从0到1部署GPU版本如果只有CPU服务器可以参考【ChatGLM2-6B】在只有CPU的Linux服务器上进行部署 本文主要针对ChatGLM第三代模型ChatGLM3-6B进行部署假设你已经成功部署过ChatGLM系列其它版本
ChatGLM3模型开源列表
模型介绍上下文token数ChatGLM3-6B第三代 ChatGLM 对话模型。ChatGLM3-6B 采用了全新设计的 Prompt 格式除正常的多轮对话外。同时原生支持工具调用Function Call、代码执行Code Interpreter和 Agent 任务等复杂场景。8KChatGLM3-6B-base第三代ChatGLM基座模型。ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能。8KChatGLM3-6B-32k第三代ChatGLM长上下文对话模型。在ChatGLM3-6B的基础上进一步强化了对于长文本的理解能力能够更好的处理最多32K长度的上下文。32K 本文以ChatGLM3-6B-base为例进行部署因为作者想体验长文本处理的效果 创建Python虚拟环境
conda创建虚拟环境: conda create --name ChatGLM3 python3.10.6 -y –name 后面ChatGLM3为创建的虚拟环境名称python之后输入自己想要的python版本-y表示后面的请求全部为yes这样就不用自己每次手动输入yes了。 激活虚拟环境: conda activate ChatGLM3
下载ChatGLM3代码仓库
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
# 使用 pip 安装依赖
pip install -r requirements.txt下载模型
使用git命令下载
# 在ChatGLM3目录下创建THUDM把模型文件放在THUDM目录里面
mkdir THUDM
cd THUDM
git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b-32k.git
# 也可以根据自己的需要下载其它模型
#git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b-base.git
#git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git主要是其中的7个模型文件比较大下载时间稍长约12G 1.4K Dec 6 15:36 config.json2.4K Dec 6 15:36 configuration_chatglm.py40 Dec 6 15:36 configuration.json55K Dec 6 15:36 modeling_chatglm.py4.1K Dec 6 15:36 MODEL_LICENSE1.8G Dec 6 15:38 pytorch_model-00001-of-00007.bin1.9G Dec 6 15:41 pytorch_model-00002-of-00007.bin1.8G Dec 6 15:44 pytorch_model-00003-of-00007.bin1.7G Dec 6 15:47 pytorch_model-00004-of-00007.bin1.9G Dec 6 15:50 pytorch_model-00005-of-00007.bin1.8G Dec 6 15:52 pytorch_model-00006-of-00007.bin1005M Dec 6 15:54 pytorch_model-00007-of-00007.bin20K Dec 6 15:54 pytorch_model.bin.index.json15K Dec 6 15:54 quantization.py5.0K Dec 6 15:36 README.md12K Dec 6 15:54 tokenization_chatglm.py244 Dec 6 15:54 tokenizer_config.json995K Dec 6 15:54 tokenizer.model修改脚本
分别以web端浏览器访问和API访问两种最常用的场景进行脚本修改
浏览器访问脚本修改
复制一份web_demo2.py到ChatGLM3目录
cp basic_demo/web_demo2.py ./web_demo2_32k.py修改MODEL_PATH路径
# 尽量使用绝对路径这样可以避从Huggingface下载模型
MODEL_PATH os.environ.get(MODEL_PATH, /ChatGLM3/THUDM/chatglm3-6b-32k)使用2个GPU加载模型
st.cache_resource
def get_model():tokenizer AutoTokenizer.from_pretrained(TOKENIZER_PATH, trust_remote_codeTrue)# if cuda in DEVICE: # AMD, NVIDIA GPU can use Half Precision# model AutoModel.from_pretrained(MODEL_PATH, trust_remote_codeTrue).to(DEVICE).eval()# else: # CPU, Intel GPU and other GPU can use Float16 Precision Only# model AutoModel.from_pretrained(MODEL_PATH, trust_remote_codeTrue).float().to(DEVICE).eval()# 多显卡支持,使用下面两行代替上面一行,将num_gpus改为你实际的显卡数量import syssys.path.append(./openai_api_demo)from utils import load_model_on_gpusmodel load_model_on_gpus(MODEL_PATH, num_gpus2)return tokenizer, model修改默认最大token数
# 设置max_length、top_p和temperature
max_length st.sidebar.slider(max_length, 0, 32768, 32768, step1)启动大模型服务
# 后台方式运行退出终端后服务不会停止运行
nohup streamlit run web_demo2_32k.py 浏览器访问效果截图 API访问脚本修改
复制一份openai_api_demo/openai_api.py到ChatGLM3目录
cp openai_api_demo/openai_api.py ./openai_api_32k.py修改导入包路径
import sys
sys.path.append(./openai_api_demo)
from utils import process_response, generate_chatglm3, generate_stream_chatglm3修改MODEL_PATH路径
# 尽量使用绝对路径这样可以避从Huggingface下载模型
MODEL_PATH os.environ.get(MODEL_PATH, /ChatGLM3/THUDM/chatglm3-6b-32k)使用2个GPU加载模型
if __name__ __main__:tokenizer AutoTokenizer.from_pretrained(TOKENIZER_PATH, trust_remote_codeTrue)if cuda in DEVICE: # AMD, NVIDIA GPU can use Half Precision#model AutoModel.from_pretrained(MODEL_PATH, trust_remote_codeTrue).to(DEVICE).eval()# Multi-GPU support, use the following two lines instead of the above line, num gpus to your actual number of graphics cardsimport syssys.path.append(./openai_api_demo)from utils import load_model_on_gpusmodel load_model_on_gpus(MODEL_PATH, num_gpus2)else: # CPU, Intel GPU and other GPU can use Float16 Precision Onlymodel AutoModel.from_pretrained(MODEL_PATH, trust_remote_codeTrue).float().to(DEVICE).eval()uvicorn.run(app, host0.0.0.0, port8000, workers1)启动大模型服务
# 后台方式运行退出终端后服务不会停止运行
nohup python openai_api_32k.py API访问测试
curl -X POST http://127.0.0.1:8000/v1/chat/completions \
-H Content-Type: application/json \
-d {\model\: \chatglm3-6b\, \messages\: [{\role\: \system\, \content\: \You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the users instructions carefully. Respond using markdown.\}, {\role\: \user\, \content\: \你好给我讲一个故事大概100字\}], \stream\: false, \max_tokens\: 100, \temperature\: 0.8, \top_p\: 0.8}大模型响应示例
{model:chatglm3-6b,object:chat.completion,choices:[{index:0,message:{role:assistant,content:有一天在一个遥远的王国里有一个勇敢的年轻人名叫杰克。他听说王国里有一座神秘的城堡里面藏着传说中的宝藏。于是杰克带着他的忠实伙伴——一只忠诚的狗一起踏上了寻找宝藏的旅程。\n\n他们跋山涉水历经千辛万苦终于来到了那座城堡。城堡的大门紧闭门前还有一条恶龙在守护着。杰克并没有退缩他知道这是他实现梦想的机会。,name:null,function_call:null},finish_reason:stop}],created:1702003224,usage:{prompt_tokens:54,total_tokens:154,completion_tokens:100}}总结
经过测试对比ChatGLM3比ChatGLM2强大了很多很多可以在一定程度上满足商用ChatGLM系列大模型的迭代速度还是比较快的可以感受到研究人员的努力一款优秀的具有自主知识产权的国产大模型数据安全有保障有活跃的社区有越来越丰富的文档资料希望ChatGLM可以早日超越ChatGPT