1.02배와 4.5배가 같은 표에 있다
Apple Silicon 추론 엔진 Husky. 속도 이득은 작업이 편집이냐 창작이냐로 갈린다. TTFT와 디코드를 합치지 말 것, 그리고 안 된 실험을 적은 발표를 더 믿을 것.
"MLX보다 최대 4.5배"라는 문장 옆에 1.02배도 같이 적혀 있다. 둘 다 같은 발표의 수치다.
쓰기 작업에서는 디코드가 1.02~1.27배, 함수 편집에서는 3.8배, 투기적 디코딩을 켜면 최대 4.5배. 속도 이득이 작업 종류에 거의 전부 달려 있다.
그러니 이 엔진을 평가할 때 볼 것은 최대치가 아니라 내 작업이 어느 칸에 들어가는가다.
확인된 것
원문에서 확인한 것만 적는다.
-
Husky는 Woof 한 모델만을 위한 Apple Silicon 추론 엔진이다. Woof는 이 회사의 4B 모델이고 4비트 양자화다. 설계 철학을 한 문장으로 적어뒀다.
Husky refuses to be general, and that is where the speed comes from.
-
그들이 MSI(model-specific inference)라 부르는 것의 정의는 이렇다.
an engine that knows one model's every shape at compile time and spends none of its time being general
구현은 넷이다. 정확한 행렬 크기에 맞춘 Metal 메가커널, 순환 연산용 상주 그리드, 커널 순서에 맞춰 배치한 가중치와 캐시, 호스트 병목을 막는 파이프라인 제출.
-
측정은 Apple M5 Max(40코어 GPU), Woof 4비트 기준.
- 디코드 처리량: 쓰기 작업 1.02~1.27배, 함수 편집 3.8배
- 첫 토큰까지 시간(TTFT): 3.6~5.5배 빠름
- 16개 작업 전부에서 MLX보다 빠름
- Flash를 켜면 최대 4.5배
-
투기적 디코딩이 두 갈래다. 프롬프트 룩업은 최근 출력 토큰이 입력 프롬프트 안에 있는지 보고 8개를 한 번에 검증하는데, 보통 5~6개를 건진다. Flash는 Woof의 5개 층 은닉 상태를 읽어 다음 7개 토큰을 제안하는 별도 드래프트 모델이고, 대화 139,000건으로 자기 증류 학습했다.
-
Mac용 Underdog 앱에 이미 들어가 있다. 오픈소스 공개 언급은 없다.
-
안 된 실험도 적었다. 전체 스텝을 하나의 메가커널로 묶는 최적화에 대해 이렇게 쓴다.
measured it honestly: identical output, and no faster
판단
1. 속도 이득의 정체는 "이미 있는 텍스트를 고치는가"이다
1.02배와 3.8배가 왜 갈리는지가 발표 안에 설명돼 있다. 프롬프트 룩업은 출력할 토큰이 입력에 이미 들어 있을 때 효과를 낸다.
코드 편집이 딱 그 경우다. 함수를 고치라고 하면 출력 토큰 대부분이 원본에 그대로 있고, 그래서 8개를 한 번에 검증해 5~6개를 건진다. 반대로 새 글을 짓는 작업에서는 맞출 게 없다. 1.02배는 거의 차이 없다는 뜻이다.
→ 실행 항목: 내가 로컬 모델에 시키는 일이 편집 쪽인지 창작 쪽인지 비율을 세라. 리팩터링·포맷 변환·기존 코드 수정이 대부분이면 투기적 디코딩이 큰 이득이고, 설계 설명이나 초안 작성이 대부분이면 벤치마크 최대치는 내 것이 아니다. 같은 엔진이 작업에 따라 다른 제품처럼 동작한다.
2. TTFT와 디코드를 한 숫자로 합치지 마라
디코드가 1.02배여도 첫 토큰이 3.6~5.5배 빨리 나오면 사람은 "빨라졌다"고 느낀다. 대화형으로 쓰는 로컬 모델에서 체감을 지배하는 건 초당 토큰이 아니라 반응이 시작되는 시점이다.
반대로 백그라운드 배치 작업이라면 TTFT는 거의 의미가 없다. 총 처리량만 남는다.
→ 로컬 추론을 평가할 때 두 숫자를 따로 기록하고, 내 사용 패턴이 어느 쪽에 민감한지 먼저 정해라. 벤더가 하나로 합쳐 제시하면 내가 갈라서 봐야 한다. 이 발표는 갈라서 제시했다.
3. "일반성을 거부한다"는 곧 "가져갈 수 없다"는 뜻이다
컴파일 시점에 한 모델의 모든 shape을 알고 그것만 돌린다. 그래서 빠르고, 그래서 Woof 말고는 못 돌린다. 오픈소스 공개 언급도 없다.
그러니 이건 기술 선택이 아니라 번들 선택이다. 저 회사 앱을 쓰면 딸려 오고, 안 쓰면 가져올 방법이 없다. 내 스택에 이식할 수 있는 무언가로 읽으면 안 된다.
다만 이식 가능한 게 하나 있다. 질문의 형태다 — 내가 모델을 하나로 고정하면, 런타임에서 무엇을 버릴 수 있는가. 여러 모델을 지원하느라 지불하는 분기·검사·동적 할당의 비용을 한 번 세어볼 만하다. 대부분의 1인 프로젝트는 실제로 모델 하나만 쓴다.
4. 안 된 실험을 적은 발표를 더 믿는다
전체 스텝 메가커널이 현재 하드웨어에서 이득이 없었다고 썼다. 발표에서 빼도 아무도 몰랐을 항목이다.
이번 주에 같은 기준을 세 번 적용했다. 테스트 3,900개를 말하며 "React에서 전부 이식했다는 주장은 아니다"라고 단 프레임워크, 비교 대상 여덟 개의 버전을 전부 핀으로 박은 벤치마크, 못 하는 것 목록을 먼저 적은 보안 스캐너. 숫자의 크기가 아니라 안 된 것을 적었는지로 발표를 거른다.
여기는 적었다. 그게 1.02배를 숨기지 않은 것과 같은 성질이다.
모르는 것
- 직접 돌려보지 않았다. 위 수치는 전부 벤더 자체 측정이다.
- 비교 대상인 MLX의 버전과 설정이 나와 있지 않다. 상대의 조건이 없으면 재현할 수 없다. 며칠 전 본 벤치마크는 비교 대상 여덟 개의 버전을 전부 적었는데, 여기는 그 부분이 비어 있다.
- 16개 작업의 구성을 모른다. 어떤 작업들이고 길이 분포가 어떤지 확인하지 못했다.
- Woof 4B의 품질에 대한 비교가 이 발표에 없다. 4.5배 빨라도 모델이 약하면 의미가 없는데, 속도만 다룬다.
- 투기적 디코딩은 원칙적으로 출력이 동일해야 하는데, Flash 드래프트 경로에서 그 동일성을 어떻게 검증하는지 확인하지 못했다.
- 단일 하드웨어(M5 Max 40코어) 수치다. 메모리 대역폭이 다른 칩에서 어떻게 달라지는지 모른다.
댓글
불러오는 중...