大模型应用新范式:统一特征表示优化(UFO)
从深度学习技术被提出以来,一直践行着“think big”的理念。特别是当预训练技术被广泛应用之后,更多的数据结合更大的模型参数量会持续带来模型性能的提升,这条定律不断被近期发布的各种大模型所验证。在刚刚过去的 2021 年,百度文心大模型中的 ERNIE3.0、微软和英伟达联合推出的 MT-NLP 以及谷歌的 Switch Transformer 等等,参数量可达千亿甚至万亿。
在获得高性能大模型后,如何将大模型与业务结合实现落地变得尤为重要。当前预训练模型的落地流程可被归纳为:针对只有少量标注数据的特定任务,使用任务数据 fine-tune 预训练模型并部署上线。然而,当预训练模型参数量不断增大后,该流程面临两个无法回避的问题。首先,随着模型参数量的急剧增加,大模型 fine-tuning 所需要的计算资源将变得非常巨大,普通开发者通常无法负担。其次,随着 AIOT 的发展,越来越多 AI 应用从云端往边缘设备、端设备迁移,而大模型却无法直接部署在这些存储和算力都极其有限的硬件上。
针对预训练大模型落地所面临的问题,百度提出统一特征表示优化技术(UFO:Unified Feature Optimization),在充分利用大数据和大模型的同时,兼顾大模型落地成本及部署效率。UFO 技术方案的主要内容包括:1. All in One:设计视觉表示多任务协同训练方案,免去了下游任务 fine-tuning 的过程,实现单模型在智慧城市多个核心任务效果全面领先 2. One for All:首创针对视觉多任务的超网络与训练方案,支持各类任务、各类硬件的灵活部署,解决大模型推理性能差的问题。
All in One:
功能更强大、更通用的视觉模型
之前主流的视觉模型生产流程,通常采用单任务“Train from scratch”方案。每个任务都从零开始训练,各个任务之间也无法相互借鉴。由于单任务数据不足带来偏置问题,实际效果过分依赖任务数据分布,场景泛化效果往往不佳。
近两年蓬勃发展的大数据预训练技术,通过使用大量数据学到更多的通用知识,然后迁移到下游任务当中,本质上是不同任务之间相互借鉴了各自学到的知识。基于海量数据获得的预训练模型具有较好的知识完备性,在下游任务中基于少量数据 fine-tuning 依然可以获得较好的效果。不过基于预训练+下游任务 fine-tuning 的模型生产流程,需要针对各个任务分别训练模型,存在较大的研发资源消耗。
百度提出的 UFO All in One 模型,通过使用多个任务的数据训练一个功能强大的通用模型,可被直接应用于处理多个任务。不仅通过跨任务的信息提升了单个任务的效果,并且免去了下游任务 fine-tuning 过程。UFO All in One 模型研发模式可被广泛应用于各类多任务 AI 系统,以智慧城市的多任务大模型为例,UFO All in One 可以用单模型实现多个任务的 SOTA 识别效果,同时多任务模型可获得显著优于单任务模型的效果,证明了多任务之间信息借鉴机制的有效性。
单模型覆盖智慧城市 4 大任务
智慧城市是目前计算机视觉技术最重要的应用场景之一,在智慧城市的各个任务中,往往要同时处理人脸、人体、车辆和通用物体等目标,这对 AI 系统的多任务协同能力提出了非常高的要求。现有的视觉模型大多只能检测或识别其中的一类目标,百度通过 UFO 方案中的多任务协同学习技术,产出城市视觉 UFO 模型同时处理这 4 类任务,并在 10 项公开数据集上效果取得 SOTA。下面详细介绍 UFO 的多任务协同训练方案。
任务设置与数据
为验证方案的有效性且便于公平对比,使用 10 项公开数据集进行训练和测试。各个数据集的统计信息如表所示:
统一各任务的配置
从模型优化的层面来说,以往不同任务模型训练的 batch size 、学习率乃至于优化器都各不相同。为了方便后续的多任务训练,UFO 方案统一了各个任务的模型结构以及优化方法。任务配置如下表所示:
异构数据采样策略和 Drop Path 正则技术
多任务学习首先面临的问题是如何构建 Batch。常用的方式有两种,一种是同数据域的 Batch 组成,即 Batch 内的数据均来自同一个任务,通过不同的 Batch 选择不同的任务来保证训练所有任务。另一种是不同数据域的 Batch 组成,即 Batch 内的数据来自不同的任务。同数据域的 Batch 组成面临的问题是当模型中使用 BatchNorm 这一常见的操作时,因为训练时的统计值(单任务统计值)和测试时的统计值(多任务统计值)差异较大,导致模型效果较差。如下表所示,通过 ResNet50 结构在人体 Market1501 和物品 SOP 两个任务中验证,使用混合数据域方案可以大幅提高两任务的效果。
在四个任务中,人体和物品的训练集数量最小,都只有 6 万张图片左右,而人脸和车辆则各有约 500 万和 40 万张图片。因此在多任务训练过程中,呈现出了人体、物品快速过拟合,而人脸和车辆欠拟合的现象。为解决各个任务数据不均衡导致的过拟合问题,通过在训练过程中使用 Drop Path 正则化方法,在人体和物品任务中实现 mAP1%~3%的提升,同时其他任务效果持平或更好。
单模型刷新 10 项公开数据集 SOTA 结果
基于多任务协同训练方案得到的城市视觉 All in One UFO 模型,和之前的单任务 SOTA 结果相比,在 4 个任务的 10 个测试集上都达到了新的 SOTA,同时相比使用同样模型结构的单任务结果,在多数任务上 UFO 也表现的更好,证明了多任务之间信息借鉴机制的有效性。
在上图中,灰色表示表示城市视觉 All in One UFO 模型的结果,橙色表示和 UFO 模型使用相同模型结构的单任务结果,蓝色表示之前同样数据集上最优的单任务结果。以上所有结果都不使用预训练数据,同时无重排序策略。
One for All:
灵活、可伸缩的弹性部署方案
受算力和存储的限制,大模型无法直接部署在边缘设备上。一个针对云端设备开发的模型要部署到边缘设备或端设备时往往要进行模型压缩,或完全重新设计,而预训练大模型的压缩本身需要耗费大量的资源。
另外,不同任务对模型的功能和性能要求也不同,例如人脸识别门禁系统只需具备人脸识别功能即可,智慧社区的管控系统则需要同时具备人脸识别和人体分析的能力,部分场景还需要同时具备车型识别及车牌识别能力。即便是同样的人脸识别任务,门禁系统和金融支付系统对模型的精度和性能要求也不同。目前针对这些任务往往需要定制化开发多个单任务模型,加之需要适配不同的硬件平台,AI 模型开发的工作量显著增长。
针对大模型的开发和部署问题,UFO 给出了 One for All 的解决方案,通过引入超网络的概念,超网络由众多稀疏的子网络构成,每个子网络是超网络中的一条路径,将不同参数量、不同任务功能和不同精度的模型训练过程变为训练一个超网络模型。训练完成的 One for All UFO 超网络大模型即可针对不同的任务和设备低成本生成相应的可即插即用的小模型,实现 one for all tasks 和 one for all chips 的能力。
超网络设计与训练方案
UFO 基于 Vision Transformer 结构设计了多任务多路径超网络。超网络分为多路径 FFN 超网和与可伸缩 attention 超网两部分。与谷歌 Switch Transformer 不同的是,UFO 的超网不同的路径除可选择不同 FFN 单元,同时 Attention 模块支持根据不同任务弹性伸缩,实现网络的搜索空间扩展,为硬件部署提供更多可选的子网络,并提升精度。
UFO 还专门设计了针对多任务超网络的训练方案。首先针对超网络中的 FFN 超网模块,每个任务的每个 block 中会自动学习共享 FFN(FFN-shared)和该任务专属 FFN(FFN-taskX)的加权系数,所有任务都会更新共享 FFN 的参数,特定任务只会更新专属的 FFN 参数。在 FFN 超网训中,对于每个 block, 每个子网络都有三种不同的路径选择,即选择共享 FFN,选择专属 FFN 或者选择加权的 FFN。对于所有的 FFN,都可以选择不同的放缩系数。因此 FFN 超网络中共有中共有(T*3*ratio)^L 种不同的 FFN 路径,其中 T 为 task 的数量,L 为网络的层数, ratio 为放缩系数的数量。而对于 self-attention 超网,每个子网络可以选择不同的 Head 数量以及 block 的重复次数。
One for all tasks
由于在训练超网的过程中使用了各个任务的数据,并对超网施加任务约束,可以让相关的任务共享更多的参数,而不相关的任务之间尽量减少干扰,从而获得针对不同任务最优的子网络模型。在业务应用时,只需要根据不同子网络在特定任务的效果,抽取出对应的子网络结构和参数,即可直接部署,无需重复训练。
One for all chips
针对不同平台存储容量和算力不同,从训练好的 UFO 超网络模型中选择不同大小和计算量的子网络进行部署。由于超网络中子网络的数据众多,每个子网逐一测试精度和延时并不现实,因此在 UFO 中,使用了 GP-NAS【1】中的基于高斯过程的超参数超参估计技术,只需采样超网络中少量子网络进行评估,即可准确预测出其他网络的精度和速度。
单超网络支撑智慧城市多任务灵活部署
基于上述方案,使用公开数据训练的 One for All UFO 超网络模型可以在智慧城市人脸、人体、车辆和物品 4 类任务的 6 个公开测试集上精度达到 SOTA,同时从 UFO 超网络中抽取的子网络,在参数量压缩 20%~30%的情况下,同样可以超过之前 SOTA 的结果。
结语
尽管大模型一次次刷新了记录,展现出惊人的效果,但对于工业界而言,势必要面对如何应用落地的问题。百度提出的统一特征表示优化技术(UFO),给出了预训练之外的另一个解决方案:在模型生产层面,通过 All in One 方案,充分利用大数据和大模型带来的收益,将多任务整合至一套训练框架和模型,通过跨任务的信息量带来更高的特定任务收益。在部署层面,基于 One for All 方案,仅使用单个超网便可支撑不同任务模型在不同平台、不同算力设备上的自适应部署,实现模型的即插即用。
目前 UFO All in One 模型已经在飞桨 PaddlePaddle 上开放,UFO One for All 模型也将在近期开放,了解更多 UFO 技术细节,可以通过以下链接:https://github.com/PaddlePaddle/VIMER/tree/main/UFO
附录【1】GP-NAS: Gaussian Process based Neural Architecture Search,CVPR 2020
评论