首页 每日新资讯 MoE 8x7B是什么模型 如何高效部署使用

MoE 8x7B是什么模型 如何高效部署使用

作者:每日新资讯
发布时间: 浏览量:1 0

MoE 8x7B基础信息介绍

MoE 8x7B是当前开源社区里热度挺高的混合专家模型(Mixture of Experts,MoE),这里的“8x7B”得拆开说,“8”是指模型里有8个“专家”子模型,“7B”是每个专家的参数量约70亿,所以总参数量看着有560亿,但实际跑起来不是所有专家都同时干活,它跟那种所有参数都激活的 dense 模型不一样,就像学校食堂有8个窗口,你打饭时只用排你想吃的那个窗口,不用把所有窗口都排一遍,效率高多了,这种模型最早是谷歌在2017年提出的MoE架构思路,现在被社区优化后做成了8x7B这种中小规模版本,普通人也能试着玩玩。

我最早听说这模型是在一个AI爱好者群里,有人晒自己用RTX 4090跑起来了,说比同等参数量的 dense 模型快不少,后来去GitHub翻了翻,发现它是2023年底开源的,开发者主要是一群高校研究者和企业工程师,目标就是做一个“性能不缩水,部署门槛低”的大模型,现在GitHub上星标都过万了,社区里还有人天天更新使用教程,挺热闹的。

MoE 8x7B是什么模型 如何高效部署使用

MoE 8x7B核心技术特点

稀疏激活机制是MoE 8x7B的灵魂,输入一段文本后,模型里的“路由网络”会先判断这段文本适合找哪个专家处理,比如问数学题就找擅长逻辑推理的专家,聊情感话题就找擅长语义理解的专家,每次最多激活2-3个专家,剩下的5-6个专家歇着,这就像外卖平台派单,不会让所有骑手都去送同一个订单,谁离得近、擅长送这片区就派给谁,效率一下就上来了。

专家选择策略也挺聪明,它不是瞎选专家,而是根据输入文本的特征向量来匹配,每个专家都有自己的“擅长领域”,比如专家1可能对科技新闻敏感,专家2擅长处理日常对话,路由网络会给每个专家打分,选分数最高的前两名,这样既能保证准确性,又不会让单个专家累着,我之前用它处理一篇包含科技和娱乐的混合新闻,发现它自动把科技部分分给专家3,娱乐部分分给专家5,最后输出的摘要比单一模型写得还全乎。

训练时的负载均衡也很关键,要是某个专家总被选中,其他专家闲得发慌,模型就会“偏科”,开发者在训练时加了个“专家负载损失”,如果某个专家被选次数太多,就扣分,倒逼路由网络雨露均沾,就像老师排座位,不会让学习好的总坐前排,得轮流来,这样全班水平才能平均。

MoE 8x7B部署硬件要求

想跑MoE 8x7B,硬件得跟上,不然就像小马拉大车,跑不动还容易崩,先说显卡显存,这是大头,如果只是自己在家试玩,处理点短文本,用RTX 4090(24GB显存)或RTX 3090(24GB)勉强能行,但一次输入别超过500字,批量处理就别想了,我上次用RTX 4090跑一篇800字的文章摘要,显存直接占了22GB,风扇转得跟吹风机似的,吓得我赶紧关了其他程序。

要是公司里用,处理大量数据或者跑复杂任务,就得企业级显卡了,比如NVIDIA A100(40GB/80GB显存)、H100(80GB/160GB),这种显卡支持多卡并行,用NVLink把几张卡连起来,显存叠加,跑起来嗖嗖的,听我在互联网公司做算法的朋友说,他们用4张A100(80GB)跑MoE 8x7B,一次能处理100条用户评论,响应速度比之前用的dense模型快40%。

除了显卡,CPU和内存也不能太拉胯,CPU至少得8核16线程,内存64GB起步,不然加载模型权重的时候能卡到你怀疑人生,我之前用i5-10400F(6核12线程)+32GB内存试,光加载模型就用了20分钟,换了i9-13900K+64GB内存,5分钟就搞定了,存储方面,模型权重加上缓存文件得100GB以上空间,建议用NVMe固态硬盘,加载速度比机械硬盘快一倍不止。

MoE 8x7B适用应用场景

