智谱AI通用大模型:本地部署ChatGLM3-6B开源大模型

目录

一、ChatGLM3介绍

二、环境配置和检查

2.1 操作系统

2.2 硬件环境

2.3 软件环境

三、本地源码部署

3.1 克隆源码

3.2 下载模型文件

3.3 安装依赖

3.4 代码调用

四、运行Demo

4.1 设置本地模型环境变量

4.2 Gradio 网页版 Demo

4.3 Streamlit  网页版 Demo

4.4 命令行交互Demo


一、ChatGLM3介绍

        ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。

开源模型序列

模型

介绍

代码链接

模型下载

ChatGLM3-6B

第三代 ChatGLM 对话模型。ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。ChatGLM3

Huggingface

魔搭社区 

ChatGLM3-6B-base

第三代ChatGLM基座模型。ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能。

Huggingface

 

魔搭社区

ChatGLM3-6B-32k

第三代ChatGLM长上下文对话模型。在ChatGLM3-6B的基础上进一步强化了对于长文本的理解能力,能够更好的处理最多32K长度的上下文。

Huggingface

魔搭社区

ChatGLM3-6B-128k

ChatGLM3-6B-128K在ChatGLM3-6B的基础上进一步强化了对于长文本的理解能力,能够更好的处理最多128K长度的上下文。具体地,我们对位置编码进行了更新,并设计了更有针对性的长文本训练方法,在对话阶段使用 128K 的上下文长度训练。在实际的使用中,如果您面临的上下文长度基本在 8K 以内,我们推荐使用ChatGLM3-6B;如果您需要处理超过 8K 的上下文长度,我们推荐使用ChatGLM3-6B-128K。

Huggingface

魔搭社区

        智谱AI所有的开源模型对学术研究完全开放,部分模型(ChatGLM系列)在填写问卷进行登记后亦允许免费商业使用。

二、环境配置和检查

2.1 操作系统

        ChatGLM3-6B理论上可以在任何主流的操作系统中运行。ChatGLM开发组已经为主流操作系统做了一定的适配。
但是,我们更推荐开发者在 Linux环境下运行我们的代码,以下说明也主要针对Linux系统。

2.2 硬件环境

        最低要求:
        为了能够流畅运行 Int4 版本的 ChatGLM3-6B,我们在这里给出了最低的配置要求:
        内存:>= 8GB
        显存:  >= 5GB(1060 6GB,2060 6GB)

        为了能够流畅运行 FP16 版本的,ChatGLM3-6B,我们在这里给出了最低的配置要求:
        内存:>= 16GB
        显存:  >= 13GB(4080 16GB)

        如果使用CPU加载,可以忽略显存的要求,但是速度非常慢。

2.3 软件环境

        Python环境
        请开发者按照仓库中的requirements.txt来安装对应的依赖,并需要注意:

  • python 版本推荐3.10 - 3.11
  • transformers 库版本推荐为 4.36.2
  • torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能

三、本地源码部署

3.1 克隆源码

git clone https://github.com/THUDM/ChatGLM3.git

3.2 下载模型文件

        可以Hugging Face Hub 下载模型,如果从 HuggingFace 下载比较慢,也可以从 ModelScope 中下载:

#从ModelScope下载模型

git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

3.3 安装依赖

        通过Conda安装一个新的python环境,在虚拟环境中安装依赖:

#1.0 新建python3.11环境

conda create --name zhipuai python=3.11

#1.1 激活zhipuai环境

conda activate zhipuai

#2. 进入 ChatGLM3 源码目录

cd ChatGLM3 

#3. 默认安装不指定镜像[pip install -r requirements.txt]安装过程可能会出现依赖或者其它奇怪的错误,建议指定镜像源下载
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

        在安装依赖过程中有可能出现某些依赖安装不了,可以去国内主流的资源镜像平台(如清华大学镜像)下载对应的whl文件,然后通过pip install 安装离线文件,安装好之后,重新执行pip install -r requirements.txt 安装依赖。

3.4 代码调用

         GPU 部署

model = AutoModel.from_pretrained("model/chatglm3-6b", trust_remote_code=True, device='cuda')

        模型量化
        默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

model = AutoModel.from_pretrained("model/chatglm3-6b", trust_remote_code=True).quantize(4).cuda()

        模型量化会带来一定的性能损失,经过测试,ChatGLM3-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。

        CPU 部署
        如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。使用方法如下(需要大概 32GB 内存)

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

        编写代码:

