首页 > 其他分享 >LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!

LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!

时间:2024-07-21 18:42:15浏览次数:16  
标签:bin 6B 01 模型 pyenv LLM 显卡 echo 下载

搬迁说明

之前在 CSDN 上发文章,一直想着努力发一些好的文章出来!这篇文章在 2024-04-17 10:11:55 已在 CSDN 发布

写在前面

其他显卡环境也可以!但是最少要有8GB的显存,不然很容易爆。
如果有多显卡的话,单机多卡也是很好的方案!!!

背景介绍

目前借到一台算法组的服务器,我们可以查看一下目前显卡的情况

nvidia-smi

PS: (后续已经对CUDA等进行了升级,可看我的其他文章,有升级的详细过程)

项目地址

官方的地址:

# 需要克隆项目
https://github.com/THUDM/ChatGLM2-6B
# 模型下载(如果你没有科学,麻烦一点需要手动下载)
https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2Fchatglm2-6b-int4&mode=list
# 模型下载(如果可以科学,官方下载的体验是比较舒适的)
https://huggingface.co/THUDM/chatglm2-6b-int4

我们需要对项目进行克隆,同时需要下载对应的模型,如果你有科学,可以忽略模型的下载,因为你启动项目的时候它会自己下载。

配置要求

根据官方的介绍,可以看到对应的显卡要求,根据我的情况(2070Super 8GB * 2),我这里选择下载了INT4的模型。

安装Pyenv

由于很多不同的项目队python版本的要求不同,同时对版本的要求也不同,所以你需要配置一个独立的环境。
这里你可以选择 Conda,也可以选择pyenv,或者docker。我选的方案是:pyenv

# pyenv 官方地址
https://github.com/pyenv/pyenv

安装完成之后,记得配置一下环境变量:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

如果你和我一样使用的是 ZSH 的话:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

测试Pyenv

# 查看当前系统中的Python情况
pyenv versions

使用Pyenv

# Python版本
pyenv local 3.10
# 独立环境
python -m venv env
# 切换环境
source env/bin/active
# cd 到项目目录
# 安装Python库 pip install - requirements.txt

你将看到类似的内容,我这里在 MacBook 上测试的:

安装依赖

# Python版本
pyenv local 3.10
# 独立环境
python -m venv env
# 切换环境
source env/bin/active
# cd 到项目目录
# 安装Python库 pip install - requirements.txt

注意: 这是两个部分:(这是我服务器的配置,你也要搞清楚你的内容放置在哪里) 如下图:

  • 项目文件夹 /home/jp/wzk/chatglm2-6b-int4/ChatGLM2-6B
  • 模型文件夹 /home/jp/wzk/chatglm2-6b-int4/chatglm2-6b-int4

项目文件夹:

模型文件夹

启动项目

在项目的目录下,我们利用现成的直接启动:web_demo.py

# 先打开看一眼
vim web_demo.py

model_path 是你下载的模型文件夹(如果你不是手动下载的话,可以不改,这样的话会自动下载)

PS: 此时需要到最后一行,修改对外暴露服务

# 代码修改为这样
demo.queue().launch(server_name="0.0.0.0", server_port=7861, share=False, inbrowser=True)

退出保存,我们启动服务:

python web_demo.py

使用项目

完成上述的操作,稍等后看到:

根据你的服务器IP和端口,访问即可:

多卡启动

由于单卡很容易爆 OOM,正好这里是 2 * 2070Super 8GB,我们简单的修改一下代码,就可以将模型分到两张显卡中。
官方给的方案是,通过accelerate库来启动。

修改刚才的 web_demo.py,详细位置请看图:

# GPU 数量修改为2 
model = load_model_on_gpus(model_path, num_gpus=2)

重新启动即可,就已经是多卡启动了!!!

标签:bin,6B,01,模型,pyenv,LLM,显卡,echo,下载
From: https://www.cnblogs.com/wzkicu/p/18314188

相关文章

  • 【前端 01】HTML快速入门:构建你的第一个网页
    【前端01】HTML快速入门:构建你的第一个网页在Web开发的广阔世界中,HTML(HyperTextMarkupLanguage)是构建网页的基石。无论是简单的个人博客还是复杂的电子商务网站,HTML都是不可或缺的一部分。本文将带你快速入门HTML,通过编写你的第一个HTML文件,了解HTML的基本结构和一些重......
  • P3522 [POI2011] TEM-Temperature
    原题链接题解尽量直观地理解单调队列的作用首先,对于合法的一段,有如下性质A满足:当前的最高温度大于等于前面的最大的最低温度该性质对于段内每一个数都满足,所以对于第\(i\)天,我们可以找其前面的第一天\(j\)的最低温度大于\(i\)的最高温度,同时还要满足\((j,i]\)内......
  • Windows server 2012 设置开机自动登陆并启动启动程序
    设置开机自动登陆按住Win键,再按R键(Win+R),启动”运行”窗口;WindowsXP/2003/2008/2008R2输入”controluserpasswords2″(不含引号)回车;Windows7输入”netplwiz”(不含引号),回车;在”用户帐户”-“用户”界面中,取消”要使用本机,用户必须输入用户名和密码(E)”复选框;按”......
  • 从输入URL到页面展示到底发生了什么?--01
    在浏览器中输入一个URL并按下回车键后,会发生一系列复杂且有条不紊的步骤,从请求服务器到最终页面展示在你的屏幕上。这个过程可以分为以下几个关键步骤:URL解析DNS查询TCP连接发送HTTP请求服务器处理请求接收HTTP响应浏览器渲染页面1.URL解析(示例)URL(UniformRes......
  • CO2201 Software Engineering
    CO2201SoftwareEngineeringProjectAssignmentSpecification(30%)Dueon Friday26th July2024Objective  Theassignmentdevelopsthestudents’skillsinbasiccalculationsusedin   Financialservices.               ......
  • LLM基础模型系列:Prefix-Tuning
    ------->更多内容,请移步“鲁班秘笈”!!<------PrefixTuning和PromptTuning最大的区别就是向每层的TransformerBlock添加可训练的张量,而上一期的PromptTuning只是在输入的时候添加。此外,通过全连接层(具有两层的迷你MLP和介于两者之间的非线性激活函数)来进行桥接。下图左侧......
  • [CISCN2019 华北赛区 Day1 Web2]ikun 1
    目录题目分析jwtjwt介绍jwt伪造picklepickle.loads()pickle.dumps()urllib.unquote()Python反序列化题目分析先注册账号,然后登录目标是买到lv6,page参数代表不同页面写个脚本寻找存在lv6的页面importrequestsurl='http://48741e8e-30ab-4b63-a3a0-be94862b22......
  • 代码随想录算法训练营第十七天 | 530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的
    530.二叉搜索树的最小绝对差 题目:.-力扣(LeetCode)思路:中序遍历搜索二叉树,使用双指针来计算绝对值。代码:/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),......
  • [HNOI2010] 城市建设
    说一下大致思路,见这篇题解在往下传的过程中,会有动态边变成静态边,如于是可以递归进行reduction和contraction......
  • 切割 01 串 2.0
    ####题目描述jackle在校赛的时候出过一道"切割01串"的题目,如今他又出了一道切割01串的题目:给定一个长度为n的01串,定义如下操作为一次"切割":将长度大于1的字符串分割为两个非空的连续字串,记分割出来的左侧字串a中0的出现次数为C0,右侧字串b中1出现的......