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

솔직한 평가 — 지금 MLX가 아닌 것

~16 min · honest, limits, linalg-gap

Level 0호기심
0 XP0/51 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

장점만으로는 도구를 제대로 고를 수 없다

앞선 다섯 트랙은 MLX가 잘하는 일을 깊게 다뤘어. 이번에는 균형을 맞춰 MLX가 잘하지 못하는 일과 빠진 기능, 2026년 5월 기준 아직 거친 부분을 보자. 현실적인 기대를 세우고, 곧 메워질 빈틈과 구조적인 한계를 구분하는 데 써.

선형 대수의 빈틈

MLX의 mx.linalg 모듈은 NumPy나 PyTorch보다 훨씬 작아. mlx 0.31.x 기준으로 눈에 띄는 부재는 다음과 같아.

  • det — 행렬식 함수가 없어. 필요하면 LU 분해에서 U 대각 원소의 곱과 순열 행렬 P의 부호를 함께 계산하거나, NumPy 같은 검증된 구현을 써야 해.
  • lstsq — 최소제곱 풀이 함수가 없어. 정규방정식의 solve나 SVD 의사역행렬로 우회할 수 있어.
  • matrix_rank, matrix_exp, slogdet, cond — 수치 분석에 유용한 편의 함수가 MLX 핵심 모듈에 없어.
  • cholesky, qr, svd, lu, eig 같은 기본 분해는 MLX에도 있어. 뼈대는 있지만 편의층이 얇은 셈이야.

머신러닝 학습을 넘어 무거운 선형 대수까지 해야 한다면 MLX만으로 부족할 수 있어. 파이프라인의 그 부분은 NumPy와 CPU에 맡기는 편이 더 알맞을 수도 있지.

코드보다 늦게 따라오는 문서

MLX 공식 문서는 정확하지만 빠짐없이 최신인 것은 아니야. ml-explore.github.io/mlx/가 API 대부분을 다루지만 최신 버전보다 몇 주에서 몇 달 늦을 수 있어. 새 기능의 기준은 문서가 아니라 mlx-lm GitHub 저장소의 소스와 릴리스 안내야.

아직 초기인 분산 학습

prod.lesson6에서 짧게 다루는 JACCL은 Thunderbolt로 연결한 여러 Mac에서 MLX 분산 학습을 시도하는 활발한 연구 분야야. 2026년 5월 기준 macOS 26.3 이상에서만 쓸 수 있고, PyTorch 분산 학습 기술 묶음을 그대로 대체하지도 못해. 지금 여러 기기에 걸쳐 학습한다면 NVIDIA 환경의 PyTorch와 DeepSpeed가 여전히 현실적인 선택이야.

아직 뒤처진 CUDA 백엔드

mlx는 v0.27부터 Linux에서 여러 플랫폼 추론을 위한 CUDA 백엔드를 제공해. 2026년 5월 기준 실제로 작동하지만 연산 지원과 성능 모두 Apple Silicon 경로보다 뒤처져 있어. MLX식 코드를 Mac 밖에서도 돌려야 할 때는 쓸 수 있지만, Apple Silicon에서와 같은 경험을 기대하지 마.

PyTorch보다 작은 라이브러리 생태계

PyTorch에는 시각, 음성, 강화학습, 로봇공학, 과학 계산을 아우르는 수천 개의 외부 라이브러리가 있어. MLX에는 아직 없는 것들이 많지. mlx-vlm과 mlx-audio 같은 MLX 전용 꾸러미가 일부 빈틈을 채우지만, 다른 부분은 MLX 옆에 NumPy나 PyTorch를 함께 쓰는 혼합 파이프라인이 필요해.

그래도 MLX가 분명히 잘하는 것

정리하면 MLX는 Apple Silicon에서 LLM을 서빙하고 파인튜닝하는 데 가장 좋은 프레임워크이며, 일반 머신러닝 연구에도 믿을 만해. 하지만 무거운 수치 분석과 여러 기기의 분산 학습, PyTorch 생태계의 드문 라이브러리까지 필요한 작업에는 아직 맞지 않아. 경계를 안다는 건 강한 곳에서는 MLX를 쓰고, 아닌 곳에서는 다른 도구를 고를 수 있다는 뜻이야.

실패하는 흔한 LU 우회

아래 코드 블록은 일부러 남긴 반례야. U 대각 원소만 곱하고 P의 순열 부호를 실제 계산에 반영하지 않아서 행렬식 부호를 틀릴 수 있어. 마지막 주석의 sign may differ는 허용 가능한 수치 오차가 아니라 구현 결함의 신호야. 이 코드를 det 구현으로 쓰지 말고, 순열의 짝홀성을 정확히 반영하거나 NumPy처럼 검증된 함수를 써.

Code

불완전한 LU 우회의 부호 오류·python
# mx.linalg.det doesn't exist in mlx 0.31.x.
# Workaround via LU decomposition: det(A) = product of diagonal of U
import mlx.core as mx
import math

def det(A):
    # mlx.core.linalg.lu returns (P, L, U)
    P, L, U = mx.linalg.lu(A, stream=mx.cpu)
    diag = U.diagonal(0)
    # Sign from permutation parity
    return float(mx.prod(diag).item())

A = mx.array([[4.0, 2.0], [3.0, 1.0]])
print("det(A) =", det(A))
# Sanity: 4*1 - 2*3 = -2 (sign may differ depending on permutation)

External links

Exercise

행렬식, 최소제곱, 비대칭 행렬의 고윳값처럼 이전에 해 본 수치 분석 작업 하나를 골라. 필요한 기본 연산 중 MLX에 있는 것과 우회해야 하는 것을 찾아봐. 그 작업에는 MLX, NumPy, 혼합 방식 중 무엇을 쓸지 두 문장으로 설명해.

Progress

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

댓글 0

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

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