Mac에서 MiMo 2.6 Distill 9B 실행하기: 설치와 실제 코드 검증
18GB M3 Pro Mac에서 커뮤니티 MiMo 2.6 9B Q3 GGUF를 실행했습니다. 설정, 메모리 측정의 한계, 실패한 코딩 테스트를 공개합니다.
MiMo-V2.6-Distill-Qwen-9B는 이번에 테스트한 Mac 구성에서 로컬로 실행되었습니다. 통합 메모리 18 GiB의 Apple M3 Pro에서 커뮤니티 Q3_K_M GGUF와 llama.cpp를 사용했습니다. 모델 로딩과 텍스트 생성은 성공했지만, 시도한 작은 코딩 작업은 전체 완료 기준을 통과하지 못했습니다.
이 차이가 핵심 결과입니다. 메모리에 들어가는 모델이라고 자신의 작업에서도 신뢰할 수 있는 것은 아닙니다. 증류 9B 체크포인트는 호스팅 MiMo 2.6 Pro 모델과도 다릅니다.
실제 실행 구성
| 항목 | 테스트 구성 |
|---|---|
| 하드웨어 | Apple M3 Pro, 통합 메모리 18 GiB |
| 런타임 | llama.cpp 빌드 10470, 커밋 34af94cd9, Darwin arm64 |
| 양자화 배포자 | bartowski/MiMo-V2.6-Distill-Qwen-9B-GGUF |
| 저장소 리비전 | 4371da10c84fb26da3592d4cf312d24aa82b7b65 |
| 파일 | MiMo-V2.6-Distill-Qwen-9B-Q3_K_M.gguf |
| 다운로드 크기 | 4,479,948,320바이트, 약 4.17 GiB |
| 문맥 및 출력 상한 | 문맥 2,048토큰, 생성 최대 256토큰 |
| 샘플링 | Temperature 0, seed 42, 워밍업 비활성화 |
| 범위 | 로컬 텍스트 생성. 비전 프로젝터나 에이전트 도구 루프 미사용 |
Xiaomi 원본 체크포인트와 커뮤니티 GGUF 배포본은 서로 다른 배포물입니다. 후자는 양자화 변환본입니다. 공식 Xiaomi Q3 릴리스라고 부르지 말고 배포자와 리비전을 함께 기록하세요.
고정된 리비전의 파일을 다운로드하고 검증하기
신뢰할 수 있는 패키지 배포처에서 llama.cpp를 설치하세요. 테스트 Mac에서는 Homebrew를 사용했습니다. 여유 공간이 충분한 디렉터리에 이번 테스트와 같은 리비전을 다운로드합니다.
brew install llama.cpp
mkdir -p mimo26-test
cd mimo26-test
curl -fL --retry 2 \
'https://huggingface.co/bartowski/MiMo-V2.6-Distill-Qwen-9B-GGUF/resolve/4371da10c84fb26da3592d4cf312d24aa82b7b65/MiMo-V2.6-Distill-Qwen-9B-Q3_K_M.gguf' \
-o model-Q3_K_M.gguf
shasum -a 256 model-Q3_K_M.gguf
검증한 SHA-256은 다음과 같습니다.
d98e54ec9650b6554cfdeea531e2420009207d50471170d0c3640483df8e87eb
런타임, 로그, 정상적인 시스템 동작을 위한 추가 디스크 공간도 확보하세요. GGUF 크기는 다운로드 용량이며 전체 메모리 요구량이 아닙니다. 새로 설치한 llama.cpp는 테스트 빌드와 다를 수 있으므로 결과를 비교하기 전에 llama-cli --version을 기록하세요.
짧고 상한이 있는 요청 실행하기
/usr/bin/time -l llama-cli \
-m model-Q3_K_M.gguf \
-c 2048 -n 256 \
--single-turn --temp 0 --seed 42 --no-warmup \
-p 'Write a Python function unique_in_order(values) that removes duplicates while preserving first occurrence order. Inputs are hashable. Return only the function, with no explanation.'
실제로 실행한 명령의 구조입니다. /usr/bin/time -l은 이번에 사용한 macOS 측정 옵션이며 Linux에서도 같은 플래그가 있다고 가정하면 안 됩니다. 문맥은 의도적으로 작게 설정했습니다. 이 실행으로 훨씬 큰 문맥, 멀티모달 입력, 동시 요청까지 검증한 것은 아닙니다.
생성된 코드에서 확인한 실패
첫 실행에서 다음 함수가 반환되었습니다.
def unique_in_order(values):
if not values:
return []
result = [values[0]]
for value in values[1:]:
if value != result[-1]:
result.append(value)
return result
인접한 중복 값은 제거하지만 나중에 다시 나타나는 값은 제거하지 못합니다. 생성된 함수를 다음 네 사례로 확인했습니다.
| 입력 | 기대 결과 | 첫 실행의 실제 결과 | 판정 |
|---|---|---|---|
[] | [] | [] | 통과 |
[1, 1, 2] | [1, 2] | [1, 2] | 통과 |
[1, 2, 1, 3, 2] | [1, 2, 3] | [1, 2, 1, 3, 2] | 실패 |
['a', 'b', 'a'] | ['a', 'b'] | ['a', 'b', 'a'] | 실패 |
두 번째 실행에서는 서로 떨어진 중복 값을 포함한 예시를 프롬프트에 추가했지만 같은 두 사례에서 실패했습니다. 세 번째 실행에서는 원래 프롬프트를 반복했고 첫 실행과 같은 함수가 반환되었습니다. 작은 작업 하나에 대한 세 번의 동작 점검입니다. 대표성 있는 정확도 벤치마크도, 다른 양자화에서도 같은 결과가 나온다는 증거도 아닙니다.
실행 시간과 메모리 수치의 의미
| 실행 | CLI가 보고한 생성 속도 | 프로세스 경과 시간 |
|---|---|---|
| 원래 프롬프트 | 14.4토큰/초 | 27.74초 |
| 명시적 예시를 추가한 프롬프트 | 13.7토큰/초 | 15.62초 |
| 원래 프롬프트 반복 | 15.3토큰/초 | 14.49초 |
경과 시간에는 시작과 로딩이 포함됩니다. 처음 두 번은 로컬 블로그 빌드와 동시에 실행했고, 세 번째는 빌드가 끝난 뒤 실행했습니다. 이 수치는 해당 기기의 관측값이며 조건을 통제한 속도 비교가 아닙니다. 작업이 모든 사례를 통과하지 못했으므로 정확한 해결책을 얻기까지의 전체 시간은 측정하지 못했습니다.
macOS가 보고한 최대 프로세스 상주 메모리는 각각 약 1.91, 3.86, 3.84 GiB였습니다. 운영체제의 프로세스 통계이며 전용 GPU VRAM 측정값이나 모델의 전체 통합 메모리 요구량이 아닙니다. 메모리 매핑, 공유 버퍼, 다른 애플리케이션도 이 통계를 해석할 때 고려해야 합니다. 이번 테스트가 뒷받침하는 것은 “이 18 GiB Mac에서 실행되었다”는 사실이지, “4 GiB만 필요하다”거나 “모든 8 GiB GPU에 들어간다”는 주장이 아닙니다.
다운로드 가능한 테스트 기록에는 생성된 함수, 기대 출력과 실제 출력, 측정 설정이 포함되어 있습니다.
다음에 시도할 사항
명시적인 완료 판정 사례가 있는 작업을 사용하고, 생성 코드를 실행하기 전에 검토하세요. 로컬 출력이 실패했을 때 프롬프트, 양자화, 모델을 바꾸는 것은 각각 별도의 결과가 필요한 실험입니다. 어떤 변경도 위 실패를 해결한다고 보장할 수는 없습니다.
호스팅 추론은 MiMo API 안내에서 별도의 연결 경로를 설명하며, 요금 안내에서 직접 서비스 단가를 다룹니다. 호스팅 Pro와 이번 로컬 9B 변환본은 다른 모델이므로 한쪽의 결과를 다른 쪽의 테스트로 해석하면 안 됩니다.
자주 묻는 질문
- 전체 MiMo 2.6 Pro가 18GB Mac에서 실행된다는 뜻인가요?
- 아니요. 별도의 증류 9B 체크포인트를 커뮤니티에서 Q3으로 양자화한 파일을 테스트했습니다.
- 로컬 코딩 테스트는 통과했나요?
- 모델 로딩과 코드 생성은 성공했지만 세 번 모두 서로 떨어진 중복 값을 제거하는 사례에서 실패했습니다. 소규모 동작 점검이며 종합 벤치마크가 아닙니다.
- 보고된 상주 메모리 크기가 GPU VRAM 요구량인가요?
- 아니요. macOS 프로세스 통계이며 전체 통합 메모리나 GPU 메모리 요구량을 측정한 값이 아닙니다.


