설치는 두 줄이면 돼, 환경이 문제지
ARM용 Python 환경에서 pip install mlx mlx-lm을 실행하면 끝이야. 설치 흐름은 원래 그만큼 단순해. 실패의 대부분은 MLX가 아니라 Python 환경에 이미 있던 문제가 import mlx 순간 드러난 경우야.
그래서 이 레슨도 짧게 갈 거야. 전용 환경에 깨끗하고 재현 가능한 설치를 만들고, 확인 명령을 통과한 뒤, 몇 달 후에도 부담 없이 같은 상태를 다시 만들 수 있으면 충분해.
전용 conda 환경을 써
나는 MLX를 이름도 단순한 mlx conda 환경에 따로 두고 다른 머신러닝 도구와 섞지 않아. 종교적인 고집이 아니라 재현성 때문이야. MLX 자체는 의존성이 가벼워 충돌도 적지만, 3개월 뒤 호환성을 깨는 변경이 몇 번 지나간 상태에서 돌아오면 단일 목적 환경은 한 묶음만 올리면 되거든.
Rosetta 함정은 이렇게 생겨
python이 Rosetta의 x86 흉내 내기 환경에서 돌고 있으면 pip install은 조용히 성공한 뒤 첫 import mlx.core에서 SIGSEGV가 날 수 있어. pip가 잘못된 아키텍처의 의존성 휠을 골라도 링커는 불러오는 순간에야 문제를 발견하기 때문이야. 해결책은 platform.machine()이 arm64라고 보고하는 Python을 쓰는 거야.
macOS에서는 Miniforge나 최신 Miniconda가 가장 깔끔해. 둘 다 실제 ARM Python 환경을 만들 수 있어. Apple Silicon에 오래된 x86_64 설치 파일로 Miniconda를 설치하는 실수만 피하면 돼. 환경은 멀쩡해 보이는데 뒤에서 Rosetta를 쓰는 아주 얄미운 상태가 되거든.
세 가지만 확인하고 넘어가
아래 세 확인을 모두 통과하면 설치는 끝이야.
uname -m이arm64를 출력해.python -c "import platform; print(platform.machine())"도arm64를 출력해. Rosetta가 숨어 있으면 여기서 들켜.import mlx.core as mx; print(mx.__version__)가 성공하고 버전을 출력해.
특히 두 번째에서 실패했다면 다른 걸 만지기 전에 Python부터 바로잡아. "일단 불러와 보면 되겠지"라는 유혹은 여기서 아무 도움도 안 돼.