如何在本地部署运行ChatGLMS-6B

news2024/11/18 5:40:37

在本篇技术博客中,将展示如何在本地获取运行代码和模型,并配置环境以及 Web GUI,最后通过 Gradio 的网页版 Demo 进行聊天。

官方介绍

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

为了方便下游开发者针对自己的应用场景定制模型,我们同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。

不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。请大家在使用前了解这些问题,以免产生误解。更大的基于 1300 亿参数 GLM-130B 的 ChatGLM 正在内测开发中。

获取运行代码

首先,您需要从 GitHub 仓库下载 ChatGLM-6B 的代码。您可以使用以下链接进行下载:GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型。

将仓库下载到本地任意位置(例如 D:/codehub/ChatGLM-6B)。

获取模型

接下来,您需要从 Hugging Face 下载 ChatGLM-6B 模型。您可以使用以下链接进行下载:

  • chatglm-6b:THUDM/chatglm-6b · Hugging Face
  • chatglm-6b-int8:THUDM/chatglm-6b-int8 · Hugging Face
  • chatglm-6b-int4:THUDM/chatglm-6b-int4 · Hugging Face

将模型下载到本地任意位置(例如 D:/codehub/models)。

硬件需求

量化等级

最低 GPU 显存

(推理)

最低 GPU 显存

(高效参数微调)

FP16(无量化)

13 GB

14 GB

INT8

8 GB

9 GB

INT4

6 GB

7 GB

环境配置

在开始使用 ChatGLM-6B 进行聊天之前,您需要进行环境配置。下面是必要的步骤:

  • 安装 Python3。
  • 安装 ChatGLM-6B 运行所需要的 Python 组件依赖。在命令行中进入 ChatGLM-6B 文件夹(例如 cd D:/codehub/ChatGLM-6B),并运行以下命令:
pip install -r requirements.txt
  • 安装 GPU 版本的 PyTorch。由于通过 requirements.txt 中的 PyTorch 默认下载的是 CPU 版本,如果您想使用 GPU 运行模型,您需要先卸载并安装 GPU 版本的 PyTorch。您可以从 PyTorch 官网(PyTorch)下载本地环境对应的 PyTorch。

例如,在 Windows 10 上安装 CUDA 版本为 11.8 的 PyTorch,可以运行以下命令:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  • 安装 NVIDIA CUDA 工具包。您可以从 CUDA 官方下载地址(CUDA Toolkit Archive | NVIDIA Developer)下载本地环境对应的CUDA版本。请注意确保选择和 PyTorch 对应的 CUDA 版本,否则 PyTorch 将无法正常运行。

配置 WebUI 并运行

最后,我们需要配置 WebUI 并运行 Gradio 的网页版 Demo。请按照以下步骤操作:

  • 安装 Gradio 依赖。在命令行中输入以下命令:
pip install gradio
  • 指定本地的模型文件夹路径

编辑 ChatGLM-6B 仓库中的 web_demo.py 文件,并将以下代码中的 "THUDM/chatglm-6b" 修改为本地模型所在文件夹的路径(例如:这里使用chatglm-6b-int4量化模型,路径则填D:\\codehub\models\chatglm-6b-int4)

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True) 
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()

如果不进行修改,程序会自动从 Hugging Face 下载模型并加载到 C 盘。

  • 运行 WebUI。在命令行中进入 ChatGLM-6B 文件夹,并运行以下命令:
python web_demo.py

至此,您已经成功配置了环境,并准备好使用 ChatGLM-6B 进行聊天了!

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

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

相关文章

图应用替换算法

文章目录 LRUSHiPBeladys MIN replacement(T-OPT)图应用基本知识CSR和CSCT-OPT替换算法使用 P-OPTRereference MatrixModified Rereference Matrix LRU 过于简单不做具体介绍 SHiP SHiP全称Signature-base Hit Predctor算法,其主打的是基于Signature(签名)进行Pr…

flutter学习之旅 -有状态的组件(StatefulWidget)

文章目录 StatefulWidget格式实现num增加finalfinal定义数组 我们重建一个项目 flutter create 项目名我们会看到 在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget/StatefulWidget StatelessWidget是无状态组件,状态不可改变的widg…

点成分享丨细胞培养三步骤——复苏、传代、冻存

细胞培养是指在体外模拟生物体内环境(无菌、适宜温度、酸碱度和一定营养条件等),使之生存、生长、繁殖并维持主要结构和功能的一种方法。 细胞培养也叫细胞克隆技术,是细胞生物学研究方法中重要和常用技术,通过细胞培…

k近邻法学习

k近邻法(k-nearest neighbor, k-NN)是一种基本分类与回归方法(下面只写分类的) knn的输入为实例的特征向量,对应于特征空间的店; 输出为实例的类别。 knn假设给定的训练数据集,其中的实力类别已定&#xf…

使用vscode进行python的单元测试,提高开发效率

