当前位置: 首页 > news >正文

【ChatGLM2-6B】从0到1部署GPU版本

准备机器资源

  • 显卡: 包含NVIDIA显卡的机器,如果是阿里云服务器可以选择ecs.gn6i-c4g1.xlarge规格
  • 硬盘: 大约50G左右
  • 操作系统: CentOS 7.9 64位
  • CPU内存: 4C16G

更新操作系统

sudo yum update -y
sudo yum upgrade -y

下载并安装anaconda

  • 在命令行中,输入以下命令,点击Enter,开始下载anaconda安装包。
wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
  • 系统系统下载完成后,输入下列命令,点击Enter,开始安装。
bash Anaconda3-2023.09-0-Linux-x86_64.sh
  • 遇到如下界面后,点击Enter,继续安装过程。
...
Please, press ENTER to continue
>>>
  • 出现下面的界面后,继续点击Enter
...
---More---
  • 直到出现提示Do you accept the license terms? [yes|no],输入yes,点击Enter继续。
  • 出现如下提示,点击Enter继续,等待anaconda完成安装,大约需要1分钟
...
[/root/anaconda3] >>>

也可以输入其它路径做为anaconda的安装位置,比如/home/anaconda3

  • 等待出现如下提示后,输入yes,点击Enter, 完成安装。
...
by running conda init? [yes|no]
[no] >>> yes
  • 关闭当前终端界面,重新打开一个新的终端界面

注:接下来所有的操作都在新的终端中完成,命令行最左边,出现(base)字样,代表anaconda已启动。

创建Python虚拟环境

  • conda创建虚拟环境: conda create --name ChatGLM2 python=3.10.6 -y
  • –name 后面ChatGLM2为创建的虚拟环境名称
  • python=之后输入自己想要的python版本
  • -y表示后面的请求全部为yes,这样就不用自己每次手动输入yes了。
  • 激活虚拟环境: conda activate ChatGLM2

安装NVIDIA显卡驱动

  • 官网: http://www.nvidia.com/Download/index.aspx
    在这里插入图片描述

  • 选择CUDA 12.0下载驱动: wget https://cn.download.nvidia.cn/tesla/525.125.06/NVIDIA-Linux-x86_64-525.125.06.run

  • 安装驱动: sudo sh NVIDIA-Linux-x86_64-525.125.06.run -no-x-check -no-nouveau-check -no-opengl-files

  • -no-x-check #安装驱动时关闭X服务
  • -no-nouveau-check #安装驱动时禁用nouveau
  • -no-opengl-files #只安装驱动文件,不安装OpenGL文件
  • 安装完运行确认驱动安装成功: nvidia-smi
    在这里插入图片描述

安装Pytorch

  • 输入如下命令,开始安装Pytorch。
conda install pytorch torchvision torchaudio pytorch-cuda=12.0 -c pytorch -c nvidia

如果显卡驱动选的CUDA是其它版本,就修改pytorch-cuda的版本号与驱动保持一致,显卡驱动和pytorch版本要保持一致才不会出现兼容性问题

  • 出现提示Proceed ([y]/n)? 后,输入y,然后点击Enter继续安装过程。
...
Proceed ([y]/n)? y

下载模型文件、代码仓库

模型文件通常存放在 hugging face、魔搭社区等处。代码仓库通常存放在github。由于hugging face在国内无法正常访问,我们可以从清华大学源下载,本文从阿里云OSS下载。

  • 首先安装git lfs,以便可下载模型文件
sudo yum install git
sudo yum install git-lfs
git lfs install
  • 执行如下命令,安装unzip解压包
yum -y install unzip 
  • 下载ChatGLM2-6B代码仓库
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/ChatGLM2-6B.zip
unzip ChatGLM2-6B.zip
  • 运行如下代码从hugging face下载模型文件。模型文件较大,超过12G。需要等待一段时间。
mkdir THUDM
cd THUDM
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/chatglm2-6b.zip
unzip chatglm2-6b.zip

在ChatGLM2-6B目录下创建THUDM目录

  • 输入如下命令,安装依赖文件
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/

运行ChatGLM2-6B对话网页

  • 输入如下命令,安装streamlit
pip install streamlit streamlit-chat
  • 安装完成后,输入如下命令,运行网页版demo
streamlit run web_demo2.py
  • 复制External URL中的网址,新打开一个浏览器,在其中输入上述地址。
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.You can now view your Streamlit app in your browser.Network URL: http://xx.xx.xx.xx:8502External URL: http://xx.xx.xx.xx:8502
  • 等待大约2-3分钟后,模型开始运行。出现如下界面。可以开始输入提示词,与模型对话。
    在这里插入图片描述

相关文章:

  • QT-- out of memory, returning null image
  • 如何使用grequests库
  • 【开发日记】必须记录一下困扰我两天的问题 MyBatisPlus适配达梦insert时提示:无效的列
  • 【idea】生成banner.txt
  • 基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(一)
  • 基于物联网、大数据、云计算、人工智能等技术的智慧工地源码(Java+Spring Cloud +UniApp +MySql)
  • GNU 链接器(ld) -ldmain.c的执行过程
  • Postgresql的ddl在事务中可以回滚,truncate时relfilenode在当前会话会改变
  • Apache ActiveMQ RCE漏洞复现(CNVD-2023-69477)
  • Windows上配置IP端口转发
  • css矩形盒子实现虚线流动边框+css实现step连接箭头
  • MySQL WITH AS及递归查询
  • 数据结构和算法——用C语言实现所有排序算法
  • C# WPF: Imag图片填充方式有哪些?
  • Docker 容器服务的注册、发现及Docker安全
  • 30天自制操作系统-2
  • ES学习笔记(12)--Symbol
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • extract-text-webpack-plugin用法
  • Flannel解读
  • Go 语言编译器的 //go: 详解
  • jQuery(一)
  • JS函数式编程 数组部分风格 ES6版
  • PAT A1092
  • react 代码优化(一) ——事件处理
  • Spring声明式事务管理之一:五大属性分析
  • WebSocket使用
  • 从伪并行的 Python 多线程说起
  • 读懂package.json -- 依赖管理
  • 关于使用markdown的方法(引自CSDN教程)
  • ------- 计算机网络基础
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 容器服务kubernetes弹性伸缩高级用法
  • 数据仓库的几种建模方法
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 正则表达式小结
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​学习一下,什么是预包装食品?​
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)Android开发优化---------UI优化
  • (NSDate) 时间 (time )比较
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (翻译)terry crowley: 写给程序员
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)LINQ之路
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .net Application的目录
  • .Net Core和.Net Standard直观理解
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET面试题(二)
  • ::什么意思
  • @Validated和@Valid校验参数区别
  • [].shift.call( arguments ) 和 [].slice.call( arguments )