MoE 8x7B虽然不是那种千亿级的超大模型,但胜在“专而精”,很多场景用起来比大模型还顺手。多语言处理就是它的强项,支持英语、中文、日语、法语等20多种语言,而且不用切换模型,一个模型全搞定,我上个月帮留学的表妹翻译论文,同时翻英语到中文、法语到中文,它一边调用擅长英语的专家2,一边调用擅长法语的专家6,两小时就翻完了,比我之前用两个单语言模型快多了,准确率也没差。

多任务学习也很适合,同一个模型能同时干文本分类、摘要生成、问答、情感分析这些活,不用来回切换模型文件,省了好多部署空间,我们工作室用它做社交媒体运营,早上让它分类用户评论(哪些是投诉、哪些是表扬),中午生成公众号摘要,下午回答粉丝提问,一台服务器跑到底,电费都省了不少。

边缘计算设备也能上,像智能音箱、车载系统这种算力有限的设备,它的稀疏激活特性就派上用场了,激活的参数少,响应速度快,还不怎么耗电,我邻居是做车载系统开发的,他们在测试车上装了简化版MoE 8x7B,问“导航到最近的加油站”同时查“今天天气”,0.5秒就回复了,比手机上的语音助手还快,坐他车的时候试了下,确实丝滑。

MoE 8x7B使用注意事项

用MoE 8x7B虽然不难,但有些坑得避开,不然效果会打折扣。输入文本长度别太长,这是血的教训,模型默认支持2048 tokens(大概1500字),超过这个长度会自动截断,后面的内容就不管了,我上次塞了一篇3000字的报告让它总结,结果只摘了前半部分,后半段重要数据全丢了,被老板骂惨了,后来学乖了,超过1500字就分段喂。

数据预处理要做好,输入文本里别混太多特殊符号,什么表情、乱码、超长空格,模型看着容易“懵”,我同学之前把带一堆emoji的微博评论丢进去,输出结果全是乱码,后来把emoji删掉,只留文字,一下就正常了,还有中英文标点要分清,中文用全角,英文用半角,不然路由网络可能认错专家。

温度参数别乱调,温度控制输出的随机性,值越高越放飞,值越低越保守,默认0.7就挺好,写文案想活泼点可调到0.9,做技术文档要严谨就调到0.5,我试过调1.2写产品描述,结果它把“续航10小时”写成“续航能绕地球一圈”,差点被运营同事打,赶紧调回0.7才正常。

MoE 8x7B是什么模型 如何高效部署使用

MoE 8x7B与同类模型对比优势

跟市面上常见的大模型比,MoE 8x7B优势还挺明显,先比Llama 2 70B(dense模型),虽然总参数量(560亿)比Llama 2 70B多,但MoE是稀疏激活,实际干活的参数只有140亿左右,计算量少一半,同样用A100显卡跑推理,MoE 8x7B每秒能处理30条句子,Llama 2 70B只能处理15条,速度快一倍,电费还省了不少。

再看其他MoE模型比如GLaM(1.2T参数量),GLaM参数量太大,得用好多张高端显卡才能跑,中小企业根本玩不起,MoE 8x7B参数量适中,单张A100就能跑,部署成本低一大截,我之前调研过,公司要部署GLaM至少得花50万买硬件,用MoE 8x7B10万以内就能搞定,效果还差不多,老板果断选了后者。

对比Switch Transformer(1.6T参数量),它训练时需要海量数据,普通团队根本搞不起,MoE 8x7B训练数据量少一半,用开源的通用语料库就能训,社区里还有预训练好的权重直接下载,小白也能上手,我隔壁实验室的学弟,刚接触AI三个月,照着教程两天就把MoE 8x7B跑起来了,要是换Switch Transformer,估计他得哭。

MoE 8x7B本地部署教程

自己在家部署MoE 8x7B其实不难,跟着步骤走,小白也能搞定。第一步先配环境,系统推荐Ubuntu 22.04或Windows 10/11专业版,我用的是Ubuntu,感觉比Windows稳定,先装CUDA,去NVIDIA官网下11.7版本(亲测最兼容),然后用pip装Python包:torch==2.0.1,transformers==4.36.0,accelerate==0.25.0,bitsandbytes==0.41.1(这个是用来量化模型节省显存的),命令直接抄社区给的:pip install torch==2.0.1 transformers==4.36.0 accelerate==0.25.0 bitsandbytes==0.41.1,输完回车等着就行,中间别断网。

