Apple 실리콘에서 MLX 로컬 추론용 mlx-lm을 빨리 깔고 확인할 때 그대로 쓰려고 모아 둔 메모입니다. 모델 ID만 바꿔 붙여넣으면 됩니다.

1. Installation

pip install -U mlx-lm

2. Fast Set Up

2.1 Server

Short Version

mlx_lm.server --model mlx-community/gemma-4-26b-a4b-8bit --port 8080

Longer Version — 서버 실행 시점에 기본 샘플링·토큰 상한·호스트·로그를 같이 잡습니다. 클라이언트가 요청 바디에서 temperature / max_tokens 등을 보내면 보통 그 값이 우선합니다.

mlx_lm.server \
  --model mlx-community/gemma-4-26b-a4b-8bit \
  --host 127.0.0.1 \
  --port 8080 \
  --log-level INFO \
  --max-tokens 4096 \
  --temp 0.7 \
  --top-p 0.95 \
  --top-k 40 \
  --min-p 0 \
  --decode-concurrency 2 \
  --prompt-concurrency 2 \
  --trust-remote-code
  • --max-tokens: 요청에서 안 주었을 때 쓰이는 생성 길이 기본값(버전별 기본은 보통 더 작음).
  • --temp / --top-p / --top-k / --min-p: 같은 맥락의 기본 샘플링. curl처럼 요청 안에 명시하면 덮어씀.
  • --decode-concurrency / --prompt-concurrency: 동시 요청들을 어떻게 묶어 돌릴지(머신 여유 없으면 1로 낮춤).
  • 토크나이저 커스텀 코드 때문에 로딩 에러 나면 --trust-remote-code 유지.

2.2 Inference

출력 한 번만 받아서 패키지·다운로드·추론이 살았는지 보려면:

export MODEL='mlx-community/gemma-4-26b-a4b-8bit'
mlx_lm.generate --model "$MODEL" -p 'Say hi in one short sentence.'

실제 글처럼 짧게 써 보기:

export MODEL='mlx-community/gemma-4-26b-a4b-8bit'
mlx_lm.generate --model "$MODEL" --max-tokens 256 --temp 0.7 --top-p 0.95 \
  --prompt '안녕. AI 미래에 대해서 논문작성'

서버 띄우고 API로 찍어보기

터미널 A — 서버:

export MODEL='mlx-community/gemma-4-26b-a4b-8bit'
mlx_lm.server --model "$MODEL" --host 127.0.0.1 --port 8080

터미널 B — 헬스처럼 한 번 호출(OpenAI 형식 채팅):

curl -sS http://127.0.0.1:8080/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "'"$MODEL"'",
    "messages": [{"role": "user", "content": "Reply with exactly: pong"}],
    "max_tokens": 32,
    "temperature": 0.2
  }' | python3 -m json.tool

choices[0].message.content 에 응답이 오면 클라이언트 연동도 같은 호스트로 이어 붙이면 됩니다.

대화형으로 손코딩 전에 놀아보기

mlx_lm.chat --model "$MODEL"

종료는 보통 터미널 종료 신호로 나가면 됩니다.

속도만 대략 재보기 (선택)

mlx_lm.benchmark --model "$MODEL" -p 256 -g 128 -n 3

더 세게 조이고 싶으면 각각 --help. 설치되어 있는 서브커맨드 목록은 python -m mlx_lm.