离线AI聊天清华大模型(ChatGLM3)本地搭建

在特定的情况下,要保证信息安全的同时还能享受到AIGC大模型带来的乐趣和功能,那么,离线部署就能帮助到你,最起码,它是一个真正可用的方案。

大模型本身清华的 (ChatGLM3),为的是对中文支持友好,另外就是我也很看好它,毕竟一直在优化自己的模型,提升模型的质量。

如果基础环境没有布置好可以参考我上篇文章《Ubuntu 22.04 Tesla V100s显卡驱动,CUDA,cuDNN,MiniCONDA3 环境的安装》。

ChatGLM3 (ChatGLM3-6B)

项目地址

https://github.com/THUDM/ChatGLM3

大模型是很吃CPU和显卡的,所以,要不有一个好的CPU,要不有一块好的显卡,显卡尽量13G+,内存基本要32GB+。

清华大模型分为三种(ChatGLM3-6B-Base,ChatGLM3-6B,ChatGLM3-6B-32K)

图片

从上图也可以看到,ChatGLM3-6B-32K的话是最高配的模型,而ChatGLM3-6B-Base是最低配的模型。

一般会选择 ChatGLM3-6B普通模型来使用,当然,如果配置高,可以用32K的,会更好。

ChatGLM3 部署

如果不能访问github,那么就不容易下载资源了,主要是资源也比较大,可以自己想办法。

ChatGLM3 项目git clone

很简单一句命令就下载下来了。

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

执行完,就下载完毕了

图片

但是,默认里面是没有模型的,只有自带的简单的聊天项目以及相关的接口示例项目,还得继续下载模型。

ChatGLM3-6B 模型下载

当然,如果你自己不下载这些模型,这些模型就会在运行的时候自动下载(网络不好的话会影响使用体验,所以,建议提前下载)

图片

模型下载提供了两个地址来下载,第一个不可以,那就选择第二个。

图片

打开地址后,发现这个文件还挺大,而且还是 git项目的方式来进行展现的。

其中 LFS那种可以直接点击然后,保存的方式来下载,也可以用git命令来下载。

git lfs install

需要 git增加 lfs 的功能,才能直接下载这么大的文件

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

或者

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

下载完毕后,就有很多文件

图片

图片

看一下大小 11.6GB ,还挺大的

项目配置和部署

把下载的服务直接放到需要运行的地方 然后,执行上节的python 环境管理

conda create --name chatglm3 python=3.10
conda activate chatglm3

然后,进入到主项目中,开始配置一些环境

cd ChatGLM3

第一步是要安装python 的依赖包

pip install -r requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple

图片

它会自己安装一些依赖包,很快就安装完了

也可以查询自己安装了什么包

pip list                  //查看安装了什么包
pip show openai // 查看包安装到了哪里

当然,我也是按照 README.md 里面的部署方式来部署的,具体以README.md为准。

修改配置

图片

可以看到,实际上我们可以运行8种案例。

  1. 1. 基础例子(cli_demo , web_demo_streamlit )

  2. 2. 综合例子(聊天,工具,代码解释)

  3. 3. 基础模型微调

  4. 4. 聊天模型微调

  5. 5. 类似于langchain的案例

  6. 6. openai接口的案例

  7. 7. TensorRT-LLM推理部署

  8. 8. 工具调用

目前,只有第二种的综合例子,是比较有趣的,就以它为案例进行配置修改。

composite_demo

看到,这个demo下还有requirements.txt 文件,我们把他给安装了

pip install -r requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple

演示中使用 Code Interpreter 还需要安装 Jupyter 内核:

pip install ipykernel -i https://mirror.sjtu.edu.cn/pypi/web/simple

ipython kernel install --name chatglm3 --user

接着修改client.py里面的配置信息

图片

修改里面的模型地址为你的模型地址即可,我这边直接写了个绝对路径。

然后,执行以下命令启动服务

streamlit run main.py

正常情况下,控制台会出现以下信息

图片

而网页会出现以下信息

图片

左侧就像OpenAI那种的参数细节的调整,右侧是三种不同的使用方式选择。

效果展示

对话模式

图片

