使用chatglm.cpp本地部署ChatGLM3-6B模型

ChatGLM3模型介绍

ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

  1. 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的预训练模型中最强的性能。
  2. 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
  3. 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用

本地部署ChatGLM3模型

使用chatglm.cpp部署模型

下载chatglm.cpp

git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp

编译chatglm.cpp

cmake -B build
cmake --build build -j 16 --config Release

下载chatglm3-6b模型文件

当前chatglm3是开源的最高版本。我们可以选择从huggingface或openi下载模型

从huggingface下载

安装huggingface:

pip install -U huggingface_hub

下载模型

创建models目录,到目录里下载chatglm3-6b模型到chatglm3目录里。命令:

huggingface-cli download --resume-download THUDM/chatglm3-6b --local-dir chatglm3


使用openi下载模型

首先安装库:pip install openi 

然后登录账户: 

openi login

按照提示输入token 。token可以从openi官网应用栏目创建。 Sign In - OpenI - 启智AI开源社区提供普惠算力!

登录之后,就可以使用openi命令下载模型了 

openi model download -r Zhipu.AI/ChatGLM3 -m chatglm3-6b -p chatglm3-6b

转换模型文件到ggml

先安装需要的库

python3 -m pip install -U pip
python3 -m pip install tabulate tqdm transformers accelerate sentencepiece
# pip install sentencepiece

转换模型还需要安装torch,这个可以到官网获取安装命令,这里就不具体说明了。

 开始转换:

# cd chatglm.cpp
python3 chatglm_cpp/convert.py -i ~/models/chatglm3-6b -t q4_0 -o ~/models/chatglm3-6b/chatglm3-ggml.bin

 部署完成的测试

执行下面命令:

./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -p 你好,最好的大模型是哪一款?

看这个回答,情商不错啊

./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -p 你好,最好的大模型是哪一 款?您好!关于“最好的大模型”,这其实是一个因应用场景而异的问题。在不同的领域和任务中,最适合的大模型可能有所不同。在自然语言处理领域,清华大学 KEG 实验室和智谱 AI 共同训练的 GLM3-6B 模型在许多 NLP 任务中表现优秀。在计算机视觉领域,OpenAI 的 DALL-E 和特斯拉的 GPT-3 都是目前表现出众的大模型。在音频处理领域,Google 的 Wavenet 和 Facebook 的 GLA 的表现较好。因此,要确定哪一款大模型是“最好的”,需要根据您的具体需求和应用场景来判断。

实战ChatGLM3

 与ChatGLM3交互

./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -i

效果还是不错的:

