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

ONNX 와 MLX 변환

~22 min · ops, onnx, mlx

Level 0스카우트
0 XP0/50 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

ONNX는 PyTorch 밖으로 모델을 옮겨

ONNX Runtime은 같은 변환 모델을 Windows, Linux, macOS, 모바일, WebAssembly 환경에서 실행해. 배포 대상에 PyTorch를 넣기 어렵다면 ONNX가 좋은 공통 형식이고 optimum.onnxruntime으로 변환할 수 있어.

MLX는 Apple Silicon의 구조를 직접 활용해

MLX는 unified memory, Metal 커널, 지연 평가를 사용하는 Apple의 ML 프레임워크야. mlx-lm은 Llama 계열 HF 체크포인트를 Apple Silicon에서 실행하며 같은 메모리 예산에서 PyTorch·MPS보다 높은 처리량을 내는 경우가 많아.

배포 표면으로 결정해

모바일·브라우저·비 PyTorch 서버까지 포함하면 ONNX를, M 시리즈 Mac 중심의 네이티브 실행이면 MLX를 골라. 변환본은 원본 체크포인트와 함께 같은 Hub 저장소에 두고 계보를 명시해.

Code

optimum 으로 ONNX export·python
from optimum.onnxruntime import ORTModelForCausalLM
from transformers import AutoTokenizer

repo = "Qwen/Qwen2.5-1.5B-Instruct"
tok = AutoTokenizer.from_pretrained(repo)
ort = ORTModelForCausalLM.from_pretrained(repo, export=True)

ort.save_pretrained("./qwen-onnx")
tok.save_pretrained("./qwen-onnx")

# 인퍼런스
inputs = tok("Hello", return_tensors="pt")
out = ort.generate(**inputs, max_new_tokens=20)
print(tok.decode(out[0], skip_special_tokens=True))
Apple Silicon 의 MLX 변환 + 실행·bash
# pip install mlx-lm
# HF 모델을 in-place 로 MLX 포맷 변환
python -m mlx_lm.convert --hf-path Qwen/Qwen2.5-1.5B-Instruct --mlx-path ./qwen-mlx

# Generate
python -m mlx_lm.generate \
  --model ./qwen-mlx \
  --prompt "Hello, MLX." \
  --max-tokens 50

External links

Exercise

1-3B 모델을 optimum 으로 ONNX 변환. 인퍼런스 실행, 같은 머신에서 PyTorch+MPS 또는 +CUDA 와 토큰별 latency 비교. Apple Silicon 있으면 MLX 도 변환 (mlx_lm.convert) 거기서 실행. 어디서 각 포맷이 이기는지 메모.

Progress

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

댓글 0

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

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