Python이 배포 도구가 될 수 없을 때
머신러닝 작업 대부분이 Python에서 이뤄지므로 이 퀘스트도 주로 Python을 써. 하지만 App Store 앱이나 iOS·macOS 앱 실행 파일 안에 넣어야 하는 기능, Swift 기반 Apple 앱 프레임워크와 깊이 엮여야 하는 기능에는 Python이 맞지 않아. 이때 mlx-swift를 쓰면 같은 MLX 프레임워크를 Swift API로 다룰 수 있어.
Python MLX에서 익힌 생각은 거의 그대로 이어져. 배열에는 자료형이 있고, 지연 실행이 기본이며, 함수 변환도 있어. 문법은 let과 자료형 추론, 값의 메서드를 쓰는 Swift 모양이지만 개념상 API는 나란히 대응해.
MLX Swift가 주는 것
- 내부의 같은 MLX 커널 — 같은 하드웨어라면 성능도 Python MLX와 비슷해.
- 앱 배포 경로 — MLX를 iOS·macOS 앱 안에 넣어 App Store로 내보낼 수 있어. Python은 이 역할을 할 수 없어.
- Apple 프레임워크와 긴밀한 연동 — SwiftUI, Combine을 비롯한 Apple 앱 기술과 바로 연결돼.
- 더 작은 배포 구성 — Python 인터프리터와 pip 의존성, 함께 내보낼 가상 환경이 필요 없어.
대신 포기하는 것
- 라이브러리 생태계 — Hugging Face Transformers와 여러 편의 기능을 갖춘 mlx-lm 등 대부분의 머신러닝 라이브러리는 Python이 중심이야. mlx-swift는 핵심 기능을 다루지만 폭이 같지는 않아.
- 반복 속도 — Swift의 편집·컴파일·실행 과정은 Python REPL보다 느려. Python에서 반복하고 Swift에서 배포해.
- 커뮤니티 크기 — Python MLX 쪽에 사용자와 질의응답, 예제 코드가 더 많아.
권장 작업 흐름
- Python MLX에서 학습하고 반복해. 실험 단계에는 mlx-lm이나 mlx-vlm을 써.
- 결과를 변환하거나 합쳐. LoRA로 파인튜닝했다면 배포할 수 있는 모델로 합쳐(트랙 5 레슨 5).
- mlx-swift로 앱에 넣어. 2단계에서 만든 모델 디렉터리를 그대로 불러와. 디스크 형식은 같아.
- 앱을 내보내. 이후에는 표준 iOS·macOS 배포 절차를 따르면 돼.
Mac의 Ollama도 이와 같은 경로를 사용해. 배포 끝단의 언어가 Swift라고 해서 MLX 작업 흐름 자체가 달라지는 건 아니야.