./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -i________          __  ________    __  ___                 / ____/ /_  ____ _/ /_/ ____/ /   /  |/  /_________  ____  / /   / __ \/ __ `/ __/ / __/ /   / /|_/ // ___/ __ \/ __ \ / /___/ / / / /_/ / /_/ /_/ / /___/ /  / // /__/ /_/ / /_/ / \____/_/ /_/\__,_/\__/\____/_____/_/  /_(_)___/ .___/ .___/  /_/   /_/       Welcome to ChatGLM.cpp! Ask whatever you want. Type 'clear' to clear context. Type 'stop' to exit.Prompt   > 你好
ChatGLM3 > 你好👋!我是人工智能助手 ChatGLM3-6B,很高兴见到你,欢迎问我任何问题。
Prompt   > 如果小朋友一直刷手机,应该怎么引导? 
ChatGLM3 > 小朋友一直刷手机可能会对他们的身心健康和发展产生负面影响。以下是一些建议,可以帮助引导孩子减少手机使用时间:1. 设定规则:家长可以和孩子一起制定一些规则,例如在规定的时间内使用手机,例如晚餐后、睡觉前。严格遵守这些规则可以帮助孩子养成良好的习惯。2. 互动交流:家长可以和孩子一起进行其他活动,例如阅读、玩游戏或进行户外活动等,以减少孩子对手机的依赖。3. 激发兴趣:家长可以鼓励孩子培养其他兴趣爱好,例如绘画、音乐、运动等,这样孩子可以更有效地利用时间,而不是一直在手机上。4. 教育应用:家长可以和孩子一起学习如何使用手机,例如使用教育应用、导航等,让孩子更加积极地使用手机。5. 关注孩子的情绪:孩子过度使用手机可能是因为他们感到无聊、孤独或其他情绪问题。家长可以关注孩子的情绪,尝试了解他们的需求,并帮助他们应对这些情绪问题。6. 做出榜样:家长是孩子的榜样,因此家长的行为会对孩子产生影响。家长可以减少自己的手机使用时间,并和孩子一起度过更多 quality time。总之,家长可以通过制定规则、互动交流、激发兴趣、教育应用、关注情绪和做出榜样等方式,引导孩子减少手机使用时间,并帮助他们养成良好的习惯。
Prompt   > 如何用大模型做一个有趣的项目? 
ChatGLM3 > 用大模型做一个有趣的项目可以参考以下步骤:1. 确定项目目标:首先确定项目的目标和主题,例如你想用大模型制作一个对话机器人、一个文本生成器或者一个图像生成器等。2. 收集数据:根据项目目标,收集相关的数据,例如文本数据、图像数据、语音数据等。3. 数据预处理:对收集的数据进行预处理,例如清洗、标注、归一化等,以便于大模型进行处理。4. 选择大模型:根据项目需求,选择合适的大模型,例如ChatGPT、ChatGLM、LLaMA等。5. 训练模型:使用收集的数据对大模型进行训练,并根据项目需求进行优化和调整。6. 测试模型:在模型训练完成后,进行测试和评估,以确保模型的性能和质量符合预期。7. 应用和展示:将训练好的模型应用到项目中,例如构建一个对话机器人或者一个文本生成器,并进行展示和分享。总之,用大模型做一个有趣的项目需要首先确定项目目标,然后收集数据,进行数据预处理,选择大模型进行训练,测试模型并进行应用和展示。
Prompt   > 

 当然还有我们著名的打鸟的脑筋急转弯:

Prompt   > 树上8只鸟,打死3只,还有几只? 
ChatGLM3 > 如果树上有8只鸟,打死3只后,树上将剩下5只鸟。
Prompt   > 再想想
ChatGLM3 > 非常抱歉,我的回答有误。如果树上有8只鸟,打死3只后,树上将剩下0只鸟。
 

调式

Huggingface下载模型慢,使用镜像:

HF-Mirror - Huggingface 镜像站

即使用了镜像,还是慢。解决方法:从openi网站OpenI - 启智AI开源社区提供普惠算力!下模型。可以用浏览器下载,也可以用python或命令行来下载。

openi下载报错

FileNotFoundError: ❌ 本机尚未登录OpenI,请参考 https://openi.pcl.ac.cn/docs/index.html#/api/cli/login.
使用openi login 登录,后面输入token即可。

具体见openi官网:OpenI

chatglm.cpp转换模型报错

  File "/home/skywalk/github/chatglm.cpp/chatglm_cpp/convert.py", line 577, in main
    with open(args.save_path, "wb") as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/skywalk/models/chatglm3/chatglm3-ggml.bin'
 是因为没有那个目录,换成chatglme3-6b目录。后来发现是硬盘空间不够了,清理出足够硬盘空间,搞定。

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

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

相关文章

Yourpassword does not satisfy the current policyrequirements

mysql 新增数据库用户失败 解决方法: 修改校验密码策略等级 set global validate_password.policyLOW;

【面试】PWM(脉冲宽度调制)相关问题 ——长期更新

1、PWM调节原理 答:通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 2、PWM占空比定义 答:在一个脉冲周期内,高电平的时间占整个周期时间的比例。 3、PWM波形的周期和调节精度由谁决定 答:当计数…

全同态加密生态项目盘点:FHE技术的崛起以及应用

撰文:Chris,Techub News 在当今数字化的时代,隐私保护已成为一个全球性的焦点话题,特别是在加密货币和区块链技术快速发展的背景下。虽然当前的隐私技术在保护数据安全方面多有欠缺,引发了广泛的关注和批评&#xff0c…

BUUCTF-WEB3

[极客大挑战 2019]Knife1 1.打开附件链接 一句话木马eval($_POST["Syc"]); 2.中国蚁剑 用中国蚁剑连接 在根目录下找到一个名为flag的文件 3.得到flag [极客大挑战 2019]Upload1 1.打开附件链接 是一个文件上传 2.一句话木马 经过多次尝试都被绕过,更…

JavaScript面试 题

1.延时加载JS有哪些方式 延时加载 :async defer 例如:<script defer type"type/javascript" srcscript.js></ script> defer:等html全部解析完成,才会执行js代码,顺次执行的 async: js和html解析是同步的,不是顺次执行js脚本(谁先加载完先执行谁)2.JS数…

【C++】菱形继承、菱形虚拟继承、继承与组合

目录 01.概念 02.虚拟继承 原理 03.继承和组合 01.概念 单继承&#xff1a; 一个子类只有一个父类时&#xff0c;称这种继承关系为单继承。 多继承&#xff1a; 一个子类同时有两个及以上的父类时&#xff0c;称这种继承关系为多继承。 菱形继承&#xff1a; 菱形继承是…

一文搞懂oracle事务提交以及脏数据落盘的原则

本文基于oracle 19c 做事务提交以及oracle脏数据落盘的相关解读 第一章 相关进程及组件介绍&#xff1a; 1.LGWR&#xff1a; 重做日志条目在系统全局区域 &#xff08;SGA&#xff09; 的重做日志缓冲区中生成。LGWR 按顺序将重做日志条目写入重做日志文件。如果数据库具有…

期望薪资26K,北京疯狂游戏golang一面

北京疯狂游戏一面 1、自我介绍 2、财务业务中&#xff0c;你做了哪些设计来保证金额数据的准确性&#xff1f;&#xff08;例如&#xff0c;业务涉及多步骤&#xff0c;某一步出了问题怎么解决&#xff09; 3、如何解决单个业务直接报错的数据准确性问题 4、分布式场景下&a…

理解Vue 3响应式系统原理

title: 理解Vue 3响应式系统原理 date: 2024/5/28 15:44:47 updated: 2024/5/28 15:44:47 categories: 前端开发 tags: Vue3.xTypeScriptSFC优化Composition-APIRef&Reactive性能提升响应式原理 第一章&#xff1a;Vue 3简介 1.1 Vue 3概述 Vue 3的诞生背景&#xff1…

怎么把电脑上的文件传到手机上?可保存文档的云笔记

在职场中&#xff0c;我们经常需要将电脑上的重要文件、资料传到手机上&#xff0c;以便随时查阅和使用。比如&#xff0c;当你在公司完成了一份关键报告&#xff0c;但即将外出与客户沟通&#xff0c;这时如果能将报告传到手机上&#xff0c;就能在移动中随时准备应对客户的咨…

破解App渠道归因难题,Xinstall助你实现精准数据追踪!

在移动互联网时代&#xff0c;App的推广和运营面临着诸多挑战。其中&#xff0c;渠道归因问题一直困扰着众多推广者。如何准确追踪用户来源&#xff0c;分析不同渠道的推广效果&#xff0c;成为了摆在推广者面前的一大难题。然而&#xff0c;有了Xinstall的出现&#xff0c;这一…

蓝桥杯Web开发【大学组:国赛】2022年真题

1.分一分 如果给你一个数组&#xff0c;你能很快将它分割成指定长度的若干份吗&#xff1f; 1.1 题目问题 请在 js/index.js 文件中补全函数 splitArray 中的代码&#xff0c;最终返回按指定长度分割的数组。 具体要求如下&#xff1a; 将待分割的&#xff08;一维&#x…

从了解到掌握 Spark 计算框架(一)Spark 简介与基础概念

文章目录 什么是 Spark&#xff1f;核心特点 Spark 对比 MapReduceSpark 编程模型RDDDataFrameDataset Spark 运行模式Spark 生态 什么是 Spark&#xff1f; Spark 是一个基于内存的分布式计算框架&#xff0c;最初由加州大学伯克利分校的 AMPLab 开发&#xff0c;后来捐赠给了…

go语言基准测试Benchmark 最佳实践-冒泡排序和快速排序算法基准测试时间复杂度对比

在go语言中Benchmark基准测试( 在后缀为_test.go的文件中&#xff0c;函数原型为 func BenchmarkXxx(b *testing.B) {}的函数 )可以用来帮助我们发现代码的性能和瓶颈&#xff0c; 其最佳实践 应该是我们最常用的 冒泡排序和快速排序的测试了&#xff0c;废话不说&#xff0c;直…

项目9-网页聊天室3(主界面之用户信息)

1.前端页面 CSS: 如何让img里的图片自适应div&#xff0c;且不变形_img自适应div大小 铺满且不变形-CSDN博客 JavaScript/jQuery 如何改变一个img元素的src属性|极客教程 (geek-docs.com) 2.要求 左上角显示用户的昵称和头像. 3.后端代码 3.1 添加拦截器 3.2 注册拦截器 …

go升级后 编译的exe在win7上无法正常运行

D:/Go/src/runtime/sys_windows_amd64.s:65 x75 fpx22fca sp-0x22fc8日 升级到go 1.21后报一堆错误&#xff0c;要死了啊 原来是go 1.21不支持win7了&#xff0c;必须把go退回到1.20版本 谷歌发布编程语言 Go 1.21 版本&#xff1a;取消支持微软 Win7/8 及苹果 macOS 10.13/10…

pip install pytorch-quantization error

一 报错信息 最近安装pytorch-quantization报错&#xff0c;安装失败报错信息如下&#xff1a; Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com Collecting pytorch-quantizationDownloading pytorch-quantization-2.2.1.tar.gz (6.8 kB)Prepari…

用C语言实现扫雷

本篇适用于C语言初学者&#xff0c;主要涉及对于函数&#xff0c;数组&#xff0c;分支循环的运用。 目录 设计思想&#xff1a; 总代码&#xff08;改进后&#xff09;&#xff1a; 运行结果展示&#xff1a; 分布介绍&#xff1a; 声明&#xff1a; 代码主体部分&#…

Vue3学习使用axios和qs进行POST请求和响应处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、前言1.准备工作2.发送POST请求3.处理响应数据4.总结 一、前言 在前端开发中&#xff0c;经常需要与后端进行数据交互&#xff0c;其中包括发送POST请求并处理响…

HarmonyOS 鸿蒙应用开发 - 创建自定义组件

开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑与UI分离&#xff0c;后续版本演进等因素。因此&#xff0c;将UI和部分业务逻辑封装成自定义组件是不可或缺的能力。 1、创…