3계층 우선순위 스케줄러는 온디바이스 언어 모델의 지연 시간을 1초 이상에서 0.2초 미만으로 단축하여, 휴대폰이 백그라운드 작업으로 바쁜 상황에서도 채팅 앱의 응답성을 유지합니다. 30억 개의 파라미터를 가진 모델을 실행하는 Tensor G3 칩을 위해 설계되었으며, 백그라운드 작업을 중단시키지 않고도 지연 시간을 1,420ms에서 161ms로 대폭 줄였습니다.

온디바이스 LLM이 어려움을 겪는 이유

모바일 프로세서에서 대규모 언어 모델을 실행하는 것은 자원 확보 측면에서 매우 까다로운 일입니다. Tensor G3에서 3B 모델은 이미 신경망 처리 장치(NPU)의 약 85%를 점유합니다. 사용자가 채팅창을 여는 동시에 오프라인 인덱서와 같은 낮은 우선순위 작업이 실행되면, 체감 응답 시간이 약 140ms에서 1,400ms로 급증하여 사용자가 즉각적으로 느낄 수 있는 10배의 속도 저하가 발생합니다.

문제는 단순히 속도만이 아닙니다. 모바일 기기는 UI의 부드러움, 배터리 수명, 그리고 연산을 요청하는 여러 앱 사이에서 균형을 맞춰야 합니다. 작업을 순서대로 처리하는 단순한 큐 방식은 UI 스레드가 백그라운드 작업을 기다리게 만들어, 대화형 어시스턴트를 답답한 경험으로 변질시킵니다.

3계층 스케줄러의 작동 원리

새로운 스케줄러는 추론 파이프라인에 세 가지 조정된 구성 요소를 삽입합니다.

  1. Priority Queue – 정적 중요도에 따라 들어오는 작업을 정렬하는 최소 힙(min-heap).
  2. Preemption Controller – 더 높은 우선순위의 요청이 들어오면 낮은 우선순위의 작업을 버리는 대신 일시 중지합니다.
  3. Token Budget Governor – 앱의 생명주기 상태에 따라 작업이 생성할 수 있는 토큰 수를 제한합니다.

이들은 함께 작동하여 포그라운드 채팅 요청이 대기열의 맨 앞으로 바로 갈 수 있게 하는 동시에, 백그라운드 작업은 일시 정지(parked) 상태로 대기하다가 자원이 확보되면 즉시 재개될 수 있도록 합니다.

우선순위 계층 및 선점(Preemption)

다음 네 가지 계층이 중단 가능한 범위를 정의합니다.

계층 설명
Foreground Chat 중요한 UI 상호작용
Inline Suggestion 자동 완성 스타일의 힌트
Background Summary 주기적인 콘텐츠 요약
Offline Indexing 대량 데이터 처리

스케줄러는 낮은 우선순위의 작업을 절대 중단(abort)하지 않습니다. 대신, 중간 어텐션(attention) 결과를 보유하는 구조인 모델의 키-값(KV) 캐시를 스냅샷으로 찍고 작업을 일시 정지합니다. 높은 우선순위의 요청이 끝나면, 컨트롤러는 스냅샷을 복구하여 백그라운드 작업이 중단된 지점부터 다시 시작할 수 있게 합니다. 이러한 "일시 중지 및 재개(pause-and-resume)" 방식은 작업을 처음부터 다시 시작할 때 발생하는 비용이 큰 재계산 과정을 방지합니다.

부분적인 KV 캐시 축출(eviction)은 낭비를 더욱 줄여줍니다. 정적인 시스템 프롬프트는 캐시에 유지되는 반면, 동적인 대화 턴(turn)만 축출됩니다. 그 결과, 일시 중지 후 모델을 다시 프리필(re-prefilling)하는 비용이 40%~60% 감소합니다.

타이머 없이 토큰 예산 관리하기

많은 구현 방식이 작업이 언제 CPU나 NPU 시간을 양보해야 하는지 추측하기 위해 타이머에 의존합니다. 하지만 타이머는 정밀하지 못하여, UI에 자원을 공급하지 못하거나 칩을 충분히 활용하지 못할 수 있습니다. 이 스케줄러는 타이머 대신 Android의 ProcessLifecycleOwner를 사용합니다. 이는 앱이 포그라운드에 있는지 백그라운드에 있는지를 확실하게 나타내는 생명주기 이벤트를 방출합니다.

  • ON_RESUME – 앱이 전체 연산 예산을 다시 확보하여, 대기 중인 포그라운드 작업이 방해 없이 실행될 수 있도록 합니다.
  • ON_STOP – 앱이 백그라운드 작업을 평소 토큰 예산의 약 25%로 제한하여, 갑작스러운 UI 요청에 대비한 여유 공간(headroom)을 확보합니다.

자원 할당을 생명주기 이벤트와 연결함으로써, 시스템은 임의의 시간 단위가 아닌 실제 사용자 행동에 반응합니다.

성능 향상 및 트레이드오프

단순한 선입선출(first-come-first-served) 큐 방식에서는 백그라운드 작업으로 인해 포그라운드 채팅 지연 시간이 약 1,420ms까지 늘어납니다. 우선순위 스케줄러가 활성화되면 동일한 채팅 요청이 약 161ms 만에 완료되어, 10배의 성능 향상과 함께 매끄러운 사용자 경험을 복원합니다.

일시 중지된 작업을 재개하면 전체 실행 시간이 약 22% 증가합니다. 백그라운드 작업은 중요도가 낮으므로, 특히 UI가 빠릿하게 유지된다면 이러한 트레이드오프는 수용 가능한 수준입니다.