nano-vLLM RMSNorm Serving Swap Lab

마지막 수정:

inferencenano-vllmrmsnormbenchmark

RMSNorm은 첫 교체 대상으로 좋다. 이유는 작고, reference와 optimized backend의 output을 비교하기 쉽기 때문이다.

lab에서는 두 backend를 둔다.

torch:
명시적 PyTorch RMSNorm reference

compiled:
torch.compile로 RMSNorm 함수를 compile한 경로

실행은 다음과 같다.

python3 labs/nano-vllm/optimization/benchmark.py --rmsnorm-backend torch --attention-backend manual
python3 labs/nano-vllm/optimization/benchmark.py --rmsnorm-backend compiled --attention-backend manual

주의할 점이 있다. CPU 환경이나 toolchain에 따라 torch.compile backend가 실패할 수 있다. 이 lab은 그 경우 reference RMSNorm으로 fallback하고 rmsnorm_compiled_fallbacks를 출력한다.

이것도 중요한 학습 포인트다. “최적화 API를 호출했다”와 “실제로 serving loop에서 더 빨라졌다”는 같은 말이 아니다.

확인

  • RMSNorm이 첫 kernel swap 대상으로 적절한 이유는 무엇인가?
  • rmsnorm_compiled_fallbacks가 0보다 크면 benchmark를 어떻게 해석해야 하는가?
  • RMSNorm standalone speedup이 serving metric에서는 작게 보일 수 있는 이유는 무엇인가?