Open main menu
首页
专栏
课程
分类
归档
Chat
Sci-Hub
谷歌学术
Libgen
GitHub镜像
登录/注册
搜索
搜索
关闭
Previous
Previous
Next
Next
全网最新版ChatGLM-6B开源模型环境详细部署及安装——如何在低显存单显卡上面安装私有ChatGPT GPT-4大语言模型
sockstack
/
153
/
2023-11-07 00:01:42
<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>目录</h3> <ul> <li>前言</li> <li> <ul> <li>前期准备</li> <li> <ul> <li>电脑要求</li> <li>安装anaconda</li> <li>安装相应版本的CUDA</li> <li>配置ChatGLM-6B Conda环境</li> <li>安装pytorch</li> </ul> </li> </ul> </li> <li>ChatGLM-6B最新版模型环境部署及安装</li> <li> <ul> <li>源码下载</li> <li>模型下载</li> <li>相关库安装</li> <li>运行web演示</li> <li>作为API部署</li> </ul> </li> <li>参考资料</li> <li>其它资料下载</li> </ul> </div> <p></p> <h1> <a id="_3"></a>前言</h1> <p>ChatGPT的爆火让许多公司和个人都想要开发自己的大型语言模型,但是,由于算力和语言模型开发能力等诸多方面的限制,许多人最终都只能在开发的早期阶段止步不前。然而,近期清华大学知识工程和数据挖掘小组(Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University)发布了对话机器人ChatGLM-6B的开源版本,这一切都变得更加容易了。</p> <p>这个中英文语言模型拥有千亿参数规模,并且对中文进行了优化。本次开源的版本是其60亿参数的小规模版本,<strong>仅需要6GB显存就可以在本地部署</strong>。这意味着,即使是在普通显卡的电脑上,也可以轻松部署一个类似于GPT的大型语言模型。这是一个令人振奋的时刻,让我们一起期待中国版ChatGPT更多的创新和突破!</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/a00410d4cee146ba987c6bf0834f49d8.png" alt="在这里插入图片描述"></p> <table> <thead><tr> <th>量化等级</th> <th>最低 GPU 显存(推理)</th> <th>最低 GPU 显存(高效参数微调)</th> </tr></thead> <tbody> <tr> <td>FP16(无量化)</td> <td>13 GB</td> <td>14 GB</td> </tr> <tr> <td>INT8</td> <td>8 GB</td> <td>9 GB</td> </tr> <tr> <td>INT4</td> <td>6 GB</td> <td>7 GB</td> </tr> </tbody> </table> <h2> <a id="_17"></a>前期准备</h2> <h3> <a id="_18"></a>电脑要求</h3> <ul> <li>python版本要求:3.8</li> <li>windows系统:Windows 7 or later (with C++ redistributable)</li> <li>显卡:6G以上GPU</li> </ul> <h3> <a id="anaconda_24"></a>安装anaconda</h3> <p>从anaconda官网,下载安装anaconda。具体教程详见官网教程。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/a596f739ce3b41bda9369cee9dac0148.png" alt="在这里插入图片描述"></p> <h3> <a id="CUDA_27"></a>安装相应版本的CUDA</h3> <p>首先在终端查看你的Nividian版本,命令如下:</p> <pre><code class="prism language-bash">nvidia-smi </code></pre> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/9d160f7c36054aff91a6803e53479409.png" alt="在这里插入图片描述"><br> 查看到本机可装CUDA版本最高为12.0,版本向下兼容,意思就是CUDA 12.0及以下版本的都可以安装,但一般不建议使用最新版本的。因为可能后续其他安装包没有更新对应版本的可以下载。由于Pytorch(可以从pytorch官网)中可以看到,目前的CUDA版本一般是11.7和11.8,所以建议选择11.8版本以下的。博主这里选择了11.7进行安装。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/b7ab653afe4348ab8543eea88030605f.png" alt="在这里插入图片描述"></p> <p>安装完后,注意需要看下系统环境变量中地址有没有相应版本的cuda,比如我的电脑就是配置了下面几个环境变量<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/711ef2807dad486592dd96d8fd94a3c5.png" alt="在这里插入图片描述"><br> 除上面两个之外 ,还可以加入以下环境变量,以保证不会出错。我没配置下面两个,也没出错,所以大家根据实际情况选择是否加入下面两个环境配置。</p> <blockquote> <p>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\CUPTI\lib64<br> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include</p> </blockquote> <blockquote> <p>不配置可能会报错,Could not load dynamic library ‘cudart64_110.dll’; dlerror: cudart64_110.dll not found</p> </blockquote> <h3> <a id="ChatGLM6B_Conda_45"></a>配置ChatGLM-6B Conda环境</h3> <p>首先以管理员方式启动windows命令窗口,在搜索中输入<code>cmd</code>即可打开,输入以下命令,新建一个名字为ChatGLM的环境,并安装tensorflow-gpu版本。新建环境过程中选择y,进入下一步</p> <pre><code class="prism language-bash">conda create --name ChatGLM <span class="token assign-left variable">python</span><span class="token operator">==</span><span class="token number">3.8</span>.10 </code></pre> <p>接下来激活ChatGLM的环境</p> <pre><code class="prism language-bash">conda activate ChatGLM </code></pre> <h3> <a id="pytorch_58"></a>安装pytorch</h3> <p>如果电脑配置了GPU,要注意需安装GPU版本的pytorch,具体可登录官网链接:</p> <p>这里要注意选择你是什么系统,cuda是安装了什么版本(博主前面选择的是11.7),然后复制下面红框中的命令到终端就可以安装了。</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/81e3621b40a6462bb71b055ecf68e3cf.png" alt="在这里插入图片描述"><br> 在终端运行下面命令,即可安装成功pytorch-GPU版本:</p> <pre><code class="prism language-bash">conda <span class="token function">install</span> pytorch torchvision torchaudio pytorch-cuda<span class="token operator">=</span><span class="token number">11.7</span> -c pytorch -c nvidia </code></pre> <p>在终端输入<code>python</code>,然后依次输入下面代码,验证torch-GPU版本是不是成功。</p> <pre><code class="prism language-bash"><span class="token function">import</span> torch torch.cuda.is_available<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">## 输出应该是True</span></code></pre> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/6af9d0a4c4514048b39d50cfb73c2fb1.png" alt="在这里插入图片描述"></p> <h1> <a id="ChatGLM6B_78"></a>ChatGLM-6B最新版模型环境部署及安装</h1> <h2> <a id="_80"></a>源码下载</h2> <p>登录github官方地址下载源码或者直接使用git命令clone:</p> <pre><code class="prism language-bash"><span class="token function">git</span> clone https://github.com/THUDM/ChatGLM-6B.git </code></pre> <p>接着在源码所在文件夹下,新建model文件夹</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/99da86eb65dd4dd3b44b4ddfad71e437.png" alt="在这里插入图片描述"></p> <h2> <a id="_89"></a>模型下载</h2> <p>从hugging face下载所有文件下来,放到model文件夹内。</p> <p>其中模型文件(大于 1G 的)如果下载速度慢,可以在国内清华云源中单独下载这几个模型文件(其他这个源没有的文件还是需要在 huggingface 上下载):https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/</p> <p>最后model文件夹内应该如下显示:</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/bf8585fe76604c4e9dd37401cf5f2453.png" alt="在这里插入图片描述"></p> <h2> <a id="_98"></a>相关库安装</h2> <p>在终端下打开ChatGLM-6B安装的目录,然后运行下面命令,安装相关库:</p> <pre><code class="prism language-bash">pip3 insta11 -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simp1e </code></pre> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/92ee5fc0dcfe40be8ea4fd460c39d286.png" alt="在这里插入图片描述"></p> <h2> <a id="web_107"></a>运行web演示</h2> <p>在运行之前,需要先修改<code>web_demo.py</code>文件中的模型地址,具体为第5行与第6行,具体如下:<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/0ef94b87a8b2486b8c31b0d37d51518d.png" alt="在这里插入图片描述"></p> <pre><code class="prism language-python">tokenizer <span class="token operator">=</span> AutoTokenizer<span class="token punctuation">.</span>from_pretrained<span class="token punctuation">(</span><span class="token string">"model"</span><span class="token punctuation">,</span> trust_remote_code<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span> model <span class="token operator">=</span> AutoModel<span class="token punctuation">.</span>from_pretrained<span class="token punctuation">(</span><span class="token string">"model"</span><span class="token punctuation">,</span> trust_remote_code<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>half<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>cuda<span class="token punctuation">(</span><span class="token punctuation">)</span> </code></pre> <p><strong>温馨提示</strong>,根据实际显卡显存,可以更改第6行关于model运行方式:</p> <pre><code class="prism language-python"><span class="token comment"># 6G 显存可以 4 bit 量化</span> model <span class="token operator">=</span> AutoModel<span class="token punctuation">.</span>from_pretrained<span class="token punctuation">(</span><span class="token string">"model"</span><span class="token punctuation">,</span> trust_remote_code<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>half<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>quantize<span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">.</span>cuda<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token comment"># 10G 显存可以 8 bit 量化</span> model <span class="token operator">=</span> AutoModel<span class="token punctuation">.</span>from_pretrained<span class="token punctuation">(</span><span class="token string">"model"</span><span class="token punctuation">,</span> trust_remote_code<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>half<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>quantize<span class="token punctuation">(</span><span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">.</span>cuda<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token comment"># 14G 以上显存可以直接不量化,博主显存为16G选择的就是这个</span> model <span class="token operator">=</span> AutoModel<span class="token punctuation">.</span>from_pretrained<span class="token punctuation">(</span><span class="token string">"model"</span><span class="token punctuation">,</span> trust_remote_code<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>half<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>cuda<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre> <p>在终端输入命令,注意不要用python3,因为可能会使用到其它环境下的python。</p> <pre><code class="prism language-bash">python web_demo.py </code></pre> <p>刚开始运行,需要等到1-2分钟加载本地模型:</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/61a22187ea734e04a5a9be835f2689e9.png" alt="在这里插入图片描述"><br> 接着在浏览器打开:http://127.0.0.1:7861,就可以开始体验ChatGLM-6B了。博主体验了下,生成速度还是很快。</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/87c588c18a30460baf3dcaf1cbd1e682.gif#pic_center" alt="在这里插入图片描述"></p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/27a6afc0f7a4453aa7fbf18c8d47dc5b.png" alt="在这里插入图片描述"><br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/379dfc63aab84a568801aaafa9e0d23b.png" alt="在这里插入图片描述"></p> <h2> <a id="API_144"></a>作为API部署</h2> <p>首先需要安装额外的依赖</p> <pre><code class="prism language-bash">pip <span class="token function">install</span> fastapi uvicorn </code></pre> <p>然后运行仓库中的 api.py:</p> <pre><code class="prism language-bash">python api.py </code></pre> <p>默认部署在本地的 8000 端口,通过 POST 方法进行调用</p> <pre><code class="prism language-bash"><span class="token function">curl</span> -X POST <span class="token string">"http://127.0.0.1:8000"</span> <span class="token punctuation">\</span>-H <span class="token string">'Content-Type: application/json'</span> <span class="token punctuation">\</span>-d <span class="token string">'{"prompt": "你好", "history": []}'</span> </code></pre> <p>得到的返回值为</p> <pre><code class="prism language-json"><span class="token punctuation">{<!-- --></span><span class="token string-property property">"response"</span><span class="token operator">:</span><span class="token string">"你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"</span><span class="token punctuation">,</span><span class="token string-property property">"history"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">"你好"</span><span class="token punctuation">,</span><span class="token string">"你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token string-property property">"status"</span><span class="token operator">:</span><span class="token number">200</span><span class="token punctuation">,</span><span class="token string-property property">"time"</span><span class="token operator">:</span><span class="token string">"2023-03-23 21:38:40"</span> <span class="token punctuation">}</span> </code></pre> <h1> <a id="_176"></a>参考资料</h1> <p>ChatGLM-6B 博客<br> ChatGLM-6B 官方github地址</p> <h1> <a id="_181"></a>其它资料下载</h1> <p>如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》<br> 这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。</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开源模型环境详细部署及安装——如何在低显存单显卡上面安装私有ChatGPT GPT-4大语言模型
作者
sockstack
许可协议
CC BY 4.0
发布于
2023-11-07
修改于
2024-09-08
上一篇:软件:常用 Linux 软件汇总,值得收藏
下一篇:【详细教程】国内部署ChatGPT镜像网站
尚未登录
登录 / 注册
文章分类
博客重构之路
5
Spring Boot简单入门
4
k8s 入门教程
0
MySQL 知识
1
NSQ 消息队列
0
ThinkPHP5 源码分析
5
使用 Docker 从零开始搭建私人代码仓库
3
日常开发汇总
3
标签列表
springboot
hyperf
swoole
webman
php
多线程
数据结构
docker
k8s
thinkphp
mysql
tailwindcss
flowbite
css
前端