本地化部署ChatGLM2-6B模型

news2024/12/25 1:09:52

本地化部署ChatGLM2-6B模型

  • 简介
    • 硬件需求
  • 环境部署
    • 安装Miniconda
    • 创建虚拟环境
    • 下载模型和源码
    • 安装依赖
    • GPU部署
    • CPU部署
  • 运行程序
    • GPU模式
    • CPU模式
    • 命令行运行
    • 网页版运行
    • API运行

简介

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

硬件需求

在这里插入图片描述

环境部署

安装Miniconda

Miniconda自带python,在官网下载python版本为3.10的Miniconda版本。下载地址为:
Miniconda下载地址

在这里插入图片描述

创建虚拟环境

conda create -n chatglm2 --clone base
conda env list
conda activate chatglm2

下载模型和源码

源码地址
模型地址
在这里插入图片描述

安装依赖

pip install -r requirements.txt -i https://pypi.douban.com/simple

GPU部署

GPU部署需要部署CUDA。

  1. 首先需要查看显卡信息:
nvidia-smi

在这里插入图片描述
上图表示本机显卡最高支持CUDA的版本是12.2。

  1. 安装CUDA
    CUDA版本向下兼容,不建议使用最新版本的,需安装torch支持的CUDA版本。
    CUDA下载地址述
    在这里插入图片描述

  2. 安装pytorch
    安装GPU版本的pytorch,上面我们的CUDA安装的11.8版本,pytorch也要选择11.8版本,否则后面开始报错。
    torch下载地址:pytorch地址
    在这里插入图片描述

在命令行输入下面命令:

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

运行以下命令,查看 cuda版torch 是否可用:

import torch
print(torch.cuda.is_available())

出现True即为安装成功。

CPU部署

如果没有 GPU 硬件的话,也可以在 CPU 上进行对话,但是对话速度会很慢。
如在 CPU 上运行量化后的模型,还需要安装 gcc 与 openmp。多数 Linux 发行版默认已安装。对于 Windows ,可在安装 TDM-GCC 时勾选 openmp。
TDM-GCC地址

运行程序

根据自己实际情况,修改源码api.py、cli_demo.py、web_demo.py、web_demo2.py 等脚本中的模型路径。

GPU模式

模型默认以 FP16 精度加载,运行模型需要大概 13GB 显存。命令如下:

model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()

如果 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

# 按需修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).quantize(4).cuda()

如果内存不足,可以直接加载量化后的模型:

model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).cuda()

CPU模式

内存充足时(32GB内存),使用方法如下:

model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).float()

如果内存不足,可以直接加载量化后的模型:

model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).float()

命令行运行

python cli_demo.py

网页版运行

python web_demo.py

API运行

python api.py

默认部署在本地的 8000 端口,通过 POST 方法进行调用。

curl -X POST "http://127.0.0.1:8000" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'

得到返回值为

