본문 바로가기
C.W.K.
Stream
Lesson 08 of 08 · published

컴파일과 내보내기 경로

~18 min · onnx, torchscript, compile

Level 0호기심
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

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%를 달성하는 경우가 많아.

원칙: 추론은 그 자체로 하나의 공학 분야야. 평가에서 가장 좋은 성능을 낸 모델을 손대지 않고 그대로 운영에 투입하는 일은 드물어. 보통 배포 전에 양자화, 지식 증류, 그래프 최적화로 모델을 다듬어.

Code

ONNX 내보내기와 ONNX Runtime 추론·python
import torch
import onnxruntime as ort

model.eval()
dummy = torch.randn(1, 3, 224, 224)
torch.onnx.export(
    model, dummy, "model.onnx",
    input_names=["x"], output_names=["logits"],
    dynamic_axes={"x": {0: "batch"}, "logits": {0: "batch"}},
    opset_version=17,
)

sess = ort.InferenceSession("model.onnx",
                            providers=["CPUExecutionProvider"])
out = sess.run(None, {"x": dummy.numpy()})[0]
print(out.shape)
로컬 추론용 LLM 양자화·bash
# Convert HF model to GGUF (llama.cpp format)
python convert-hf-to-gguf.py meta-llama/Llama-3.1-8B-Instruct

# Quantize to 4-bit
./quantize Meta-Llama-3.1-8B-Instruct.gguf model-q4_K_M.gguf q4_K_M

# Run via Ollama on Apple Silicon — Pippa's local fallback brain path
ollama create my-llama -f Modelfile
ollama run my-llama "Explain mixed precision in one paragraph" 

External links

Exercise

학습한 모델을 ONNX로 내보내. ONNX Runtime으로 불러온 뒤, 예측값이 PyTorch 결과와 수치 허용 오차 안에서 일치하는지 확인해. 그런 다음 INT8로 양자화하고 속도와 정확도를 비교해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.