1P by GN⁺ 15시간전 | ★ favorite | 댓글 1개
  • MLXApple Silicon 기반 기계학습 연구자를 위한 배열 프레임워크
  • Python 및 C++/C/Swift API 제공, NumPy 및 PyTorch와 유사한 사용성 제공
  • 자동 미분, 자동 벡터화, 지연 연산, 동적 그래프 등 고급 기능 지원
  • 통합 메모리 모델로 데이터 전송 없이 CPU 및 GPU 등 다양한 장치에서 연산 가능
  • 최신 업데이트로 CUDA 백엔드 지원 추가 추진, 다양한 하드웨어 환경 확장 시도 의미

MLX 프레임워크 소개

  • MLX는 Apple의 머신러닝 연구팀이 개발한 기계학습용 배열 프레임워크
  • 엔지니어와 연구자가 효과적으로 실험하고 빠르게 아이디어를 검증할 수 있도록 개발됨
  • Apple Silicon을 지원하는 것이 특징이지만, 최근 CUDA 백엔드 추가로 NVIDIA GPU 환경에서도 동작 가능성을 확장함

주요 특징

  • 친숙한 API: Python API는 NumPy를, 상위 패키지인 mlx.nn, mlx.optimizersPyTorch와 유사한 인터페이스 제공
    • C++ , C, Swift API도 함께 제공되며, Python API와 일관된 사용성 보장
  • 합성 가능한 함수 변환: 자동 미분, 자동 벡터화, 컴퓨팅 그래프 최적화 등의 기능이 포함됨
  • 지연 계산: 여러 연산을 묶어 실제로 필요할 때만 결과를 계산하는 구조로 효율적인 리소스 활용 가능
  • 동적 그래프 생성: 입력 데이터의 shape이 바뀌어도 느린 컴파일 없이 즉각적인 실행, 개발 및 디버깅이 용이함
  • 멀티 디바이스 및 통합 메모리 모델:
    • 기존에는 CPU와 Apple GPU만 지원했으나, CUDA 백엔드로 NVIDIA GPU 환경 지원 추진 중
    • 통합 메모리 구조 채택으로, 메모리 복사 없이 모든 지원 장치에서 동일 객체 연산 가능
  • 간결하고 확장 가능한 설계: 연구자들이 프레임워크를 손쉽게 확장 및 개선 가능

타 프레임워크와의 차이점 및 영감

  • NumPy, PyTorch, Jax, ArrayFire 등에서 설계 영감 받음
  • 특징적으로 통합 메모리 모델간결한 인터페이스, 즉시 실행/디버깅 환경을 강조함

대표적 예시 및 활용 분야

  • MLX Examples 레포에는 다양한 실습 코드가 존재함
    • Transformer 언어 모델 학습
    • LLaMA 기반 대규모 텍스트 생성 및 LoRA 활용한 파인튠
    • Stable Diffusion으로 이미지 생성
    • OpenAI Whisper 기반 음성 인식 등 최신 모델 구현 사례 포함

설치 및 문서

  • Python 환경에서 pip 또는 conda로 설치 가능함 (PyPI 및 conda-forge 지원)
  • 공식 문서에서 빠른 시작 가이드, 설치법, C++ 및 Python 빌드 방법 제공

기여 및 인용

  • MLX는 외부 기여를 환영하며, 공식 가이드라인에 따라 코드·문서에 쉽게 참여 가능함
  • 연구 수행 시 아래 BibTeX 양식으로 MLX 소프트웨어 인용 가능