{
  "response":"你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。",
  "history":[["你好","你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]],
  "status":200,
  "time":"2023-06-30 14:51:00"
}

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

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

相关文章

2023年高教社杯数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…

TCP与UDP的区别(什么是三次握手和四次挥手)

目录 一、TCP和UDP是什么 二、TCP和UDP的区别 三、TCP协议三次握手 为什么是三次握手而不是两次握手 ? 在不可靠信道上建立可靠连接会产生什么问题呢? 四、四次挥手 为什么客户端需要等待超时时间? 总结: 我们日常生活中微…

医疗中心管理环境温湿度,这样操作就对了!

随着医疗技术的不断发展,越来越多的医疗设备对于稳定的工作环境要求越来越高,而环境温湿度是影响这些设备性能和可靠性的关键因素之一。 为了确保医疗设备的正常运行和患者的安全,医疗机构越来越倾向于采用精密空调监控系统来维护设备的稳定性…

如何输出高质量软文,媒介盒子教你4大技巧

作为一名软文作者,只有知道软文写作的要求,才能打造一篇成功的软文,以便为企业或产品带来较高的关注度和曝光率,提高企业的知名度和品牌形象。下面就随小编一起来看看吧! 1、吸引眼球的标题 标题是软文写作的灵魂&am…

css-伪类:not实现列表最后一项没有样式

有了&#xff1a;not这个选择符&#xff0c;那么你将可以很好的处理类似这样的场景&#xff1a;假定有个列表&#xff0c;每个列表项都有一条底边线&#xff0c;但是最后一项不需要底边线。 示例&#xff1a; html: <ul><li>111111111111</li><li>21…

传统品牌如何通过3D虚拟数字人定制和动捕设备加速年轻化发展?

步入Z时代&#xff0c;年轻一代消费者的生活方式深受互联网技术和媒介环境影响&#xff0c;对新潮事物感兴趣&#xff0c;消费思维也相对前卫&#xff0c;品牌需要探索契合Z世代的消费观念&#xff0c;寻找新的链接拉近品牌与消费者的距离&#xff0c;而3D虚拟数字人定制可以帮…

900ES1-0100 honeywell 可减少视觉引导应用的整体开发时间

900ES1-0100 honeywell 可减少视觉引导应用的整体开发时间 CV2视觉系统配有高柔性电缆(以太网或USB)。通过将高柔性电缆作为所有CV2视觉系统的标准配置&#xff0c;Epson CV2摄像机可以安装在机器人臂(移动)或固定装置(固定)上。基于向导的校准使机器人到视觉系统的校准变得轻…

内网穿透——搭建私人影音媒体平台

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…

第四讲Java基本语法——数组结构(多维数组)

前言 前面几讲,我们讲了Java基本语法,初学者也能够有一定的入门。本讲,我们也是继续来讲解一下Java另一个基础语法——数组,其实在前面讲解数据类型的时候,我们也有提到数组是引用类型,那今天我们就来分析一下什么是数组,怎么用数组呢? 一、数组是什么 数组是…

软件测试用例经典方法 | 逻辑覆盖测试法及案例【文末赠书】

逻辑覆盖测试法是常用的一类白盒测试方法&#xff0c;其以程序内部逻辑结构为基础&#xff0c;通过对程序逻辑结构的遍历来实现程序测试的覆盖。逻辑覆盖测试法要求测试人员对程序的逻辑结构有清晰的了解。 逻辑覆盖测试法是一系列测试过程的总称&#xff0c;是使测试过程逐渐…

如何做科研--英文文献阅读

以下是截取书中的一段话&#xff0c;这对于所有科研工作者感觉都适用&#xff0c;也能让自己了解自己领域前沿的东西&#xff0c;应该也能提高大家英文阅读能力&#xff0c;一起学习共勉&#xff01; “从1998年在普林斯顿大学任职&#xff0c;到在清华大学当教授&#xff0c;…

需求变化频繁的情况下,如何实施自动化测试

一.通常来说&#xff0c;具备以下3个主要条件才能开展自动化测试工作: 1.需求变动不频繁 自动化测试脚本变化的频率决定了自动化测试的维护成本。如果需求变动过于频繁&#xff0c;那么测试人员就需要根据变动的需求来不断地更新自动化测试用例&#xff0c;从而适应新的功能。…

024:vue中动态添加ref,通过ref更改css

第024个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

【视觉SLAM入门】6.1. (基于直接法的视觉里程计)LK光流法,代码解读, 直接法,特征点法对比,稀疏,半稠密,稠密地图

"刺卵掷地&#xff0c;逐蝇弃笔" 0. 数据集1. 光流法(Optical Flow)1.1. 光流1.2. LK光流法1.3 关键代码&#xff1a;1.4 特点 2. 直接法(Direct Methods)2.1 分类比较2.2 优缺点 前置事项&#xff1a; 特征点耗时&#xff0c;丢弃有用信息&#xff0c;特征缺失&…

vite 配置自动补全文件的后缀名

vite 不建议自动补全&#xff0c;文件的后缀名的 const Home ()>import("/views/Home.vue");文件是必须要加上 .vue 的后缀名的 如果 想要像 webpack 一样的不用写&#xff0c; 可以在vite.config.js中配置如下就可以了

【bug记录】RuntimeError: CUDA error: device-side assert triggered

RuntimeError: CUDA error: device-side assert triggered 我个人使用pytorch lightning时&#xff0c;报错RuntimeError: CUDA error: device-side assert triggered 我个人是因为分类类别数目对不上&#xff0c;但是在gpu上运行是不会提示错误的 解决方案&#xff1a;建议…

kubesphere中部署grafana实现dashboard以PDF方式导出

1&#xff0c;部署grafana-image-renderer 2&#xff0c;部署grafana GF_RENDERING_SERVER_URL http://ip:30323/render #grafana-image-renderer地址 GF_RENDERING_CALLBACK_URL http://ip:32403/ #grafana地址 GF_LOG_FILTERS rend…

【ES】笔记-Promise基本使用

笔记-基本使用 一、初始Promise1. 抽象表达:2. 具体表达:为什么要用 Promise?promise的基本流程 二、fs读取文件三、AJAX请求四、Promise封装fs模块五、util.promisify方法六、Promise封装AJAX操作 一、初始Promise 1. 抽象表达: 1. Promise 是一门新的技术(ES6 规范) 2. Pr…

关于单例模式

单例模式的目的&#xff1a; 单例模式的目的和其他的设计模式的目的都是一样的&#xff0c;都是为了降低对象之间的耦合性&#xff0c;增加代码的可复用性&#xff0c;可维护性和可扩展性。 单例模式&#xff1a; 单例模式是一种常用的设计模式&#xff0c;用简单的言语说&am…

uview ui 1.x ActonSheet项太多,设置滚动(亲测有效)

问题&#xff1a;ActionSheet滚动不了。 使用uview ui &#xff1a;u-action-sheet, 但是item太多&#xff0c;超出屏幕了&#xff0c; 查了一下文档&#xff0c;并没有设置滚动的地方。 官方文档&#xff1a;ActionSheet 操作菜单 | uView - 多平台快速开发的UI框架 - uni-a…