智能聊天助手,一步到位:ChatGLM-6B部署全攻略

news2024/11/24 4:50:44

目录

  • 前言
  • 一、介绍
  • 二、使用方式
    • 2-1、安装
    • 2-2、代码调用: 使用如下代码时会自动下载模型。
    • 2-3、本地加载
  • 三、运行
  • 总结


前言

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。

一、介绍

在这里插入图片描述

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

二、使用方式

2-1、安装

# 克隆到本地
git clone https://github.com/THUDM/ChatGLM-6B.git

# 安装依赖,用一下镜像源。
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple

# 如果需要在 cpu 上运行量化后的模型,还需要安装 gcc 与 openmp。多数 Linux 发行版默认已安装。

chatGLM运行的硬件需求

在这里插入图片描述

2-2、代码调用: 使用如下代码时会自动下载模型。

GPU版本

>>> from transformers import AutoTokenizer, AutoModel
>>> # 模型大小大约为13个G。
>>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
>>> model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
>>> model = model.eval()
>>> response, history = model.chat(tokenizer, "你好", history=[])
>>> print(response)
>>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
>>> print(response)

缺点:网络不好的时候,会下载很久,还会时不时的卡顿,稍有不慎就得重来。

CPU版本

from transformers import AutoTokenizer, AutoModel
# 这里的路径是我自己下载的模型文件路径
# CPU的运行配置最低要求是832G。
tokenizer = AutoTokenizer.from_pretrained("/tmp/chatglm_model/", trust_remote_code=True)
model = AutoModel.from_pretrained("/tmp/chatglm_model/", trust_remote_code=True).float()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)

Linux上的用例图
在这里插入图片描述

2-3、本地加载

本地加载:自动下载模型的过程中可能会遇到各种各样的错误导致下载终止,我们可以下载模型后在本地加载,模型文件默认加载到C:\Users\你的文件夹名称.cache\huggingface\hub\models–THUDM–chatglm-6b\snapshots下。

从Hugging Face上下载模型:注意要先安装LFS,否则会报错。

安装方式如下

  • 使用lscpu命令查看架构。
    在这里插入图片描述

  • 下载对应的版本https://github.com/git-lfs/git-lfs/releases,下拉找到对应版本。
    在这里插入图片描述

  • 下载安装包后上传到服务器上并且进行解压(小文件直接拖拽上传即可,大文件需要在安装好lfs后再进行安装)

tar -zxvf git-lfs-linux-amd64-v2.9.0.tar.gz
  • 解压后打开文件夹,使用命令执行安装文件
sudo ./install.sh

这种下载方式也存在一些问题,即会下载仓库中的所有文件,极大的延长模型下载的时间。

git clone https://huggingface.co/THUDM/chatglm-6b

Hugging Face上的模型配置文件如下所示
在这里插入图片描述
LAST: 如果采用了上述方式还是没有下载好模型,点击这里手动下载,并替换掉本地的目录。

Tips还没下载好的话关注点赞收藏,私信我获取模型。
在这里插入图片描述

三、运行

运行:我们提供了一个基于 Gradio 的网页版 Demo 和一个命令行 Demo。使用时首先需要下载本仓库(上边已经下载完成)

git clone https://github.com/THUDM/ChatGLM-6B
cd ChatGLM-6B

在这里插入图片描述
首先安装 Gradio:pip install gradio,然后运行仓库中的 web_demo.py

python web_demo.py

在这里插入图片描述

参考文章
ChatGLM-6B官方GitHub
VisualGLM: 一个支持图像理解的多模态对话语言模型
ChatGLM vs ChatGPT 的部分对比
如何优雅的下载huggingface-transformers模型
十分钟部署清华ChatGLM-6B,实测效果还可以~~(Linux版)
ChatGLM-6B 在 ModelWhale 平台的部署与微调教程
基于本地知识的 ChatGLM 应用实现
ChatGLM2-6B官方GitHub
Baichuan-13B-Chat


总结

吃了佩奇馅的包子。

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

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

相关文章

海外独立站怎么搭建?7个海外独立站搭建指南

在海外搭建独立站(独立网站)有几个关键步骤,以下是一个简要的指南: 选择域名和主机: 首先,选择一个适合你网站主题的域名。确保它简洁、易记,并且与你的品牌或内容相关联。 然后,…

ruby调试

如果下载 ruby-debug-ide gem install ruby-debug-ide vscode 下载 ruby扩展 1, ruby 2,修改launch.json

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)【一】

文章目录 SSM(Vue3ElementPlusAxiosSSM前后端分离)--基础环境搭建【一】项目介绍项目功能/界面SSM 整合项目界面技术栈 项目基础环境搭建创建项目创建Maven 项目-提醒, 配置maven 的仓库镜像手动创建java 和test 相关目录引入项目依赖的jar 包给项目配置Tomcat启动Tomcat , 完成…

