开源双语对话语言模型 ChatGLM-6B 本地私有化部署

news2024/9/24 7:24:42

本文首发于:https://www.licorne.ink/2023/08/llm-chatglm-6b-local-deploy/

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

其中一个比较关键的点是:消费级的显卡即可进行私有化部署,下文将着重介绍部署的相关步骤。

建议硬件配置:
在这里插入图片描述不过该模型也可在无GPU的情况下部署,但是推理速度会更慢,最低需要32G内存。

一、克隆仓库

本地部署的话实际需要用到两个仓库,一个是源码仓,一个是模型仓。在操作之前请确认Git已正确安装并启用了LFS。

源码仓库:https://github.com/THUDM/ChatGLM-6B

模型仓库:https://huggingface.co/THUDM/chatglm-6b

使用 git clone 命令克隆至本地即可,由于仓库的默认名称一致,建议在克隆一个仓库后改名再继续克隆另一个仓库。模型仓库体积较大,请确保网络连接稳定。

在这里插入图片描述

二、安装依赖

1. 更新显卡驱动

进行下面的操作前请确认已更新最新的显卡驱动。如果显卡本身就以工作负载为主,请选择 Studio 版本的驱动。

2. Python3

首先确保 Python3 已正确安装并配置了相应的环境变量。打开命令窗口能正常调用 py 和 pip 命令说明配置正确。

3. 自动安装依赖

进入源码仓库,执行以下命令安装依赖:

pip install -r requirements.txt

4. 安装 PyTorch 和对应版本的 CUBA

为了确保 Torch 版本与 CUBA 匹配,先执行以下命令移除已有的 PyTorch:

pip3 uninstall torch torchvision torchaudio

在这里插入图片描述
打开 https://pytorch.org/get-started/locally/ 页面,选择 PyTorch 的版本,注意 CUBA 版本的选择,然后复制如图的安装命令。

在这里插入图片描述
打开 https://developer.nvidia.com/cuda-downloads 页面,如果自动跳转的 CUBA 版本与要求的版本不一致,可以找到在页面下方的 Archive of Previous CUDA Releases 链接打开新的页面检索并下载安装。

在这里插入图片描述

三、改用本地模型

源码仓库在没有修改的情况下默认不会使用本地的模型,接下来需要修改模型引用的代码来指向本地的模型文件。建议使用 VS Code 之类的工具来进行批量的替换。

实际操作时,只需要将整个源码目录下的 “THUDM/chatglm-6b” (注意,搜索替换时一定要带上这对英文的双引号,否则可能会错误匹配)替换成第一步中克隆下来的模型的目录的路径(注意替换后的文本也需要英文的双引号,Windows 下要注意 \ 需要以转义符 \ 的形式写入)。

四,启动 WebDemo

上述步骤全部完成后,进入源码仓库,使用下述命令启动即可:

py .\web_demo.py

启动完毕后会自动打开 Web 页面,Enjoy It!

在这里插入图片描述

PS:这玩意儿确实吃显存啊!

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

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

相关文章

人员跌倒检测识别预警

人员跌倒检测识别预警系统通过pythonopencv深度学习网络模型架构,人员跌倒检测识别预警系统实时监测老人的活动状态,通过图像识别和行为分析算法,对老人的姿态、步态等进行检测和识别,一旦系统检测到跌倒事件,立即发出…

Vue2向Vue3过度Vuex核心概念state状态

目录 1 核心概念 - state 状态1.目标2.提供数据3.访问Vuex中的数据4.通过$store访问的语法5.代码实现5.1模板中使用5.2组件逻辑中使用5.3 js文件中使用 2 通过辅助函数 - mapState获取 state中的数据1.第一步:导入mapState (mapState是vuex中的一个函数)2.第二步&am…

Dubbo—流量管控

此任务基于一个简单的线上商城微服务系统演示了 Dubbo 的流量管控能力。 线上商城的架构图如下: 系统由 5 个微服务应用组成: Frontend 商城主页,作为与用户交互的 web 界面,通过调用 User、Detail、Order 等提供用户登录、商品…

为什么使用Nacos而不是Eureka(Nacos和Eureka的区别)

文章目录 前言一、Eureka是什么?二、Nacos是什么?三、Nacos和Eureka的区别3.1 支持的CAP3.2连接方式3.3 服务异常剔除3.4 操作实例方式 总结 前言 为什么如今微服务注册中心用Nacos相对比用Eureka的多了?本文章将介绍他们之间的区别和优缺点…

推荐前 6 名 JavaScript 和 HTML5 游戏引擎

