LLM探索:环境搭建与模型本地部署

1前言

最近一直在炼丹(搞AIGC这块),突然发现业务代码都索然无味了…

上次发了篇AI画图的文章,ChatGPT虽然没法自己部署,但现在开源的LLM还是不少的,只要有一块差不多的显卡,要搞个LLM本地部署还是没问题的。

本文将介绍这以下两个国产开源LLM的本地部署

  • ChatGLM-6B

  • MOSS

本文先简单的把模型跑起来,后续将继续我近期在LLM方向的一些探索记录~

2概念

开始之前,先来看看一些基础概念。

AIGC

引用以下 mbalib 的内容

AIGC(AI Generated Content)即人工智能生成内容,又称“生成式AI”(Generative AI),被认为是继专业生产内容(PGC)、用户生产内容(UGC)之后的新型内容创作方式。

互联网内容生产方式经历了PGC——UGC——AIGC的过程。PGC(Professionally Generated Content)是专业生产内容,如Web1.0和广电行业中专业人员生产的文字和视频,其特点是专业、内容质量有保证。UGC(User Generated Content)是用户生产内容,伴随Web2.0概念而产生,特点是用户可以自由上传内容,内容丰富。AIGC(AI Generated Content)是由AI生成的内容,其特点是自动化生产、高效。随着自然语言生成技术NLG和AI模型的成熟,AIGC逐渐受到大家的关注,目前已经可以自动生成文字、图片、音频、视频,甚至3D模型和代码。

最近很多的ChatGPT、AI画图,就都属于这个领域。

LLM

引用以下 wikipedia 的内容

A large language model (LLM) is a language model consisting of a neural network with many parameters (typically billions of weights or more), trained on large quantities of unlabeled text using self-supervised learning or semi-supervised learning. LLMs emerged around 2018 and perform well at a wide variety of tasks. This has shifted the focus of natural language processing research away from the previous paradigm of training specialized supervised models for specific tasks.

中文也就是「大语言模型」,现在很火的ChatGPT就是这个LLM的代表,大模型有一个关键的属性:参数量,参数量的大小决定了大模型的能力(不能说是绝对的,但肯定是正相关)。

以下是常见LLM的参数量:

LLM名称参数量
ChatGPT 3.5175B
ChatGLM6B
MOSS16B
LLaMA7B/13B/33B/65B

篇幅关系只列举这几个,更多的可以看文后的参考资料。

3搭建环境

硬件

首先要有一台搭载了NVIDIA显卡的Linux系统服务器/电脑。

显存需要达到8G及以上,不然跑不动~

系统推荐使用最新的Ubuntu(22.04)或者其衍生版,以下是我在测试过程中使用的两台服务器配置。

服务器1

  • CPU:Intel(R) Core(TM) i9-10940X CPU @ 3.30GHz

  • 内存:64G

  • 显卡:NVIDIA GeForce RTX 2080 Ti

服务器2

  • CPU:Intel(R) Xeon(R) Gold 5318Y CPU @ 2.10GHz x2

  • 内存:128G

  • 显卡:Tesla T4 x4

软件

说完了硬件,再看看软件。

驱动

首先,需要显卡驱动,Ubuntu系的发行版安装显卡驱动比喝水还容易,这就是为啥推荐炼丹用Ubuntu的理由。

PS:完全可以一键完成,不需要再去网上查什么复制了几百遍的博客然后下载一堆东西又是编译又是卸载nouveau啥的了~

Ubuntu桌面版可以直接用「软件更新」App一键安装显卡驱动。

Ubuntu服务器版本,使用 nvidia-detector 命令检测需要安装的驱动版本,示例:

$ nvidia-detector
nvidia-driver-530

使用 ubuntu-drivers list 获取可安装的驱动列表,示例:

$ ubuntu-drivers list
nvidia-driver-418-server, (kernel modules provided by nvidia-dkms-418-server)
nvidia-driver-530, (kernel modules provided by linux-modules-nvidia-530-generic-hwe-22.04)
nvidia-driver-450-server, (kernel modules provided by linux-modules-nvidia-450-server-generic-hwe-22.04)
nvidia-driver-515, (kernel modules provided by linux-modules-nvidia-515-generic-hwe-22.04)
nvidia-driver-470-server, (kernel modules provided by linux-modules-nvidia-470-server-generic-hwe-22.04)
nvidia-driver-525-server, (kernel modules provided by linux-modules-nvidia-525-server-generic-hwe-22.04)
nvidia-driver-515-server, (kernel modules provided by linux-modules-nvidia-515-server-generic-hwe-22.04)
nvidia-driver-510, (kernel modules provided by linux-modules-nvidia-510-generic-hwe-22.04)
nvidia-driver-525, (kernel modules provided by linux-modules-nvidia-525-generic-hwe-22.04)
nvidia-driver-470, (kernel modules provided by linux-modules-nvidia-470-generic-hwe-22.04)

