手把手教你搭建自己本地的ChatGLM

2023-05-16

前言

如果能够本地自己搭建一个ChatGPT的话,训练一个属于自己知识库体系的人工智能AI对话系统,那么能够高效的处理应对所属领域的专业知识,甚至加入职业思维的意识,训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生产力工具,且本地部署能够保护个人数据隐私,能够内网搭建办公使用也十分的方便。

而对于ChatGLM来说最大的优点就是本地能快速部署且需要资源较比与ChatGPT相当低,还要什么自行车,够用就好。甚至能够在一些性能较高的服务器单点部署,INT4 量化级别下最低只需 6GB 显存。而且我们根本不需要那么宽泛的知识面,只需要垂直一个知识领域深度就足够应对较多业务场景,故ChatGLM确实是较好的二次开发基础工具。

那么不继续发表意见了,本地部署ChatGLM还是会遇到较多问题,建议各位先弄清楚本地开发环境以及电脑配置再根据我给出的组件兼容表对照,不同的配置和环境需要采用不同的安装策略。当然我也只有一台电脑部署很多情况没遇到也不知道如何处理,若是大家根据我的文章部署遇到困难请在评论区或者私信告知我,谢谢各位的支持。

部署依赖

1.硬件需求

这是ChatGLM的开源项目:https://github.com/Fanstuck/ChatGLM-6B。里面可以看到硬件需求,这是硬性要求如果不满足肯定是部署不了的,只能升级电脑配置了:

在这里插入图片描述

2.环境需求

再看依赖文件requirements.txt:

在这里插入图片描述

很多人这里就已经开始pip install -r requirements.txt,但是这里需要注意的是torch下载会出问题,而且大概率下载的会是cpu版本。我这里不建议直接pip install,对于有GPU的同学来说肯定下载GPU版本的torch最优,且不清楚自己cuda的版本下很容易下载的torh和cudnn版本不兼容,所以这里单独说一下torch该如何安装合适的版本。

首先先看一下NVIDIA支持最高的cuda版本:

cmd输入nvidia-smi就可以看到:

在这里插入图片描述

这里显示我的cuda版本为11.7,下载比这低的版本就好了。

但是这里需要注意cuda版本和torch版本是对应的:

pytorch历史版本下载:

https://pytorch.org/get-started/previous-versions/,只要低于11.7版本的torch都是可以的。
在这里插入图片描述

若是pip下载time out的下载wheel:https://download.pytorch.org/whl/torch_stable.html

模型下载

下载ChatGLM有两种方式,一种是通过transformers直接下载,通过调用代码就可以下载到本地,下载默认本地的目录为:

C:\Users.cache\huggingface\modules\transformers_modules

from transformers import AutoTokenizer, AutoModel
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()

当然下载太慢的话也可以在Hugging Face Hub里面下载:https://huggingface.co/THUDM/chatglm-6b

不需要frok直接clone就可以了。版主还提供了不同编译后的版本可供下载,我这边就下载了已经编译后的int4版本,我的内存只有16G且显存128M很低故带不起原生模型。

在这里插入图片描述

这样的话文件不需要下载到C盘下面,可以自己选择要下载的目录。

下载完成之后里面提供了两个demo可以测试,需要修改函数AutoTokenizer.from_pretrained中的THUDM/chatglm-6b,也就是pretrained_model_name_or_path更换成你下载chatGLM的目录就可以使用了。

如果你的显存配置有限的话可以选择以量化方式加载模型,比如:

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

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

量化过程需要在内存中首先加载 FP16 格式的模型,消耗大概 13GB 的内存。如果你的内存不足的话,可以直接加载量化后的模型,仅需大概 5.2GB 的内存:

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

我这边直接下载的int4模型不需要再加载整个模型了。

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

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

模型使用

以我的计算机来说平常内存就有
在这里插入图片描述

11G占用了,运行该模型肯定会报OOM,推荐大家把一些暂时不需要的进程杀掉尽可能多的留多点内存再跑模型:

这里推荐在终端上面运行不要用pycharm,内存更多:
在这里插入图片描述

使用web_demo.py可以直接在网站上面对话:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

我这里直接OOM了没有办法,大家计算机好点就没问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你搭建自己本地的ChatGLM 的相关文章

  • 电脑眼睛保护色——绿豆沙色

    眼科医生建议电脑屏幕不要用白色 xff0c 因为白色对眼睛的刺激是最大的 xff0c 最损伤视力 xff01 眼科医生推荐的颜色是 柔和的淡绿色 xff0c 也有人叫做绿豆沙色 按HSU 设置为 xff1a 色度 HUE xff1a 85
  • Java中两个数交换的细节问题

    在码代码过程中 xff0c 两个数交换是经常用到的 xff0c 但在Java 中 xff0c 如果忽略了值传递和引用传递就很容易出错 看一下两个整数交换代码 xff1a public void swap int a int b int t
  • 微信 Mars Android Sample 源码分析

    注 xff1a 原文首发地址 零 前言 Mars 是微信官方开源的跨平台跨业务的终端基础组件 xff0c 具有高质量网络连接模块 长短连接 智能心跳机制 高性能日志模块和网络监测组件等 而整个 Android Sample 是基于 Mars
  • Android NDK 开发:实战案例

    0 前言 如果只学理论 xff0c 不做实践 xff0c 不踩踩坑 xff0c 一般很难发现真正实践项目中的问题的 xff0c 也比较难以加深对技术的理解 所以延续上篇 JNI 的实战Android NDK开发 xff1a JNI实战篇 x
  • Android NDK 开发:CMake 使用

    1 前言 当在做 Android NDK 开发时 xff0c 如果不熟悉用 CMake 来构建 xff0c 读不懂 CMakeLists txt 的配置脚本 xff0c 很容易就会踩坑 xff0c 遇到编译失败 xff0c 一个很小的配置问
  • 性能测试简单介绍

    性能测试介绍 指通过自动化的测试工具模拟多种正常 峰值以及异常负载条件来对系统的各项性能指标进行测试 对性能的认识 从用户的角度 xff1a 从开发的角度 xff1a 从系统管理员的角度 xff1a 那么 xff1f 测试应该关注哪些呢 x

随机推荐