M4 Max 128GB에서 DeepSeek V4.1 Flash 1017 Q2, 128K 위치에서 생성 초당 16~18토큰
340GiB짜리 DeepSeek V4.1 Flash 1017 Q2를 통합 메모리 128GiB인 M4 Max에서 SSD 스트리밍으로 돌려, 32K씩 128K까지 쌓는 작업을 소설·코드 각 3회 쟀습니다. 128K 위치 생성은 16~18 tok/s였습니다.
DeepSeek가 10월에 V4.1 Flash의 새 가중치(1017)를 따로 내놓았습니다. antirez가 이를 Q2로 양자화한 파일은 340.60GiB로, 통합 메모리 128GiB인 M4 Max에는 다 올라가지 않습니다. 그래서 이전 글에서 찾은 분리 배치를 그대로 썼습니다. 매 레이어 읽는 일반 가중치는 내장 SSD에, 드문드문 읽는 Engram은 외장 SSD의 원본에서 읽습니다. 이 구성으로 32K씩 문맥을 쌓아 128K까지 가는 작업을 소설과 코드 각각 3회 쟀습니다.
이 결과를 읽을 때 알아 둘 것
- 측정 경계가 공통 벤치마크와 다릅니다. 입력, 32K씩 쌓는 방식, 256토큰 생성, 3회 반복은 공통 작업과 같지만, HTTP 서버를 거치지 않고 엔진의 C 세션 API를 직접 불러 쟀습니다. 첫 토큰 시간도 HTTP 스트리밍으로 도착한 시각이 아니라 엔진 안에서 첫 토큰이 나온 시각입니다. 그래서 HTTP로 잰 다른 글의 표와 나란히 비교하지 않습니다.
- 엔진은 정식 배포판이 아닙니다. ds4 main이 아니라 PR 세 개(#1073
72ccf363, #1225ef7894bf, #126358adc604)와 분리 배치 패치를 얹은 후보로, 같은 날 새벽 엔진 비교에서 고른 것입니다. 운영 중인 엔진과도 다릅니다. - 가중치는 이전 글과 다릅니다. 이전 글은 원래 V4.1, 이 글은 1017입니다. 엔진, 반복 횟수, 측정 방식도 달라서 이전 글의 수치와 배율을 계산하지 않습니다.
사용 설정
| 항목 | 값 |
|---|---|
| 기계 | M4 Max 40GPU, 통합 메모리 128GiB, macOS 27.0 |
| 모델 | antirez DeepSeek V4.1 Flash 1017, IQ2_XXS/Q2_K imatrix (HF revision 9dcee516) |
| 배치 | 일반 가중치는 내장 SSD의 sparse 파일(실제 할당 151.77GiB), Engram은 외장 SSD 원본(340.60GiB)에서 읽음 |
| 캐시 | SSD 스트리밍, expert 캐시 자동 (static 9.37GiB, dynamic 68.50GiB, prefill 예약 7.12GiB) |
| KV / attention | 엔진 기본값, 별도 KV 양자화 없음 |
| prefill 단위 / context | 8,192 / 135,168 |
| MTP / DSpark | off |
| 생성 | greedy, 256토큰, EOS 무시, reasoning off |
| 반복 | 매번 새 프로세스, 짧은 인사로 워밍업한 뒤 측정(워밍업은 통계에서 뺌) |
결과
소설과 코드 원문을 32K토큰씩 이어 붙이며 단계마다 새로 넣은 약 32K의 prefill과 이어지는 256토큰 생성 속도를 쟀습니다. 64K부터는 앞 단계의 KV를 재사용하고 새 32,769토큰만 처리합니다. 8K 행은 누적과 별개로, 새 프로세스에서 8K를 한 번에 넣어 잰 값입니다.
소설
| 문맥 | prefill (tok/s) | 첫 토큰 (초) | 생성 (tok/s) |
|---|---|---|---|
| 8K (단독) | 220.09 | 37.23 | 18.11 |
| 32K | 381.02 | 86.00 | 15.80 |
| 64K | 350.41 | 93.52 | 18.07 |
| 96K | 313.07 | 104.67 | 18.11 |
| 128K | 293.68 | 111.58 | 17.75 |
코드
| 문맥 | prefill (tok/s) | 첫 토큰 (초) | 생성 (tok/s) |
|---|---|---|---|
| 8K (단독) | 217.76 | 37.62 | 18.68 |
| 32K | 381.41 | 85.91 | 15.55 |
| 64K | 315.94 | 103.72 | 16.81 |
| 96K | 303.44 | 108.00 | 15.52 |
| 128K | 290.27 | 112.90 | 16.11 |
3회 평균입니다. 표준편차는 prefill이 0.27~2.87, 생성이 0.01~0.23 tok/s였고, 같은 원문과 문맥에서는 세 회차의 출력 토큰이 모두 같았습니다.
생성 속도는 32K에서 128K까지 15.5~18.1 tok/s 사이에 머물렀고, 문맥이 깊어진다고 뚜렷하게 떨어지지 않았습니다. prefill은 32K 단계의 약 381 tok/s에서 128K 단계의 약 290 tok/s로 줄었습니다. 128K 지점에서 32K를 더 넣고 첫 토큰을 받기까지 약 112초가 걸립니다.
메모리는 시스템 전체 사용량이 최대 103.81GiB였고 swap은 1.28~1.32GiB에서 거의 움직이지 않았습니다. OOM이나 GPU 할당 실패는 없었습니다.
측정 환경
완전히 조용한 기계에서 잰 최대 성능은 아닙니다. 측정하는 동안 Spotlight 인덱싱, 미디어 분석, 파일 동기화 같은 macOS 백그라운드 활동이 있었고, 모두 기록했습니다. 처음에는 짧은 백그라운드 활동만 있어도 회차를 버렸는데, 정상 회차가 계속 버려져서 도중에 기준을 바꿨습니다. 다른 추론이나 인코딩 작업은 계속 막고, 정상적인 OS 활동은 기록하면서 측정을 이어 가는 기준입니다. 그 과정에서 버리거나 중단한 시도 5건은 통계에 넣지 않았습니다.
비전 입력 확인
같은 질문에 왼쪽과 오른쪽 색을 서로 바꾼 640×320 합성 이미지 두 장을 실제로 넣어 봤습니다. 두 답 모두 색 배치를 맞게 설명했습니다(왼쪽 빨강·오른쪽 파랑, 왼쪽 파랑·오른쪽 빨강). 비전 경로가 동작하는지 본 기능 확인이고, 일반 이미지나 OCR 품질을 잰 것은 아닙니다.
범위
출력 품질, 다른 양자화와의 품질 비교, MTP나 DSpark 같은 speculative 가속은 재지 않았습니다. 같은 모델을 다른 기계에서 같은 방식으로 잰 결과가 아직 없어서 하드웨어 비교도 하지 않았습니다.