今天,我们推出Qwen系列的首个MoE模型,Qwen1.5-MoE-A2.7B。它仅拥有27亿个激活参数,但其性能却能与当前最先进的70亿参数模型,如Mistral 7B和Qwen1.5-7B相媲美。相较于包含65亿个Non-Embedding参数的Qwen1.5-7B,Qwen1.5-MoE-A2.7B只有20亿个Non-Embedding参数,约为原模型大小的三分之一。此外,相比Qwen1.5-7B,Qwen1.5-MoE-A2.7B的训练成本降低了75%,推理速度则提升了1.74倍。
最近在用Qwen 7B/14B的模型做项目,看到这个Qwen1.5 MOE,想部署测试看看效果,具体的详细介绍这里不贴了,可以去这个地址看。
https://qwenlm.github.io/zh/blog/qwen-moe/
部署的时候也遇到了一些问题,这里同步分享出来。
在 huggingface 上面搜 Qwen1.5-MoE,有三个版本。分别是base版本,chat版本还有一个量化版本。
我第一次的时候尝试了chat版本,emmmm,高估自己了,没想到下载下来的模型权重30多G,没有A800的我,是没跑起来的。
退而求其次,选择了量化版本: Qwen/Qwen1.5-MoE-A2.7B-Chat-GPTQ-Int4, 模型权重下载后8G。
我都是在云端,linux环境下部署。这里有一个 huggingface 的镜像网站(https://hf-mirror.com),可以快速下载。
先执行这个命令
export HF_ENDPOINT=https://hf-mirror.com
在执行下面的py文件。
local_dir 为自己的本地目录文件夹,一会会用 。
from huggingface_hub import snapshot_download
snapshot_download(repo_id='Qwen/Qwen1.5-MoE-A2.7B-Chat-GPTQ-Int4',
repo_type='model',
local_dir='./qwen1.5-moe-int4/',
resume_download=True)
量化版本的需要10G的显存能够加载成功,我这里用的是4090, 24G显存。
下面是加载模型,推理的代码
注意📢: 修改 /root/qwen1.5-moe-int4 为上面自己的目录,可以相对路径或者绝对路径都行
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"/root/qwen1.5-moe-int4",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("/root/qwen1.5-moe-int4")
while 1:
print("你可以输入了......")
prompt = input()
# prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(messages)
print(response)
这里有几个问题。
1、需要安装 transformers 库,但是直接用pip安装不行,需要从源码编译。
git clone https://github.com/huggingface/transformers
cd transformers
pip install -e .
不用git也行,自己下载源码压缩包,上传到服务器。
2、会有类似的报错:ModuleNotFoundError: No module named 'optimum'
重新安装optimum。
pip install optimum
如果重新安装optimum后,transformers 库的版本改了,重新安装 transformers 库
3、还可能会报这个错误❎:importlib.metadata.PackageNotFoundError: No package metadata was found for auto-gptq
重新安装 auto-gptq
pip install auto-gptq
然后运行上面的推理代码,就等待加载模型,测试。
我让它生成一段歌词。
基于 通义千问的能力,生成一段歌词
(诗歌标题:穿越星辰的旅程)
在无尽的宇宙中,我启航,
穿过星际的迷雾,寻找答案。
带着梦想和希望,我前行,
在黑暗中寻找,那一丝光芒。
像流星划破夜空,我燃烧自己,
只为照亮前行的路,让梦想成真。
每一个挑战,都是磨砺,
每一次挫折,都是成长的见证。
我们的征途,是星辰大海,
不怕风雨,不畏艰难险阻。
因为心中有梦,有信念,
我们勇往直前,无所畏惧。
穿越星辰的旅程,漫长又孤独,
但我知道,那才是真正的自由。
我会坚持到底,直到终点,
在这无尽的宇宙中,留下我的足迹。
星光照亮前方,指引我方向,
我将用生命,书写传奇。
穿越星辰的旅程,永不言败,
向着未来,坚定前行。
这个量化版本速度上面是肉眼可见的慢,生成上面的这些长文本,1-3分钟不等,当然这是直接加载模型做的推理,没有其他加速方式。
MOE这种方式真的行吗?后面深入了解下。
--
往期推荐
OpenAI发布最新Sora视频,来自民间创作者、导演、音乐家、艺术家、创意机构等
免魔法,非套壳API,国内使用GPT plus,和官网功能一模一样,强烈推荐!
就在刚刚,Claude 3发布了,推出了三个模型,Haiku、Sonnet 和 Opus,效果又震惊四方
紧跟着 Sora,搞 AI 的大厂都纷纷坐不住了。就在深夜,Stability AI 放出了 SD3,文字控制效果炸裂
我是大林,算法工程师,从事自然语言处理(NLP)、知识图谱、大模型的实际业务落地。加微信(dalinvip2023),备注【公众号 大模型】,进大模型技术交流群一起交流。
如果文章对你有一点点 🤏🏻 帮助,关注公众号并星标,可以及时收到最新 AI 信息,点赞、在看、帮忙转发给更多的朋友,是最大的支持,谢谢。
