大模型笔记之-低成本部署CharGLM3|chatglm.cpp基于ggml 的纯 C++ 实现

智谱ChatGLM3本地私有化部署(Linux) 如果你计划使用GPU进行模型训练和推理,你需要安装相应的GPU驱动和CUDA工具包,并确保你的GPU与智谱ChatGLM3兼容。上述两种方案的目的是让更多的用户能够体验到我们的模型,但无法进行二次开发,如果您准备深度使用我们的模型,我们建议按照以下方式安装。确保你的环境配置正确无误后,进行简单的测试和验证,确保智谱ChatGLM3可以正常运行。下载智谱ChatGLM3的模型文件,这些文件包含了预训练好的模型参数和配置信息。根据你的需求,修改智谱ChatGLM3的配置文件,包括模型路径、输入输出设置等。 阅读详情

前言

之前两篇文章已经分别在云上和本地搭建了chatGLM3的API接口 和综合web_demo.py
本篇文章记录如何仅使用CPU和内存在没有GPU(cuda)的情况下推理chatGLM3

1.下载源码

#使用conda隔离环境
conda create -n glm3cpp python=3.10
#切换环境
conda activate glm3cpp 
#将 ChatGLM.cpp 存储库克隆到本地计算机中
git clone --recursive https://github.com/li-plus/chatglm.cpp.git

2.安装依赖

#安装加载和仿真Hugging Face模型所需的包:
pip install -U pip
pip install torch tabulate tqdm transformers accelerate sentencepiece

3.转换模型

#使用convert.py将ChatGLM-6B转换为量化的GGML格式。例如,将fp16模型原始转换为q4_0(量化int4)GGML模型
python chatglm_cpp/convert.py -i THUDM/chatglm-6b -t q4_0 -o chatglm-ggml.bin

参数解读

-i THUDM/chatglm-6b

ps:表示原始模型位置,如果本地没有模型会从hf联网下载
位于convert.py的512行修改默认模型位置
在这里插入图片描述

-t q4_0

此外还有

q4_0: 4-bit integer quantization with fp16 scales.
q4_1: 4-bit integer quantization with fp16 scales and minimum values.
q5_0: 5-bit integer quantization with fp16 scales.
q5_1: 5-bit integer quantization with fp16 scales and minimum values.
q8_0: 8-bit integer quantization with fp16 scales.
f16: half precision floating point weights without quantization.
f32: single precision floating point weights without quantization.

位于convert.py的529行修改默认里量化等级在这里插入图片描述

PS:表示量化等级q4_0

 -o chatglm-ggml.bin

PS:为输出文件名,及编译后的文件。默认和convert.py位于统计目录
在这里插入图片描述可以修改default中输出的文件名字

4.本地转化

cd chatglm_cpp

python convert.py

部分日志截取

(glm3cpp) D:\AIGC\ChatGLM3\chatglm.cpp>cd chatglm_cpp

(glm3cpp) D:\AIGC\ChatGLM3\chatglm.cpp\chatglm_cpp>python convert.py
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:14<00:00,  2.00s/it]
Processing model states: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 199/199 [01:14<00:00,  2.68it/s]
+---------------------------------------------------------------------+---------------------------+---------+
| name                                                                | shape                     | dtype   |
|---------------------------------------------------------------------+---------------------------+---------|
| transformer.embedding.word_embeddings.weight                        | torch.Size([65024, 4096]) | Q4_0    |
| transformer.encoder.layers.0.input_layernorm.weight                 | torch.Size([4096])        | F32     |
| transformer.encoder.layers.0.self_attention.query_key_value.weight  | torch.Size([4608, 4096])  | Q4_0    |
| transformer.encoder.layers.0.self_attention.query_key_value.bias    | torch.Size([4608])        | F32     |



| transformer.encoder.layers.27.mlp.dense_h_to_4h.weight              | torch.Size([27392, 4096]) | Q4_0    |
| transformer.encoder.layers.27.mlp.dense_4h_to_h.weight              | torch.Size([4096, 13696]) | Q4_0    |
| transformer.encoder.final_layernorm.weight                          | torch.Size([4096])        | F32     |
| transformer.output_layer.weight                                     | torch.Size([65024, 4096]) | Q4_0    |
+---------------------------------------------------------------------+---------------------------+---------+
GGML model saved to chatglm3-ggml.bin

转换后的模型
在这里插入图片描述

5.CMake构建项目

#安装依赖
pip install cmake

#依次执行命令
cmake -B build

cmake --build build -j --config Release

6. 推理验证

修改examples/chatglm3_demo.py第20行模型文件位置

MODEL_PATH = "D:\\AIGC\\ChatGLM3\\chatglm.cpp\\\chatglm_cpp\\chatglm3-ggml.bin"

项目启动

python -m streamlit run  chatglm3_demo.py

日志截取