from transformers import AutoTokenizer,AutoModel#使用本地模型
tokenizer = AutoTokenizer.from_pretrained('/data/weisx/zhipuai/model/chatglm3-6b',trust_remote_code=True)#使用CPU
model = AutoModel.from_pretrained('/data/weisx/zhipuai/model/chatglm3-6b',trust_remote_code=True).float()model = model.eval()response,history = model.chat(tokenizer,"你好",history=[])print(response)

四、运行Demo

4.1 设置本地模型环境变量

export MODEL_PATH=/data/weisx/zhipuai/model/chatglm3-6b

4.2 Gradio 网页版 Demo

       Gradio 是一个用于构建机器学习和数据科学项目的 Python 库,它允许用户通过简单的代码创建交互式网页,用户可以通过网页进行输入,并获取相应的输出。由于 Gradio 默认绑定的是本地地址(例如 127.0.0.1 或 localhost),而不是你的局域网或公网 IP 地址,所以 Gradio 创建的网页只能在本机访问,而不能在其他设备上访问。需要修改Gradio 启动参数,设置 share=True ,这样可以让你的应用通过本地网络访问,但不是所有环境都允许。

demo.launch(server_name="192.168.110.152", server_port=7870, inbrowser=True, share=True)

        进入base_demo目录,启动Gradio :

python web_demo_gradio.py

        访问WEB:

http://192.168.110.152:7870/

4.3 Streamlit  网页版 Demo

        Streamlit是一个基于Python的开源库,专为机器学习工程师和数据科学家设计,用于快速构建和共享机器学习和数据科学领域的Web应用程序。

          进入base_demo目录,启动 Streamlit:

streamlit run web_demo_streamlit.py

        访问WEB:

http://192.168.110.152:8501/

4.4 命令行交互Demo

        进入base_demo目录,启动 命令行客户端:

python cli_demo.py

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

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

相关文章

架构师系列-Nginx、OpenResty(一)- 基本使用配置

Nginx 模块 高度模块化的设计是 Nginx 的架构基础,Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。 核心模块 核心模块是 Nginx 服务器正常运行…

【Python学习】面向对象

面向对象 1.初识对象1.1 生活中数据的组织1. 2 程序中数据的组织1.3 使用对象组织数据1.4进行对比 2. 成员方法2.1 类的定义和使用2.2 成员变量和成员方法2.2.1 成员变量2.2.2 成员方法的定义语法2.2.3 self 的作用 3. 类和对象3.1 面向过程3.2 面向对象 4.构造方法4.1 属性成员…

是德软件89600 RFID使用笔记

文章目录 1、进入RFID软件:2、RFID软件解调设置项3、如何查看一段指令数据 本文是日常工作的笔记分享。 lauch VSA(矢量频谱分析)后会出现以下界面: 当然这是因为频谱仪的输入有信号才显示如下: 否则就显示频谱仪的噪…

MIGO行项目屏幕增强

MIGO行项目屏幕增强 一、增强描述 由于在事务码MIGO中存在的字段中没有能够满足客户需求的字段,所以需要在事务码MIGO的屏幕中添加一个新的页签用来保存物料凭证中行项目增加的字段。 通过查找BADI的程序ZDEMO_BADI,输入参数MIGO后,得到对应BADI为MB_M…

什么便签好用又没广告 好用无广便签分享

身处这个快节奏的时代,我们时常被各种琐事和计划所包围。想象一下,你在办公桌前,电脑屏幕上杂乱无章地贴着各种纸质便签,有的记录着待办事项,有的则是灵感闪现时的几句诗句。每次想要查找某个信息,都得费力…

【力扣 Hot100 | 第八天】4.23(和为K的子数组)

1.和为K的子数组 1.1题目 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例一: 输入:nums [1,1,1], k 2 输出:2示例二: 输入&…

短效动态代理IP可以做什么事情?

短效动态代理IP是一种在网络中广泛应用的工具,它具有使用期限短、切换频率高、灵活性强的特点。这种代理IP可以应用于多种场景,为网络活动提供便利和安全性保障。以下将详细探讨短效动态代理IP可以做的几件事情。 第一点,短效动态代理IP常被…

