용량은 작은데 27B급 성능을 낸다는 신형 압축 모델, Bonsai 2가 나왔습니다. 겉으로 듣기엔 "메모리 적게 쓰면서 큰 모델 성능은 그대로"라는, 너무 좋아서 의심부터 드는 문장이죠. 그래서 이번엔 제조사 벤치 수치를 그대로 믿기보다, 실제 구조(3진 가중치 + 하이브리드 어텐션)를 뜯어보고 컨텍스트 길이별로 메모리 소요를 직접 계산해서, 어느 하드웨어에서 어디까지 돌릴 수 있는지 따져봤습니다.

이 모델이 뭔가
Bonsai 2 27B는 원본 27B 모델을 3진 가중치({-1, 0, +1})로 압축하고, 여기에 FP16 그룹 스케일을 곁들여 만든 PTQ(사전학습 후 양자화) 모델입니다. 가중치가 세 개의 값뿐이라 표현이 극도로 단순해지고, 그 덕분에 배포 크기가 약 5.9GB까지 내려갔더군요. 27B짜리 모델이 6GB 남짓한 패키지에 들어 있다는 건, 그 자체만으로도 압축이 얼마나 과감한지 보여줍니다.
98.2%라는 수치는 일단 보류
다만 이 모델을 소개하는 글마다 등장하는 "98.2% 성능 유지"라는 수치는 제조사가 자기 벤치 기준으로 낸 값입니다. 커뮤니티에서는 장기 컨텍스트 신뢰성 저하라든지 툴콜 성능 저하 같은 지적도 나오고 있어서, 저는 실측해서 확인하기 전까지는 그 수치를 신뢰 보류해두기로 했습니다. 용량을 줄인 모델에게 늘 따라오는 질문이긴 한데, 답은 벤치로 재봐야 나오니까요.
진짜 포인트는 하이브리드 어텐션
이 모델의 매력은 크기보다 구조에 있다고 봤습니다. 원본 27B는 하이브리드 어텐션 구조인데, 64층 가운데 16층만 Full Attention으로 돌고 나머지 48층은 Linear나 DeltaNet 같은 비용이 낮은 어텐션 대체층으로 돌아갑니다. 컨텍스트가 길어지면 KV 캐시가 커지는 게 문제인데, 이 캐시가 16층에만 생기다 보니 전층에 KV가 다 생기는 일반 Dense 모델 대비 1/4 수준으로 줄어드는 셈입니다. 쉽게 말하면, 일반 모델은 건물의 모든 층에 대기실을 하나씩 만들어두는 반면 하이브리드는 일부 층에만 대기실을 만들어두는 구조라서, 손님(컨텍스트)이 늘어도 비용이 날뛰지 않는 겁니다.
KV 캐시, 컨텍스트별로 직접 계산
그러면 실제로 컨텍스트별로 어느 정도 메모리가 필요한지 계산해봤습니다. KV 캐시는 토큰 하나당 K와 V가 각각 생긴다고 보고, 이 모델은 kv_heads 4개, head_dim 256, 그리고 KV가 생기는 16층을 기준으로 잡았습니다. 식으로 쓰면 2(K+V) × 4(kv_heads) × 256(head_dim) × 16(layers) = 32,768 elements/token입니다. 이걸 262K 컨텍스트까지 늘리면 fp16 기준 약 16.0GiB, fp8 기준 약 8.0GiB가 나옵니다. 262K 토큰을 다 채워도 KV 캐시가 fp8로 8GiB 남짓이라는 건, 컨텍스트만 길어져도 캐시가 눈덩이처럼 불어나는 일반 Dense 모델과는 확연히 다른 그림입니다.
어느 하드웨어에서 어디까지 될까
이제 이 숫자를 실제 하드웨어에 옮겨보겠습니다. 먼저 16GB 통합메모리를 쓰는 맥미니 같은 기기는, OS가 리저브하는 4.5GB 정도를 빼면 프로세스가 쓸 수 있는 예산이 약 11.5GB입니다. 여기에 fp8 KV를 적용하면 이론 최대 약 182K까지 가지만, 실측을 감안하면 128K~182K 정도가 현실적인 한계이고 262K는 이 기기에서 불가능합니다. 반면 24GB GPU는 fp8로 262K 풀컨텍스트 구동이 가능하고, 이때 총 소요가 약 16.9GB입니다. 128GB 머신이라면 262K에 더해 여러 시퀀스를 동시에 돌릴 여유까지 생깁니다. 다만 한 가지 주의할 점으로, Blackwell 계열(예: GB10)에서는 3진 가중치를 언패킹하는 지연 때문에 스루풋 이득이 생각보다 제한적일 수 있다는 게 제 가설입니다.
| 하드웨어 | 가능한 컨텍스트 |
|---|---|
| 16GB 통합메모리 (맥미니) | 128K~182K (262K 불가) |
| 24GB GPU | 262K (fp8, 총 약 16.9GB) |
| 128GB 머신 | 262K + 다중 시퀀스 여유 |
이 모델의 진짜 강점은 "메모리가 커서 된다"가 아니라, 하이브리드 어텐션 구조를 반영해서 KV 캐시를 정확히 계산했다는 데 있습니다. 다만 솔직히 말하자면 지금까지는 이론적 계산 단계에 머물러 있고, 실제로 구동하고 벤치를 잰 것은 아닙니다. 24GB GPU에서 262K를 진짜로 돌려 장기 컨텍스트·툴콜 벤치를 재보고, GB10에서 스루풋이 실제로 어떻게 나오는지 확인하는 게 다음 단계입니다. 계산으로는 꽤 그럴듯한데, 실제로 부딪혀봐야 안다는 게 이런 압축 모델들의 공통점이더군요. 일단 숫자로 따져보는 과정 자체는 꽤 재미있었습니다.
'공부 > 인공지능' 카테고리의 다른 글
| OrcaSlicer 만든 gcode가 프린터에 안 먹힌다 — 펌웨어의 비공개 검증 규칙 (0) | 2026.10.08 |
|---|---|
| 27B 모델을 분류에 쓰던 걸 9B 스코어링 모델로 갈아끼우기 (0) | 2026.10.07 |
| 모델은 256K인데 자꾸 128K로 나온다 — 로컬 LLM 컨텍스트 길이 함정 (0) | 2026.10.06 |
| 모델은 256K인데 자꾸 128K로 나온다 — 로컬 LLM 컨텍스트 길이 함정 (0) | 2026.10.06 |
| 게이트를 만들었다가 걷어냈다 — 로컬 LLM 멈춤의 진짜 원인 찾기 (0) | 2026.10.05 |