ORCA: A Distributed Serving System for Transformer-Based Generative Models

https://www.usenix.org/system/files/osdi22-yu.pdf

작성일 : 2024/03

Introduction


Transformer 구조의 생성 모델은 다양한 분야에서 높은 성능을 보이고 있다. 하지만, auto-regressive 특성상, 같은 모델을 여러번 동작시켜야 하기 때문에, serving에서 여러 한계가 존재한다.

대부분의 기존 시스템은 request를 처리하는 server와 engine의 조합으로 이루어진다. Server의 경우, client request를 받아서 batch로 묶고 engine으로 보내는 역할을 한다. engine에서는 server에서 전달받은 batch를 LLM으로 처리하여 다시 server로 보낸다. 마지막으로 server는 engine에서 받은 결과를 다시 client에 전달한다. 대부분의 serving system이 이러한 구조로 구성되어 있으며, 대표적인 예시로 server는 Triton inference server, Tensorflow serving등이 있고 engine은 FasterTransformer, pytorch등이 있다.

그러나 이러한 기존 시스템은 2가지의 문제를 갖고 있다.

  1. batch내에 있는 request는 모두 동시에 끝난다 → 먼저 문장이 끝난( <EOS> 토큰이 생성된) request가 있더라도, batch내의 모든 request가 끝날 때 까지 return 되지 않는다.
  2. LLM 동작 중 도착한 request는 무조건 다음 batch 까지 기다려야 한다 → request의 queueing time이 증가한다.

논문에서는, 이런 문제를 해결하위해 새로운 ‘iteration level scheduling’과 ‘selective batching’을 제안한다.

iteration level scheduling은 모델의 실행을 request 단위가 아니라, single iteration 단위로 바꾸면서 request의 배칭을 유연하게 만드는 방법이다.

selective batching은 sequence 길이가 다른 request 더라도, 같은 batch로 돌릴 수 있도록 만드는 기술로써, iteration level scheduling을 가능하게 만드는 핵심 기술이다.

Background