本地部署ChatGLM-6B模型(使用JittorLLMs大模型推理库)

news2024/11/28 8:24:22

简介

网上冲浪时发现的这两个国产模型,重点是对硬件的要求并不高,有2GB内存就可以跑,觉得有趣就弄来玩了下。

https://github.com/Jittor/JittorLLMs
https://github.com/THUDM/ChatGLM-6B

简单介绍下用到的仓库

ChatGLM-6B

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

JittorLLMS

JittorLLMS是基于ChatGLM-6B开发的开源项目。
成本低:相比同类框架,本库可大幅降低硬件配置要求(减少80%),没有显卡,2G内存就能跑大模型,人人皆可在普通机器上,实现大模型本地部署;是目前已知的部署成本最低的大模型库。

效果

系统:win10
环境:python 3.9.10
cpu:i7-8750H
显卡:GTX-1050Ti
内存:16GB 2666 MHz

如下图所示,可以发现就凭我这5年前的笔电都可以运行起来,还是挺不错的,就是回答的效果不太好 一个回答需要好几分钟才能说完。
请添加图片描述
请添加图片描述

开始安装

安装Python

这里不做赘述,版本要求至少3.8。版本不够的小伙伴需要做下版本的升级

下载安装依赖

可以通过环境变量JITTOR_HOME指定缓存存放路径,默认存放在C盘的user下
在这里插入图片描述

# 国内使用 gitlink clone
git clone https://gitlink.org.cn/jittor/JittorLLMs.git --depth 1
# github: git clone https://github.com/Jittor/JittorLLMs.git --depth 1
cd JittorLLMs
# -i 指定用jittor的源, -I 强制重装Jittor版torch
pip install -r requirements.txt -i https://pypi.jittor.org/simple -I

如果出现找不到jittor版本的错误,请更新版本:

pip install jittor -U -i https://pypi.org/simple

安装中若有其他错误,安装python对应的提示信息完成就可以。
如果遇到 transformers 下载失败,尝试使用VPN 将节点放到新加坡 再重新下载,我之前的节点在香港 导致一直下载失败。

部署启动

部署只需一行命令即可:

python cli_demo.py [chatglm|pangualpha|llama|chatrwkv]

运行上面的命令会下载模型文件到本地根目录(C盘)
JittorLLMs 支持4个语言模型的运行

等待模型下载完成后,没有出现红色字体报错,且出现了生成进度 并出现了用户输入: 这几个字,那么恭喜 你的模型运行成功,可以愉快的训练了

若输入指令后 没几秒模型崩了,就是出现如下那种错误了 或内存警告之类的在这里插入图片描述

原因是JittorLLM需要使用的显存和内存超过了我们电脑配置的极限,设置下JittorLLM的环境变量,节省内存:

export JT_SAVE_MEM=1
# 限制cpu最多使用16G   就是内存
export cpu_mem_limit=16000000000
# 限制device内存(如gpu、tpu等)最多使用8G
export device_mem_limit=8000000000
# windows 用户,请使用powershell
# $env:JT_SAVE_MEM="1"
# $env:cpu_mem_limit="16000000000"
# $env:device_mem_limit="8000000000"

内存设置小技巧
为了更好的发挥性能并使JittorLLM不被回收,我们设置内存与GPU显存可用量 可用按如下的公式来:
内存:总内存-当前已用内存-500MB预留的内存
GPU显存:总显存-当前已用显存-500MB预留显存
以上并不一定是最优,至少可用保证运行后被系统给回收掉

用户可以自由设定cpu和设备内存的使用量,如果不希望对内存进行限制,可以设置为-1

# 限制cpu最多使用16G
export cpu_mem_limit=-1
# 限制device内存(如gpu、tpu等)最多使用8G
export device_mem_limit=-1
# windows 用户,请使用powershell
# $env:JT_SAVE_MEM="1"
# $env:cpu_mem_limit="-1"
# $env:device_mem_limit="-1"

JittorLLM 文档已经写的很清楚了,可以在仓库看到更多的操作

简单记录,回忆不迷路

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

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

相关文章

有偏估计的发展及其在球谐函数拟合中的应用研究

有偏估计的发展及其在球谐函数拟合中的应用研究 阚昊宇 专业:大地测量与测量工程 学号:XXX 邮箱:XXX 电话:XXX 摘要:球谐函数在大地测量等领域具有重要意义,然而在观测量不多或空间分布不均匀时进行高阶…

视频编解码(一)之virtio-gpu环境搭建

一、基础概念 VA-API Video Acceleration API 是一组开源应用API接口,赋能应用(比如VLC播放器、GStreamer等)使用hardware video acceleration(一般是GPU提供硬件视频加速功能),VA-API主要由开源库libva和…

机器学习算法系列(三)

机器学习算法之–对数几率回归(逻辑斯蒂回归)算法 上个算法(算法系列二)介绍了如何使用线性模型进行回归学习,但若要做的是分类任务,则需要找一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值…

Scons自动大型系统构建工具

1、先了解一下make 在Linux系统上做过c/c++开发的同学们都知道一个项目工程管理工具:make和Makefile。 make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。 通过检查文件的修改时间,make 工具可以知道编译目标文…

关于原子服务的思考

在我们以往的工作中经常会遇到“原子服务”或“原子化服务”的概念,如果没有一个清晰的概念边界,会使大家的沟通和讨论无法在同一个共识上展开,大家不在同一频道上,割裂于不同的领域空间,难以产生一致性的进展。那么&a…

