Open main menu
首页
专栏
课程
分类
归档
Chat
Sci-Hub
谷歌学术
Libgen
GitHub镜像
登录/注册
搜索
关闭
Previous
Previous
Next
Next
体验 ChatGLM-6B
sockstack
/
198
/
2023-12-25 12:02:39
<p><span style="color: red; font-size: 18px">ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。</span><br><a href="https://ckai.xyz/?sockstack§ion=detail" target="__blank">https://ckai.xyz</a><br><br></p> <article class="baidu_pl"><div id="article_content" class="article_content clearfix"> <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css"> <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-25cebea3f9.css"> <div id="content_views" class="markdown_views prism-atom-one-dark"> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><p></p> <div class="toc"> <h3>体验 ChatGLM-6B</h3> <ul> <li>1. 什么是 ChatGLM-6B</li> <li>2. Github 地址</li> <li>3. 安装 Miniconda3</li> <li>4. 创建虚拟环境</li> <li>5. 安装 ChatGLM-6B</li> <li>6. 启动 ChatGLM-6B</li> <li>7. 访问 ChatGLM-6B</li> <li>8. API部署</li> <li>9. 命令行部署</li> <li>10. 其他,修改使用显存大小</li> </ul> </div> <p></p> <h1> <a id="1__ChatGLM6B_2"></a>1. 什么是 ChatGLM-6B</h1> <p>ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。</p> <p>不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。请大家在使用前了解这些问题,以免产生误解。更大的基于 1300 亿参数 GLM-130B 的 ChatGLM 正在内测开发中。</p> <h1> <a id="2_Github__8"></a>2. Github 地址</h1> <p>https://github.com/THUDM/ChatGLM-6B</p> <h1> <a id="3__Miniconda3_12"></a>3. 安装 Miniconda3</h1> <p>下载 Conda 安装脚本,</p> <pre><code>wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh </code></pre> <p>运行安装脚本,</p> <pre><code>bash Miniconda3-latest-Linux-x86_64.sh </code></pre> <p>按提示操作。当提示是否初始化 Conda 时,输入 “yes”,</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/b468fb4634fc4ae4bee0fccc3ea0e1b5.png" alt="在这里插入图片描述"></p> <p>安装完成后,关闭当前终端并打开新终端,这将激活 Conda,</p> <pre><code>sudo su - root </code></pre> <p>更新 Conda 至最新版本,</p> <pre><code>conda update conda </code></pre> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/7affc868cda94e929c31994f020c341c.png" alt="在这里插入图片描述"><br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/0420a5d882b747959d7dc35af138f0b7.png" alt="在这里插入图片描述"></p> <p>添加必要的 Conda 通道以获取更多软件包,</p> <pre><code>conda config --add channels conda-forge conda config --add channels defaults </code></pre> <p>测试是否安装成功,</p> <pre><code>conda list </code></pre> <p>如果显示 Conda 及其内部包的列表,则说明安装成功。</p> <h1> <a id="4__63"></a>4. 创建虚拟环境</h1> <pre><code>conda create -n chatglm python==3.10.4 conda activate chatglm </code></pre> <h1> <a id="5__ChatGLM6B_70"></a>5. 安装 ChatGLM-6B</h1> <pre><code>git clone --recursive https://github.com/THUDM/ChatGLM-6B; cd ChatGLM-6B pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit-chat </code></pre> <h1> <a id="6__ChatGLM6B_79"></a>6. 启动 ChatGLM-6B</h1> <pre><code>streamlit run web_demo2.py </code></pre> <h1> <a id="7__ChatGLM6B_85"></a>7. 访问 ChatGLM-6B</h1> <p>使用浏览器打开 <code>http://localhost:8501/</code>,</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/16e4bd20965f4bb2a42fb98a754df868.png" alt="在这里插入图片描述"><br> 问它一个问题,清华大学在哪?</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/6a878a652fbe43f58f3943b7ee508bfe.png" alt="在这里插入图片描述"></p> <h1> <a id="8_API_95"></a>8. API部署</h1> <p>先需要安装额外的依赖,</p> <pre><code>pip3 install fastapi uvicorn </code></pre> <p>然后运行仓库中的 api.py,</p> <pre><code>python3 api.py </code></pre> <p>默认部署在本地的 8000 端口,通过 POST 方法进行调用,</p> <pre><code>curl -X POST "http://127.0.0.1:8000" \-H 'Content-Type: application/json' \-d '{"prompt": "你好", "history": []}' </code></pre> <p>得到的返回值为,</p> <pre><code>{"response":"你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。","history":[["你好","你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]],"status":200,"time":"2023-03-23 21:38:40" } </code></pre> <h1> <a id="9__128"></a>9. 命令行部署</h1> <p>运行仓库中 cli_demo.py,</p> <pre><code>python cli_demo.py </code></pre> <p>程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复。</p> <p>输入 <code>clear</code> 可以清空对话历史,输入 <code>stop</code> 终止程序。</p> <h1> <a id="10__141"></a>10. 其他,修改使用显存大小</h1> <p>默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:</p> <pre><code>vi web_demo2.py--- 按需修改,目前只支持 4/8 bit 量化 model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).quantize(8).half().cuda() --- </code></pre> <p>进行 2 至 3 轮对话后,8-bit 量化下 GPU 显存占用约为 10GB,4-bit 量化下仅需 6GB 占用。随着对话轮数的增多,对应消耗显存也随之增长,由于采用了相对位置编码,理论上 ChatGLM-6B 支持无限长的 context-length,但总长度超过 2048(训练长度)后性能会逐渐下降。</p> <p>模型量化会带来一定的性能损失,经过测试,ChatGLM-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。</p> <p>量化过程需要在内存中首先加载 FP16 格式的模型,消耗大概 13GB 的内存。如果你的内存不足的话,可以直接加载量化后的模型,INT4 量化后的模型仅需大概 5.2GB 的内存:</p> <pre><code># INT8 量化的模型将"THUDM/chatglm-6b-int4"改为"THUDM/chatglm-6b-int8" model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True).half().cuda() </code></pre> <p>完结!</p> </div> <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-98b95bb57c.css" rel="stylesheet"> <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-c216769e99.css" rel="stylesheet"> </div> <div id="treeSkill"></div> </article>
体验 ChatGLM-6B
作者
sockstack
许可协议
CC BY 4.0
发布于
2023-12-25
修改于
2024-12-20
上一篇:软件:常用 Linux 软件汇总,值得收藏
下一篇:chatgpt提示词
尚未登录
登录 / 注册
文章分类
博客重构之路
5
Spring Boot简单入门
4
k8s 入门教程
0
MySQL 知识
1
NSQ 消息队列
0
ThinkPHP5 源码分析
5
使用 Docker 从零开始搭建私人代码仓库
3
日常开发汇总
4
标签列表
springboot
hyperf
swoole
webman
php
多线程
数据结构
docker
k8s
thinkphp
mysql
tailwindcss
flowbite
css
前端