Llmcad: Fast and scalable on-device large language model inference
题目:Llmcad: Fast and scalable on-device large language model inference 发表于2023.09
链接:https://arxiv.org/pdf/2309.04255
声称是第一篇speculative decoding+边缘设备的论文(不一定是绝对的第一篇),不开源,没有github地址
动机
生成性任务,在移动应用领域占据重要的地位。由于对隐私问题的敏感性,越来越多的需求是直接在移动设备上执行这些任务。目前,这些生成性任务的执行严重依赖于LLM。然而,这些设备内存容量十分有限。 在本研究中,引入了LLMCad,这是一个专为高效生成性NLP任务设计的设备端推理引擎。
注意,它的目标模型也是在移动设备上的,只不过不放在内存中,只在验证时期从存储中加载到内存;小LLM是常驻内存的。
核心思想
LLMCad的核心思想围绕模型协作:一个紧凑的LLM驻留在内存中,负责生成最简单的令牌,而一个高精度的LLM则介入以验证这些令牌并纠正识别出的错误。LLMCad融合了三种新技术:
-
LLMCad不是以顺序方式生成候选令牌,而是使用较小的LLM构建一个token树。随后,较大的LLM可以同时验证所有这些路径。
-
它采用自适应回退策略,每当较小的LLM生成错误令牌时,迅速启动验证过程。
-
为了确保token生成的连续流动,LLMCad在验证过程中通过实施计算-IO管道来推测性地生成令牌。
论文基于以下观察:虽然较小的LLM不足以生成令人满意的端到端句子,但它们通常能够正确生成大多数简单的标记(例如,限定词、代词和标点符号)。目标LLM验证N个令牌可以在目标模型的一次推断中完成,因此比顺序生成N个令牌要快得多。
策略
论文指出遇到的挑战以及解决策略:
-
小LLM可能产生的一些次优token,实际上它认为的次优token是目标LLM的最优输出。这就需要在验证的过程中,也考虑到那些次优token,即使用tree attention
-
需要确定何时启动验证过程,设备上的验证是耗时的,例如Jetson TX2上需要7.1秒。过早验证会导致检测不到错误,过晚验证会生成无用token,浪费了移动设备计算资源。先前的工作通常依赖于单个标记或标记序列长度,这可能无法准确地定位最佳验证时机。本文中token tree中比较累积不确定性、基于历史数据评估是否需要进行验证。
-
目标LLM的验证会阻塞小LLM的推理。所以在验证过程中,继续让小LLM执行推理。同时为了保证小模型推理不影响验证,继续推理只在不影响大LLM内存占用的情况下运行。
下图是整个流程图:
设计
论文的一些设计细节:
-
在小LLM生成token树的过程中,任何置信度高于阈值的token都会被生成一个分支(例如0.3)
-
树累计置信度(tree cumulative-confidence),列的公式和字符看起来挺吓唬人,实际上就是同一个序列的每个token的置信度累乘
-
关于如何并行地验证树,论文也是给了较长的介绍,但实际上应该是用了其他论文中出现的tree attention机制。详情可以看第一个提出tree attention机制的specInfer论文,在我的博客里也有这篇文章的解读。
相关文章:
Llmcad: Fast and scalable on-device large language model inference
题目:Llmcad: Fast and scalable on-device large language model inference 发表于2023.09 链接:https://arxiv.org/pdf/2309.04255 声称是第一篇speculative decoding边缘设备的论文(不一定是绝对的第一篇),不开源…...
Hbase2.2.7集群部署
环境说明 准备三台服务器,分别为:bigdata141(作为Hbase主节点)、bigdata142、bigdata143确保hadoop和zookeeper集群都先启动好我这边的hadoop版本为3.2.0,zookeeper版本为3.5.8 下载安装包 下载链接:In…...
【青牛科技】D1671 75Ω 带4级低通滤波的单通道视频放大电 路芯片介绍
概 述 : D1671是 一 块 带 4级 低 通 滤 波 的 单 通 道 视 频 放 大 电 路 , 可 在3V或5V的 低 电 压 下 工 作 。 该 电 路 用 在 有 TV影 象 输 出 功 能 的 产 品 上 面,比如 机 顶 盒 ,监 控 摄 象 头 ,DVD&#…...
[NeurIPS 2022] Leveraging Inter-Layer Dependency for Post-Training Quantization
Contents IntroductionMethodExperimentsReferences Introduction 作者提出一种端到端的 PTQ 训练策略 Network-Wise Quantization (NWQ),并通过 Annealing Softmax (ASoftmax) 和 Annealing Mixup (AMixup) 改进了 AdaRound,降低了训练收敛难度 Metho…...
ubuntu+ROS推视频流至网络
目录 概述 工具 ros_rtsp 接受流 web_video_server 源码安装 二进制安装 ros接收rtsp视频流 总结 概述 ros_rtsp功能包可以将ros视频流以rtsp形式推送 web_video_server功能包可以将ros视频话题推HTTP流 rocon_rtsp_camera_relay可以接受同一网段下的rtsp视频流输出为…...
PHP 去掉特殊不可见字符 “\u200e“
描述 最近在排查网站业务时,发现有数据匹配失败的情况 肉眼上完全看不出问题所在 当把字符串 【M24308/23-14F】复制出来发现 末尾有个不可见的字符 使用删除键或左右移动时才会发现 最后测试通过 var_dump 打印 发现这个"空字符"占了三个长度 …...
深度学习—BP算法梯度下降及优化方法Day37
梯度下降 1.公式 w i j n e w w i j o l d − α ∂ E ∂ w i j w_{ij}^{new} w_{ij}^{old} - \alpha \frac{\partial E}{\partial w_{ij}} wijnewwijold−α∂wij∂E α为学习率 当α过小时,训练时间过久增加算力成本,α过大则容易造成越过最…...
elasticsearch8.16 docker-compose 多机器集群安装
在网上找了一圈, 发现要么就是单机版的部署了多个节点, 很少有多台机器部署集群的, 有些就拿官网的例子写一写, 没有实战经验, 下面分享一个教程, 实实在在的多台机器, 每台机器部署2个节点的例子 先上.env , docker-compose.yml文件, 这个文件是核心, 里面掺杂太多坑, 已经帮你…...
Flink--API 之 Source 使用解析
目录 一、Flink Data Sources 分类概览 (一)预定义 Source (二)自定义 Source 二、代码实战演示 (一)预定义 Source 示例 基于本地集合 基于本地文件 基于网络套接字(socketTextStream&…...
uniapp在小程序连接webScoket实现余额支付
webScoket文档:uni.connectSocket(OBJECT) | uni-app官网 /plugins/event.js const Dep function() {this.Evens Object.create(null); } class Event {constructor({dep new Dep()} {}) {if (dep.constructor Object && Object.keys(dep).length 0…...
Spring Boot【三】
自动注入 xml中可以在bean元素中通过autowire属性来设置自动注入的方式: <bean id"" class"" autowire"byType|byName|constructor|default" /> byName:按照名称进行注入 byType:按类型进行注入 constr…...
R 因子
R 因子 引言 在金融领域,风险管理和投资策略的优化一直是核心议题。传统的风险度量工具,如波动率、Beta系数等,虽然在一定程度上能够帮助投资者理解市场的波动和资产的相对风险,但它们往往无法全面捕捉到市场动态的复杂性。因此…...
【博主推荐】C# Winform 拼图小游戏源码详解(附源码)
文章目录 前言摘要1.设计来源拼图小游戏讲解1.1 拼图主界面设计1.2 一般难度拼图效果1.3 普通难度拼图效果1.4 困难难度拼图效果1.5 地域难度拼图效果1.6 内置五种拼图效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载结束语 前言 在数字浪潮汹涌澎湃的时代,程序开…...
深入解析 MySQL 启动方式:`systemctl` 与 `mysqld` 的对比与应用
目录 前言1. 使用 systemctl 启动 MySQL1.1 什么是 systemctl1.2 systemctl 启动 MySQL 的方法1.3 应用场景1.4 优缺点优点缺点 2. 使用 mysqld 命令直接启动 MySQL2.1 什么是 mysqld2.2 mysqld 启动 MySQL 的方法2.3 应用场景2.4 优缺点优点缺点 3. 对比分析结语 前言 MySQL …...
【python】windows pip 安装 module 提示 Microsoft Visual C++ 14.0 is required 处理方法
参考链接:https://blog.csdn.net/qzzzxiaosheng/article/details/12511900 1.问题引入 在使用pip 安装一些module经常会出现报错: Microsoft Visual C 14.0 is required. Get it with “Microsoft Visual C Build Tools很明显这是缺少C的编译的相关依…...
python爬虫案例——猫眼电影数据抓取之字体解密,多套字体文件解密方法(20)
文章目录 1、任务目标2、网站分析3、代码编写1、任务目标 目标网站:猫眼电影(https://www.maoyan.com/films?showType=2) 要求:抓取该网站下,所有即将上映电影的预约人数,保证能够获取到实时更新的内容;如下: 2、网站分析 进入目标网站,打开开发者模式,经过分析,我…...
go sync.WaitGroup
1、数据结构 type WaitGroup struct {noCopy noCopystate atomic.Uint64 // high 32 bits are counter, low 32 bits are waiter count.sema uint32 } 计数器:原子变量,高32位用于为协程计数,低32位为等待计数(被Wait阻塞等待&a…...
Libevent库-http通信不同请求方式的处理
做项目的时候用到了http通信,同事用libevent库写的,特此记录后端从前端拿到消息后的处理方式 void CHTTPTest::request(const std::any & data) {// data 是从前端拿到的数据void *obj std::any_cast<void *>(data); // std::any是C17新标准…...
关于node全栈项目打包发布linux项目问题总集
1.用pm2部署nest 说明:如果一开始将nest直接打包放到linux服务器上用pm2执行则会报错,这是因为tsconfig.build.tsbuildinfo文件的路径以及相关依赖问题。 报错会为:什么东西找不到.... 所以建议以下为步骤一步一步配置 将整个nest添加压缩包直…...
常见的上、下采样方法
常见的上采样方法 反卷积(Deconvolution)或转置卷积(Transpose Convolution):通过学习可逆卷积核来进行上采样,增加特征图的尺寸。插值(Interpolation)ÿ…...
如何解决 java.rmi.NotBoundException: RMI 中没有绑定的对象问题?亲测有效的解决方法!
java.rmi.NotBoundException 是 Java RMI(Remote Method Invocation)中的一个常见异常,它通常出现在远程方法调用过程中,表示在 RMI 注册表中找不到指定的绑定对象。换句话说,当客户端尝试查找一个远程对象(…...
设计模式:14、抽象工厂模式(配套)
目录 0、定义 1、抽象工厂模式的四种角色 2、抽象工厂的UML类图 3、示例代码 0、定义 提供一个创建一系列或相互依赖对象的接口,而无须指定它们具体的类。 1、抽象工厂模式的四种角色 抽象产品(Product):一个抽象类或接口&a…...
Linux环境基础开发工具使用
目录 1. Linux软件包管理器yum 1.1 什么是软件包 1.2 Linux软件生态 1.3 关于rzsz 1.4 注意事项 1.5 查看软件包 2. Linux编辑器-vim使用 2.1 vim的基本概念 2.2 vim的基本操作 2.3 简单vim配置 3. 编译器gcc/g 3.1 背景知识 3.2 gcc编译选项 3.2.1 预处理…...
AI生成的一个.netcore 经典后端架构
下面是一个完整的 .NET Core 后端项目示例,使用 Dapper 作为轻量级 ORM 访问 Oracle 数据库,并实现高性能架构。我们将实现学生表、课程表、成绩表和班级表的基本增删改查功能,以及查询某个班级学生成绩的功能,并使用自定义缓存来…...
深度学习-48-AI应用实战之基于face_recognition的人脸识别
文章目录 1 人脸识别1.1 识别原理1.2 应用场景2 python实现人脸识别2.1 windows安装face_recognition2.2 安装问题及解决3 使用示例3.1 人脸区域检测3.2 对齐与编码3.3 人脸匹配3.4 信息录入4 附录4.1 函数cv2.rectangle4.2 参考附录1 人脸识别 通过图片或者摄像头的方式,将识…...
【Rabbitmq篇】高级特性----事务,消息分发
目录 事务 消息分发 应用场景 1. 限流 2.负载均衡 事务 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制.SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的,要么全部成功,要么全部失败. 何为原…...
Python进程和线程适用场景
在选择使用 进程(Process)和 线程(Thread)时,通常取决于任务的类型、程序的需求以及硬件资源的限制。进程和线程各自有不同的特点,适用于不同的场景。下面是关于进程和线程的一些常见应用场景和选择指导&am…...
flutter开发环境—Windows
一、简介 我们使用最新版的flutter版本安装。 参考链接 名称地址官方网站https://flutter.dev/官方中文网站文档 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter软件下载路径https://docs.flutter.dev/release/archive?tabwindows 二、操作流程 2.1 下载软件 点…...
展示和添加篮球队信息--laravel与elementplus
之前使用laravel与inertia来做过一样的功能,感觉不满意,因此再结合elementplus重做一遍,先展示下重做后的效果。重写后的代码相比之下比较优雅。 球队首页 球队添加页 球员首页 很明显的改变,我新增了侧栏菜单来控制局部模块(这里是指NBABasketba…...
写一份客服网络安全意识培训PPT
一、为什么要对客服人员定期进行网络安全培训呢? 人员组成复杂:企业既有自由人员又有采购的外包公司客服,为了节约成本可能外包占大多数,这必然加强了人群的流动性所以往往得不到系统的培训。人员素质参差不齐:因为工…...
Add-ons wordpress/google play官网下载
1. 什么是ORM? 对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业…...
湘潭做网站 活动磐石网络/北大青鸟
本文来自AI新媒体量子位(QbitAI)6月7日17点,2017年第一日高考结束,数学学科停笔交卷的铃声划破长空。 北京第八十中学望京校区人潮涌动,结束数学厮杀的考生正陆续走出考场,有欢有悲,神色各异。 …...
新浪博客上传wordpress/北京网站制作推广
推荐引擎的分类 推荐引擎的分类可以根据很多指标,下面我们一一介绍一下: 推荐引擎是不是为不同的用户推荐不同的数据 根据这个指标,推荐引擎可以分为基于大众行为的推荐引擎和个性化推荐引擎 根据大众行为的推荐引擎,对每个用户…...
网站建设策划 流程/在线一键建站系统
Would you like to change the user interface language in any edition of Windows 7 or Vista on your computer? Here’s a free app that can help you do this quickly and easily. 您想在计算机的任何版本的Windows 7或Vista中更改用户界面语言吗? 这是一个…...
网站建设常见的问题/营销网页设计公司
安装步骤 进入到约定好固定的目录下 cd /opt 获取安装包 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz 解压 tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz 创建启动用户 为什么要创建启动用户 Elasticsear…...
什么叫网站后台/seo快速排名上首页
首先看看官网API的说明 Oracle官网API : Optional是一个容器对象,它可能包含,也可能不包含一个非空的值,如果这个值存在,isPresent方法将返回true,get方法将会返回它本身。Optional提供一些额外的方法,这些方法依赖于它…...