第二步下载模型权重,去Hugging Face搜“MoE-8x7B”,选那个标着“开源可商用”的版本,得先装git lfs,不然下不了大文件,命令:sudo apt install git-lfs,然后git clone模型地址,我家网速慢,下了3小时,中间断了两次,后来用aria2多线程下,速度快了一倍,记得下完核对MD5值,别下到损坏的文件,社区有校验码可以对照。

第三步加载模型,写几行Python代码就行,用transformers库的AutoModelForCausalLM.from_pretrained加载模型,device_map='auto'让它自动分配显卡,load_in_4bit=True用4位量化节省显存,代码大概这样:from transformers import AutoModelForCausalLM, AutoTokenizer;tokenizer = AutoTokenizer.from_pretrained("./MoE-8x7B");model = AutoModelForCausalLM.from_pretrained("./MoE-8x7B", device_map='auto', load_in_4bit=True),第一次跑会提示缺依赖,缺啥装啥就行,别怕报错,都是小问题。

第四步测试推理,随便输点文本试试,比如输入“写一段介绍北京烤鸭的话”,用tokenizer编码后喂给模型,generate参数设max_new_tokens=200控制长度,我第一次跑输出有点卡顿,发现是batch_size设大了,改成1就流畅了,输出的文本还挺地道:“北京烤鸭是北京的名菜,皮脆肉嫩,用荷叶饼卷着吃,配上甜面酱和葱丝,香得很!”,比我想象中好用。

常见问题解答

MoE 8x7B需要多少显存啊?

这得看你咋用啦!要是自己在家用电脑跑着玩,处理点短句子,RTX 4090那种24GB显存的显卡勉强够用,一次别塞太多字,不然显存不够会崩,我同学用16GB显存的卡试,直接蓝屏了,贼惨,要是公司用,处理好多数据,就得A100那种大显卡,显存40GB往上,不然跑起来卡得要命,还容易丢数据,记得多准备点显存空间哦!

MoE 8x7B和Llama 2 7B有啥区别?

区别可大了去!Llama 2 7B是 dense 模型,所有参数都得干活,就像全班同学一起做一道题,慢得很,MoE 8x7B是MoE架构,有8个“专家”,每次只叫2-3个专家干活,其他歇着,像小组作业分工明确,速度快一倍,而且MoE 8x7B总参数量560亿,比Llama 2 7B(70亿)多,但实际激活参数少,又快又省资源,处理多任务时比Llama 2 7B强多啦!

MoE 8x7B能在普通笔记本上跑吗?

普通笔记本悬!现在笔记本显卡显存大多8GB、16GB,MoE 8x7B至少得24GB显存才勉强跑小任务,我室友用他的游戏本(RTX 3060 6GB显存)试,刚加载模型就提示“显存不足”,直接闪退,除非你用特别简化的版本,把专家数量砍一半,参数量降下来,但那样效果就差远了,还不如用小模型呢,想玩还是攒钱配个台式机吧!

MoE 8x7B训练需要多少数据啊?

训练这模型得用不少数据,但比那些超大模型少多啦!官方说用了大概1.5万亿tokens的文本数据,有新闻、小说、网页内容啥的,都是开源的通用语料库,要是你想自己微调,用个几千万tokens的数据就行,比如行业文档、专业书籍,不用像训练千亿模型那样搞几万亿数据,普通团队用开源工具链就能搞定,门槛不算高哦!

MoE 8x7B支持多轮对话吗?

支持是支持,但得注意上下文长度!它默认上下文窗口2048 tokens,多轮对话聊久了,前面的话会被挤掉,模型就“失忆”了,我上次跟它聊旅游攻略,聊到第五轮它就忘了我之前说要去北京,推荐了上海的景点,尴尬死了,可以用“上下文压缩”技巧,把前面重要的信息总结一下再喂进去,或者用长上下文版本,不过长上下文版显存要求更高,得注意哦!

欢迎 发表评论:

请填写验证码

评论列表

暂无评论,快抢沙发吧~