PyTorch 모델을 추론 환경에 배포하기까지
모델 학습을 마쳤어. 이제 서버, 스마트폰, 임베디드 장치, 엣지 GPU 중 어디서 실행할지 정해야 해. 주요 경로는 3개야:
- torch.compile — PyTorch를 지원하는 환경에 배포할 때 가장 빠르게 적용할 수 있는 경로야. 순전파 과정을 결합 커널로 JIT 컴파일해. PyTorch가 지원하는 동일한 장치에서 작동해.
- ONNX — ONNX Runtime, TensorRT, OpenVINO, CoreML 등에서 실행할 수 있도록 공급업체에 종속되지 않는 그래프 형식으로 내보내는 방식이야. 여러 환경에 이식하기 좋아.
- TorchScript — 오래전부터 쓰인 PyTorch 자체 직렬화 방식이야. 새 코드에서는 torch.compile이 그 자리를 대신하지만, 레거시 환경에서는 여전히 흔히 볼 수 있어.
팁: 현대적인 추론 환경에서 실용적으로 쓰이는 도구는 이래. PyTorch 서버에는
torch.compile, 크로스 플랫폼 배포에는 ONNX Runtime, LLM 서빙에는 vLLM 또는 TGI, iOS에는 Core ML, Android에는 TensorFlow Lite, 로컬 양자화 LLM 추론에는 llama.cpp를 써.양자화
모델 크기를 줄이고 추론 속도를 높이려면 가중치 정밀도를 FP32 → INT8 또는 INT4로 낮춰. 보통 정확도 손실은 크지 않아. 방식은 3가지야. 학습 후 양자화는 비용이 적게 들고 재학습이 필요 없어. 양자화 인식 학습은 정확도가 더 좋지만 과정이 더 복잡해. 가중치 전용 양자화는 LLM 배포에 쓰이며 AWQ, GPTQ 등이 여기에 속해.
지식 증류
큰 교사 모델의 예측을 따라 하도록 작은 학생 모델을 학습하는 방식이야. 운영 환경에서 서빙 비용을 줄이기 위해 흔히 사용해. 학생는 교사의 5-10%에 불과한 매개변수만으로도 교사 정확도의 90-95%를 달성하는 경우가 많아.
원칙: 추론은 그 자체로 하나의 공학 분야야. 평가에서 가장 좋은 성능을 낸 모델을 손대지 않고 그대로 운영에 투입하는 일은 드물어. 보통 배포 전에 양자화, 지식 증류, 그래프 최적화로 모델을 다듬어.