window 安装大模型 chatglm.cpp

news2024/10/7 4:25:51

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

文章目录

  • 一、 前言
  • 二、准备工作
    • 2.1 电脑
    • 2.2 组件安装
  • 三、 安装
    • 3.1 下载源码
    • 3.2 下载模型
    • 3.3 python 依赖安装
    • 3.4 将下载好的大模型转为量化GGML 格式
    • 3.5 编译项目通过 exe 文件运行大模型
    • 3.6 运行
      • 3.6.1 普通的方式运行
      • 3.6.2 交互方式运行
    • 3.7 python 绑定
      • 3.7.1 python 环境安装
      • 3.7.2 pyton 访问
    • 3.7 总结
  • 四、其他
    • 4.1 模型量化
    • 4.2 如报错可参考
  • 五、 参考网址
  • 六、总结


一、 前言

在上一篇文章中window 安装大模型 chatglm-6b,可以运行效率很低,所以这一次我们安装 chatglm.cpp,github 上说这个是 C++实现的,可以在笔记本上实时回复用户问题,我们一起看一下能不能实时回复

二、准备工作

2.1 电脑

在这里插入图片描述
这是我工作使用的电脑配置,16G内存,Intel® 集成显卡。这里要吐槽一下,程序员千万不要使用 window,随便装点什么东西就很麻烦,用不了 mac 就用 linux,我这是公司电脑,后悔没早点装 unbantu 系统。

注意:这个电脑无法使用英伟达的GPU 具体参考 关于 AssertionError: Torch not compiled with CUDA enabled 问题

2.2 组件安装

VS studio 2022
在这里插入图片描述

cmake

TDM-GCC,注意,安装的时候直接选择全部安装就好。安装完在cmd中运行”gcc -v”测试是否成功即可( 我的电脑需要重启后才能执行 gcc -v )

三、 安装

3.1 下载源码

git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp

3.2 下载模型

目前支持的模型:

ChatGLM-6B: THUDM/chatglm-6b, THUDM/chatglm-6b-int8, THUDM/chatglm-6b-int4
ChatGLM2-6B: THUDM/chatglm2-6b, THUDM/chatglm2-6b-int4
ChatGLM3-6B: THUDM/chatglm3-6b
CodeGeeX2: THUDM/codegeex2-6b, THUDM/codegeex2-6b-int4
Baichuan & Baichuan2: baichuan-inc/Baichuan-13B-Chat, baichuan-inc/Baichuan2-7B-Chat, baichuan-inc/Baichuan2-13B-Chat

这里以 THUDM/chatglm2-6b-int4 为例( 模型的量化版本,电脑配置比较高的可以试试 chatglm2-6b 或者 chatglm3-6b,毕竟在量化模型的基础上再次量化,效果会差很多),
chatglm2-6b-int4 清华源 下载模型,从huggingface下载配置文件。如果网速比较好的话,可以忽略清华源直接从 huggingface中下载,下载结束后,统一保存到

D:\LLM\chatglm2-6b-int4

3.3 python 依赖安装

python3 -m pip install -U pip
python3 -m pip install torch tabulate tqdm transformers accelerate sentencepiece

3.4 将下载好的大模型转为量化GGML 格式

python3 chatglm_cpp/convert.py -i D:\LLM\chatglm2-6b-int4 -t q4_0 -o chatglm2-6b-int4-ggml.bin

不同的量化格式,结果精度损失不一样,-t的可选项有

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.

3.5 编译项目通过 exe 文件运行大模型

cmake -B build
cmake --build build -j --config Release

3.6 运行

3.6.1 普通的方式运行

D:\LLM\chatglm.cpp\build\bin\Release\main -m chatglm2-int4-ggml.bin -p 你好

注意编译后 main.exe 的位置在

D:\LLM\chatglm.cpp\build\bin\Release

我的模型 chatglm2-int4-ggml.bin 位置在

D:\LLM\chatglm.cpp

3.6.2 交互方式运行

D:\LLM\chatglm.cpp\build\bin\Release\main -m chatglm2-int4-ggml.bin -i

3.7 python 绑定

3.7.1 python 环境安装

