Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >chatglm.cpp使用手记

chatglm.cpp使用手记

作者头像
菩提树下的杨过
发布于 2023-08-13 03:18:52
发布于 2023-08-13 03:18:52
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

目前绝大多数LLM模型都是python实现的,运行速度有限(包括ChatGLM2-6b),幸好有大神将其用C++重写了一遍,让运行速度大大提高。

项目地址:li-plus/chatglm.cpp: C++ implementation of ChatGLM-6B & ChatGLM2-6B (github.com)

部署过程如下(环境:WSL 2 ubuntu 22.04,显卡: N卡RTX 4060) - 注:无显卡,纯CPU也行

1、克隆项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp

2、编译

注:执行下面操作前,请先确保ubuntu环境里有make, cmake环境(没有请自行google或baidu)

纯CPU环境: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cmake -B build
cmake --build build -j --config Release

有(nvidia cuda) GPU 环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cmake -B build -DGGML_CUBLAS=ON && cmake --build build -j --config Release

3、模型转换

原生的ChatGLM2-6B模型无法直接使用,需要将其转换成ggml的bin文件,假如我们已提前下载了 THUDM/chatglm2-6b-int4 · Hugging Face,放在windows主系统的e:\chatglm2-6b-in4目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python3 convert.py -i /mnt/e/chatglm2-6b-int4 -t q4_0 -o chatglm2-6b-int4.bin

执行完后,将在当前目录下,得到1个名为chatglm2-6b-int4.bin

4、CLI 验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ./build/bin/main -m /home/jimmy/code/models/chatglm2-6b-int4.bin -i

 有显卡的情况下,c++版本与python版本速度的区别不太明显,但在纯CPU环境下,c++版本明显快很多。

5、python绑定

纯CPU环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install -U chatglm-cpp

nvidia CUDA环境: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMAKE_ARGS="-DGGML_CUBLAS=ON" pip install -U chatglm-cpp

Mac环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMAKE_ARGS="-DGGML_METAL=ON" pip install -U chatglm-cpp

安装好以后,cd examples目录:

  • CLI模式验证
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 python cli_chat.py -m /home/jimmy/code/models/chatglm2-6b-int4.bin -i
  • web_demo
  • api-demo

 先安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install 'chatglm-cpp[api]'

然后就可以验证了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MODEL=/home/jimmy/code/models/chatglm2-6b-int4.bin uvicorn api_demo:app --host 127.0.0.1 --port 8080

MODEL=后面的路径,大家根据情况换成模型的实际路径,这里的api_demo.app,实际是在examples/api_demo.py里指定的

同时从源码里可以看到,对外暴露了2个url,如果顺利的话,启动后将看到类似以下输出:

如果启动过程中报错:

pandas PydanticImportError:`BaseSettings`已移动到`pydantic-settings`包中

可以尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install ydata-profiling

启动成功 后,用ApiPost验证一下:

  •  longchain-api

先启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MODEL=/home/jimmy/code/models/chatglm2-6b-int4.bin uvicorn chatglm_cpp.langchain_api:app --host 127.0.0.1 --port 8000

然后测试longchain-client

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python langchain_client.py

源代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from langchain.llms import ChatGLM

llm = ChatGLM(endpoint_url="http://127.0.0.1:8000", max_token=2048, top_p=0.7, temperature=0.95, with_history=False)
print(llm.predict("你好"))

如果运行过程中报错 PydanticUserError: If you use `@root_validator` with pre=False (the default) you MUST specify `skip_on_failure=True`. Note that `@root_validator` is deprecated and should be replaced with `@model_validator`. For further information visit https://errors.pydantic.dev/2.0.2/u/root-validator-pre-skip

 尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install ydata-profiling

参考文章:

ChatGLM | 🦜️🔗 Langchain