输入你是谁,它就输自动的输出信息,速度还挺快。

图片

而控制台也会显示你输入的信息以及返回的信息。

图片

根据这个问题可以看到,这个模型,虽然对中文的支持度很高,但是,也掺杂一些英文信息。

工具模式

图片

工具模式,需要自己先定义工具,我这边没有定义,有兴趣的可以整一下。

以下是自带的工具进行的演示:

图片

我调用了一个查询天气的工具(tool_registry.py) 文件可以看到 get_weather的代码

@register_tool
def get_weather(
        city_name: Annotated[str, 'The name of the city to be queried', True],
) -> str:
    """
    Get the current weather for `city_name`
    """

    if not isinstance(city_name, str):
        raise TypeError("City name must be a string")

    key_selection = {
        "current_condition": ["temp_C", "FeelsLikeC", "humidity", "weatherDesc", "observation_time"],
    }
    import requests
    try:
        resp = requests.get(f"https://wttr.in/{city_name}?format=j1")
        resp.raise_for_status()
        resp = resp.json()
        ret = {k: {_v: resp[k][0][_v] for _v in v} for k, v in key_selection.items()}
    except:
        import traceback
        ret = "Error encountered while fetching weather data!\n" + traceback.format_exc()

    return str(ret)
代码解释器模式

我尝试了很久也没有得到以下的效果。

图片

可能是我的打开姿势不对,我只能获取这样的。

图片

但是,给出的代码,还是很合理的,看着就能执行。

感兴趣的可以参考

https://zhipu-ai.feishu.cn/wiki/VdYWwcZfmiNBnlkwYf1cqytcngf
异常:

如果没有修改配置就会出现这个问题,当然,如果网络好的话,它会自己去安装。

图片

总结

至此 ChatGLM3就演示完了,效果还是不错的说。比之前版本好太多了,我还会继续关注它的。

它也可以通过Web api的方式,自己搞个前端进行展现。

总体来讲,清华ChatGLM3-6B大模型对中文支持度还是蛮高的。

参考资料地址

《清华ChatGLM3 ChatGLM3-6B 大模型》
https://github.com/THUDM/ChatGLM3

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重学JavaScript高级(八):ES6-ES12新增特性学习

ES6-ES12新增特性学习 ES6–对象字面量增强 属性的简写方法的简写计算属性名 let name "zhangcheng" //我想让sum作为obj的key值 let objKey "sum" let obj {//属性名的简写name//等同于name:name//方法的简写running(){}//等同于running:function()…

寒武纪显卡实现softmax算子

寒武纪显卡实现softmax基本逻辑 寒武纪实现softmax包括下面5个步骤,我们也采取5个kernel来实现softmax: unionMaxKernel(float* middle, float* source1, int num),这个kernel使用的任务类型是union1,其中middle的长度为taskDim&…

如何设置电脑桌面提醒,电脑笔记软件哪个好?

对于大多数上班族来说,每天要完成的待办事项实在太多了,如果不能及时去处理,很容易因为各种因素导致忘记,从而给自己带来不少麻烦。所以,我们往往会借助一些提醒类的软件将各项任务逐一记录下来,然后设置上…

时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解

时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 【原创】CPO-VMD【24年新算法…

Mysql系列-1.Mysql基本使用

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…

【揭秘APT攻击】——内网渗透实战攻略,带你领略网络安全的绝密世界!

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 介绍 什么是内网? 什么是内网渗透? 内网渗透的目的: 内网…

leetcode:1716. 计算力扣银行的钱(python3解法)

难度:简单 Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。 最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。 给你 n &am…

微服务架构RabbitMQ实现CQRS模式

在现代软件开发中,微服务架构和CQRS模式都是备受关注的技术趋势。微服务架构通过将应用程序拆分为一系列小型、自治的服务,提供了更好的可伸缩性和灵活性。而CQRS模式则通过将读操作和写操作分离,优化了系统的性能和可维护性。本文小编将为大家介绍如何在ASP.NET Core微服务…

机器学习中的隐马尔可夫模型及Python实现示例