pip install -U chatglm-cpp

3.7.2 pyton 访问

import chatglm_cpp

pipeline = chatglm_cpp.Pipeline("D:\LLM\chatglm.cpp\chatglm2-int4-ggml.bin")
print(pipeline.chat([chatglm_cpp.ChatMessage(role="user", content="你好")]))

至此就可以在本地愉快的玩耍啦

3.7 总结

chatglm.cpp 的效率比 chatglm效率要高很多,可以试试

四、其他

4.1 模型量化

模型量化是通过将模型的各项参数和结构等信息进行数字化处理,将复杂的模型转换为数学形式,以便计算机能够更快速、准确地处理和分析。这样可以使模型更易于实施、验证和优化,从而提高模型的有效性和可靠性。

好处:

  1. 提高计算效率:量化后的模型更容易实施和计算,能够更快速、准确地进行预测和分析。
  2. 方便验证和改进:通过量化可以更清晰地了解模型的结构和参数,方便验证模型的有效性和进行优化改进。
  3. 便于应用:量化后的模型可以更容易地应用于实际问题中,提供更为实用的解决方案。

坏处:

  1. 信息损失:在量化的过程中,可能会损失一些模型精细的特征和信息,导致模型的准确性和可靠性受到影响。
  2. 可解释性下降:量化后的模型可能会变得更为复杂和抽象,对模型的解释和理解可能会变得更加困难。
  3. 难度增加:如果模型本身就很复杂,那么对其进行量化的难度也会增加,可能需要更多的技术和资源来实现。

4.2 如报错可参考

window 安装大模型 chatglm-6b

五、 参考网址

chatglm.cpp

六、总结

本文详解介绍了 chatglm.cpp 安装过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1630398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MyBatis】使用MyBatis框架在两张表是一对多的情况下,进行分步查询,发现对查询出来的结果进行封装时没有将实体类的id进行赋值

Catalog MyBatis在两张表是一对多的情况下,进行分步查询,发现对查询出来的结果进行封装时没有将实体类的id进行赋值1. 表结构2. 场景3. 实现方式具体步骤 4 .测试5. 解决方法 MyBatis在两张表是一对多的情况下,进行分步查询,发现对查询出来的结果进行封装…

【顺序表小题】

顺序表小题 移除元素思路一思路二 合并两个有序数组思路一思路二 移除元素 链接: 题目链接 思路一 创建新的数组,遍历原数组,将不为val的值放到新数组中 思路二 双指针法。 创建两个变量src,dst。 1)若src指向的值为val,则src 2)若sr…

堆的介绍,实现(c语言实现)

目录 堆的概念 堆的性质: 堆的分类 父子结点的下标关系 堆的向下调整算法 ​编辑小堆 大堆 建堆 堆的向上调整算法 小堆 大堆 堆的基本操作 定义堆 初始化堆 销毁堆 打印堆 堆的插入 堆的删除 大堆(Max Heap)的向下调整算法…

51单片机入门(一)

1. 51单片机的基础介绍 2. RAM和ROM的区别 总体而言,RAM和ROM在计算机系统中起着不同的角色,RAM用于临时存储运行时数据,而ROM用于存储永久性的固件和系统程序。 3. 为什么叫51单片机 因为51系列单片机都是使用Intel 8031指令系统的单片机…

[linux网络编程]UDP协议和TCP协议的使用