langchain.llms.chatglm.ChatGLM — 🦜🔗 LangChain 0.0.262

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
快速上手chatglm.cpp模型量化工具
chatglm.cpp可以对ChatGLM系列的模型进行量化,满足在低性能的机器上进行推理,其使用的教程如下。
码之有理
2023/10/08
3.2K0
ChatGLM2-6B使用入门
ChatGLM2-6B模型的中文效果较好,相比ChatGLM-6B模型有了进一步的优化,可以本地部署尝试。
码之有理
2023/10/08
1.2K0
魔搭社区LLM模型部署实践, 以ChatGLM3为例(二)
魔搭社区和Xinference合作, 提供了模型GGML的部署方式, 以ChatGLM3为例。
Maynor
2023/11/12
1.1K0
魔搭社区LLM模型部署实践, 以ChatGLM3为例(二)
利用text-generation-webui快速搭建chatGLM2/LLAMA2大模型运行环境
text-generation-webui  是一个基于Gradio的LLM Web UI开源项目,可以利用其快速搭建各种文本生成的大模型环境。
菩提树下的杨过
2023/08/20
6.7K0
利用text-generation-webui快速搭建chatGLM2/LLAMA2大模型运行环境
解决 ChatGLM.CPP+clBlast 编译错误(也适用于SD.CPP)
这个项目 GGML 子仓库中, third_party/ggml/src/CMakeList.txt 有个错误。打开并找到 178-183 行:
ApacheCN_飞龙
2023/10/13
4060
【腾讯云 HAI域探秘】利用HAI+ChatGLM-6B轻松创作个人专属的知识宇宙-基于腾讯云CloudStudio和HAI
ChatGPT(全名:Chat Generative Pre-trained Transformer),是OpenAI研发的一款聊天机器人程序,于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够基于在预训练阶段所见的模式和统计规律,来生成回答,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。
Mit_jeffrey_lee
2023/10/25
1.2K1
【腾讯云 HAI域探秘】利用HAI+ChatGLM-6B轻松创作个人专属的知识宇宙-基于腾讯云CloudStudio和HAI
LangChain + ChatGLM2-6B 搭建个人专属知识库
之前教过大家利用 langchain + ChatGLM-6B 实现个人专属知识库,非常简单易上手。最近,智谱 AI 研发团队又推出了 ChatGLM 系列的新模型 ChatGLM2-6B,是开源中英双语对话模型 ChatGLM-6B 的第二代版本,性能更强悍。
程序员树先生
2023/07/14
6.1K6
LangChain + ChatGLM2-6B 搭建个人专属知识库
LLM 推理和应用 开源框架梳理
之前对LLM 推理和应用了解不多,因此抽时间梳理了一下,我们从模型量化,模型推理,以及开发平台等三个层面来梳理分析。
JadePeng
2024/03/13
2K0
LLM 推理和应用 开源框架梳理
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。通过 Xorbits Inference,可以轻松地一键部署你自己的模型或内置的前沿开源模型
汀丶人工智能
2024/08/17
5.1K0
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain
“ 搭建私人定制化AI知识库!详解如何使用云计算资源,部署ChatGLM和LangChain模型,打造专属智能问答工具。”
技术人生黄勇
2024/07/19
2790
教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain
ChatGLM-6B 大模型的前世今生
ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。欢迎通过 chatglm.cn 体验更大规模的 ChatGLM 模型。
猫头虎
2024/04/08
8380
ChatGLM-6B 大模型的前世今生
ChatGLM实战:基于LangChain构建自己的私有知识库
在之前的 ChatGLM 微调训练的实验中,由于数据量较小,调试效果并不理想。同时,数据需要符合 Prompt 的 jsonl 格式,而短时间内整理出合适的项目训练数据并不容易。然而,在社区中了解到了langchain基于本地知识库的问答功能,这或许我也可以自己搭建一个本地知识库,直接导入本地文件,从而实现本地知识库的问答功能。这样,我只需导入一部小说,就能让系统理解小说内容,并回答相关问题。
MavenTalker
2023/09/06
6.5K3
ChatGLM实战:基于LangChain构建自己的私有知识库
超详细!10分钟部署ChatGLM2-6B,效果测试:不愧是中文榜单第一
 今年6月份清华大学发布了ChatGLM2,相比前一版本推理速度提升42%。最近,终于有时间部署测试看看了,部署过程中遇到了一些坑,也查了很多博文终于完成了。本文详细整理了ChatGLM2-6B的部署过程,同时也记录了该过程中遇到的一些坑和心得,希望能帮助大家快速部署测试。另外:作者已经把模型以及安装依赖全部整理好了,获取方式直接回复:「chatglm2-6b」
