ml-explore/mlx-swift

Swift API for MLX

MLX Swift – MLX 머신러닝 배열 라이브러리를 위한 Swift 바인딩

소개 – MLX Swift는 Apple 실리콘 GPU(Metal)에서 기본적으로 실행되고 CUDA를 통해 Linux에서도 실행되는 배열 지향 머신러닝 프레임워크인 MLX의 Swift 언어 래퍼입니다. Python 버전과 동일한 텐서 연산, 신경망 계층 및 옵티마이저를 제공하며, Swift로 코드를 작성하여 iOS, macOS 또는 서버 측 Swift 프로젝트에 직접 통합할 수 있습니다.

중요성 – Apple 하드웨어(M 시리즈 칩)는 강력한 GPU를 제공하지만 대부분의 ML 라이브러리에서는 직접 접근할 수 없습니다. MLX는 Metal과 통신하는 저수준의 고성능 텐서 라이브러리를 제공하며, MLX Swift는 이를 Swift 생태계에서 사용할 수 있게 함으로써 Apple 개발 스택을 벗어나지 않고도 온디바이스 학습, 추론 및 연구를 가능하게 합니다.

주요 구성 요소

  • MLX – 핵심 텐서 유형 및 연산.
  • MLXNN – 신경망 계층 빌딩 블록(컨볼루션, 선형, 활성화 등).
  • MLXOptimizers – SGD, Adam 등 표준 옵티마이저.
  • MLXRandom – 재현 가능한 난수 생성.

사용 방법

  1. Xcode 프로젝트 또는 Package.swift 파일에 패키지를 추가합니다(예: .package(url: "https://github.com/ml-explore/mlx-swift", from: "0.10.0")).
  2. 원하는 모듈을 가져오고(import MLX, import MLXNN, …) 텐서를 생성하고 모델을 정의하며 학습 또는 추론을 실행하는 Swift 코드를 작성합니다.
  3. Xcode(필요한 Metal 셰이더를 컴파일함)를 사용하여 빌드하거나 명령줄 또는 Linux 빌드를 위해 CMake/Ninja를 사용합니다.

일반적인 워크플로우 –

import MLX, MLXNN, MLXOptimizers

let x = MLXArray.randomNormal(shape: [64, 784])   // input batch
let model = Sequential {
    Linear(inFeatures: 784, outFeatures: 128)
    Relu()
    Linear(inFeatures: 128, outFeatures: 10)
}
let opt = Adam(parameters: model.parameters, learningRate: 0.001)

let logits = model(x)
let loss = softmaxCrossEntropy(logits, targets: …)
opt.step(loss: loss)

동일한 코드가 빌드 플래그에 따라 macOS/iOS(Metal GPU) 또는 Linux(CPU/CUDA)에서 실행됩니다.

저장소와 함께 제공되는 예제 –

  • MNISTTrainer – 클래식 MNIST 데이터셋에서 LeNet 모델을 학습하며 iOS 및 macOS에서 실행 가능.
  • MLXChatExample – Hugging Face에서 언어 모델과 비전 언어 모델을 로드하여 로컬에서 추론을 실행하는 작은 채팅 UI.
  • LLMEval – LLM과 토크나이저를 다운로드한 후 프롬프트에서 텍스트를 생성.
  • StableDiffusionExample – 온디바이스에서 Stable Diffusion 확산 모델을 실행하여 이미지 생성.
  • llm-tool – Hugging Face LLM을 사용하여 빠르게 텍스트를 생성하기 위한 명령줄 유틸리티. 모든 예제는 동반되는 mlx-swift-examples 저장소에 있으며 Python MLX 생태계에서 모델을 포팅하는 방법을 보여줍니다.

설치 옵션

  • Xcode – 저장소를 Swift Package로 추가한 다음 필요한 라이브러리를 연결합니다. 복잡한 종속성 그래프의 경우 제공된 xcode/MLX.xcodeproj를 통해 MLX를 프레임워크로 빌드할 수도 있습니다.
  • SwiftPM (CLI) – Package.swift에서 패키지를 선언합니다. Metal 셰이더는 여전히 Xcode로 컴파일해야 한다는 점에 유의하세요.
  • CMake/Ninja – macOS(Metal) 및 Linux(CPU 또는 CUDA)에서 작동합니다. 기본 C-MLX 코드에 대한 하위 모듈을 먼저 초기화해야 합니다.

커뮤니티 및 기여 – 이 프로젝트는 허용적인 라이선스 하에 오픈 소스로 제공되며, 풀 리퀘스트를 환영하고 릴리스 계획 이슈 뷰를 유지 관리합니다. 기여는 CONTRIBUTING.md에 따라 안내되며 감사의 말은 ACKNOWLEDGMENTS.md에 나열되어 있습니다.

더 알아보기 – 전체 API 문서는 SwiftPackageIndex에 호스팅되어 있으며, 업스트림 MLX 문서는 기본 텐서 라이브러리에 대해 설명합니다.


요약 – MLX Swift는 Apple 실리콘 가속 MLX를 Swift 세계로 가져와 개발자가 익숙한 Swift API를 사용하여 iOS/macOS 또는 Linux에서 직접 신경망 코드(LLM, 비전 언어 모델, 확산 모델 포함)를 작성하고 실행할 수 있도록 합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트