응답 도중 GPU 간 모델 레이어 이동 (8ms, 재프리필 없음)
Moving a running model's layers between GPUs mid-reply (8 ms, no re-prefill)
핵심 요약
운영체제와 JIT 컴파일러 원리를 활용해 추론 중에도 GPU 간 레이어를 실시간으로 이동시키는 혁신적인 추론 엔진 'jitllm'을 소개합니다.
- 실시간 레이어 이동 — 추론 중단 없이 GPU 간 모델 레이어를 재배치함
- JIT 커널 생성 — 하드웨어에 최적화된 커널을 즉석에서 생성하여 성능 극대화
- 메모리 효율성 — KV 캐시 페이징을 통해 재프리필 없이 원활한 전환 지원
- 하드웨어 유연성 — 이기종 하드웨어(CUDA, Vulkan, CPU) 간 모델 분산 및 이동 가능

jitllm이라는 추론 엔진을 만들고 있어. 운영체제랑 JIT 컴파일러 쪽을 파고들었던 경험에서 아이디어를 얻었는데, 어떤 하드웨어든 그에 맞는 커널을 즉석에서 생성하고, 레이어를 마치 엔진이 이리저리 옮길 수 있는 프로세스처럼 다루는 방식이야.
영상 보면 T4가 달린 클라우드 VM에서 Llama-3.2-3B의 모든 레이어가 답변 도중에 한 GPU에서 다른 GPU로 넘어갔다가 다시 돌아오는 걸 볼 수 있어. 내 보잘것없는 노트북에서도 모델이 CPU, CUDA, Vulkan(iGPU)에 쪼개져서 돌아가는데, 생성 도중에 레이어 배치가 계속 바뀌지. KV 캐시도 페이징 처리돼서 레이어랑 같이 이동하니까 프롬프트를 다시 처리할 필요도 없고, 이동 없이 실행한 결과랑 똑같이 출력돼.
| Hardware | Model | Move | Pause | Recomputed |
|---|---|---|---|---|
| 2× T4 | Llama-3.2-3B Q4_K_M | GPU 0 → GPU 1 | 8.1 ms | 0 tokens |
| 2× T4 | Llama-3.2-3B Q4_K_M | GPU 1 → GPU 0 | 8.4 ms | 0 tokens |
| 2× V100 | Llama-3.2-3B, 1.8k-token chat | GPU 0 → GPU 1 | 20–21 ms | 0 tokens |
| RTX 3050 Ti laptop | Llama-3.2-1B Q4_K_M | CUDA → Vulkan | 91 ms | 0 tokens |
이 설계가 진짜 대박인 건 확장성 때문이야. 커널을 그때그때 생성하니까 개선 사항이 모든 기기에 바로 적용되고, 엔진이 처음 보는 하드웨어라도 알아서 퓨징하고 튜닝할 수 있거든. 페이징이랑 재배치 기술 덕분에 모델 배치가 그냥 스케줄링 문제가 돼버려. 메모리보다 큰 모델도 돌리고, 사양 다른 GPU끼리 섞어 쓰고, 대화가 길어지면 알아서 작업 부하를 옮기는 식이지.

![[UPDATE] I asked GPT to get me a surprise gift. This is what it got me!](https://cf.preview.redd.it/update-i-asked-gpt-to-get-me-a-surprise-gift-this-is-what-v0-dhwsc46a33vh1.jpg?width=1080&crop=smart&auto=webp&s=a2912f1610facb363ec676f9b4dc24d91e96e696)