ChatGLM-6B 本地部署指南!

news2024/11/16 16:50:14

 Datawhale干货 

作者:宋志学,Datawhale成员

注意事项-写在最前

  • 显卡需要至少6GB的显存

  • 使用GPU部署模型需要自行安装torch和与自己显卡匹配的CUDA、cudnn

下载ChatGLM-6B

在GitHub上下载chatglm-6b的源码,地址如下

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

开源双语对话语言模型  | An Open Bilingual Dialogue Language Model

可以使用git clone代码,也可以下载代码压缩包到本地(看你心情)

9c542dd6fea1cafd8dae6de1f7692ce3.png

然后,安装一些包。

pip install -r requirements.txt

下载int4模型

在Hugging Face上下载chatglm-6b int4量化模型地址如下:

https://huggingface.co/THUDM/chatglm-6b-int4

ca88e564112c64d735036820df48f88f.png

这些所有文件都需要下载(可能需要一点点魔法,但是相信聪明的你,一定可以!)

在刚刚下载好的chatglm源码中新建一个用于下载模型文件的文件夹,命名为chatglm-6b-int4(你也可以换一个你喜欢的名字)。将Hugging Face上的int4量化模型下载到里面。

932ecf23204e10fde123d6fecc9ec4db.png

修改源码

web_demo.py

将源码中wei_demo.py文件中的第5、6两行代码中的模型路径修改为chatglm-6b-int4也就是刚刚下载模型的文件夹。如下图所示。

切记:不要用./chatglm-6b-in4不要出现"点杠"的形式,如果你把模型文件放在了其他地方,请务必使用绝对路径,如:"G:\日常文件\Chatgpt相关\ChatGLM-6B\chatglm-6b-int4"。(要使用双斜杠,双斜杠,双斜杠!!!)鼓励你像我这样直接放在源码里面,免去路径问题的困扰。(相信你足够聪明,可以解决这个问题!)

fa1cdf21cf5806b6e7610da46059e8e5.png bebb629b47437ec5159cf30f8beb627c.png

api.py

daf13e9213d34e91b5f6d59cfd4834f0.png 1eb1d9c67a9b44be160a4b3f30b7130e.png

cli_demo.py

3640bcffbe345e24eda537cfdb896f91.png 7b97c79e674cca187f424a0d64e3987d.png

运行代码

web_demo.py

在下载chatglm源码的目录,打开cmd,输入python web_demo.py经过一段时间的等待,出现如下图一样的输出就代表运行成功,在浏览器输入地址:http://127.0.0.1:7860,就可以愉快地使用chatglm啦~

  • gcc报错不需要管,属于windows自己问题,咱们使用GPU运行,gcc与我们无关

    在 CPU 上运行时,会根据硬件自动编译 CPU Kernel ,请确保已安装 GCC 和 OpenMP (Linux一般已安装,对于Windows则需手动安装),以获得最佳并行计算能力。

2a51d4d3a79b5cc0897fa3bfd873d345.png 299fd8f913f6ec9b463b6f669edb70fa.png

可以看到显存占了5.7GB,所以需要至少一张6GB的显存的显卡,再来玩这个。

  • 注意:对话太长也会爆显存。

17c4fbec5d992edc42fcc645ba497903.png

api.py

在命令行输入python api.py,经过一段时间的运行,出现如下输出,就是运行成功。

747e77ddd21d05b46985ccdbf44d9be8.png

按照官网给的示例

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

可以使用python中的requests库进行访问,聪明的你可以把这个代码封装一下实现多轮对话。

import requests
import json

url = 'http://127.0.0.1:8000'
headers = {'Content-Type': 'application/json'}
data = {"prompt": "你好", "history": []}

response = requests.post(url=url, headers=headers, data=json.dumps(data))
response.json()
a9285df52a6765e233340d69bc028000.png

cli_demo.py

在命令行输入python cli_demo.py,经过一段时间的运行,出现如下输出,就是运行成功。

9f5ce733846cb033291ebf9aa5ec81f5.png

然后,可以和他进行对话,就像运行wei_demo.py一样。

9155dbe3e056b440e676daad671c1f4e.png

086d5ef7e6841bc64028b8ae11f73d69.png

原创不易,三连

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

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

相关文章

信息安全-应用安全-SCA技术:SBOM应用实践初探

目录 软件供应链安全治理 供应链安全概述 风险治理重点 何为SBOM SBOM的元素 SBOM的格式 SBOM使用场景 如何使用SBOM 选择SBOM工具 SBOM与风险情报关联 围绕SBOM建立管理流程 关于SBOM的思考 现代软件都是组装的而非纯自研。随着开源组件在数字化应用中的使用比例越…

【C++】运算符重载与赋值运算符重载(显式与默认)的特性与格式以及前置++,后置++重载

文章目录 前言一、运算符重载二、赋值运算符重载1. 赋值运算符重载格式:2. 用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。3. 赋值运算符只能重载成类的成员函数不能重载成全局函数 三、前置与后置 前言 C为…

【Linux】Linux小程序-进度条

目录 一、\r和\n的理解 二、行缓冲区概念 三、进度条源代码 一、\r和\n的理解 \r:回车; \n:换行; 那么请问这两个有什么区别呢? 比如:我们在编写内容的时候,一行没有写完的情况下,需…

【信息安全案例】——软件解密技术(以OllyDbg为例)