【LeetCode 75】第十八题(1732)找到最高海拔

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 题目有些绕,简单来说就是给一个数组,让我们把数组累加起来,初始值为0,然后返回累…

如何用断言帮助检测错误

Java中的断言通过测试我们认为是正确的代码来帮助检测错误。 使用assert关键字进行断言。 其语法为: assert condition; 这里condition是一个布尔表达式,我们假定在程序执行时为真。 启用断言 默认情况下,断言在运行时被禁用并被忽略。…

手把手教你从零开始搭建个人博客

随着技术的进步和用户需求的变化,个人博客的形式和内容一直在不停地演变。为了给读者提供更丰富、有趣的阅读体验,搭建个人博客的网站一直在寻找更好的优化方法。所以现在出现了一批功能更完善的个人博客搭建软件,今天looklook就以HelpLook为…

【css】样式 +GASP

纯CSS实现四种方式文本反差色效果 mix-blend-mode: difference; clip-path; background-clip: text, padding-box outline 是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 css 样式之 filter 滤镜属性 用法与示例 使…

java版直播商城平台规划及常见的营销模式+电商源码+小程序+三级分销+二次开发 bbc

 1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、R…

java实现面板之间切换功能

本文实例为大家分享了java实现面板之间切换的具体代码,供大家参考,具体内容如下 如图: 关键技术:事件监听,设置显示面板,重新刷新验证。 ? 1 2 setContentPane(jp2);//设置显示的新面板 revalidate();/…

RocketMQ生产者和消费者都开启Message Trace后,Consume Message Trace没有消费轨迹

一、依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.3</version> </dependency>二、场景 1、生产者和消费者所属同一个程序 2、生产者开启消…

vue 老项目 npm install 报错Python,c++等相关错误

​​​ 老项目npm install 下载依赖包报错 解决方法&#xff1a; //下载python 1、 npm install --global --production windows-build-tools//配置环境 &#xff1a; 也可暂时不用配置,能用就不用配置&#xff08;npm config set python "D:\Python27\python.exe&q…

flask中的应用上下文

flask中的应用上下文 Flask应用上下文主要包含两个对象&#xff1a;current_app和g。这两个对象在处理请求期间都是全局可访问的&#xff0c;但在每个请求结束时都会被重置。 current_app&#xff1a;这是当前激活的Flask应用的实例。在大多数情况下&#xff0c;你可以将其视为…

MySQL数据库数据类型

MySQL数据库数据类型分类 在MySQL数据库中&#xff0c;MySQL数据类型分有四大类&#xff1a;数值类型、文本/二进制类型、时间日期和String类型。以下是这四大类的具体类型&#xff1a; 数值类型 数值类型的范围和字节大小&#xff1a; tinyint类型 tinyint类型只有一个字节…

【雕爷学编程】Arduino动手做(180)---Seeeduino Lotus开发板

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

BGP汇总和破解水平分割

一&#xff0c;BGP的宣告问题 在BGP协议中每台运行BGP的设备上&#xff0c;宣告本地直连路由在BGP协议中运行BGP协议的设备来宣告&#xff0c;通过IGP学习到的&#xff0c;未运行BGP协议设备产生的路由&#xff1b; 在BGP协议中宣告本地路由表中路由条目时&#xff0c;将携带本…

葡萄叶病害数据集

1.数据集 分成训练集和测试集 训练集有四个文件夹 第一个文件夹为 Grape Black Measles&#xff08;葡萄黑麻疹&#xff09;病害&#xff08;3783张&#xff09; Grape Black rot葡萄黑腐病病害数据集&#xff08;3596张&#xff09; Grape Healthy 健康葡萄叶&#xff08;25…

【【胎教级51单片机智能小车设计】】

胎教级51单片机智能小车设计 从现在开始开一个新坑 称为创意工坊 主要更新一些有意思的设计 第一次手把手更新51单片机智能小车 胎教级教学人人都会 单片机实现的功能是通过蓝牙APP 控制小车前后左右移动 先讲明白这个小车 后续再在这个小车上更新其他的设计 成品图 第一步…

《Java-SE-第二十六章》之线程池

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

pytorch基础实践1

数据预处理的最终目的是将我们正在处理的任何数据转换成能够感知我们神经网络的张量 基本概念 CNN的输入tensor 一般CNN的输入是一个4阶张量&#xff0c;分别用一个字母代表每个axis上的长度&#xff0c;那么它的shape为&#xff1a; [B,C,H,W] 其中 H 和 W 分别代表输入的单…

北邮22信通:第五章 邻接表图的广度遍历和深度遍历

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 获取更多文章 请访问专栏&#xff1a; 北邮22信通_青山如墨雨如画的博客-CSDN博客 目录 一.总纲 二.构造函数 2.1构造函数讲解 2.2构造函数的书写 书…