학습이 끝나면 추론 성능을 다듬어야 해
모델을 학습한 뒤에는 실제 서빙 환경에 맞게 최적화해야 해. 다음 세 기법을 자주 함께 사용해:
torch.compile(model): TorchInductor로 모델 그래프를 JIT 컴파일해. 코드 한 줄로 1.5~3배 빨라질 수 있어. 전체 지원 범위는 다음 트랙에서 다룰 거야.- 양자화: 모델을 줄이고 행렬곱을 빠르게 하려고 수치 정밀도를 fp32에서 int8이나 int4로 낮춰. 현대적인 PyTorch 경로는
torchao야. - 배치 처리: 샘플 32개를 하나씩 추론하는 대신 배치 하나로 묶어 처리해. 장치 활용도가 낮으면 실제 비용이 커져.
적용 순서
- 즉시 실행 모드와 fp32에서 정확성을 먼저 맞추고 출력을 검증해.
- 하드웨어가 지원하면 bf16으로 바꾸고 정확도가 유지되는지 검증해.
torch.compile(model)을 추가하고 속도와 정확도를 다시 검증해.- 더 줄여야 한다면 양자화를 적용해. Transformer에는 동적 int8, LLM에는 int8 또는 int4 가중치 전용 양자화를 고려해.
- 요청을 서빙한다면 짧은 대기 시간 동안 들어온 요청을 하나의 배치로 묶어.
Python의 추가 비용도 잊지 마
작은 모델에서는 토큰화, 후처리, 직렬화가 추론 시간의 대부분을 차지할 수 있어. 순전파만 재지 말고 HTTP 요청부터 응답까지 전체 경로를 측정해. 해결책이 모델 변경이 아니라 토크나이저 캐시나 더 빠른 JSON 라이브러리일 때도 많아.