推荐:使用 NSDT场景编辑器 助你快速搭建3D应用场景 事实是,自从引入JavaScript WebGL API以来,现代浏览器具有直观的功能,使它们能够渲染更复杂和复杂的2D和3D图形,而无需依赖第三方插件。 你可以用纯粹的JavaScript开…

Nuxt3打包部署到Linux(node+pm2安装和运行步骤+nginx代理)

最近,我们项目组的工作接近尾声,需要把项目部署上线。由于前端第一次使用Nuxt3框架,后端也是第一次部署Nuxt3项目,所以刚开始出现了很多问题。在我上网搜索很多教程后,得到了基本的流程。 1.服务器安装node.js环境 N…

Linux常用命令_文件搜索命令

文章目录 1. 文件搜索命令find2. 其他搜索命令2.1 文件搜索命令:locate2.2 文件搜索命令:which2.3 文件搜索命令:whereis2.4 文件搜索命令:grep 1. 文件搜索命令find 2. 其他搜索命令 2.1 文件搜索命令:locate 作为f…

c语言练习题30:判断一个数是否为2^n

判断一个数是否为2^n 思路:2^n中只有一个1故可以通过n&(n-1)是否为0来判断。 代码:

Android 之 WindowManager (窗口管理服务)

本节引言: 本节给大家带来的Android给我们提供的系统服务中的——WindowManager(窗口管理服务), 它是显示View的最底层,Toast,Activity,Dialog的底层都用到了这个WindowManager, 他是全局的!该类…

用MFC打开外部程序

在MFC(Microsoft Foundation Classes)中,你可以使用ShellExecute函数来打开Notepad并加载指定的文件。ShellExecute函数是Windows API的一部分,它可以执行与操作系统相关的操作,例如打开文件、运行程序等。 以下是在M…

VBJSON报错:缺少:语句结束

项目中使用JSON库VBJSON时报错: 编译错误:缺少:语句结束 cJSONScript和cStringBuilder报相同的错误,都在第一行: VERSION 1.0 CLASS 研究了半天没啥结果,之前使用这个库的时候没有什么问题,所以判定是当前…

51WORLD李熠:地球克隆计划就像攀登珠峰

提起数字化这个词,相信大家早已耳熟能详。然而数字化世界的意义是什么?它又给我们带来了什么?是让我们的真实世界更加美好?还是让我们沉迷于虚拟世界? 对于以上这些问题,51WORLD创始人兼CEO李熠给出的答案是…

基于Java+SpringBoot+Vue前后端分离医院资源管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

阿里云将关停代销业务

我是卢松松,点点上面的头像,欢迎关注我哦! 阿里云自从逐渐分拆独立之后,做了很多调整。最近它又做了一个大动作:据DoNews消息,阿里云将会在今年9月30日之前,全面关停代销业务。 这件事实际上…

21.图的应用

目录 一. 最小生成树 (1)普里姆(Prim)算法 (2)克鲁斯卡尔(Kruskal)算法 二. 最短路径 (1)Dijkstra(迪杰斯特拉)算法 (2)Floyd(弗…

Pygame编程(1)初始化和退出模块

初始化和退出模块 pygame使用基础流程 初始化模块设置主屏窗口程序主循环(处理键盘、鼠标、游戏杆、触摸屏等事件)退出模块终止程序 import sys import pygame from pygame.locals import *# 1.初始化模块 pygame.init()# 2.设置主屏窗口 display pyg…

【精品】基于VUE3的 电商详情 图片显示模块

效果 组件 <template><div class"goods-imgs"><div class"imgs-show"><img :src"mainImage" alt"大图" /></div><ul class"img-thumbnail"><li v-for"(item, index) in image…

freertos之任务调度算法

介绍 所谓调度算法&#xff0c;就是怎么确定哪个就绪态的任务可以切换为运行状态。 通过配置文件FreeRTOSConfig.h的三个配置项来配置调度算法&#xff1a;configUSE_PREEMPTION &#xff08;是否抢占&#xff09; configUSE_TIME_SLICING &#xff08;是否轮转&#xff09; c…

Linux操作系统--常用指令(文件目录类指令)

(1).pwd指令 功能:显示当前工作目录的绝对路径。 如果你使用cd命令进行切换的时候不知道到了哪里,就可以使用该指令输出路径查看。 (2).cd命令 功能:用于切换路径 语法: cd + 路径(路径可以指绝对路径,也可以是相对路径)

记录--一个炫酷的css动画

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 最近有一个需求&#xff0c;要我实现一个动画效果&#xff0c;效果如下 简单分析了一下效果&#xff0c;是一个3d的效果&#xff0c;首先是一个圆&#xff0c;接着是两段圆环&#xff0c;第三层是一堆…