然后使用 ubuntu-drivers install nvidia-driver-530 来安装驱动,示例:

$ ubuntu-drivers install nvidia-driver-530All the available drivers are already installed.

就这么简单

PS:当然非要自己去NVIDIA官网下载也可以,具体可以看看参考资料。

Python

搞AI,Python是必备的,但我们不直接使用系统的Python环境,而是使用conda来管理。

推荐使用 miniconda3 比 anaconda 轻量。

按照官网说明按照 miniconda3 之后,只需要使用以下命令即可创建指定版本的python环境

conda create -n 环境名称 python=3.10

如果遇到网络环境问题,可以参考我之前这篇文章,配置一下国内镜像:配置pip国内镜像加快python第三方库安装速度~

4ChatGLM-6B

介绍

这是清华和智谱公司搞的开源LLM,截止本文撰写时,其在国产开源LLM里面算是天花板的存在了~

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。

硬件需求

量化等级最低 GPU 显存(推理)最低 GPU 显存(高效参数微调)
FP16(无量化)13 GB14 GB
INT88 GB9 GB
INT46 GB7 GB

本地部署

下载项目代码

git clone https://github.com/THUDM/ChatGLM-6B.git

PS:也可以使用我 fork 魔改的版本,主要做了以下修改:

  • 部署和模型微调默认开启多卡加速

  • 重写API接口,更直观

换成以下命令即可

git clone https://github.com/Deali-Axy/ChatGLM-6B.git

创建虚拟环境

建议使用 conda 管理

conda create -n chatglm python==3.8

安装依赖

cd ChatGLM-6B
conda activate chatglm
pip install -r requirements.txt
conda install cudatoolkit=11.7 -c nvidia

PS:没有安装 cudatoolkit 的话,会报 RuntimeError: Library cudart is not initialized 错误

但 issues 里也有人说可以通过使用CPU输出量化模型后直接调用的方式解决,暂未尝试。

issues 地址: https://github.com/THUDM/ChatGLM-6B/issues/115

下载模型和启动

项目代码里有命令行和web界面两种demo,任意选一个运行,程序会自动从 huggingface 下载预训练模型。

PS: huggingface 的模型理论上是可以直接下载的,如果遇到网络问题,请自行使用代理或者从官方提供的某云盘下载模型。

# 命令行 demo
python cli_demo.py
# 使用 Gradio 实现的简单Web界面
python web_demo.py

Gradio 的默认端口是7860,可以通过在 launch() 方法里传入 server_port 参数自定义端口。

使用量化模型

如果显存没有13G以上,则无法运行FP16精度模型,只能运行量化后的模型,需要修改一下代码。

打开上述的 cli_demo.pyweb_demo.py 代码

找到以下加载模型的代码,修改一下参数

model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()

将上面的代码修改为下面这样以使用量化模型

# 按需修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).quantize(4).half().cuda()

运行效果

01d85c7808eae14e7395ad8bada77956.png
image

多卡加速

如果显卡多,可以使用多卡运行以加速推理。

依然是打开上述的 cli_demo.pyweb_demo.py 代码。

找到以下加载模型的代码

model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()

修改为

from utils import load_model_on_gpus
model = load_model_on_gpus("THUDM/chatglm-6b", num_gpus=4)

num_gpus 参数为要使用的显卡数量

我看了 load_model_on_gpus 这个方法的代码,它是通过 auto_configure_device_map 方法把 transformer分成30层,然后再分配到指定数量的显卡上,没法像 CUDA_VISIBLE_DEVICES 环境变量一样通过显卡编号来指定,只能按顺序来分配。

如果机器上同时要运行其他模型,可以考虑先运行这个ChatGLM,再运行其他的,或者重写 auto_configure_device_map 方法,让其可以灵活指定显卡。

授权

模型不可以直接商用,据说商用需要购买一年180w的许可证。

5MOSS

介绍

这个是复旦开源的大模型,使用下来和ChatGLM最大的区别是推理速度特别慢

MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到,后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。

硬件需求

量化等级加载模型完成一轮对话(估计值)达到最大对话长度2048
FP1631GB42GB81GB
Int816GB24GB46GB
Int47.8GB12GB26GB

本地部署

下载代码

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

创建虚拟环境

建议使用 conda 管理

conda create -n moss python==3.8

安装依赖

