TVM-MLC LLM 调优方案
本文地址:https://www.cnblogs.com/wanger-sjtu/p/17497249.html
LLM 等GPT大模型大火以后,TVM社区推出了自己的部署方案,支持Llama,Vicuna,Dolly等模型在iOS、Android、GPU、浏览器等平台上部署运行。
https://github.com/mlc-ai/mlc-llm
本文在之前作者介绍的基础上,简要介绍一下mlc的调优部署方案。
pipeline
在正式介绍TVM mlc.ai部署LLM方案之前,首先简要介绍一下当前主流LLM的一个工作流程。

需要说明一点的是,上图中的prefill跟Decode指的的同一个模型,只是输入的shape存在差异。
这里的示意图省略了很多,只是大致描述一下pipeline。
在处理用户输入时,此时长度大小是不能确定的,这时候是完全的是一个完全的动态shape的。但在decode过程中由于是token by token的,这时候网络中的中除了kv cache相关几个部分,其他大多数的操作都是固定shape的,就可以用已有的算法调优了。
MLC.AI 部署调优方案
以下以RedPajama3B模型的tuning跟build过程介绍一下mlc的方案。
pipeline 组成
在已经支持的几个模型里面均有get_model 这个函数,在这个函数里面会创建下面4个IRModel。
- encoding_func
- decoding_func
- create_kv_cache_func
- create_softmax_func
- create_metadata_func
encoding_func
这对应了上图中的prefill过程,在每次用户输入后调用。由于用户输入的不确定性,所以这个过程基本上都是动态shape的,很难确定到底输入是多大,也不适合搜索调优。
decoding_func
这是上图中decode过程的一部分,因为这个过程是token by token的,在计算过程中大部分的计算是固定shape的。
create kv cache func
这里是直接调用的relax.vm中的函数,创建的是kv cache的存储相关。
create softmax func
这个也是解码过程的一部分,确切的说是采样过程中计算的一部分
** create_metadata_func **
模型的meta信息,比如model_name、stop_tokens等
部署优化
构建完以后,就进入到优化的阶段了。下面根据build.py过程描述一下过程。
API构图构建了相关的模型,读取权重
量化
优化PASS
- FuseTransposeMatmul
- FuseDecodeMatmulEwise
- DeadCodeElimination
- LiftTransformParams
- split_transform_deploy_mod
Codegen 生成代码
- DispatchTIROperatorAdreno/DispatchTIROperator/DefaultGPUSchedule 手动优化的sch
- MetaScheduleApplyDatabase搜索的log生成固定shape的sch
Tuning
在MLC-LLM的代码仓里面已经提供了tuning的脚本,有一点需要先做一下,先调用build.py的文件,把静态shape的相关的函数分离出来。就得到了tuning文件中需要的mod_tir_static.py
TVM-MLC LLM 调优方案的更多相关文章
- linux内存基础知识和相关调优方案
内存是计算机中重要的部件之中的一个.它是与CPU进行沟通的桥梁. 计算机中全部程序的执行都是在内存中进行的.因此内存的性能对计算机的影响很大.内存作用是用于临时存放CPU中的运算数据,以及与硬盘等外部 ...
- Tomcat性能调优方案
一.操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量.提高CPU的频率,保证文件系统的读写速率等.经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快.. ...
- java性能调优---------------------JVM调优方案
JVM的调优的主要过程有: 1.确定堆内存大小(-Xmx.-Xms) 2.合理分配新生代和老年代(-XX:NewRatio.-Xmn.-XX:SurvivorRatio) 3.确定永久区大小(-XX: ...
- tomcat组成介绍和调优方案
1.tomcat组成介绍 1.1 目录组成介绍 1.2 启动tomcat中遇到的问题 a.启动过程中出现很多异常:因为端口被占用了 解决方式1:修改Tomcat\conf\server.xml中的默认 ...
- javaweb系统调优方案
1. java代码优化 java代码优化6大原则 : https://blog.csdn.net/bunny1024/article/details/72803708 java代码优化: https: ...
- Tomcat 实战-调优方案
来自: http://blog.csdn.net/u010028869/article/details/51793821 来自: https://www.cnblogs.com/baihuites ...
- 进程和cpu的相关知识和简单调优方案
进程就是一段执行的程序,每当一个程序执行时.对于操作系统本身来说,就创建了一个进程,而且分配了相应的资源.进程能够分为3个类别: 1.交互式进程(I/O) 2.批处理进程 (CPU) ...
- Tomcat 调优方案
Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力.提高Tomcat的性能可以分为两个方向. 服务器资源 服务器所能提供CPU.内存.硬盘的性能对处理能力有 ...
- Tomcat实战-调优方案
Tomcat的默认配置,性能并不是最优的,可以通过优化tomcat以此来提高网站的并发能力.提高Tomcat的性能可以分为两个方向. 服务器资源 服务器所能提供CPU.内存.硬盘的性能对处理能力有决定 ...
- 【转】转 Linux调优方案,sysctl.conf的设置
http://blog.sina.com.cn/s/blog_541086000100skq0.html proc/sys/net/ipv4/下各项的意义 http://blog.chinauni ...
随机推荐
- [Linux]Vmwaer创建CENTOS7虚拟机
1 前期准备 CENTOS系统镜像 本实验版本: CENTOS 7.9 安装 VMware Workstation 本实验版本: VMware Workstation Pro 15.0 2 VMwar ...
- Junit启动测试mybatis xml文件BindingException: Invalid bound statement问题
背景:1.正常启动,xml文件放在java目录和resource目录下均正常 2.junit启动,xml文件放在resource目录下正常,放在java目录下报BindingException错误 m ...
- OpenAI ChatGPT 能取代多少程序员的工作?导致失业吗?
阅读原文:https://bysocket.com/openai-chatgpt-vs-developer/ ChatGPT 能取代多少程序员的工作?导致我们程序员失业吗?这是一个很好的话题,我这里分 ...
- vue中获取所有路由
在router实例上有options属性:
- js函数-参数默认值
1. 在es6之前必须通过函数内部实现 就像以下的几种情况: function example(a,b){ var a = arguments[0] ? arguments[0] : 1;//设置参数 ...
- vivo积分任务体系的架构演进-平台产品系列05
作者:vivo 互联网平台产品研发团队- Mu JunFeng 积分体系作为一种常见营销工具,几乎是每一家企业会员营销的必备功能之一,在生活中随处可见,随着vivo互联网业务发展,vivo积分体系的能 ...
- 万字长文详解如何使用Swift提高代码质量
前言 京喜APP最早在2019年引入了Swift,使用Swift完成了第一个订单模块的开发.之后一年多我们持续在团队/公司内部推广和普及Swift,目前Swift已经支撑了70%+以上的业务.通过使用 ...
- 2022-06-06:大妈一开始手上有x个鸡蛋,她想让手上的鸡蛋数量变成y, 操作1 : 从仓库里拿出1个鸡蛋到手上,x变成x+1个, 操作2 : 如果手上的鸡蛋数量是3的整数倍,大妈可以直接把三分之
2022-06-06:大妈一开始手上有x个鸡蛋,她想让手上的鸡蛋数量变成y, 操作1 : 从仓库里拿出1个鸡蛋到手上,x变成x+1个, 操作2 : 如果手上的鸡蛋数量是3的整数倍,大妈可以直接把三分之 ...
- 2021-01-28:redis使用过程中的注意事项有哪些?
福哥答案2021-01-28: [答案1:](https://italk.mashibing.com/question/detail/ques_00005101)1.使用key值前缀来作命名空间虽然说 ...
- 2021-05-04:给定一个非负整数c,你要判断是否存在两个整数a和b,使得a*a+b*b=c。【举例】c=5时,返回true。c=4时,返回true。c=3时,返回false。
2021-05-04:给定一个非负整数c,你要判断是否存在两个整数a和b,使得aa+bb=c.[举例]c=5时,返回true.c=4时,返回true.c=3时,返回false. 福大大 答案2021- ...