아무도 너에게 경고 안 하는 메타-문제
2026 의 MLX 작업의 더러운 비밀 — LLM 코딩 어시스턴트한테 MLX 코드 박으라고 부탁하면, 그럴듯해 보이고 종종 잘못된 출력 자신 있게 만들어. 존재하지 않는 함수 (mx.linalg.det 누구?). 두 릴리스 전 이름 바뀐 method signature. translate 안 되는 PyTorch 의 패턴. 출력이 유창, syntactically valid Python — 그리고 깨짐.
이게 정확히 LLM 의 잘못 아냐. MLX 가 너무 어리고 너무 PyTorch 와 distinct 해서 더 오래된 framework 에 그들이 manage 하는 유창함 레벨로 사전학습 LLM 가중치 안에 살기 어려워. 학습 데이터에 torch.tensor.to(device) 의 수천 예제와 mlx.core.array 의 몇 다스. 모델이 평균, 환각, 자신 있는 잘못된 답 만들어.
이 레슨은 그걸 살아남는 field guide. 내가 스스로 정직하게 두려고 사용하는 의식들, 그리고 LLM-박힌 MLX 코드를 검증해야 할 rough draft 로 다루게 하는 disposition, 절대 finished artifact 로 안.
환각 냄새 맡아
나쁜 LLM-생성 MLX 코드의 흔한 패턴:
- 존재하지 않는 함수 참조 — LLM 이 PyTorch / NumPy / JAX 에서 extrapolate 하고 그럴듯하게 들리는 MLX 등가물 발명.
mx.linalg.det,mx.tensor,mx.no_grad(),mx.cuda.is_available(). 자문 — "이게 존재한다는 데 돈 걸 거야?" 못 걸면 찾아봐. - 섞인 API 표면 —
torch.tensor와mx.array섞은 코드, 또는 모르고mlx.nn as nn와torch.nn as nn둘 다 import. LLM 이 여러 framework 의 패턴을 patch 해 함께 두는 중. - Stale API 이름 — mlx-lm 또는 mlx-vlm 이 마지막 몇 릴리스에 이름 바꾼 API 이름 사용하는 코드. LLM 의 학습 cutoff 가 MLX 엔 잘못된 날짜.
- 의심스럽게 자신 있는 architecture 디테일 — "양자화의 기본 group_size 는 32" (mlx-lm 에선 64). LLM 이 불확실성 인정하기보다 디테일 채워.
검증 의식
- 돌려. 항상. 환각된 함수 잡는 가장 빠른 방법은 스니펫 돌리는 것 — Python 의 import-시간 에러가 유용한 방식으로 unforgiving.
- 진짜 source 에 체크.
mlx_lm의 GitHub repo 가 grep 충분히 작아 — 의심스러우면 실제 코드에서 함수 이름 검색. - --help 와 dir() 사용.
python -m mlx_lm convert --help가 진짜 flag 리스트 말해줘. REPL 의dir(mlx.core)가 실제 노출된 거 말해줘. - 버전 인용. LLM 한테 MLX 에 대해 물을 때, "as of mlx 0.31.x" 또는 너 위 버전 prefix. 문제 fix 안 함, 근데 모델이 stale 스니펫 draw 할 가능성 줄임.
- LLM 출력보다 mlx-examples 와 mlx-lm 소스 신뢰. Reference repo 가 ground truth; LLM 은 paraphrase.
이 quest 박을 때 내가 다르게 하는 것
MLX Quest 의 모든 코드 블록은 박히기 전에 검증 env 에서 실제로 돌렸어. "내 머리에서 컴파일" 만 아니라 — 실제로 돌리고, 실제 출력 캡처해서 주석에 paste. 그게 너에게 배워달라고 부탁하는 코드를 신뢰하는 유일한 방법. 레슨 — production 에 MLX 박을 때 같이 해. 출하 전에 돌려.