(glm3cpp) D:\AIGC\ChatGLM3\chatglm.cpp\examples>python -m streamlit run  chatglm3_demo.py

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://10.0.1.97:8501


开启对话前

在这里插入图片描述

在这里插入图片描述

开启对话后

在这里插入图片描述

在这里插入图片描述

总结

以上就是基于chatglm.cpp项目仅使用cpu推理的教程

写在最后

欢迎移步我的Github仓库,https://github.com/Jun-Howie/erniebot-openai-api
本仓库使用飞桨星河社区接入ernie-4.0联网功能,如果你需要可以Fork我的仓库,还请给个Star让我知道

GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案 本地部署大模型,那么如何用小显存部署和使用也是非常重要,让AI的价值应用并延伸到更广泛的领域。 本实战专栏继续关注小而美的大模型,将评估一系列的开源模型,尤其关注国产大模型,重点在于可私有化、轻量化部署,比如推理所需的GPU资源控制在24G显存内,2张Titan XP,或1080 Ti。 阅读详情

相关推荐

手把手教你搭建自己本地的ChatGLM

如果能够本地自己搭建一个ChatGPT的话,训练一个属于自己知识库体系的人工智能AI对话系统,那么能够高效的处理应对所属领域的专业知识,甚至加入职业思维的意识,训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生产力工具,且本地部署能够保护个人数据隐私,能够内网搭建办公使用也十分的方便。而对于ChatGLM来说最大的优点就是本地能快速部署且需要资源较比与ChatGPT相当低,还要什么自行车,够用就好。甚至能够在一些性能较高的服务器单点部署,INT4 量化级别下最低只需 6GB 显存。

master_hunter的博客 1万+

【chatglm2】使用Python在CPU环境中运行 chatglm.cpp 可以实现本地使用CPU运行chatglm2模型,速度也特别的快可以本地部署,把现有项目进行AI的改造。

也可以支持英文,但是最后几个字有点问题。最后有点乱码,不知道是不是因为模型裁剪的问题。同时也有可能是原始素材就有这个问题。可以使用docker 在 CPU上面运行 chatglm ,同时安装了 pytorch 的CPU 版本,镜像缩小到 1.5 G了。并且速度也是非常的快了。可以在非GPU的机器上面运行了。可以解决很多问题呢。

freewebsys的专栏 5512

微带线,带状线和接地共面波导的区别

微带线,带状线和接地共面波导的区别

sky_ying的博客 3万+

chatglm.cpp使用手记

【代码】chatglm.cpp使用手记。

qq_46229380的博客 1032

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1066

AirSim安装和地图加载

详细教程如何安装AirSim并加载地图

fegxg的博客 3029

基于ChatGLM.cpp实现低成本对ChatGLM3-6B的量化加速

基于ggml的纯C++实现,工作方式与llama.cpp相同。通过 int4/int8 量化、优化的 KV 缓存和并行计算加速内存高效的 CPU 推理。具有打字机效果的流式生成。Python 绑定、Web demo、API server和更多可能性。硬件:x86/arm CPU、NVIDIA GPU、Apple Silicon GPU平台:Linux、MacOS、Windows。

最美dee时光的博客 4283

从零到一:Qt与PCL的跨平台开发环境搭建全攻略

本文详细介绍了从零开始搭建Qt与PCL跨平台开发环境的完整流程,涵盖Windows、Linux和macOS三大平台。重点解析了Qt5与Qt6版本选择、PCL库安装配置、VTK集成等关键技术要点,并提供跨平台CMake项目模板和常见问题解决方案,助力开发者快速构建三维点云处理应用。

weixin_29280657的博客 374

chatglm.cpp编译与执行

ChatGLM.cpp是一个由li-plus开发并托管在GitCode上的开源项目,它基于Transformer架构,致力于提供高效、灵活且强大的自然语言理解和生成能力。基于ggml的纯C++实现,与llama.cpp的工作方式相同,这使得它在性能优化方面具有显著优势。采用了int4/int8量化的内存高效CPU推理加速技术,并优化了KV缓存和并行计算,进一步提升了模型的推理速度和效率。支持带打字机效果的流生成,使得生成的文本更加自然流畅。

skywalk8163的专栏 1478

【Konva】解决图形加入group后无法获取到绝对坐标,以及group内绘制新图形坐标偏移的问题

解决konva绘图开发时“图形加入group后坐标不会变动,无法获取到绝对坐标”的问题

近10年前端开发工作经验,为你分享日常经验所得 1493

【Claude Code】Extra inputs are not permitted 报错:代理网关剥离 Beta 标头的修复

通过代理或 LLM 网关连接 Anthropic API 时,Claude Code 报 "Extra inputs are not permitted"?根因是中间件删除了 anthropic-beta 请求标头,导致 Beta 字段被 API 拒绝。本文详解标头转发配置和 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 回退方案。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 113