cd MOSS
conda activate moss
pip install -r requirements.txt
conda install cudatoolkit=11.7 -c nvidia

下载模型和启动

项目代码里有命令行和web界面两种demo,任意选一个运行,程序会自动从 huggingface 下载预训练模型。

# 命令行 demo
python moss_cli_demo.py
# 使用 Gradio 实现的简单Web界面
python moss_web_demo_gradio.py

修改默认模型和多卡加速

因为MOSS对显存的要求比较高,因此默认用的是4位量化的模型,这里我使用一台4块T4的服务器来部署,所以直接使用FP16模型。

修改 moss_web_demo_gradio.py,找到以下代码

parser.add_argument("--model_name", default="fnlp/moss-moon-003-sft-int4",...)

default 参数改为 fnlp/moss-moon-003-sft

然后再设置一下多卡加速,把GPU参数设置为四个显卡的编号

parser.add_argument("--gpu", default="0,1,2,3", type=str)

然后启动,就可以看到四张显卡都吃满了

4dfe3705b793107d68eaee00b16595b5.png
image

使用下来最大的感受就是慢,往往要一两分钟才能生成一个回答。

我看了下GitHub issues,有很多人也提出了同样的问题。两张A100还需要10s起步,100s左右的生成时间,看来短时间内是无解了,只能等官方优化了~

详见:

  • https://github.com/OpenLMLab/MOSS/issues/87

授权

模型采用 GNU AFFERO GENERAL PUBLIC LICENSE 许可证,可以免费商用。

6参考资料

  • https://wiki.mbalib.com/wiki/AIGC

  • https://en.wikipedia.org/wiki/Large_language_model

  • https://gitee.com/oschina/awesome-llm

  • https://github.com/Hannibal046/Awesome-LLM

  • 安装 NVIDIA 显卡驱动 - https://www.zhihu.com/tardis/zm/art/59618999?source_id=1003

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

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

相关文章

超越诺奖?生物界「ChatGPT」首次实现从零合成全新蛋白,登Nature子刊!喂了2.8亿种氨基酸序列...

新智元报道 编辑:好困 Aeneas 【新智元导读】这家成立三年的小初创公司,首次利用深度学习语言模型合成出了自然界中不存在的全新蛋白质,引爆蛋白质设计革命。 人工智能的应用,已经极大地加速了蛋白质工程的研究。 最近&#xff…

【R】Mac如何配置R和RStudio

前言 本篇文章将讲述如何在Mac上配置R和RStudio,惯例是先看看chatgpt会怎么回答这个问题: miniconda配置R和RStudio( Mac m系列芯片暂不适用) 安装R 在终端中执行一下命令 conda search -c conda-forge r-base # 备注-c conda…

深度学习实战26-(Pytorch)搭建TextCNN实现多标签文本分类的任务

大家好,我是微学AI,今天给大家介绍一下深度学习实战26-(Pytorch)搭建TextCNN实现多标签文本分类的任务,TextCNN是一种用于文本分类的深度学习模型,它基于卷积神经网络(Convolutional Neural Networks, CNN)实现。TextCNN的主要思想是使用卷积操作从文本中提取有用的特征,并…

写在2023年年中

写在2023年年中 收拾旧山河再出发 很久没有写规划了,博客也很少写,着实是太懒了。想想自己年纪也不小了,加上程序员的环境越来越不好,总得想想自己的出路不是。 目标 提升系统设计能力保持算法刷题能力(一般面试需要)知识输出能…

英语学习-29190410雅思图表作文写作--bar grapgh

主要参考来源:https://www.bilibili.com/video/av23014883?p2 Simon雅思 搜狐 http://www.sohu.com/a/130635097_372408 注意事项 开头语不能照抄题干中的句子,阅卷老师不会评估照抄的句子,所以你抄上去只是在浪费时间 请注意时态&…

四六级作文模板对提高写作成绩是否有用?让人工智能给我这套用模板的文章打分看看

最近的四六级考试又又又要开始啦,这里更新一下作文模板,来自B站大表哥的高级四六级通用模板; 原视频链接:【【救命抢分】四六级写作全能超强模板!(2022)| 四级672六级674 | 四六级作文模板】 ht…

雅思作文模板.html,【雅思备考外国视角】雅思大作文discuss both views模板

编者按:这是从国外一个考官的的博客里搬过来的一篇关于雅思大作文discus both views型的大作文改如何作答的一些结构上的归纳,有一些借鉴意义,特分享给大家。 A Task 2 questions often ask you to Discuss both views and give your own opi…

汉字无法被计算机替代作文,雅思大作文范文:老师会被电脑替代吗