背景知识 单元测试在我们的开发过程中非常有必要,它可以验证实现的一个函数是否达到预期。以前在学校写代码时,都是怼一堆代码,然后直接运行,如果报错再一步步调试,这样大部分时间都浪费在调试工作上。工作后发现大家…

【c/c++】curl编译(CMake方式)

一、curl下载 下载地址:curl - Download 进入下载页面,选择Old Releases。 二、CMake下载 这玩意居然有官网,刷新了我的认知,省事啊。 Download | CMake 三、CMake生成VS项目 1、点击【Browse Source ...】,先选择…

蓝牙耳机哪个品牌最好?数码博主整理2023超高性价比蓝牙耳机推荐

近来收到很多私信不知道蓝牙耳机哪个品牌最好,希望我能进行一期蓝牙耳机推荐,考虑到大家的预算不高,我特意花费时间测评了当下主流品牌的热销平价蓝牙耳机,最终整理成了这份超高性价比蓝牙耳机推荐,感兴趣的朋友们可以…

ASN.1-PKCS10

ASN1采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成: 1、数据块数据类型标识(一个字节) 数据类型包括简单类型和结构类型。 简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字…

【Unity】搭建Jenkins打包工作流,远程打热更、构建App

Jenkins是团队协作项目打包常用的工作流,不多做介绍。 Jenkins的部署Unity打包环境还是非常简单的: 工作流程如下: 1. 在Jenkins中添加打包配置参数(如: 版本号, 目标平台等), 参数将以UI的形式显示在Jenkins Web界面以便打包前填写参数&a…

机器人抓取检测——Dex-Net

如今,在各种期刊顶会都能看到平面抓取检测的论文,他们声称能应对多物体堆叠场景,然而实际效果都不尽人意,我认为主要原因有如下几点: 缺乏多物体堆叠场景的抓取数据集。现在最常用的Cornell Grasp Dataset, Jacquard数…

政务网中使用内部华为云

项目按甲方要求,部署在政务网,各种需要在系统中播放的视频存放于内部华为云;然后,系统需要在互联网上访问。 经过一天捣鼓,终于搞定。过程中遇到了许多问题,有nginx代理的,docker域名解析的&am…

FTP Entering Extended Passive Mode

目录 原因 两种方法解决,哪个行用哪种 方法一 方法二 原因 FTP的连接建立有两种模式PORT

10个优秀设计网站盘点

从平面广告设计、包装设计和标志设计到游戏特效,都与我们的生活息息相关。过去,设计师依靠一张图纸和一支笔,但进入数字时代后,设计工作从图纸转移到了电脑上。 各种设计网站和在线设计工具相继衍生,简化了工作步骤&a…

Packet Tracer - 配置扩展 ACL - 场景 1

Packet Tracer - 配置扩展 ACL - 场景 1 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 G0/0 172.22.34.65 255.255.255.224 不适用 G0/1 172.22.34.97 255.255.255.240 不适用 G0/2 172.22.34.1 255.255.255.192 不适用 服务器 NIC 172.22.…

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能 恢复各机型预装系统,带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能,一次性恢复成新机状态,并且以后不用重装系统&#xff…

pyinstaller打包Mediapipe时遇到的问题

使用pyinstaller对python文件打包 打包流程 安装pyinstaller pip install pyinstaller打包文件 pyinstaller test.py 打包完成后会生成一个dist文件夹,打包的文件会在里面,找到test.exe。 pyinstaller -F test.py 加上-F会把所有的文件打包成一个exe,也是在dist文件夹下…

Docker File

DockerFile 是用来构建Docker镜像的构建文件,是由一些列命令和参数构成的脚本。 一、DockerFile 一、在home目录下创建docker-test-volume目录 cd /home mkdir docker-test-volume 二、在home目录下的docker-test-volume目录创建dockerfile1文件 vim dockerfile1…

运营-8.内容分发

内容分发本质要解决的问题包含两点: 1.高效的连接人与信息 2.过滤出有价值的信息,让合适的人看到合适的信息。 常见的内容分发方式 1.编辑分发 2.订阅分发 3.社交分发 4.算法分发 TIPS:根据产品性质、技术实力等因素,不同…

长尾学习(一):Long-Tail Learning via Logit Adjustment

一、背景 这是一篇从损失函数入手解决长尾问题的一种新思路,借鉴基于标签频次的logit adjustment方法,鼓励模型在高频类别与低频类别之间的Margin较大,提出了两种校准方法: 事后校准(post-hoc adjustment)…

tiechui_lesson03_缓冲读写与自定义控制

学习了与应用层通过缓冲区方式的交互&#xff0c;包括读写&#xff0c;自定义控制等。小坑比较多&#xff0c;大部分是是头文件和设置上的错误&#xff0c;跟着视频敲想快进就跳过了一些细节。包括&#xff1a; <windef.h> 头文件的引用 //使用DWORD等类型switch语句…