ChatGLM 本地部署搭建及测试运行

article/2025/6/8 4:58:50

这篇简要说下清华开源项目 ChatGLM 本地部署的详细教程。清华开源项目 ChatGLM-6B 已发布开源版本,这一项目可以直接部署在本地计算机上做测试,无需联网即可体验与 AI 聊天的乐趣。

项目地址:GitHub - THUDM/ChatGLM-6B: ChatGLM-6B:开源双语对话语言模型 | An Open Bilingual Dialogue Language Model

官网介绍:

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。

为了方便下游开发者针对自己的应用场景定制模型,我们同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。

不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。请大家在使用前了解这些问题,以免产生误解。更大的基于 1300 亿参数 GLM-130B 的 ChatGLM 正在内测开发中。

第一步,本地安装 Python

这一步暂略,可以自行下载安装 Python 环境。

Python 下载地址:Download Python | Python.org

注意:安装 >9 以上版本,建议安装 10。

第二步,下载项目程序包

地址见上面的项目地址,直接下载下来并解压。我这里解压到 E:\chatGPT\ 下。

第三步,下载模型包 chatglm

下载地址:https://huggingface.co/THUDM/chatglm-6b/tree/main

官网介绍:

ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 使用了和 ChatGLM 相同的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。

注意:下载后放到第二步程序包下,自行创建目录 chatglm-6b,如下:

第四步,下载依赖包

Window + R 快捷键打开运行窗口,输入 cmd 打开控制台命令行,进入到程序目录下。

分别执行如下两条命令:

pip install -r requirements.txt

pip install gradio

注意:如果执行有报错,请查阅文章末尾的错误处理。

等待依赖包下载成功,结果如下:

第五步,运行网页版 demo

执行如下命令,运行网页版本的 demo,如下:

python web_demo.py

程序会运行一个 Web Server,并输出地址。在浏览器中打开输出的地址即可使用。最新版 Demo 实现了打字机效果,速度体验大大提升。注意,由于国内 Gradio 的网络访问较为缓慢,启用 demo.queue().launch(share=True, inbrowser=True) 时所有网络会经过 Gradio 服务器转发,导致打字机体验大幅下降,现在默认启动方式已经改为 share=False,如有需要公网访问的需求,可以重新修改为 share=True 启动。

执行结果如下:

注意:如果执行提示信息和上图对不上,请查阅文章末尾的错误处理。

第七步,测试网页版程序

浏览器打开地址 并访问,输入问题,可以看到 ChatGLM 会给予回复。

Very Good!查看电脑性能,感觉 CPU 和内存都要爆掉了 ^ ^

第八步,运行命令行 Demo

执行如下命令,运行命令行版本的 demo,如下:

python cli_demo.py

程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复,输入 clear 可以清空对话历史,输入 stop 终止程序。

错误一:下载依赖包超时

