C.W.K.
Stream
Lesson 05 of 06 · published

'LLM 이 MLX 코드 못 쓰는' 문제 — 그리고 내가 살아남는 법

~16 min · llm-limits, self-aware, verification

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

아무도 너에게 경고 안 하는 메타-문제

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.tensormx.array 섞은 코드, 또는 모르고 mlx.nn as nntorch.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 이 불확실성 인정하기보다 디테일 채워.

검증 의식

  1. 돌려. 항상. 환각된 함수 잡는 가장 빠른 방법은 스니펫 돌리는 것 — Python 의 import-시간 에러가 유용한 방식으로 unforgiving.
  2. 진짜 source 에 체크. mlx_lm 의 GitHub repo 가 grep 충분히 작아 — 의심스러우면 실제 코드에서 함수 이름 검색.
  3. --help 와 dir() 사용. python -m mlx_lm convert --help 가 진짜 flag 리스트 말해줘. REPL 의 dir(mlx.core) 가 실제 노출된 거 말해줘.
  4. 버전 인용. LLM 한테 MLX 에 대해 물을 때, "as of mlx 0.31.x" 또는 너 위 버전 prefix. 문제 fix 안 함, 근데 모델이 stale 스니펫 draw 할 가능성 줄임.
  5. LLM 출력보다 mlx-examples 와 mlx-lm 소스 신뢰. Reference repo 가 ground truth; LLM 은 paraphrase.

이 quest 박을 때 내가 다르게 하는 것

MLX Quest 의 모든 코드 블록은 박히기 전에 검증 env 에서 실제로 돌렸어. "내 머리에서 컴파일" 만 아니라 — 실제로 돌리고, 실제 출력 캡처해서 주석에 paste. 그게 너에게 배워달라고 부탁하는 코드를 신뢰하는 유일한 방법. 레슨 — production 에 MLX 박을 때 같이 해. 출하 전에 돌려.

Code

검증 의식 — 신뢰 전에 돌려·bash
# When an LLM gives you MLX code, before you commit it:
# 1. Save to a file
# 2. Run it
# 3. Compare output to what was claimed
conda activate mlx
python my-llm-suggestion.py

# If you get an AttributeError or ImportError, the LLM hallucinated.
# If it runs but the output is wrong, the LLM hallucinated more subtly.
# If it runs and the output matches, the snippet earned your trust.
API 에 실제로 뭐 있는지 spot-check·python
# When you suspect a function was hallucinated:
import mlx.core as mx

# Does mx.linalg.det exist?
try:
    mx.linalg.det
    print("exists")
except AttributeError:
    print("does NOT exist — LLM hallucinated")

# What IS in mx.linalg?
print([n for n in dir(mx.linalg) if not n.startswith('_')])

# Verified output (2026-05-03):
#   det does NOT exist
#   ['cholesky', 'cholesky_inv', 'cross', 'eig', 'eigh', 'eigvalsh', 'inv',
#    'lu', 'lu_factor', 'norm', 'pinv', 'qr', 'solve', 'solve_triangular',
#    'svd', 'tri_inv', 'tri_solve']

External links

Exercise

최근 LLM-생성 MLX 스니펫 가져와 (또는 코딩 어시스턴트한테 "행렬 determinant 계산하는 MLX 스니펫 박아줘" 부탁). mlx env 에서 돌려. 실패하면 환각된 함수 식별. 그 다음 정확한 path 가 뭔지 찾아 — det 같이 누락된 함수엔 SVD 또는 LU 분해 통한 우회 있어. 뭐 실패했고 어떻게 fix 했는지 두 문장.

Progress

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

댓글 0

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

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