本文主要介绍与总结近年来在推理即服务 (Inference as a Service, IaaS) 方向的进展。

学术界的研究成果

(OSDI’22, Gyeong-In Yu, Byung-Gon Chun, 首尔国立大学 & FriendliAI) Orca: A Distributed Serving System for Transformer-Based Generative Models

  • FriendliAI是一家韩国公司,成立于2021年,“提供高效、自动的人工智能生成模型服务,致力于减轻服务生成式AI模型的负担,让更多企业能够利用生成式AI实现创新。”

  • 提出了针对Transformer模型推理任务的细粒度调度,由原先的request级别变为iteration级别,相比NVIDIA FastTransformer提升了36.9倍的吞吐。

  • 被认为是SOTA。

(INFOCOM’22, Chenghao Hu, Baochun Li, 多伦多大学) Distributed Inference with Deep Learning Models across Heterogeneous Edge Devices

  • 为DAG结构的深度学习模型提出了分布式推理机制

  • 使用一种渐进模型分区算法进行模型分割,生成最优的模型分割。

  • 降低了40.2%的推理延迟。

(Arxiv, Bingyang Wu, 金鑫, 北京大学) Fast Distributed Inference Serving for Large Language Models

  • 讨论了LLM推理相比其他推理模型的特点

  • 其他DNN通常具有确定性、高可预测性,LLM使用多个迭代的自回归模式
    LLM的执行时间取决于输入长度和输出长度,通常是未知的

  • 面向LLM的分布式推理服务系统FastServe,建立了请求间的优先级+抢占式调度机制

  • 设计了GPU内存管理机制,正在GPU和主机之间动态上传下载

  • 基于NVIDIA的FastTransformer搭建了实验,相比Orca提升了5.1倍平均JCT,6.4倍尾延迟。

(OSDI’22, Mingcong Han, Haibo Chen, 上海交大) Microsecond-scale Preemption for Concurrent GPU-accelerated DNN Inferences

  • 建立了基于reset的抢占方案,在微秒程度上实时启动和关闭推理核。

  • 由于DNN的推理核具有可预测的延迟,提出了动态的内核填充机制以充分利用GPU。

  • 关注同一个GPU上不同模型与核心之间的调度,而非多GPU场景。

(Arxiv’23) GPU-enabled Function-as-a-Service for Machine Learning Inference

  • 还在用云服务那一套,有点过时

一些与DNN模型无关的推理服务系统

(Google, NIPS’17) TensorFlow-Serving: Flexible, High-Performance ML Serving

  • “只需将模型放在一个BigTable中,然后编写一个简单的服务器,从那里加载并处理对模型的RPC请求”

  • 建立了一个软件框架,用于为TensorFlow和其他类型的ML模型提供服务

(NVIDIA, 2019) Triton Inference Server: An Optimized Cloud and Edge Inferencing Solution

  • Triton Inference Server支持在NVIDIA GPU, CPU或AWS Inferentia上跨云、数据中心、边缘和嵌入式设备推理。

  • 充当服务框架去部署深度学习模型,其他用户可以通过HTTP或者GRPC请求’
    也可以本地部署多模型进行分时调用或者pipeline

工业界的部署与应用

(Microsoft, OpML’19) Deep Learning Inference Service at Microsoft

  • 介绍了Microsoft的DLIS (Deep Learning Inference Service)
    部署在全球20多个数据中心,上万个模型,每秒提供300w次推理调用

  • 设计了低延迟的请求处理、高效的路由与模型部署

(NVIDIA, 2022) https://github.com/NVIDIA/FasterTransformer

  • 支持张量并行与流水线平行的分布式推理。

  • 层融合:预处理阶段将多层神经网络组合成一个单一的神经网络,将使用一个单一的内核进行计算。

  • 自回归模型/激活缓存的推理优化。

  • 使用 MPI 和 NCCL 实现节点间/节点内通信并支持模型并行性。