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: cross-runtime portability

ONNX Runtime 이 같은 export 모델을 Windows, Linux, macOS, 모바일, web (WebAssembly 통해) 에 실행. PyTorch 못 가져가는 deploy 타겟이면 ONNX 가 보통 right pick. optimum.onnxruntime wrapper 가 한 메서드 콜로 변환.

MLX: Apple Silicon 네이티브

MLX 가 Apple 의 네이티브 ML 프레임워크: unified memory, Metal 커널, lazy evaluation. mlx-lm 이 Llama-스타일 아키텍처 wrap, HF 체크포인트를 Apple Silicon 에 네이티브 실행. throughput 이 같은 메모리 예산에 PyTorch + MPS 보다 종종 2-3x.

결정

너 deployment 표면이 모바일 / 브라우저 / 비-PyTorch 서버 포함 → ONNX. Apple Silicon (M-series Mac, iPad/iPhone) ship → MLX. 둘 다 단일 Hub 레포에 원본 PyTorch 체크포인트와 같이 sit.

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

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

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