nano-vLLM RMSNorm Serving Swap Lab
마지막 수정:
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에서는 작게 보일 수 있는 이유는 무엇인가?