MOSS模型量化版部署过程

文章目录

  • 项目背景
  • 配置环境与准备
  • 部署推理
    • 命令行部署
      • 报错1
      • 报错2:
  • 使用免费试用的阿里云GPU部署
  • 在AutoDL平台上部署

项目背景

2023年4月21日,复旦大学自然语言处理实验室正式开放MOSS模型,是国内首个插件增强的开源对话大语言模型。MOSS 相关代码、数据、模型参数已在 GitHub 和 Hugging Face 等平台开放,
项目地址:https://github.com/OpenLMLab/MOSS。

MOSS 对硬件要求还是较高,如果想本地部署的话,仍但需要非常大的开销。如果使用A100 或 A800 可以单卡运行,而使用NVIDIA 3090 只能并行多卡运行,GPU 显存至少需要 30GB。但如果想在消费级显卡上进行部署,就只能部署量化后的版本,如下图所示:
在这里插入图片描述
具体对应的模型版本如下:

moss-moon-003-sft-int4: 4bit量化版本的moss-moon-003-sft模型,约占用12GB显存即可进行推理。
moss-moon-003-sft-int8: 8bit量化版本的moss-moon-003-sft模型,约占用24GB显存即可进行推理。
moss-moon-003-sft-plugin-int4: 4bit量化版本的moss-moon-003-sft-plugin模型,约占用12GB显存即可进行推理。
moss-moon-003-sft-plugin-int8: 8bit量化版本的moss-moon-003-sft-plugin模型,约占用24GB显存即可进行推理。

由于本次实验所使用的配置如下:
CPU&内存:28核(vCPU)112 GB
操作系统:Ubuntu_64
GPU:NVIDIA Tesla P100
显存:16G

故选择 moss-moon-003-sft-int4 模型进行部署实验。

配置环境与准备

1、登录服务器,下载本仓库内容至服务器,进入MOSS目录

git clone https://github.com/OpenLMLab/MOSS.git
cd MOSS

2、创建python3.8版本的conda环境,并进入

conda create --name moss python=3.8
conda activate moss

3、根据 requirements.txt 安装环境依赖

pip install -r requirements.txt

4、安装使用量化模型所需的包(4/8-bit)

pip install triton

5、安装gradio,以便可以使用基于Gradio的网页demo

pip install gradio
pip install mdtex2html

其中,mdtex2html 是因为运行时有报错缺少此包,故这里可以提前装好。

6、下载模型文件,这里直接从huggingface上下载到服务器

# 安装 huggingface_hub
pip install huggingface_hub
# 进入模型文件的指定位置
cd /data/sim_chatgpt/

然后使用下面代码,将模型文件安装到指定位置

from huggingface_hub import snapshot_download
snapshot_download(repo_id="fnlp/moss-moon-003-sft-int4", cache_dir="./moss-moon-003-sft-int4")

下载完成后,得到model_path为:/data/sim_chatgpt/moss-moon-003-sft-int4/models–fnlp–moss-moon-003-sft-int4/snapshots/4e33058483a36ade9067f7f25f3127cb95386b01

部署推理

这里有两种方式,一种是命令行,在服务器上直接运行;一种是网页版,可以通过链接在浏览器访问。

命令行部署

这里我们要运行 moss_cli_demo.py 文件,在运行前需要修改model_path,如下:

parser.add_argument("--model_name", default="/data/sim_chatgpt/moss-moon-003-sft-int4/models--fnlp--moss-moon-003-sft-int4/snapshots/4e33058483a36ade9067f7f25f3127cb95386b01"

报错1

ValueError:
/data/sim_chatgpt/moss-moon-003-sft-int4/models–fnlp–moss-moon-003-sft-int4/snapshots/4e33058483a36ade9067f7f25f3127cb95386b01
is not a folder containing a .index.json file.

解决办法
将下面代码进行替换(注释掉)

# model = load_checkpoint_and_dispatch(
#     raw_model, model_path, device_map="auto", no_split_module_classes=["MossBlock"], dtype=torch.float16
# )
model = MossForCausalLM.from_pretrained(model_path, trust_remote_code=True).half().cuda()

报错2:

运行时报错,如下图所示:
在这里插入图片描述
python: /project/lib/Analysis/Utility.cpp:136: bool mlir::supportMMA(mlir::Value, int): Assertion `(version == 1 || version == 2) && “Unexpected MMA layout version found”’ failed.
遇到问题:https://github.com/OpenLMLab/MOSS/issues/149

issue中有人提到:

  • 算力小于70的显卡都不支持Float8 and Float16,P100 P40算力版本都是60+所以暂时只能使用Float32,但是显存又不够。NVDIA V100 NVIDIA TITAN V及其以上显卡可以支持。
  • triton官网说对fp16量化模型支持不完善, p100/40等老显卡都会报如上的错. 需要等他们写入更多老显卡支持。
    另外有人实测V100 32GB可以跑int4量化模型.

解决方法如下
将triton换成auto-gptq,这样就绕过了triton验证.

git clone https://github.com/PanQiWei/AutoGPTQ
conda create -n moss python==3.10
cd MOSS
python setup_env.py --install_auto_gptq

另外,需要注意需要修改两个地方:
1、修改model
2、修改model_path

运行

python moss_cli_demo.py

但我并没有尝试成功,一个原因在于,github链接中没有setup_env.py,只有setup.py,另一个原因是即使按照github链接中提供的安装方式,无法安装成功。
在这里插入图片描述
由于以上问题并没有得到解决,故决定换一台GPU进行尝试(不在一棵树上吊死)。
尝试使用可以免费试用的阿里云GPU(用的V100,支持资源包抵扣)服务器来部署。

使用免费试用的阿里云GPU部署

1、打开网址:https://free.aliyun.com/,并进行登录;
2、左侧产品类别中选中机器学习平台API后,选择 5000CU*H 3个月,并点击免费试用:
在这里插入图片描述
3、点击后,选择个人认证,继续认证成功即可:
在这里插入图片描述
4、开通机器学习PAI并创建默认工作空间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、创建DSW实例,并选择V100,选择官方镜像
在这里插入图片描述
在这里插入图片描述
选择官方镜像:
pytorch:1.12-gpu-py39-cu113-ubuntu20.04
在这里插入图片描述

6、等待启动
在这里插入图片描述
但无奈一直启动失败…(后面考虑换个时间再试试)
在这里插入图片描述
后过了两三个小时后,可以重启成功了(所以不要放弃,哈哈),点击打开进入。
在这里插入图片描述
选中Terminal
在这里插入图片描述
先用git clone命令下载MOSS项目

git clone https://github.com/OpenLMLab/MOSS.git

在这里插入图片描述
进入MOSS目录,并安装所需要的包

cd MOSS
pip install -r requirements.txt

在这里插入图片描述
先试下torch是否可用(因为配置机器的时候选的是1.12的torch)
在这里插入图片描述
torch报错,可以用pyotrch官网命令重新安装下torch

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116

再来看下torch是否可用
在这里插入图片描述
将默认加载的模型设置为moss-moon-003-sft-int8

vi moss_cli_demo.py
# 修改第第16行 default = 'fnlp/moss-moon-003-sft-int8'

运行moss_cli_demo.py文件

python moss_cli_demo.py

由于我们没有提前下载好要加载的模型,运行代码后会自动下载指定的模型。
在这里插入图片描述
下载模型速度还是很快的,大概半小时左右。
但运行的时候,没办法运行成功(也没有报错,加载数据后就没后续了),大概率是显存不够的原因,这里的显存只有16G,故又讲model_name改回原来的 ‘fnlp/moss-moon-003-sft-int4’,
执行python moss_cli_demo.py命令。
在这里插入图片描述
就可以和MOSS进行对话了
在这里插入图片描述
推理的速度还是比较慢的,感觉用了1分钟左右才输出答案。

GPU使用率及显存占用情况如下:
在这里插入图片描述
可以看出基本上占了14个G左右了,随着对话的增多,显存还会继续增加。

在AutoDL平台上部署

地址:https://www.autodl.com/home
租一台32G显存的V100
在这里插入图片描述
版本配置如下:
在这里插入图片描述
选好后,点击立即创建。
在这里插入图片描述
在这里插入图片描述

使用提供的ssh账号和密码进行登录。
在这里插入图片描述
进入conda环境

source activate

安装git-lfs:https://www.cnblogs.com/allmignt/p/12353756.html

下载本仓库内容至本地/远程服务器

git clone https://github.com/OpenLMLab/MOSS.git 

进入MOSS,安装所需的包

cd MOSS
pip install -r requirements.txt 

因为模型文件比较大,故需要将模型文件下载到数据盘中,以免造成数据盘内存溢出。

# 进入数据盘
cd /root/autodl-tmp/
git clone https://huggingface.co/fnlp/moss-moon-003-sft-int8.git

修改模型文件加载路径

model_path = '/root/autodl-tmp/moss-moon-003-sft-int8'

运行 python moss_cli_demo.py即可。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41427.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中的复制粘贴教程

Python中的复制粘贴教程 在Python编程中,复制和粘贴是极其常见的操作。虽然这似乎是很基础的操作,但在实际应用中仍有很多人不知道如何正确地复制和粘贴代码。本文将介绍Python中的复制粘贴教程,提供一些实用的技巧和小窍门,帮助…

部落冲突-家乡-兵种(训练营兵种、暗黑训练营兵种)

1 训练营兵种 1.1 野蛮人 1.1.1 野蛮人 这些无畏的勇士长着引人注目的胡子,他们依靠着壮硕的肌肉在敌人的村庄肆虐。训练一队野蛮人,他们将为您出生入死! 1.1.2 超级野蛮人 生命值更高、力量更强、速度更快,最重要的是秀发更浓密。成为超级…

2020-12-22

新开普电子股份有限公司_任意文件下载 物联网平台 GET /api/device/foreignId//…%255c…%255c…%255c…%255c…%255c…%255c…%255c…%255cwindows/win.ini HTTP/1.1 Accept: text/html,application/xhtmlxml,application/xml;q0.9,/;q0.8 Accept-Encoding: gzip,deflate Hos…

新开普一卡通系统(Ecard-T4.5 1200) 补卡-挂失常见问题汇集

1. 挂失补卡后的bug bug描述:某用户在进行挂失操作时,选择“是否立即补卡”,如果放在读卡器上的卡是一张已发的卡的话,该用户将造成该用户cardno 的卡库不一致。 原因分析:使用的数据库表:rec_card_make , …

蚂蚁金服斥资2.5亿入股A股公司新开普旗下完美数联

雷帝网 乐天 1月8日报道 A股公司新开普日前发布公告,宣布蚂蚁金服旗下子公司上海云鑫及公司控股子公司完美数联签署了《业务合作框架协议》。 截至公告日,新开普持有完美数联85.7143%股权。上海云鑫拟出资2.5亿元对完美数联增资。 交割全部完成后&#x…

TensorFlow第二届开发者峰会

天体物理学家使用 TensorFlow 分析开普勒任务中的大量数据,以发现新的行星; 医学研究人员利用 TensorFlow 机器学习技术来评估一个人心脏病发作和中风的几率; 科学家在非洲用 TensorFlow 检测木薯植物疾病,从而提高产量并帮助更…

一、二线城市 IT 公司大盘点!建议收藏

点击关注公众号,回复“1024”获取2TB学习资源! 一直以来,总有读者来询问,是否可以整理一下一、二线城市的互联网IT企业,这样方便后面的跳槽、找工作有一个参考。 所以,应大家的强烈需求,今天给大…

【产业互联网周报】微软、谷歌再布局边缘云;美团放弃公有云业务;开普云登陆科创板...

关注ITValue,看企业级最新鲜、最具价值报道! 图片来源:unsplash 【产业互联网周报是由钛媒体TMTpost发布的特色产品,将整合本周最重要的企业级服务、云计算、大数据领域的前沿趋势、重磅政策及行研报告。】 产业互联网&#xff08…

php会议签到签退系统,会议签到管理系统,无障碍会议签到系统,一卡通会议签到系统,会议签到系统 - 新开普(NewCapec)...

会议签到系统 会议签到管理系统是对会议信息的一种统计和详细记录,对参加会议人员进行统一的管理,及时、准确地统计与会人员的迟到、早退、未参加等各种会议状态。 会议签到系统主要是在一卡通系统平台下开发的针对学校企业有关会议管理的软件。一卡通会…

云南酒店一卡通信息化建设,昆明宾馆一卡通管理系统,新开普智慧酒店整体解决方案

一、云南新开普酒店一卡通管理系统概述: 云南新开普酒店一卡通系统包括:一卡通系统管理中心、结算中心、制卡中心、监控平台、自助查询、银行圈存平台、掌上服务平台。 昆明酒店一卡通系统通过先进的管理系统,实现对酒店的停车、人员、消费…

开普云JAVA开发_【JAVA】使用Java SPI ServiceLoader进行Java应用插件模块化开发

背景:在进行业务定制时需要考虑不同接口的服务实现,每个局点所要求的接口大体都不一致,要求接口服务能够插件化方式提供; 方案分析: 1)采用OSGI框架进行开发,但是考虑到OSGI的框架太重,需要引入…

开普用的oracle管理工具,Oracle常用管理工具及其入门

Oracle常用管理工具及其入门 (2012-06-11 14:50:14) 标签: it (一)Oracle Universal Installer 1.用于安装、升级或删除软件组建、还用于创建数据库 2.基于Java引擎 3.具有一下特性 自动的相关性解析 可以进行基于Web的安装 跟踪组件和套件安装的清单 可卸载已安装的…

一卡通充值系统c语言,一卡通充值,一卡通充值中心,一卡通充值系统,一卡通充值转账系统 - 新开普(NewCapec)...

一卡通充值转账系统 1. 企业卡充值转账系统的特点 系统提供POS充值、软件充值、银行自助圈存充值、批量转账等充值方式。 所有充值操作,全部采用联网模式在线操作,以确保安全。 充值操作操作权限划分清晰,责任明确,只允许被授权的…

html学生信息处理,宿舍管理系统,学生宿舍管理,学生宿舍管理信息系统,学生宿舍管理系统 - 新开普(NewCapec)...

学生宿舍管理系统 正普数字化校园宿舍管理系统是为学校宿管科老师方便管理学生住宿情况设计的信息管理系统,通过宿舍管理系统可实时掌握学校公寓使用情况、每个公寓楼房间住宿情况、全校学生住宿情况、每个学生住宿详细信息等等。它是基于网络的B/S结构程序&#xf…

高校人事管理系统oracle,人事信息管理,人事管理系统,人事管理系统软件,人事信息管理系统 - 新开普(NewCapec)...

人事信息管理系统 正普数字化校园人事信息管理系统主要是实现高校教职工相关信息的统一管理,各种手续办理流程的统一管理。采用数据仓库技术、分布式信息处理技术构建,运行于校园网络环境下,符合有关国家标准、教育部标准、行业标准&#xff…

计算机学院副书记谈学工管理系统登录,学工管理信息系统,学工系统,学工管理系统 - 新开普(NewCapec)...

学工管理系统 数字化校园学生学工管理系统涵盖高校学生在校活动的所有环节,包括思想教育、评优评先、课外赛事、勤工助学、心理指导、违纪处分、保险管理、社团活动、社会工作、学生就业、军训管理、系统管理、用户管理等等功能模块。系统是基于校园网/互联网的浏览…

人事考勤系统服务器端,考勤管理,考勤管理系统,人事考勤管理系统,考勤系统 - 新开普(NewCapec)...

考勤系统 人事考勤管理系统主要包括:参数设置、设备管理、人员管理、日常操作、报表查询五个模块。具有灵活的考勤规则设置、强大的排班功能、丰富的报表数据,分为B/S版和C/S版两种,可以分别满足大中型、小型企事业单位的需要。 考勤管理系统…

新开普实习 UI设计初体验

清明节前的十天,我们学校组织参加了新开普的实习,实习时间是十天,我选的项目是UI设计,在此处做一下每天所做和感受的记录: 2018.3/27 学习内容:APP应用图标,ios应用图标规范,ios安…

云南新开普智慧校园一卡通解决方案,K12智慧校园信息化建设解决方案

一、数字化建设是未来校园的建设核心 信息化2.0行动计划 在2022年落实“三全两高一大” 构建互联网教育大平台 数字化建设首要目标即校园安全 校园安全涵盖教学安全、食品安全、 生活饮食安全、交通安全等方面 二、K12智慧校园介绍 数字化的生活方式,让师生…

新开普生产实习【智能家居灯控系统】

文章目录 Java学习第一天下午:Java基础语法1、输出2、标识符3、常量 变量4、显示一个界面5、显示一个弹窗6、运算符7、流程控制语句8、循环♻️9、Day1 小作业 Java基础语言第二天上午1、Java中类的定义2、成员变量的定义3、成员方法的声明4、类的使用5、方法的重载…