目录 看以下内容前,你要先了解main函数带参数有什么用、 了解socket的相关函数接口 如果不了解socket的相关函数接口请先看我这篇文章 main函数带参数有什么用 UDP udp_server 1.生成socket文件描述符 2.填充sockaddr_in信息 3.bind 4.发(收&…

Golang基础7-并发编程

并发编程 https://www.cnblogs.com/Survivalist/p/11527949.html 进程和线程、协程的区别_线程协程进程的区别-CSDN博客 Golang中的并发编程是一个重点,我们要了解Golang中的并发Goroutine因此需要先理解进程、线程、之后再理解协程。 进程:操作系统进…

论文发表英语类期刊《校园英语》如何投稿?

论文发表英语类期刊《校园英语》如何投稿? 《校园英语》本刊设有栏目:本期关注、教研探索、实践前沿、经验交流、翻译探究、语言文化等。 《校园英语》杂志是经国家新闻出版总署批准,创刊于2000年,由河北出版传媒集团主管&#…

AI文章写作网站

最强AI文章写作网站——心语流光( Super Ai Writer ) 特点 多轮问答写作,自动携带历史记录进行问答可以自定义携带历史记录的轮数,为0则携带全部历史记录,有效避免token浪费(类似coze平台)AI生…

制作自己的YOLOv8数据集

制作自己的YOLO8数据集 前言 该数据集的格式参照于coco数据集结构✨ 步骤一:收集图像数据 从互联网上下载公开的数据集,也可以使用摄像头或其他设备自行采集图像,确保你的图像数据覆盖了你感兴趣的目标和场景 步骤二:安装Labe…

OCNet

object context pooling (OCP) 作者未提供代码

【黑马点评Redis——002商户查询缓存】

1. 商户查询缓存 2. 知识储备和课程内容 2.1 什么是缓存 缓存是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。 浏览器缓存应用层缓存数据库缓存CPU缓存磁盘缓存 缓存的作用: 降低后端负载提高读写效率,降低响应…

计网笔记:第1章 计算机网络概论

计网笔记:第1章 计算机网络概论 第1章 计算机网络概论1.1 计算机网络发展与分类1.2 OSI和TCP/IP参考模型OSI与TCP/IP参考模型图 1.3 数据封装与解封过程借助OSI模型理解数据传输过程(封装)借助OSI模型理解数据传输过程(解封) 1.4 本章例题 第1章 计算机网络概论 1.…

喜讯!和鲸科技入选 “算力中关村”—— 2024 算力技术创新与应用服务案例集

2024 年 4 月 27 日上午,以"技术重塑生态 算力驱动未来"为主题的"算力中关村"技术成果对接交流专场活动在北京成功举办。作为 2024 中关村论坛的重要组成部分,该专场活动旨在为各界人士打造一个专业化、高效化的技术成果展示与对接平…

SpringMVC 源码剖析

SpringMVC 源码剖析 0 从源码角度分析SpringMVC执行流程 // 前端控制器,SpringMVC最核心的类 public class DispatcherServlet extends FrameworkServlet {// 前端控制器最核心的方法,这个方法是负责处理请求的,一次请求,调用一次…

Redis入门到通关之数据结构解析-IntSet

文章目录 概述IntSet升级简易源码总结 欢迎来到 请回答1024 的博客 🍎🍎🍎欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后端开发者。 …

详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)

1. ip地址与域名的定义以及其关系 ip地址的定义: IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一…

【ARM 裸机】BSP 工程管理

回顾一下上一节:【ARM 裸机】NXP 官方 SDK 使用,我们发现工程文件夹里面各种文件非常凌乱; 那么为了模块化整理代码,使得同一个属性的文件存放在同一个目录里面,所以学习 BSP 工程管理非常有必要。 1、准备工作 新建…

短视频账号矩阵系统===4年技术源头打磨

短视频矩阵系统技术源头打磨需要从多个方面入手,以下是一些建议: 1. 基础技术研发:不断投入资金和人力进行基础技术研发,包括但不限于视频处理、人工智能、大数据等技术,以提高短视频矩阵系统的性能和稳定性。 2. 优化…

多进程编程:原理、技术与应用

title: 多进程编程:原理、技术与应用 date: 2024/4/26 12:14:47 updated: 2024/4/26 12:14:47 categories: 后端开发 tags: 多进程并发编程网络服务分布式系统任务处理进程池线程对比 第一章:进程与线程 进程与线程的概念及区别: 进程&am…

四信智能化感知与控制方案,助推灌区续建配套与现代化改造建设

“十四五”明确提到推进大中型灌区节水改造和精细化管理,建设节水灌溉骨干工程,同步推进水价综合改革。 灌区是保障国家粮食安全的重要基础性设施,是实施乡村振兴战略的水利支撑。灌区续建配套与现代化改造是实施乡村振兴战略一项重要任务。为…