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

这篇具有很好参考价值的文章主要介绍了大模型笔记之-低成本部署CharGLM3|chatglm.cpp基于ggml 的纯 C++ 实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

之前两篇文章已经分别在云上和本地搭建了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行修改默认模型位置
chatglm.cpp 源码部署,笔记,c++,开发语言

-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行修改默认里量化等级chatglm.cpp 源码部署,笔记,c++,开发语言

PS:表示量化等级q4_0

 -o chatglm-ggml.bin

PS:为输出文件名,及编译后的文件。默认和convert.py位于统计目录
chatglm.cpp 源码部署,笔记,c++,开发语言可以修改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

转换后的模型
chatglm.cpp 源码部署,笔记,c++,开发语言

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 源码部署,笔记,c++,开发语言

chatglm.cpp 源码部署,笔记,c++,开发语言

开启对话后

chatglm.cpp 源码部署,笔记,c++,开发语言

chatglm.cpp 源码部署,笔记,c++,开发语言

总结

以上就是基于chatglm.cpp项目仅使用cpu推理的教程文章来源地址https://www.toymoban.com/news/detail-803926.html

到了这里,关于大模型笔记之-低成本部署CharGLM3|chatglm.cpp基于ggml 的纯 C++ 实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ChatGLM】大模型之 ChatGLM 部署

    目录 1. 资源下载 2. 部署启动 HuggingFace 模型权重下载 手动模型权重下载 源码下载 源码修改 对于 `cli_demo.py` 和 `web_demo.py` 中模型加载部分需要从 HuggingFace 下载 改为从本地加载 命令行启动 网页启动 启动后的效果:

    2024年02月14日
    浏览(37)
  • AIGC - ChatGLM大模型:ChatGLM2-6B模型推理部署

    如果你要问我为什么直接部署ChatGLM2的模型? 因为当我在8月份在上海召开的全球人工智能大会上了解到清华-智谱发布的ChatGLM模型时,它已经发布了新的版本ChatGLM2,并且推理的效果提升了不少,那么本着只要最好的原则,我就直接上手先玩新版本了。 作为AIGC方面的小白来说

    2024年02月06日
    浏览(48)
  • 大模型——MobileSAM的Onnxruntime cpp部署

    该项目旨在为Segment Anything和MobileSAM创建一个纯 C++ 推理 api ,在运行时不依赖于 Python。代码存储库包含一个带有测试程序的 C++ 库,以便于将接口轻松集成到其他项目中。 模型加载大约需要 10 或 1 秒,单次推理大约需要 20 毫秒,使用 Intel Xeon W-2145 CPU(16 线程)获得。在运行

    2024年02月09日
    浏览(36)
  • 免费部署开源大模型 ChatGLM-6B

    参考:【大模型-第一篇】在阿里云上部署ChatGLM3-CSDN博客 ChatGLM 是一个开源的、支持中英双语的对话语言模型,由智谱 AI 和清华大学 KEG 实验室联合发布,基于 General Language Model (GLM) 架构,具有 62 亿参数。ChatGLM3-6B 更是在保留了前两代模型对话流畅、部署门槛低等众多优秀特

    2024年01月18日
    浏览(81)
  • 记录部署ChatGLM大语言模型过程

    ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。

    2024年02月08日
    浏览(33)
  • 【ChatGLM_01】ChatGLM2-6B本地安装与部署(大语言模型)

    ChatGLM2-6B是一个开源的、支持中英双语的对话语言模型,基于General Language Model (GLM)架构。 ChatGLM2-6B具备的能力: 自我认知:“介绍一下你的优点” 提纲写作:“帮我写一个介绍ChatGLM的博客提纲” 文案写作:“写10条热评文案” 信息抽取:‘从上述信息中抽取人、时间、事件

    2024年02月14日
    浏览(59)
  • 本地化部署大语言模型 ChatGLM

    ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优

    2023年04月20日
    浏览(67)
  • llama.cpp LLM模型 windows cpu安装部署

    参考: https://www.listera.top/ji-xu-zhe-teng-xia-chinese-llama-alpaca/ https://blog.csdn.net/qq_38238956/article/details/130113599 cmake windows安装参考:https://blog.csdn.net/weixin_42357472/article/details/131314105 1、下载: 2、编译 3、测试运行 参考: https://zhuanlan.zhihu.com/p/638427280 模型下载: https://huggingface.co/nya

    2024年02月11日
    浏览(42)
  • 本地部署ChatGLM-6B模型(使用JittorLLMs大模型推理库)

    网上冲浪时发现的这两个国产模型,重点是对硬件的要求并不高,有2GB内存就可以跑,觉得有趣就弄来玩了下。 https://github.com/Jittor/JittorLLMs https://github.com/THUDM/ChatGLM-6B 简单介绍下用到的仓库 ChatGLM-6B ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language

    2024年02月01日
    浏览(52)
  • 使用Triton部署chatglm2-6b模型

    NVIDIA Triton Inference Server是一个针对CPU和GPU进行优化的云端和推理的解决方案。 支持的模型类型包括TensorRT、TensorFlow、PyTorch(meta-llama/Llama-2-7b)、Python(chatglm)、ONNX Runtime和OpenVino。 NVIDIA Triton Server是一个高性能的推断服务器,具有以下特点: 1. 高性能:Triton Server为使用GPU进行推

    2024年02月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包