手把手教大家在本地运行ChatGLM3-6B大模型(一)

ChatGLM3 是由智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。它是 ChatGLM 系列的第三版,继承了前两代模型对话流畅、部署门槛低等众多优秀特性,并在此基础上进行了全面的性能提升和创新性功能扩展。

主要特性

  • 强大的语义能力:ChatGLM3 在中文问答方面表现出色,能够理解复杂的语境和语义,提供准确的信息和回答。
  • 多模态大模型:ChatGLM3 支持多模态输入,包括文本、图像、声音等,能够处理和生成多模态数据。
  • 工具调用和代码执行:ChatGLM3 支持工具调用和代码执行,能够根据用户需求生成代码并执行,完成复杂的数据分析和任务。
  • 网络搜索增强:ChatGLM3 集成了网络搜索能力,能够自动根据问题在互联网上查找相关资料,并在回答时提供参考链接。
  • 自研的AgentTuning技术:ChatGLM3 引入了自研的AgentTuning技术,提升了智能规划和执行能力。

应用场景

  • 自然语言处理:ChatGLM3 可以用于文本生成、文本分类、情感分析等自然语言处理任务。
  • 智能客服和助手:ChatGLM3 可以作为智能客服或个人助手,提供24/7的在线咨询服务。
  • 内容创作和编辑:ChatGLM3 可以辅助内容创作者进行文章撰写、编辑和校对。
  • 教育和培训:ChatGLM3 可以用于教育场景,提供个性化的学习辅导和知识问答。

技术实现

  • 预训练方法:ChatGLM3 采用大规模的中文语料库进行预训练,通过无监督学习和有监督学习相结合的方式,提高模型的语义理解和生成能力。
  • 模型架构:ChatGLM3 基于Transformer架构,并进行了进一步的优化和改进,以提高模型的性能和效率。

硬件环境

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

系统要求

  • 操作系统:Windows、Linux 或 macOS。本教程使用Windows进行安装。
  • python 版本推荐3.10.12
  • transformers 库版本推荐为 4.30.2
  • torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能
  • CUDA:如果你打算在 GPU 上运行模型,需要安装 CUDA(仅限 Windows 和 Linux)

步骤 1:创建虚拟环境

打开终端,安装并创建一个新的 Anaconda 环境。这将有助于隔离项目依赖项。

建议到清华大学开源软件镜像站 下载2022年左右的版本,最好不要下载最新版https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2022.10-Windows-x86_64.exe下载安装过程可以参考此文:https://blog.csdn.net/Q_fairy/article/details/129158178安装 Anaconda 完毕后。1.1 为了加快conda安装速度,需要替换为国内源,修改用户目录下的 .condarc 文件:channels:  - defaultsshow_channel_urls: truedefault_channels:  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/rcustom_channels:  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud1.2 为了加快pip安装速度,需要替换为国内源,执行如下命令pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/修改完毕后,按下win键+r,输入cmd打开命令行窗口conda create -n py3.10 python=3.10activate py3.10注意:不能在powershell中执行activate py3.10 否则会报错。

步骤 2:安装依赖项

安装NVIDIA驱动以及CUDA Toolkit 11.8,地址如下:https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux。选择对应的安装包进行下载并安装

安装PyTorch,到此地址https://pytorch.org/get-started/locally/并根据本机硬件选择的版本,如下图所示:

安装 torch 和其他依赖项。使用 conda 安装。

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

确保安装了与你的 CUDA 版本兼容的 torch 版本。按如下步骤验证是否已经安装正确,如果是以下结果,则安装正确,否则根据提示进行对应的修复

(py3.10) D:\Dev\ChatGLM3>python

Python 3.10.12 | packaged by Anaconda, Inc. | (main, Jul 5 2023, 19:01:18) [MSC v.1916 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import torch

>>> print(torch.__version__)

2.1.2

>>> torch.cuda.is_available()

True

步骤 3:下载 ChatGLM3-6B 模型

从 GitHub 下载 ChatGLM3-6B 模型仓库。

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

步骤 4:安装模型依赖项

在项目目录中,安装模型所需的依赖项。

pip install -r requirements.txt

步骤 5:下载模型文件

新建目录THUDM,并使用 Modelscope下载模型文件到此文件夹中。

mkdir THUDM

cd THUDM

git lfs install

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

步骤 6:运行模型

现在你可以运行模型了。ChatGLM3-6B 提供了多种运行方式,包括命令行界面、Streamlit 界面和 REST API。

命令行界面

运行以下 Python 脚本来启动命令行界面:

python basic_demo\clidemo.py

Streamlit 界面

要运行 Streamlit 界面,你需要安装 Streamlit。

pip install streamlit

然后运行:

streamlit run basic_demo\web_demo_streamlit.py

在浏览器中打开 http://localhost:8501 来访问 Streamlit 界面。

REST API

要运行 REST API,你需要安装 Flask。

pip install flask

然后运行:

python restapi.py

在浏览器中打开 http://localhost:8000/docs 来查看 API 文档。

注意事项

  • 确保你的系统满足所有依赖项和 CUDA 要求。
  • 如果你遇到问题,可以查看项目的 GitHub 存储库中的 README.md 或 docs 文件夹中的文档。

以上步骤应该可以帮助你在本地成功运行 ChatGLM3-6B 大模型。

模型量化

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

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

模型量化会带来一定的性能损失,经过测试,ChatGLM3-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。如果一切正常,运行一下命令后可以再http://localhost:8501启动chatGLM3大模型

(py3.10) D:\Dev\ChatGLM3>streamlit run composite_demo\main.py

You can now view your Streamlit app in your browser.

Local URL: http://localhost:8501

Network URL: http://192.168.1.2:8501

执行成功后,就会出现如下界面:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容