目录 🕒 1. 软件解密技术🕘 1.1 概述🕘 1.2 爆破🕘 1.3 跟踪注册🕘 1.4 写出注册 🕒 2. 破解相关问题🕘 2.1 破解程度🕘 2.2 破解线索 🕒 3. 实验:使用 OllyD…

分布式系统原理

高可用是指系统无中断的执行功能的能力,代表了系统的可用程度,是进行系统设计时必须要遵守的准则之一。 而高可用的实现方案,无外乎就是冗余,就存储的高可用而言,问题不在于如何进行数据备份,而在于如何规避…

MacOS Ventura 13.4 (22F66) 带 OC 引导双分区黑苹果镜像

苹果今日向 Mac 电脑用户推送了 macOS 13.4 更新(内部版本号:22F66),本次更新距离上次发布隔了 41 天,主要解决了与Apple Watch自动解锁、蓝牙键盘、屏幕使用时间和VoiceOver相关的问题,推荐大家安装升级。…

Vue 级联组件添加按钮并添加点击事件加传参

我这里采用的是jqvue实现的此功能,首先是要把按钮追加进去,当然头开始写真实dom会导致页面上也追加显示,但是我想实现的是在级联组件上追加所以,选择创建虚拟dom,然后传参这点实在是研究试错了半天,最后选择…

聚观早报|ChatGPT 推出官方 iOS App;大疆称将接收OPPO哲库工程师

今日要闻:ChatGPT 推出官方 iOS App;大疆称将接收OPPO哲库工程师;菜鸟、盒马启动上市计划;苹果公司限制员工使用ChatGPT;张勇:阿里云将分拆上市 ChatGPT 推出官方 iOS App 北京时间 5 月 19 日&#xff0c…

苹果扩充AirTag应用场景,苹果Find My应用更加广泛

根据美国商标和专利局(USPTO)公示的清单,苹果近日获得了一项技术专利,将追踪器附着人体或者服装上,从而监测健康和活动数据。 AirTag 不仅可以追踪某件事物之外,还可以通过安装在人体的不同位置&#xff0c…

人工智能本来是个很简单的事,咋被人们整的这么神秘?

(1) 很多人以为大模型的参数量大是因为数据多。 其实大模型的参数量和超参数的配置相关。主要的超参数有下面几个: 词表大小:Vocab_Size最大位置编码大小:Max_Position_embeddings隐层节点数大小:Hidden_Si…

Linux - 第16节 - 网络基础(应用层二)

1.HTTP协议 我们在套接字部分编写的代码和应用层一中编写的网络计算器代码都是在应用层工作的,是应用层代码,因此应用层代码包括: (1)基本系统socket套接字系列接口的使用。 (2)定制协议&#x…

一个炎爆术分享给大家~

先来强势围观&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r120/…

23种设计模式之外观模式(Facade Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的外观模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬不…

云从科技从容大模型:大模型和AI平台什么关系?为什么造行业大模型?

原创&#xff1a;亲爱的数据 2023年5月18日&#xff0c;坐标广州南沙&#xff0c;来自云从科技的“云从从容大模型”正式亮相。 自此&#xff0c;云从科技从CV四小龙“进阶”成为一家AI大模型公司&#xff0c;同时&#xff0c;别忘记云从还有一个身份常被人提起&#xff1a;首家…

纯虚函数与抽象类

纯虚函数与抽象类 虚析构函数状态转换的引入C中的状态转换C中的状态转换职责链模式 纯虚函数和虚基类使用规则实例接口继承和实现继承 虚析构函数 在上一次博客中写到了这么一段代码&#xff1a; class object { private: int value;public:object(int x 0) : value(x) {}~o…

嵌入式音视频开发过程中如何控制码率?

一、码率控制的意义&#xff1a; 在音视频领域&#xff0c;码率控制模式有着举足轻重的地位。那什么是码率控制&#xff1f;码率控制是指通过调节图像的压缩比例&#xff0c;从而决定输出编码码率的过程。 二、H264有多少种码率控制模式&#xff1a; H264码率控制模式分别有&am…

DailyMart01:一点小想法,一个新的开始!

大家好呀&#xff0c;我是飘渺&#xff01; 截至目前&#xff0c;我已在公众号和知识星球上发布了多个系列文章&#xff0c;涵盖了SpringBoot老鸟系列、SpringCloud微服务系列、运维监控系列、分库分表系列和Kubernetes云原生系列。尽管每个系列的重点各有不同&#xff0c;它们…

【MYSQL】事务的4大属性,对隔离级别的详细讲解

目录 1.原子性和持久性 1.1.手动提交事务 1.2.自动提交事务 1.3.事务的原理&#xff1a; 2.隔离性 1.读未提交&#xff08;Read Uncommitted&#xff09; 2.读提交&#xff08;Read Committed&#xff09; 3.可重复读 4.串行化 3.一致性 4.理解读提交和可重复读的实现…

iptables

目录 iptables概述 netfilter/iptables 关系&#xff1a; 四表五链 四表&#xff1a; 五链&#xff1a; 数据包到达防火墙时&#xff0c;规则表之间的优先顺序&#xff1a; 规则链之间的匹配顺序&#xff1a; 主机型防火墙&#xff1a; 网络型防火墙&#xff1a; ipta…

Uart,RS232,RS485串口通讯协议学习

目录 定义 UART&#xff08;通常被称为串口,简单意味着使用广泛&#xff0c;具有普适性) RS232 RS232电平转换 RS485 -Recommended Standard (再推荐标准) 485和232的对比 RS485组网 总结 定义 串口是我们都很熟悉的&#xff0c;尤其是需要串口调试的时候,打印信息插…