LLM | ChatGLM.cpp 安装使用(支持CPU、Metal及CUDA推理)

还支持没写到的 Function call、Code interpreter、多模态问答等

宇宙有只 AGI 的博客 991

KubeVela入门到精通-K8S多集群交付

KubeVela是一个功能强大、易于使用、高度可扩展的应用交付与管理平台。它基于Kubernetes和OAM 技术构建,通过开放应用模型(OAM)来作为顶层的抽像,提供了声明式部署、多集群/混合环境支 持、插件与扩展性、中心化管控以及易于使用与可观测性等特点。

小杨同学的博客 1264

window 安装大模型 chatglm.cpp

文章介绍了在工作中使用的电脑配置、安装组件及模型,并详细说明了安装步骤和运行方法。同时提及了模型量化的重要性和优缺点

shengjk1的博客 1175

模型泛化能力提升:领域自适应与迁移学习

模型泛化能力提升:领域自适应与迁移学习​ ,人工智能,计算机视觉,大模型,AI,在机器学习和深度学习的应用中,模型的泛化能力是一个关键问题。泛化能力指的是模型在新的、未见过的数据上表现良好的能力。然而,实际情况中,训练数据和测试数据往往来自不同的领域,存在分布差异,这会导致模型的泛化能力下降。领域自适应与迁移学习正是为了解决这一问题而发展起来的重要技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Mac(M1Pro)下运行ChatGLM2

最近很多人都尝试在M1/M2芯片下跑chatglm/chatglm2,结果都不太理想,或者是说要32G内存才可以运行。本文使用cpu基于chatglm-cpp运行chatglm2的int4版本。开了多个网页及应用的情况下(包括chatglm2),总体内存占用9G左右。chatglm2可以流畅的运行了。虚拟环境为python 3.10,使用conda 创建。1.安装brew,主要需要安装core及cask。4. 下载chatglm-cpp。8. 安装chatglm-cpp。3. 安装cmake。

2622

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ChatGLM 本地部署搭建及测试运行

​ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于General Language Model (GLM)架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。

郎图腾 9万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

使用chatglm.cpp本地部署ChatGLM3-6B模型

ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型 交互实践:../build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -p 你好,最好的大模型是哪一款?创建models目录,到目录里下载chatglm3-6b模型到chatglm3目录里。ChatGLM3 > 如果树上有8只鸟,打死3只后,树上将剩下5只鸟。

skywalk8163的专栏 1768

魔搭社区LLM模型部署实践, 以ChatGLM3为例(二)

Xinference支持大语言模型, 语音识别模型, 多模态模型的部署, 简化了部署流程, 通过一行命令完 成模型的部署工作。并支持众多前沿的大语言模型, 结合GGML技术, 支持多端部署。chatglm.cpp的github地址是:https://github.com/li-plus/chatglm.cpp。魔搭社区和Xinference合作, 提供了模型GGML的部署方式, 以ChatGLM3为例。之后再Launch Model中搜索刚刚创建的模型名称, 点击火箭标识运行即可使用。

Maynor的博客 1512

ChatGLM.cpp多平台部署指南:CPU、CUDA、Metal加速全攻略

ChatGLM.cpp是一个基于C++实现的高效LLM部署框架,支持ChatGLM-6B、ChatGLM2-6B、ChatGLM3等多种模型,能够在CPU、CUDA和Metal等不同硬件平台上实现高性能推理。本指南将带你快速掌握在各种环境下部署ChatGLM.cpp的完整流程,让AI模型在你的设备上高效运行。 ## 📋 准备工作:环境与依赖 在开始部署前,请确保你的系统满足以下基本要求:

gitblog_00779的博客 744

Windows下使用chatglm.cpp的量化模型以实现普通电脑配置也可以来使用ChatGLM3-6B

Windows下使用chatglm.cpp的量化模型以实现普通电脑配置也可以来使用ChatGLM3-6B

TZfool的博客 994

ChatGLM部署+pytorch安装

前几天跟着教程在自己电脑上部署了ChatGLM,总结一下整个过程。

梓川枫的博客 591

从零开始的ChatGLM 配置详细教程

最近安装了一下叶佬的一键安装包总感觉,没有被bug虐浑身不舒服遂,去github上重新git clone了官方的下来并部署玩玩。

风吹落叶的博客 1万+

ChatGLM:清华开源本地部署(2023/05/06更新)

ChatGLM 的本地部署及 API 调用。

asd123pwj的博客 4074

AI大模型企业应用实战:Prompt让LLM理解知识

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

2401_84204413的博客 3196
上一篇: 大模型笔记之-如何从huggingface克隆源码及模型文件
下一篇: 大模型笔记之-langchain-chatchat升级v0.2.8本地部署测试
Jun-Howie
博客等级 码龄8年 6635粉丝 25原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jun-Howie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值