ChatGPT 本地部署及搭建

news2024/11/27 14:38:52

这篇简要说下清华开源项目 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.5
  Downloading 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.1
  Downloading 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_catcher
    yield
  File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 561, in read
    data = 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_read
    return 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 read
    data = self.__fp.read(amt)
  File "D:\Python\Python310\lib\http\client.py", line 465, in read
    s = self.fp.read(amt)
  File "D:\Python\Python310\lib\socket.py", line 705, in readinto
    return self._sock.recv_into(b)
  File "D:\Python\Python310\lib\ssl.py", line 1274, in recv_into
    return self.read(nbytes, buffer)
  File "D:\Python\Python310\lib\ssl.py", line 1130, in read
    return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out

During 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_wrapper
    status = run_func(*args)
  File "D:\Python\Python310\lib\site-packages\pip\_internal\cli\req_command.py", line 247, in wrapper
    return func(self, options, args)
  File "D:\Python\Python310\lib\site-packages\pip\_internal\commands\install.py", line 419, in run
    requirement_set = resolver.resolve(
  File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 92, in resolve
    result = self._result = resolver.resolve(
  File "D:\Python\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 481, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "D:\Python\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 348, in resolve
    self._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_criteria
    if 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_built
    candidate = func()
  File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 206, in _make_candidate_from_link
    self._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 _prepare
    dist = self._prepare_distribution()
  File "D:\Python\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 308, in _prepare_distribution
    return 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_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "D:\Python\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 536, in _prepare_linked_requirement
    local_file = unpack_url(
  File "D:\Python\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 166, in unpack_url
    file = get_http_url(
  File "D:\Python\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 107, in get_http_url
    from_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_bar
    for chunk in iterable:
  File "D:\Python\Python310\lib\site-packages\pip\_internal\network\utils.py", line 63, in response_chunks
    for chunk in response.raw.stream(
  File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 622, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "D:\Python\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 560, in read
    with 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_catcher
    raise 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://www.coloradmin.cn/o/423586.html

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

相关文章

一次小破站JS代码审计出XSS漏洞思路学习

今天看了小破站一个大佬的分析&#xff0c;感觉思路很有意思&#xff0c;感兴趣的xdm可以到大佬视频下提供的链接进行测试&#xff08;传送门&#xff09;这类社交平台的XSS漏洞利用起来其实危害是特别大的&#xff0c;利用XSS能在社交平台上呈现蠕虫式的扩散&#xff0c;大部分…

redis内存回收——过期、淘汰

DB结构删除策略惰性删除周期删除SLOWFAST淘汰策略redis内存设置过大时会增加同步等操作的复杂度 DB结构 /* Redis database representation. There are multiple databases identified* by integers from 0 (the default database) up to the max configured* database. The …

es 搜索中同时包含 “query“ 和 “filter“ 子句

Elasticsearch支持很多查询方式&#xff0c;其中一种就是DSL&#xff0c;它是把请求写在JSON里面&#xff0c;然后进行相关的查询。 一、Query DSL 与 Filter DSL DSL查询语言中存在两种&#xff1a;查询DSL&#xff08;query DSL&#xff09;和过滤DSL&#xff08;filter DSL…

数据库管理-第六十八期 Oracle 23c的其他(20230417)

数据库管理 2023-04-17第六十八期 Oracle 23c的其他1 DGPDB2 无锁并发总结第六十八期 Oracle 23c的其他 由于Oracle 23c的文档相对较少&#xff0c;一是当前文档主要面向开发人员&#xff0c;二是感觉实际内容还在不断增加&#xff0c;主要还有一点就是各种新特性的在官方文档…

几分种学会React Router v6使用

React路由可以实现页面间的切换。 传送门&#xff1a;英文文档 中文教程&#xff1a; https://www.reactrouter.cn/docs/getting-started/tutorial 1.基础使用 react 需求&#xff1a;实现一个普通的底部导航切换 1.安装react-router npm i react-router-dom62.配置根组件…

C#调试与测试 | DebuggerDisplay使用技巧

DebuggerDisplay使用技巧 文章目录DebuggerDisplay使用技巧前言DebuggerDisplay介绍示例代码前言 当你在开发一个大型的应用程序时&#xff0c;调试是一个不可避免的任务。调试器是你的好朋友&#xff0c;但是有时候它并不能直接给你所需的信息。这时&#xff0c;就需要使用 C…

线上问题排查异闻录

如何解决堆内存溢出问题 OOM有很多种情况啊&#xff0c;这里就先讲解最常见也是最容易观测的java.lang.OutOfMemoryError: Java heap space&#xff0c;也就是堆内存溢出。 发现 启动Java程序的时候&#xff0c;最好参数加上-XX:HeapDumpOnOutOfMemoryError&#xff0c;该参…

【RabbitMQ】RabbitMQ控制台的使用

一、访问控制台页面 如果在本机上装了RabbitMQ则在浏览器访问127.0.0.1:15672,如果在服务器装了RabbitMQ则通过在浏览器输入urlip:15762来访问 登录后进入主页 二、添加RabbitMQ用户 进入主页后选择Admin&#xff0c;对应找到添加用户选择输入信息后即可完成添加 三、添加Rab…

GROUP BY 与 聚合函数、 HAVING 与 ORDER BY-MySQL数据库 - 分组选择数据(头歌实践教学平台)

文章目的初衷是希望学习笔记分享给更多的伙伴&#xff0c;并无盈利目的&#xff0c;尊重版权&#xff0c;如有侵犯&#xff0c;请官方工作人员联系博主谢谢。 目录 第1关&#xff1a;GROUP BY 与 聚合函数 任务描述 相关知识 GROUP BY与聚合函数的使用 编程要求 第2关&…

交通 | 应用Benders分解方法解决多车生产路由问题

论文解读​ 曲晨辉&#xff0c;王飞龙 1 知识补充和文章贡献 2.1 IRP (Inventory routing problems) IRP关注的是在一个给定的规划范围内&#xff0c;从一个设施到一组客户的单一产品分配。客户以给定的速度消费产品&#xff0c;并可将产品的库存维持在一个特定的水平上。一组…

HTB-SolidState

HTB-SolidState信息收集80端口Apache Jamesmindyrbash绕过mindy -> root总结信息收集 80端口 目录扫描 从/README.txt文件里知道他们在捣鼓一个新的秘密项目&#xff0c;这个新的秘密项目就是一个新的网页外观。 80端口先点到为止&#xff0c;免得进兔子洞。 Apache James …

基于SpringBoot技术点餐系统的设计与实现(论文+源码)_kaic

摘 要 饮食行业的发展推动了服务的提升&#xff0c;在线点餐服务模式随之产生。相比于传统点餐&#xff0c;在线点餐更加方便地浏览菜品&#xff0c;挑选菜品&#xff0c;有更好的用餐体验。系统的使用减少了人工成本&#xff0c;方便数据统计&#xff0c;便于提供更优质的服务…

大数据学习路线图(2023完整版)适合收藏

大数据开发是一门涉及处理和分析大规模数据的技术领域&#xff0c;随着大数据技术的不断发展和应用&#xff0c;对大数据开发人员的需求也在逐渐增加。就业前景相对较好&#xff0c;尤其在科技行业和数据驱动型企业中。大数据开发的前景还是有很多优势的&#xff0c;就业范围广…

Ubuntu14.04+ROS-indigo版本安装教程

ROS之indigo版本安装教程 1、Ubuntu14.04安装&#xff08;indigo对应的ubuntu版本是14.04&#xff09; Ubuntu14.04 的下载地址https://www.releases.ubuntu.com/14.04/ 64位的电脑下载如下图 在虚拟机上配置了该镜像&#xff08;我用的是VMware虚拟机&#xff09; 2、ROS …

mac苹果电脑运行慢卡顿如何释放内存?

苹果电脑受到大众追捧的大部分原因是她高效的运行速度&#xff0c;为我们带来了很大的方便。但是大家有没有发现经过几年时间后&#xff0c;现在自己的苹果电脑运行速度没有以前快了呢&#xff1f;导致苹果电脑变慢的原因有哪些&#xff1f;苹果电脑变慢了怎么办&#xff1f;小…

平凡的Python为什么能一跃成为世界排名第一的语言

本文首发自「慕课网」&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"&#xff01; 作者&#xff1a;大周|慕课网讲师 一、前言 本文将结合个人经历为各位同学客观的分析是否有学习Python的必要、Python适合谁学、为什么…

webgl-画三角形

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

007:Mapbox GL实现地图地点搜索定位功能

第007个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中实现地图地点搜索定位功能 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共68行)安装插件相关API参考:专栏目标示例效果 配置方式 1)查看基础设…

linux 命名管道 mkfifo

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e;目录 前言 概述 原理介绍 接口说明 代码演示 结尾 前言 本专栏主要分享linux下并发编程…

HBU 2023 Simple problem set

目录 7-1 递推公式 7-2 存钱罐 7-3 买东西 7-4 双重子串 7-5 放小球 7-6 最短路径 7-7 统计子序列的个数 7-8 摆放灯笼 7-9 选零食 7-10 1还是2 7-11 最少的门禁数量 7-12 青春猪头之开学了要好好学习 7-13 青春猪头之毕设真头大 7-14 青春猪头之我没学过C语言 7-15 发射小球 7…