@software{mlx2023,
  author = {Awni Hannun and Jagrit Digani and Angelos Katharopoulos and Ronan Collobert},
  title = {{MLX}: Efficient and flexible machine learning on Apple silicon},
  url = {https://github.com/ml-explore},
  version = {0.0},
  year = {2023},
}

MLX의 의미와 CUDA 지원

  • Apple Silicon 중심의 프레임워크였던 MLX가 CUDA 백엔드 도입으로 NVIDIA GPU 환경에서도 범용적으로 활용될 가능성 확장 중
  • 최신 CUDA 지원을 통해, Apple과 NVIDIA 양쪽 하드웨어에서 최신 연구 및 산업 활용 모두에 적합한 프레임워크로 자리매김할 전망
Hacker News 의견
  • 내 이해가 맞는지 확인하고 싶음: 1번, MLX로 빌드된 프로그램은 CUDA가 지원되는 칩에서 작동이 가능함. 하지만 2번, CUDA 프로그램이 Apple Silicon에서 작동하는 건 불가능함. 이유는 2번이 저작권(특히 NVidia의 유명한 진입장벽) 위반이 되기 때문임이 맞는지 궁금함
    • 1번이 맞음. 개발자가 상대적으로 저사양인 Apple 기기(UMA 포함)로 개발하고, 완성된 코드를 Nvidia의 상대적으로 고사양 시스템에 배포할 수 있게 해줌. 여러 이유로 유용함
    • 2번은 저작권 위반이 아님. API 재구현은 가능함
    • 2번에 대해서는, 정말로 맞는 말이 아닐 듯함. AMD의 HIP도 17~18년쯤 OpenCL을 포기하고 동일한 작업을 하고 있음
    • 나는 3번을 원함. NVIDIA GPU를 Apple Silicon에 연결해서 CUDA를 사용할 수 있으면 좋겠음. Apple Silicon과 통합 메모리, GPU, CUDA를 PyTorch, JAX, 또는 TensorFlow로 같이 쓰는 상상이지만, 아직 MLX를 제대로 경험해보지는 못했음
    • 2번이 안 되는 건 크게 더 어렵기 때문임
  • "아니, Apple 플랫폼은 공식 CUDA 지원이 없는데?"라고 생각했다면, 이 패치 세트가 "CUDA 12 및 SM 7.0(Volta) 이상의 Linux 플랫폼"까지도 지원한다는 소식도 함께 참고할 필요 있음
    설치 안내
  • 이 프로젝트는 Electron 등의 제작자로 유명한 zcbenz가 주도함
    zcbenz 소개
  • MLX의 주요 특징 중 하나가 통합 메모리 아키텍처(UMA) 사용인데, 이게 어떻게 작동하는지 궁금증이 있음
    리포지토리 readme의 bullet 참고: MLX 깃허브
    모든 UMA APU(제조사 관계없이)로 확장하면 재밌을 것으로 생각하지만, 디스크리트 GPU에서는 방식이 달라야 한다는 의문이 있음
    PR 코멘트 읽어보니, CUDA 역시 UMA API를 직접 지원하고 필요한 경우 투명하게 복사를 처리하는 것 같음
    • 내 경험상 프리페치 기능 미비로 복사 대기 때문에 메모리 병목이 심하게 발생하는 문제 있음. 전체 데이터셋이 VRAM에 들어갈 때 수동 프리페치를 하면 괜찮지만, 내 애플리케이션(ML 학습)에서는 성능 하락이 너무 커서 스트리밍 로드로 직접 전환했었음
  • 약간 다른 이야기지만, MLX 작업자들 상당수가 Apple에 공식 소속이 아닌 듯 보임. 예시로 prince_canuma의 트위터 참고
    Apple이 뒤에서 지원하고 공식적으로 드러내지 않는 걸까 궁금증이 생김. 팀이 이적한다는 루머도 있었음
  • PR 설명에서 "CUDA 백엔드를 추가하는 ongoing effort"라고 되어 있음
    즉, MLX 코드가 x86 + GeForce 하드웨어에서 빌드 및 실행 가능하다는 뜻이고, 그 반대는 아님
  • "맥에서 코드 작성/테스트하고 슈퍼컴에 배포할 수 있다면 좋은 개발 경험"이라는 말처럼, 이제 MLX를 리눅스에서 쓸 수 있느냐는 의문이 있음
    직접 테스트해 봤는데, 파이썬 3.12 버전만 pypi에 올라와 있음
    MLX-CUDA PYPI 페이지
  • 이게 Strix Halo의 영향일지 궁금함. 업무 컴퓨터 스펙이 남아서 EVO-X2를 샀는데, 이게 미드레인지 znver5 EPYC 머신들과 비슷하거나 더 좋음. 대부분의 EC2나 GCE 인스턴스(심지어 NVMe까지)를 훨씬 앞섬. 이 하드웨어 가격은 1800임
    최근 DGX Spark가 Strix Halo에 비해 가격 대비 효율이 떨어진다는 유튜버 리뷰도 나오는 중임. 단점은 ROCm이 아직 부실함(곧 좋아질 것으로 보임). 만약 Apple 기기에서 CUDA가 완벽하게 돌아간다면, Strix가 아무리 싸고 좋아도 진지하게 고민할 만한 선택지임
    • Strix Halo란 바로 AMD Ryzen AI Max+ 395랑 같음. Framework Desktop이나 여러 미니 PC에 들어가고 있음. 이 칩의 메모리 대역폭은 200GB/s으로 일반 x86 플랫폼에서는 매우 좋지만 Nvidia GPU(예: 5090은 1792GB/s)나 Apple M3 Ultra(800GB/s)에 비하면 한참 부족함. 가격대비 성능은 훌륭하지만, LLM과 같이 메모리 집약적인 작업에서는 이제 막 최소 성능에 진입했다는 생각임
    • PR 설명을 보면 클라우드 클러스터 트레이닝이 타깃임을 명확히 알 수 있음
    • AMD GPU의 신경망 연산이 곧 Nvidia 경쟁 상대가 된다는 얘기가 나온 지 10년째인데, 아직도 실현되지 않은 상태임
    • m4 맥 미니와 비교해서 어떠냐는 궁금증이 있음
  • MLX 모델에 매우 깊은 인상을 받음. 집안 모두에게 로컬 모델을 열어놓아도 Nvidia 컴퓨터처럼 화재 위험을 걱정할 필요가 없음. Apple Silicon이 Nvidia 칩 진영에 진지한 경쟁자가 되길 바람. CUDA 지원이 만약 embrace, extend, extinguish(EEE)에 해당하는 전략일지도 궁금함
  • Apple이 향후 m시리즈 칩 기반 데이터센터를 구축해서 앱 개발, 테스트 및 외부 서비스 호스팅 등에 활용할 계획임