SAR ADC系列26:系统设计

目录 串一下知识点: 设计一个高速异步SAR ADC 设计目标: 电路架构:(具体电路看前文) 采样网络: 采样电容: CDAC开关切换策略: CDAC阵列冗余设计: SAR 逻辑 比…

谈谈内存模型happen-before讲的什么?

大家好我是易安! 今天我要讲述的是Java内存模型中的happen-before。 Java语言在设计之初就引入了线程的概念,以充分利用现代处理器的计算能力。多线程机制既带来了强大、灵活的优势,也带来了线程安全等令人混淆的问题。在这种情况下&#xff…

二叉查找树

目录 一、二叉查找树概念 二、结点内部类代码实现: 三、二叉查找树的插入原理​编辑 四、遍历的方式(中序遍历): 五、二叉查找树实现指定值删除对应的结点 六、main方法测试 一、二叉查找树概念 二、结点内部类代码实现&…

聚类问题的算法总结

目录 一、K-means算法 1、算法原理 2、如何确定K值 3、算法优缺点 二、DBScan聚类 1、算法原理 2、处理步骤 3、算法优缺点 聚类代码实现 聚类算法属于无监督学习,与分类算法这种有监督学习不同的是,聚类算法事先并不需要知道数据的类别标签&am…

高效释放数据价值,数智融合平台有门道

在数字经济时代,数据上升为新的关键生产要素,逐渐超越土地、资本等传统要素,成为社会经济发展和企业创新更加重要的驱动力。 但如何充分释放数据价值在当下依然是一个世界性难题。一方面,企业与组织逐渐拥有海量数据规模和丰富应…

基于CBC、ECB、CTR、OCF、CFB模式的AES加密算法

1、什么是AES加密算法 什么是加密算法?我在文章《从个人角度看什么是加密算法》中描述了我对加密算法的一些浅薄的理解。我不是信息安全领域的大神,只求有一个入门罢了! 这篇文章是文章《从个人角度看什么是加密算法》的延伸,所…

【C++初阶】:缺省函数和函数重载

c入门一.缺省函数二.函数重载1.参数类型不同2.参数个数不同3.参数顺序不同一.缺省函数 缺省函数,顾名思义就是可以在传参时不传或者少传参数的函数。这里举个例子: 完全缺省 上面的就属于全缺省,可以不传任何参数,当然也可以传参…

Codeforces Round 862 (Div. 2) -- D. A Wide, Wide Graph(树的直径 贪心 简单的树形dp)

题目如下: 题意简说: 树上两点 u,vu, vu,v,如果 u,vu, vu,v 的距离大于等于 kkk 则在图 GkG_kGk​ 上 u,vu, vu,v 有一条无向边。 求当 kkk 等于 [1, n] 的时候,图 GkG_kGk​ 的连通块数量。 思路 or 题解: 我们可以…

【服务器】Dell PowerEdge R750 安装GPU

各种教程 官方教程 https://www.dell.com/support/manuals/zh-cn/poweredge-r750/per750_ism_pub/%E5%AE%89%E8%A3%85-gpu?guidguid-6bb1c301-7595-4c6d-b631-b6a5761c6052&langzh-cn 手册PDF版: https://dl.dell.com/content/manual16153190-dell-emc-powe…

OKR与敏捷开发的结合

当你想达成某件事情时,你在内心会有一个设想的期望结果。这是一个非常简单、基本的概念,并且是从很多人小时候就培养起来的。我们可以将这种现象总结一句话: 通过 ________ 来衡量__________ 。 这就是 John Doerr 在其著作《Measure what Ma…

JavaWeb开发 —— Maven

目录 一、概述 1. 介绍 2. 安装 二、maven-idea 集成 1. 配置及创建Maven项目 2. IDEA 创建Maven项目 3. IDEA导入 Maven 项目 三、依赖管理 1. 依赖配置 2. 依赖传递 3. 依赖范围 4. 生命周期 一、概述 1. 介绍 ① Apache Maven 是一个项目管理和构建工…

【UDP报文和TCP协议特性】

目录1.UDP报文1.1报文长度1.2校验和2.TCP协议特性2.1确认应答2.2超时重传2.3连接管理2.3.1三次握手2.3.2四次挥手2.4滑动窗口2.5流量控制2.6拥塞控制2.7延时应答2.8捎带应答2.9面向字节流2.10异常情况3.小结3.1tcp小结3.2tcp和UDp应用场景的差异4.寄语1.UDP报文 udp是传输层最…

【Android】之【内存管理】

一、Android内存运行是如何运行的? 物理内存即移动设备上的ram,当启动一个android程序时,会启动一个dalvik vm进程,系统会给它分配固定的内存空间【16m,32m,64m,不定,没有统一标准,每个虚拟机会有堆内存阈…

【Minecraft开服教程】使用 MCSM 面板一键搭建我的世界服务器,并内网穿透公网远程联机

文章目录前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址7. 使用固定公网地址远程联机前言 MCSManager是一个开源…

C++ float 数据的保存格式

总体上,在计算机中, float 数据的的保存按照如下转换逻辑:10进制数 >二进制数>科学计数法二进制数>c 条件下下浮点数在内存中的保存格式(这里面有个转换算法,需要理清楚)。 下面举出一个案例&…