欢迎关注我的公众号 [极智视界],获取我的更多经验分享
大家好,我是极智视界,本文来谈谈 MLC-LLM 让语言大模型运行在任何设备上。
邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:t.zsxq.com/0aiNxERDq
TVM向大模型伸手了。
这几天,天奇大佬(TVM帮)放出了一个力作:MLC-LLM,一个基于Apache TVM Unity、致力于让语言大模型通过编译优化部署在任何平台的工作,真是让我兴趣十足。看了博涵大佬的知乎文章《MLC-LLM: 在任何设备上编译运行大语言模型》以及 MLC-LLM的git仓库(github.com/mlc-ai/mlc-…),对于MLC-LLM的工作有了一些初步的认识。
现在大模型的发展十分迅速,似乎大家把精力和财力都花在了模型能力/效果的提升上(训练上),而对于大模型的部署却研究较少,这导致普通玩家对于大模型的本地部署可望不可及,退而只能通过API调用、云的方式进行大模型的集成。导致这种现象的很多原因是由于大模型的部署成本昂贵 (当然也有些原因是CloseAI),就说显存加载,普通玩家的设备可能就望而生畏。
MLC-LLM就是针对大模型部署难而开展的工作,也是TVM的技术延伸。TVM本身的定位就是让各种框架的模型能够高效地部署在不同的硬件平台,大模型作为AI的一种趋势,对于大模型的高效部署,当然也会是TVM的重要课题。而MLC-LLM显然就是TVM给这个亟待解决的课题给出的解决方案。从这个角度来说,很明显MLC-LLM的目标使AI模型、特别是语言大模型的优化部署在任何的硬件设备,包括服务器级的硬件、用户的浏览器(之前TVM开辟了webGPU部署的方向)、笔记本电脑以及移动设备(手机)。跟TVM的挑战一样,后端的计算设备和部署环境多样,MLC-LLM面对的一些关键的挑战包括:
- 支持不同型号的CPU、GPU,以及潜在的其他协处理器和加速器;
- 在用户设备的本地环境中部署,这些设备可能没有python或其他必要的依赖 ==> 参考TVM还有一个工作是micro tvm,就是针对微系统的TVM扩展,甚至是没有操作系统的环境裸金属环境;
- 通过仔细规划分配和充分压缩模型参数来解决内存限制 ==> 这点特别对于大模型的部署问题突出;
MLC-LLM通过机器学习编译来解决了这类问题,就像之前TVM做的那样。基于Apache TVM Unity,针对语言大模型,MLC-LLM主要对以下几点进行了设计:
- 动态shape:将大预言模型转换为TVM IRModule,由于TVM IRModule本身支持动态shape,所以MLC-LLM自然也可以支持动态shape。适应动态shape对于语言大模型的部署意义重大,因为相对于static shape的框架来说,不需要按最长的shape对短数据进行填充来对齐数据布局,这样可以极大减少计算量和内存占用;
- 编译优化pass组合:基于TVM IRModule,更好的编译代码转换、融合、内存规划、手动代码优化等pass可以方便的进行组合;
- 量化:语言大模型本身就大,所以需要想办法压缩,更低比特的压缩是必须的,咱们通常用的int8量化对于大模型的部署可能已经不太够用,MLC-LLM会采用更加低比特的量化,如int4/int3;
- 运行时:基于TVM Runtime本身支持的多样性硬件后端,使得MLC-LLM可以方便地拓展到多平台;
下图展示了MLC-LLM的整体workflow:
这里展示一个在liunx(ubuntu)上使用MLC-LLM来本地部署一个从huggingface上下载的大语言模型的示例,从模型的名称可以看出模型是int3精度的。
# 示例基于python
# 安装conda的过程略过
conda create -n mlc-chat
conda activate mlc-chat
# git与git-lfs安装
conda install git git-lfs
conda install -c mlc-ai -c conda-forge mlc-chat-nightly
mkdir -p dist
git lfs install
git clone https://huggingface.co/mlc-ai/demo-vicuna-v1-7b-int3 dist/vicuna-v1-7b
git clone https://github.com/mlc-ai/binary-mlc-llm-libs.git dist/lib
# 启动
mlc_chat_cli
下面是交互截图:
可以看到模型已经在我本地跑起来了,也可以正常进行对话。另外,我还特意看了一下显存占用:不多,4个G。
好了,以上分享了 天奇大佬力作MLC-LLM 让语言大模型运行在任何设备。希望我的分享能对你的学习有一点帮助。
【公众号传送】
畅享人工智能的科技魅力,让好玩的AI项目不难玩。邀请您加入我的知识星球, 星球内我精心整备了大量好玩的AI项目,皆以工程源码形式开放使用,涵盖人脸、检测、分割、多模态、AIGC、自动驾驶、工业等。不敢说会对你学习有所帮助,但一定非常好玩,并持续更新更加有趣的项目。 t.zsxq.com/0aiNxERDq