ShuYini
2023/09/25
6.5K10
超详细!10分钟部署ChatGLM2-6B,效果测试:不愧是中文榜单第一
一个简单模型就让ChatGLM性能大幅提升 | 最“in”大模型
自大语言模型 (LLM) 成为热点话题以来,涌现了一大批中文大语言模型并在优化平台中得到了积极部署。ChatGLM 正是广受好评的主流中文大语言模型之一。
量子位
2023/09/08
6640
一个简单模型就让ChatGLM性能大幅提升 | 最“in”大模型
llama-cpp-python快速上手 - plus studio
接下来,你可能缺一些依赖,这一点在文档中没有涉及但是我整理了我缺少的依赖,依次运行即可。
plus sign
2024/02/29
1.8K0
大模型应用开发实战
在接触AI应用开发的这段时间,我以为会像以前学.net,学java,学vue一样。先整个hello world,再一步一步学搭功能,学搭框架直到搭一个系统出来。然而,理想总是很丰满,现实很骨感。在实践的过程中各种千奇百怪的问题:
盖世玉宝
2024/09/01
7610
大模型应用开发实战
基于 ChatGLM-6B 搭建个人专属知识库
之前树先生教过大家如何利用微调打造一个垂直领域的 LLM 专属模型。但是微调一方面需要专业知识,通常需要很多计算资源和时间,以便在不同的超参数设置上训练多个模型并选择最佳的一个,另一方面动态扩展比较差,新增和修改原有的数据都要重新微调一次。总得来说对非专业人员不友好。
程序员树先生
2023/05/16
3.9K6
基于 ChatGLM-6B 搭建个人专属知识库
LLM 大模型学习必知必会系列(十二):VLLM性能飞跃部署实践:从推理加速到高效部署的全方位优化[更多内容:XInference/FastChat等框架]
训练后的模型会用于推理或者部署。推理即使用模型用输入获得输出的过程,部署是将模型发布到恒定运行的环境中推理的过程。一般来说,LLM的推理可以直接使用PyTorch代码、使用VLLM/XInference/FastChat等框架,也可以使用llama.cpp/chatglm.cpp/qwen.cpp等c++推理框架。
汀丶人工智能
2024/05/28
12.2K0
LLM 大模型学习必知必会系列(十二):VLLM性能飞跃部署实践:从推理加速到高效部署的全方位优化[更多内容:XInference/FastChat等框架]
打造自己的AIGC应用(一)入门篇
其实细数AI的发展历程非常之久,而让AI的应用一下子出现在人们眼前的其实就是ChatGPT的出现,这意味着AIGC应用已经从概念为王变的非常实用了。伴随着ChatGPT的出现,大量的开源大模型也如雨后春笋一样出现。就现在而言,打造一个自己的AIGC应用已经非常简单了。
LoRexxar
2023/10/17
4.4K1
打造自己的AIGC应用(一)入门篇
📘 教程:理解 LangChain + Vue/React 搭建 LLM 对话系统的理论基础
在构建 LLM 对话系统时,很多初学者会选择 Gradio 或 Streamlit 快速搭建。但随着需求的复杂化,例如支持多轮记忆、调用外部插件、检索知识库、界面交互精美、支持多模型等,这些轻量级方案便力不从心。
IT蜗壳-Tango
2025/04/06
3190
推荐阅读
相关推荐
快速上手chatglm.cpp模型量化工具
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验
系统错误