E:\chatGPT\ChatGLM-6B-main>pip install -r requirements.txt
Collecting protobuf<3.20.1,>=3.19.5Downloading protobuf-3.20.0-cp310-cp310-win_amd64.whl (903 kB)---------------------------------------- 903.8/903.8 kB 4.0 kB/s eta 0:00:00
Collecting transformers==4.27.1Downloading transformers-4.27.1-py3-none-any.whl (6.7 MB)----------- ---------------------------- 2.0/6.7 MB 5.4 kB/s eta 0:14:29
ERROR: Exception:
Traceback (most recent call last):File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 438, in _error_catcheryieldFile "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 561, in readdata = self._fp_read(amt) if not fp_closed else b""File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 527, in _fp_readreturn self._fp.read(amt) if amt is not None else self._fp.read()File "D:\Python\Python310\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 90, in readdata = self.__fp.read(amt)File "D:\Python\Python310\lib\http\client.py", line 465, in reads = self.fp.read(amt)File "D:\Python\Python310\lib\socket.py", line 705, in readintoreturn self._sock.recv_into(b)File "D:\Python\Python310\lib\ssl.py", line 1274, in recv_intoreturn self.read(nbytes, buffer)File "D:\Python\Python310\lib\ssl.py", line 1130, in readreturn self._sslobj.read(len, buffer)
TimeoutError: The read operation timed outDuring handling of the above exception, another exception occurred:Traceback (most recent call last):File "D:\Python\Python310\lib\site-packages\pip\_internal\cli\base_command.py", line 160, in exc_logging_wrapperstatus = run_func(*args)File "D:\Python\Python310\lib\site-packages\pip\_internal\cli\req_command.py", line 247, in wrapperreturn func(self, options, args)File "D:\Python\Python310\lib\site-packages\pip\_internal\commands\install.py", line 419, in runrequirement_set = resolver.resolve(File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 92, in resolveresult = self._result = resolver.resolve(File "D:\Python\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 481, in resolvestate = resolution.resolve(requirements, max_rounds=max_rounds)File "D:\Python\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 348, in resolveself._add_to_criteria(self.state.criteria, r, parent=None)File "D:\Python\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 172, in _add_to_criteriaif not criterion.candidates:File "D:\Python\Python310\lib\site-packages\pip\_vendor\resolvelib\structs.py", line 151, in __bool__return bool(self._sequence)File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 155, in __bool__return any(self)File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 143, in <genexpr>return (c for c in iterator if id(c) not in self._incompatible_ids)File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 47, in _iter_builtcandidate = func()File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 206, in _make_candidate_from_linkself._link_candidate_cache[link] = LinkCandidate(File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 297, in __init__super().__init__(File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 162, in __init__self.dist = self._prepare()File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 231, in _preparedist = self._prepare_distribution()File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 308, in _prepare_distributionreturn preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)File "D:\Python\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 491, in prepare_linked_requirementreturn self._prepare_linked_requirement(req, parallel_builds)File "D:\Python\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 536, in _prepare_linked_requirementlocal_file = unpack_url(File "D:\Python\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 166, in unpack_urlfile = get_http_url(File "D:\Python\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 107, in get_http_urlfrom_path, content_type = download(link, temp_dir.path)File "D:\Python\Python310\lib\site-packages\pip\_internal\network\download.py", line 147, in __call__for chunk in chunks:File "D:\Python\Python310\lib\site-packages\pip\_internal\cli\progress_bars.py", line 53, in _rich_progress_barfor chunk in iterable:File "D:\Python\Python310\lib\site-packages\pip\_internal\network\utils.py", line 63, in response_chunksfor chunk in response.raw.stream(File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 622, in streamdata = self.read(amt=amt, decode_content=decode_content)File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 560, in readwith self._error_catcher():File "D:\Python\Python310\lib\contextlib.py", line 153, in __exit__self.gen.throw(typ, value, traceback)File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 443, in _error_catcherraise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.E:\chatGPT\ChatGLM-6B-main>

可以看到错误信息提示超时,应该是网络问题,可以尝试在命令中加上超时时间设置的参数,命令修改后如下:

pip --default-timeout=1688 install -r requirements.txt

问题二:又一次实时下载模型包

当运行程序时,如果提示信息中看到又一次下载模型包,而没有使用第三步提前准备的模型包时,需要把模型包复制到程序运行时的缓存目录中,缓存路径可能如下:

C:\Users\用户目录\.cache\huggingface\hub\models--THUDM--chatglm-6b\snapshots\fb23542cfe773f89b72a6ff58c3a57895b664a23

模型包拷贝到该目录后再次运行程序即可。

Good Luck!


http://chatgpt.dhexx.cn/article/jUMgkdss.shtml

相关文章

快速指南:10分钟部署个性化ChatGPT网站实践

在本指南中&#xff0c;我们将带领您快速部署一个属于自己的ChatGPT网站。这个网站将允许用户与您的AI模型进行交互。我们将使用Python语言编写后端代码&#xff0c;并通过Flask轻量级Web框架搭建网站。现在&#xff0c;让我们开始吧&#xff01; 准备工作 首先&#xff0c;确…

【ChatGPT本地部署-- ChatGLM】

这里写自定义目录标题 ChatGPT本地部署--- ChatGLM(转载)一、什么是ChatGLM&#xff1f;二、本地部署三、模型与ChatGPT和GPT4AII 效果对比 ChatGPT本地部署— ChatGLM(转载) 目录 一、什么是ChatGLM&#xff1f; 二、本地部署 2.1 模型下载 2.2 模型部署 2.3 模型运行 …

ChatGPT一键私有部署,全网可用,让访问、问答不再受限,且安全稳定!

前言 ChatGPT由于在访问上有一些限制&#xff0c;使用并不便利。目前国内可以直接访问的大部分是调用API返回结果&#xff0c;我们去使用时总会有次数限制&#xff0c;而且它们可能随便崩掉。 其实&#xff0c;目前我们访问过的大部分国内的网页包括UI&#xff0c;其实是套用了…

详细的从零部署ChatGPT

chatgpt产品机遇: 1. chatgpt 所带来的机遇&#xff1a; 下一代 AI 搜索引擎&#xff0c;解决目前搜索引擎结果多样复杂、需要人工判断准确定的问题&#xff1b;替代低端劳动岗位、释放部分脑力活动、即将变革多个行业 &#xff1b; 2. chatgpt 我分析将带来多个新的工作岗位机…

ChatGPT分销版多开4.3.5-新增 语音识别和绘画多个引擎-已测试

ChatGPT分销版多开v4.3.5-源码升级 后台系统配置-界面配置: 新增 首页是否弹出公众号关注二维码 注册/登录后否弹出公众号关注二维码 优化 拦截某个有漏洞的回答 优化 回调下载图片的问题 版本号&#xff1a;4.3.1 - 默认 优化 分销商入驻流程 ChatGPT分销版多开v4.2.…

科普前沿知识

本文没有任何违规内容&#xff0c;全是科普AI的&#xff0c;麻烦官方通过下。 目录 1. ChatGPT是什么 2. ChatGPT的发展历程 3. ChatGPT对程序员的影响 4. ChatGPT对普通人的影响 5. ChatGPT的不足之处 本文带大家去了解AI的发展&#xff01; 1. ChatGPT是什么 ChatGPT是…

国产版ChatGPT大盘点

我们看到,最近,国内大厂开始密集发布类ChatGPT产品。 一方面,是因为这是最近10年最大的趋势和机会。 另一方面,国内的AI,不能别国外卡了脖子。 那在类ChatGPT赛道上,哪些中国版的ChatGPT能快速顶上?都各有哪些困境需要突破呢?本文给诸位带来各个玩家的最新进展。 *…

ChatGPT API调用+服务器部署【附Git地址】

文章目录 一、关键代码二、使用步骤1.获取代码2.服务器部署 总结 运行对话效果图 一、关键代码 public class Main {public static final String URL "https://api.openai.com/v1/chat/completions";// 你的 API KEYpublic static final String APT_KEY "sk…

省去麻烦的环境配置,一分钟来试试 chatgpt API 代码⚡

项目地址&#xff1a;https://github.com/wjsvec/try_chatgpt_API_in_one_minute try chatgpt API in one minute⚡ 这个项目用来做什么&#x1f60a; 由于一些特殊的网络原因&#xff0c;在试用 chatgpt 的 API 的时候总是遇到奇奇怪怪的问题&#x1f62b;&#xff0c;有时…

ChatGPT API的使用(一)

OpenAI除了提供ChatGPT聊天功能外&#xff0c;还提供了功能强大的图片生成与编辑功能&#xff0c;以及代码注释、语音转换功能&#xff0c;而这些功能需要通过API进行访问。 首先需要生成您的帐户独有的 API 密钥。访问此页面并创建一个新的密钥。 在这里需要点击复制&#xf…

如何实现基于ChatGPT API的C#接入?

今年开年&#xff0c;最火的莫过于ChatGPT的相关讨论&#xff0c;这个提供了非常强大的AI处理&#xff0c;并且整个平台也提供了很多对应的API进行接入的处理&#xff0c;使得我们可以在各种程序上无缝接入AI的后端处理&#xff0c;从而实现智能AI的各种应用。ChatGPT的API可以…

Chatgpt api 多轮对话功能实现

不废话&#xff0c;上代码 import requests import jsonurl "https://api.openai.com/v1/completions"payload json.dumps({"model": "text-davinci-003","prompt": "日照香炉生紫烟&#xff0c;遥看瀑布挂前川&#xff0c;飞…

利用Cloudflare搭建ChatGPT API 代理服务器 傻瓜教程

✈ChatGPT的API接口为 https://api.openai.com 但是很多小伙伴不是国家区域不对&#xff0c;就试没有一个好的代理&#xff0c;经常chatgpt出现无法聊天的情况&#xff0c;那么自己搭建一个代理服务器那不是很香&#xff1f;还是免费的&#xff0c;直接整起来&#xff01;图文教…

关于ChatGPT API,你需要知道的…(截止到230303)

1. ChatGPT 的 API 已经推出 从官网 https://platform.openai.com/docs/guides/chat 和 https://platform.openai.com/docs/models/gpt-3-5 可以看出&#xff1a;gpt-3.5-turbo 已经正式上线。 GPT-3 快速入门&#xff1a;前端调用 GPT-3 API、Python 调用 GPT-3 APIopenAI 模…

ChatGPT API 简单使用教程

1、关于ChatGPT 和 API 获取 2、调用API 实现 ChatGPT 对话 import openaiopenai.api_key "你的api_key"def completion(prompt):completions openai.Completion.create(engine"text-davinci-003",promptprompt,max_tokens1024,n1,stopNone,temperatu…

ChatGPT API 正式开放,价格直接打骨折!100万个单词才18元

ChatGPT爆火之后&#xff0c;各种「自制API」层出不穷&#xff0c;中间商们也一个个赚得盆满钵满。 这次&#xff0c;OpenAI终于下定决心——正式开放ChatGPT API&#xff01; ChatGPT API地址&#xff1a;https://platform.openai.com/docs/guides/chat 现在&#xff0c;不要耗…

如何查询chatgpt apikey 的使用情况

如何查询chatgpt apikey 的使用情况 网上有很多免费的公用的查询chatgpt apikey (api-key)网站.

chatgptApi 文档使用以及 Demo演示

前言&#xff1a;最近chatGpt 很火爆&#xff0c;搞得国内某度都按耐不住了&#xff0c;开始搞‘文心一言’了。体验到了ChatGPT的强大之后&#xff0c;那么我们会想&#xff0c;如果我们想基于ChatGPT开发一个自己的聊天机器人&#xff0c;这个能搞定吗&#xff1f; ChatGPT平…

C#接入ChatGPT编程实际应用

一&#xff0c;介绍ChatGPT的API可以在前端&#xff0c;以及一些后端进行API的接入&#xff0c;本篇主要介绍基于ChatGPT的API的C#接入研究。 学习更多的科技知识可以来知新文学 最火的莫过于ChatGPT的相关讨论&#xff0c;这个提供了非常强大的AI处理&#xff0c;并且整个平…

编程新视角:ChatGPT帮助你高效编程和理解代码

现在好几个大公司都推出了自家的大语言模型&#xff0c;有的参数比GPT多&#xff0c;但是真正能称得上会编程的&#xff0c;大概只有GPT一个&#xff0c;可以说是OpenAI的独门功夫。 这篇文章旨在探讨GPT辅助编程过程中常用的提示和技巧。当然&#xff0c;我自己也是一边学一边…