M5 Max 맥북 프로에서 SSD 4개로 Kimi K3 2.8T를 초당 1토큰 추론
- M5 Max 128GB 맥북 프로에서 SSD로 가중치를 스트리밍해 Kimi K3 2.78T를 512토큰 생성 구간에서 초당 1.0015토큰, 128토큰 구간에서 초당 1.1252토큰으로 실행함
- 약 1.45TB 전문가 가중치를 메모리에 올리지 않고 레이어마다 896개 중 16개, 파일당 17.5MB를 pread와 F_NOCACHE로 읽는 구조임
- 512토큰 프롬프트의 첫 토큰까지 약 6.3분이 걸리며, 프리필 단계의 읽기 증폭이 6.2배로 현재 가장 큰 문제라고 밝힘
- 전문가 가중치는 공개된 MXFP4 그대로 사용했지만 상주 어텐션 트렁크는 int8이라 BF16과 비트 단위 일치는 주장하지 않으며, 기록 프롬프트에서 자체 참조 구현과 토큰 단위 출력 일치를 검사함
Hacker News opinions
작성자임. Kimi K3는 2.78T 파라미터, 전문가 가중치만 약 1.45TB라 메모리에 안 들어감. 레이어마다 896개 중 16개 전문가 파일을 pread와 F_NOCACHE로 SSD에서 읽고, M5 Max 128GB 맥북 프로와 썬더볼트 5 외장함 3개, 내장 SSD를 썼음.
설명이 숫자와 특수문자가 너무 빽빽해서 읽기 어렵더라. 핵심만 정리한 gist 링크가 있으면 좋겠음.
거의 전부 SSD에서 읽는 구조면 인텔이나 AMD 머신에 큰 GPU와 NVMe SSD를 붙여 가상 VRAM처럼 쓸 수 있는지 궁금함.
외장 SSD가 꼭 필요한지도 알고 싶음. M5 Max에 4TB 내장 SSD로 모델 전체가 들어가면 속도가 얼마나 나오는지, 그래프에 외장 SSD 0개 조건도 있으면 비교하기 좋겠음.
왜 이렇게 느리고 비싼 방식으로 돌리는지 모르겠음. 채팅에는 도저히 쓸 속도가 아니잖아.
채팅용은 아니라는 데 동의함. 나는 월말이나 분기말에 숫자를 훑고 불일치를 표시하고 보고서 초안을 쓰는 무인 작업에 쓰려는 거고, 데이터가 기기를 떠나지 않는 게 중요함.
당장 실용적이지 않아도 이런 건 돌아간다는 사실 자체가 재미있는 해킹임. 모든 실험이 곧바로 제품이 될 필요는 없다고 봄.
LLM을 분류기로 쓰면 1 tok/s도 쓸모 있을 수 있음. 긴 입력을 넣고 코드에 버그가 있는지 yes나 no 한 토큰으로 답하게 하는 식임.
SSD 연결 방식이 빠졌다고 느꼈는데, 실제로는 어떻게 붙였음?
썬더볼트 5 외장함으로 연결했음. Gen4 SSD 하나와 Gen5 SSD 세 개를 썼고, 사양은 저장소의 공개 벤치 디렉터리에 적어뒀음.
SSD를 RAID-0로 묶거나 맥북 40대를 쓰면 40 tok/s까지 올릴 수 있는 것 아닌가.
여기서는 대역폭이 단순히 곱해지지 않음. MoE 레이어는 전문가 16개 읽기가 모두 끝나야 하고 가장 느린 읽기가 장벽이 됨. 드라이브 1개에서 4개로 늘려도 약 52%에서 100%가 됐을 뿐이고, RAID-0는 모든 읽기가 모든 드라이브를 건드려 오히려 졌음.
RAID 여부와 별개로 PCIe 레인 한계가 있음. 맥북 40대로 1TB 모델을 제대로 서비스할 수 있었다면 이미 아주 싸게 팔리고 있었을 듯.
중고 Optane SSD는 지연시간이 좋아서 도움이 되지 않을까 생각함. 다만 가격이 비쌈.
이 경우 읽기 하나가 17.5MB 전문가 파일 전체라 접근 지연보다 처리량이 지배적임. SN8100에서 큐 깊이 1로 약 7GB/s, 읽기당 약 2.5ms를 측정했음. 필요한 건 느린 16개 동시 읽기의 꼬리 시간을 줄이는 일임.
LLM은 대체로 랜덤 접근보다 순차 대역폭을 더 탐. 이 사례도 전체 tok/s 수치를 보면 Optane보다는 최신 NVMe의 높은 버스 대역폭이 더 유리해 보임.
Kimi보다 GLM Flash 같은 모델에 이 방식을 적용하면 더 흥미로울 것 같음.
컨텍스트를 20만 토큰 이상 채운 뒤에는 tok/s가 얼마나 더 떨어질지도 궁금함.