Flutter-自定义画板

效果 功能 支持绘制线、圆、矩形,支持拓展支持撤回上一步支持清空画板支持自定义画笔颜色,宽度 实现 定义绘制类型 /// 类型 enum ShapeType {//线line,//圆circle,//矩形rectangle,//拓展 }定义绘制抽象类 import dart:ui;/// 绘制抽象类 abstract…

网络编程-libuv介绍

官网 https://libuv.org/ 概要 libuv是一个强大的跨平台异步I/O库,主要用于构建高性能、可扩展的网络应用程序。它最初是为Node.js开发的,用于处理Node.js的异步I/O操作,但随着时间的推移,它也被广泛应用于其他系统&#xff0…

Linux--忘记root密码解决办法

Linux忘记密码解决的方法有两种: 方法一: 第一步:打开虚拟机时,疯狂按方向键,让该虚拟机不进入系统停留在开机界面,按方向键使光标停留在第一行,按字母E编辑它,如 按E后&#xff0…

【AIGC】-如何看待AIGC技术?

🔥博客主页:西瓜WiFi 🎥系列专栏:《大语言模型》 很多非常有趣的模型,值得收藏,满足大家的收集癖! 如果觉得有用,请三连👍⭐❤️,谢谢! 长期不…

Hive服务详解

Hive服务 HiveServer2、Hive Metastore 服务服务共同构成了 Hive 生态系统中的核心功能,分别负责管理元数据和提供数据查询服务,为用户提供了一个方便、高效的方式来访问和操作存储在 Hive 中的数据。 1. Hive 查询服务(HiveServer2&#xf…

unity学习(89)——unity塞满c盘!--删除editor下的log文件

卸了一个视频后强制续命打开详细信息: 这个再往下找也是没用的! 显示隐藏文件夹后!执行如下操作! 30个g! 其中unity占23g editer占了21g 删除C:\Users\王栋林\AppData\Local\Unity\Editor下的log文件 恢复到之前的水…

SpanBert学习

SpanBERT: Improving Pre-training by Representing and Predicting Spans 核心点 提出了更好的 Span Mask 方案,也再次展示了随机遮盖连续一段字要比随机遮盖掉分散字好;通过加入 Span Boundary Objective (SBO) 训练目标,增强了 BERT 的性…

C++中`Stream-based I/O`是`RAII`机制的

C中Stream-based I/O都是RAII机制的,文件流可以不手动close。 Do I need to manually close an ifstream? https://en.cppreference.com/w/cpp/io Refenence https://github.com/cyrusbehr/tensorrt-cpp-api/issues/55

网络安全主题纪录片

网络安全主题纪录片 文章目录 网络安全主题纪录片第四公民黑客帝国系列龙纹身女孩碟中谍系列虎胆龙威4匿名者终结者2:审判日东方快车谋杀案黑客国家公敌我是谁:没有绝对安全的系统黑客军团速度与激情系列十亿美元大劫案勒索软件的背后黑客的恐惧为什么网…

Linux 终端中的目录切换

目录 ⛳️推荐 前言 理解 Linux 中的路径 利用 cd 命令变更目录 故障解决 文件或目录不存在 非目录错误 特殊目录符号 测试你的知识 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…

面包屑新玩法,ReactRouter+Ant Design实现动态渲染

在Ant Design中,可以通过Breadcrumb组件结合react-router库实现动态生成面包屑导航。具体步骤如下: 定义路由配置数据结构 我们需要在路由配置中添加额外的面包屑相关信息,例如面包屑标题、icon等。例如: const routes [{path: /,breadcrumbName: 首页},{path: /users,brea…

华为数通HCIA ——企业网络架构以及产品线

一.学习目标:精讲网络技术,可以独立搭建和维护中小企业网络! 模拟器(华为方向请安装ENSP,Ensp-Lite已有安装包,号称功能更加完善-这意味着要耗费更多的系统资源但是仅对华为内部伙伴申请后方可使用&#x…

Java技术学习|消息队列|初级RabbitMQ

学习材料声明 黑马RabbitMQ快速入门教程,快速掌握rabbitmq、springAMQP消息中间件 是非常初级的学习,听说后续的高级课程会涉及到微服务之类的,所以等学完微服务再回来学。还有redis的高级部分也涉及了微服务,所以也都暂时停止学…