ChatGLM2-6b小白部署教程(windows系统,16G内存即可,对显卡无要求,CPU运行)

本文主要是介绍ChatGLM2-6b小白部署教程(windows系统,16G内存即可,对显卡无要求,CPU运行),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一.前言

        近期清华KEG和智谱AI公司一起发布了中英双语对话模型ChatGLM2-6B(小尺寸LLM),开源在https://github.com/THUDM/ChatGLM2-6B,可单机部署推理和fine-tune。虽然默认程序是GPU运行且对显卡要求不高,官方也说默认需要13G的显存,使用量化模型貌似只需要6G显存,但对于我这种平民玩家,不租云服务器的话,单靠我这GTX3050 4G的卡怕是跑不动了,所以就尝试CPU部署量化后的ChatGLM2-6b-int4模型(不同版本的ChatGLM2部署方法基本一致,只是加载的模型和需要的硬件环境有区别)

 二.机器配置&环境

        本人机器配置: 系统WIN10 CPU R5-5600H GPU GTX3050 4G 内存16G

        环境:python 3.11(>=3.8即可),需要科学上网(需要访问git和huggingface)

 三.代码下载&项目所需python环境安装

 git源码下载

#创建目录并进入
mkdir ChatGLM2-6b-int4
cd ChatGLM2-6b-int4# git源码下载
git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B

        git过程如果使用vpn下载报错,需要配置git代理

        git config --global https.proxy http://127.0.0.1:10809 &  git config --global https.proxy https://127.0.0.1:10809(具体ip端口号可在 网络和Internet>代理  中查看)

        如需取消代理设置如下

        git config --global --unset http.proxy & git config --global --unset https.proxy

 python虚拟环境创建并切换(conda创建环境切换也ok)
#创建虚拟环境(pip安装的包仅在此环境下,相关的依赖都在chatglm2b项目下)
python -m venv glm_env
#切换环境
glm_env\Scripts\activate

  安装项目依赖包(指定阿里云镜像源)

          torch下载时间相对较长

#安装项目依赖并指定镜像源
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

        安装成功喽

四.模型相关文件下载&加载

        chatglm2-6b-int4模型地址(huggingface) 也可以在清华国内模型地址(不需要科学上网,chatglm2-6b-int4一共三个文件)下载,但是后者少了一些模型文件以外的配置文件(推理时需要),文件较小,也可以单独下载(文章顶部),如果只下载了模型的三个文件,在推理时会报错如下

        然后我们开始下载模型了

        量化后的int4模型文件接近4G,不过也看出来出租屋这100M宽带不止100M呀。。。,很给力一会就下完了。在项目目录下面创建THUDM\chatglm2-6b-int4两级目录,将模型相关文件放置文件夹,文件目录如下 

        回到项目根目录下在cli_demo.py web_demo.py web_demo2.py api.py内修改部分代码,cli_demo为例,其他相同(主要修改模型加载路径以及改为CPU运行).

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()
修改成
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4", trust_remote_code=True).float()

四.命令端|web 端推理 

        然后在项目目录下执行cli_demo.py,提示没有安装readline

        尝试pip安装readline一直失败(试了各种镜像源),最后pip install pyreadline3解决,但又报了其他错误

        这时候发现自己的路径用 (THUDM/chatglm2-6b-int4), 赶紧替换为 \,我估计经常在linux下开发的同学都会犯这个错误,然后我们继续执行 python cli_demo.py,发现没有GCC命令,百度了下发现在CPU上运行量化后的int4模型,需要安装gcc和openmp,正好TDM-GCC可以顺带安装openmp,于是下载了TDM-GCC,安装过程中需要勾选安装openmp

        最终,我们和chatglm2对上了话,但回复速度实在太慢,而且好像介绍自己都有问题(毕竟是量化后的模型),简单的快排更尬了。。。。。。有条件的还是用显卡,或者google colab、阿里云之类的云服务器

        推理过程中使用的资源情况

        网页版的话直接执行python web_demo.py即可(web_demo2也一样,只是ui页面不同),程序会运行一个 Web Server,然后启动浏览器输入对话内容即可

五.api部署 

        安装fast等相关依赖包,然后curl本地默认端口即可得到回复

#安装fastapi等包,以上包在install requirements文件时应该已经安装过了,uvicorn是python 轻量级 ASGI web服务器框架
pip install fastapi uvicorn -i https://mirrors.aliyun.com/pypi/simple
#项目根目录下执行 api.py
python api.py#程序默认部署在本地8000端口,通过curl post直接调用
curl -X POST "http://127.0.0.1:8000" -H 'Content-Type: application/json' -d '{"prompt": "你好,请介绍下自己", "history": []}'

这篇关于ChatGLM2-6b小白部署教程(windows系统,16G内存即可,对显卡无要求,CPU运行)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520171

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空