新东方在线雅思频道特为大家收集整理了雅思大作文范文:老师会被电脑替代吗,供大家阅读参考。认真研读一定的雅思范文及作文模板可以帮助我们检验自己的写作水平,并能很好地吸收和应用优秀范文里的优秀内容~更多雅思报名官网的最新消息&#x…

托福改革后的Academic Discussion如何拿高分?

这次托福改革最大的变化当属写作部分。原来的Task 2独立写作取消,替换成了一篇10分钟长度的Academic Discussion。写这篇小短文之前是需要考生先阅读一小段文章,是关于一个教授引出的一个课堂讨论的话题以及两位持不同观点的学生给出的自己的想法。 我们…

雅思作文未来计算机的应用,9分考官级雅思大作文范文之电脑技术的忧虑

9分考官级雅思大作文范文之电脑技术的忧虑 2017年08月07日15:24 来源:小站整理 参与(10) 阅读(29402) 摘要:本文出自考官级作者之手,two part题型,讨论人类对电脑技术的过度依赖。对于这种级别的雅思写作范文,大家可以…

你真的会使用雅思写作模板吗?

中国国际教育网讯:在教学过程中,经常有学生问及:“我要背范文吗?”,“ 老师,多给点实用范文,让我能确保6分。”笔者在教学实践中发现,机械地背诵范文对任何考生而言都无太大意义,只…

Cursor

一、什么是Cursor 官网:Cursor | Build Fast Cursor是一个开源的AI编程编辑器。开源地址 https://github.com/pricing 目前在国内是可以不需要其他东西,可以直接访问的。而且目 「下面是官方的介绍:」 Cursor 是一个为 AI 编程而做的编辑…

大语言模型技术原理

在今天这个时代,人们的工作和生活已经离不开数据访问,而几乎所有平台背后的数据存储和查询都离不开数据库。SQL作为一种数据库的查询和处理语言历史悠久,最早由IBM于上世纪70年代初研究关系数据模型时提出,后续发展为一种广泛使用…

2023年AI十大展望:GPT-4领衔大模型变革,谷歌拉响警报,训练数据告急

新年伊始,大模型的话题热度不减。2022年11月底,ChatGPT展现的惊人能力将大模型研究和应用热度推向高潮,人们激烈讨论着这个高级“物种”的推出意味着什么,比如是否会颠覆搜索引擎市场格局。踏入2023年,这不禁让我们对G…

和ChatGPT大战多个回合,我知道了这些真相

最近,ChatGPT在国内外社交平台上可谓是火出圈了。作为一款人工智能语言模型,它可以和人类以对话的方式进行互动,比你早已熟知的Siri,小度还有小爱同学要更加智能与专业。因为它除了回答问题外还能进行创作,比如写小作文…

香港攻略 之 首次初次第一次去香港需要注意什么准备什么(仅供参考)

香港攻略 之 首次初次第一次去香港需要注意什么准备什么(仅供参考) 目录 香港攻略 之 首次初次第一次去香港需要注意什么准备什么(仅供参考) 一、简单介绍 二、可提前准备或者注意事项 1、根据去香港的目的,旅游、…

香港服务器哪家好?香港机房前十排名

香港服务器哪家好?香港那么多的机房,香港服务器哪个机房最好呢?香港本地的机房最好,如果是大陆的最好找一级代理机房,除此以外,别无其他!一般现在阿里云香港云服务器或腾讯云香港云服务器所处的香港机房都很正规,毕竟…

psn注册什么服务器,怎么注册PSN港服账号?PSN港服官网注册教程

PSN港服和国服的区别 在购置PS4的时候,很多人都会优先考虑港版。价格便宜是一回事,主要是港服可玩的游戏比国服多,这才是玩家最关心的。这是因为审查制度不同,所以很多带有暴力成分的游戏(也就是许多玩家偏爱的那种类型的游戏)都不…

香港服务器 微信支付,如何给微信开通香港钱包(WeChat Pay HK)

本文介绍一下如何微信香港钱包,暂时不知道有啥用。不管辣么多了,先开通了再说! 特别提醒:18年1月份的时候,开通香港钱包赠送余额的活动。目前这个活动已经结束,大家可以等待有活动再开通! 之前我…

港大全面封杀ChatGPT,AI作弊丑闻震惊全世界!

上一篇:阿里巴巴裁员19576人! 转载自:新智元 【导读】ChatGPT,已经开始在全世界的高校里肆虐。最近,港大打响了国内AI反击战第一枪。 随着AI生成的文本与人类的写作越来越像,高中和大学的老师们快被疑似AI作…