隐马尔可夫模型(HMM)是一种统计模型,用于描述观测序列和隐藏状态序列之间的概率关系。它通常用于生成观测值的底层系统或过程未知或隐藏的情况,因此它被称为“隐马尔可夫模型”。 它用于根据生成数据的潜在隐藏过程来预测未来的观…

第三次面试总结 - 吉云集团 - 全栈开发

🧸欢迎来到dream_ready的博客,📜相信您对专栏 “本人真实面经” 很感兴趣o (ˉ▽ˉ;) 专栏 —— 本人真实面经,更多真实面试经验,中大厂面试总结等您挖掘 目录 总结(非详细) 面试内…

AIGC无人直播系统技术

随着信息技术的快速发展和互联网的普及,直播行业迎来了蓬勃发展的机遇。然而,传统的直播方式存在一些局限性,如场地限制、设备携带不便等问题。为了解决这些问题,AIGC推出了一项创新性的无人直播系统技术。 AIGC无人直播系统技术…

FMEA的定义以及应用目标——SunFMEA软件

故障模式与影响分析(Failure Modes and Effects Analysis,简称FMEA)是一种预防性的质量工具,用于识别和评估产品设计、生产和使用过程中可能出现的故障模式及其对系统性能的影响。通过对故障模式的系统化分析和评估,FM…

​iOS 应用上架指南:资料填写及提交审核

目录 摘要 引言 打开appuploader工具,第二步:打开appuploader工具 第五步:交付应用程序,在iTunes Connect中查看应用程序 总结 摘要 本文提供了iOS新站上架资料填写及提交审核的详细指南,包括创建应用、资料填写-…

震惊!居然有人给 Raspberry Pi 5 做 X 射线!

Jeff Geerling 会做一些莫名其妙的怪事,比如用信鸽来对抗网速,不过这也是我们喜欢他视频的原因。最近,杰夫对 Raspberry Pi 5 进行了 X 光透视,揭示了 Raspberry Pi 5 最新、最强大的计算机内部的秘密。 震惊!居然有人…

软通测试岗面试内部资料

基础性问题 1.你对加班怎么看 2你的优势有哪些 3.你的缺点是什么 4.最有成就感的事情是什么 5.你的职业规划是什么 6离职原因是什么 7.还有什么想问我们的吗 8.你有其他的 offer 吗 专业性问题 9.HTTPS 和 HTTP 的区别 10.HTTPS 的工作原理 11.客户端在使用 HTTPS …

认识Linux指令 “zip/unzip” 指令

01.zip/unzip指令 语法: zip 压缩文件.zip 目录或文件 功能: 将目录或文件压缩成zip格式 常用选项: -r 递归处理,将指定目录下的所有文件和子目录一并处理 举例 将test2目录压缩:zip test2.zip test2/* 解压到…

CUTANA™ pAG-Tn5 for CUTTag

CUTANA pAG-Tn5是靶向剪切及转座酶(CUT&Tag)技术中进行高效绘制染色质特征的关键试剂。与ChIP-seq相比,CUT&Tag在降低细胞需求量和测序深度的信噪比方面进行了显著改进。CUTANA pAG-Tn5是一种高活性的E. coli转座酶突变体(Tn5)与蛋白A/G的融合产物&#xff…

Windows11快速安装Android子系统

很多小伙伴想在电脑运行一下安卓程序,或则上班用手机摸鱼不方便,用电脑又没有想要的手机软件,那么怎么用电脑来安装安卓软件呢? 首先设置地区 安装Android子系统的前提需要安装 Amazon Appstore 这个应用,内地不能下载…

【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你深入探索类加载机制

全方位带你深入探索类加载机制 专栏介绍前提准备面向人群知识脉络类加载是什么类加载和Class类对象的关系JVM的预加载机制加载class文件的方式 类加载过程(类的生命周期)加载阶段生成对应的Class文件 连接操作验证(确保被加载的类的正确性&am…

Aop编程之动态代理

1、Java代理介绍 Java中的代理方式包括静态代理和动态代理。 静态代理在编译期间就确定了代理对象,动态代理是在运行期间动态生成代理对象。动态代理包括cglib动态代理和jdk动态代理,在目标对象有接口的情况下,可以使用jdk动态代理或者cglib…