Gemma 4 E2B / E4B는 각 단어에 대해 모든 계층마다 개별적인 '계층별 임베딩'(PLE)을 할당하며, E4B 모델에서 35.2%개의 파라미터를 차지하고 BF16 정밀도에서 5.64 GB를 차지합니다. OPTIC은 각 단어에 대해 모든 계층이 공유하는 하나의 양자화 코드 집합만 저장하고, 각 계층에서는 작은 아핀 디코더를 사용하여 복원합니다. 코드북과 디코더는 저장된 벡터 자체가 아닌 PLE 출력 투사 지점의 오차를 기준으로 최적화됩니다.
좋아요 14 · 코드 스타 수 5
이유
- 저자는 약 100배 압축 시 BF16 정밀도의 E4B 모델이 7개의 벤치마크에서 97.8% 성능을 유지한다고 주장하며, 6가지 기존 방법 중 가장 강력한 곱 양자화(Product Quantization)는 66.3%만 유지했습니다. 공식 W4A16(4비트 가중치) 버전에서도 동일한 압축으로 96.9% 성능을 유지했습니다.
- 더 극단적인 압축 수치도 제시되었습니다: 594배 압축 시 90.5% 유지, 1002배 압축 시 84.1% 유지되며, 1002배 압축 시 E4B의 PLE는 5.6 MB만 남습니다(저자 보고).
- 메모리 절감 효과가 크며 속도는 거의 저하되지 않습니다: README에 따르면 RTX 4090 한 장에서 고정된 1 GiB KV 캐시 조건에서 BF16 가중치 메모리는 29.7% 감소, W4A16는 43.1% 감소하며, 처리 시간은 최대 0.40% / 0.69% 증가합니다. vLLM에서 보고한 모델 메모리는 15.3 GiB에서 약 10 GiB로 감소했습니다.
- 엣지 디바이스 배포와 직접적으로 관련이 있습니다: Gemma 4의 E 시리즈는 원래 작은 메모리 디바이스를 대상으로 하며, 임베딩 테이블은 가장 많은 공간을 차지하면서도 기존 양자화 기법으로 압축하기 가장 어려운 부분입니다.
사용법
- 코드: github.com/VILA-Lab/optic (Apache-2.0 라이선스); 압축 산출물: Hugging Face zcahjl3/gemma-4-E4B-it-OPTIC-100x (apache-2.0 라이선스, 단일 compressed_ple.npz 파일), 첫 실행 시 지정된 버전의 Gemma 4 E4B 원본 모델과 함께 자동으로 다운로드됩니다.
- Python 3.12 및 CUDA GPU가 필요하며, README에 따르면 24 GiB 메모리로 BF16 E4B 모델의 짧은 생성을 실행할 수 있습니다: pip install -r requirements-inference.txt && pip install -e . 실행 후 python examples/generate.py --prompt "…" 명령을 사용하며, --image 옵션을 추가하면 이미지 기반 질문 답변이 가능합니다.
- vLLM(문서 요구 사항 0.19.1): PLE_OPTIC_ARTIFACT를 다운로드한 npz 파일로 지정하고, 평소처럼 vllm serve google/gemma-4-E4B-it을 실행하면, 저장소에 설치된 플러그인이 로드 시 밀집 PLE 테이블을 대체합니다. 이미 로드된 모델도 install_compact_ple(model, artifact) 함수를 통해 적용할 수 있습니다.
- 논문 재현: ple-eval evaluate --gpus 0 --run-id optic-e4b 명령으로 7개 벤치마크를 실행합니다. 자체 압축 버전을 피팅하려면 docs/fitting.md를 참고하세요.
리스크
- 계층별 임베딩이 포함된 Gemma 4 E2B / E4B 모델에만 적용되며, 나머지 가중치는 압축되지 않습니다. E4B BF16의 100배 압축 산출물만 공개되었으며, E2B 및 더 높은 압축 비율은 직접 피팅해야 합니다.
- vLLM 환경에서 압축된 PLE는 텐서 병렬 처리 1만 지원합니다. 메모리 및 속도 수치는 RTX 4090 한 장에서만 측정되었으며, 모두 저자 보고 수치입니다.
편집: "100배"는 임베딩 테이블 자체를 의미하며, 전체 모델을 의미하지 않습니다. 전체 메모리 절감 효과는 약 30%입니다.
열기 · 코드 · Hugging Face 논문 페이지