DiffusionGemma 26B A4B — 튜닝 결과 (참고: 본 결과는 개인의 튜닝 결과이며, 테스트 스크립트 및 보고서 생성에는
요약
DiffusionGemma 26B A4B 모델의 양자화 버전(Q6_K, Q4_K_M)에 대한 개인 튜닝 및 성능 테스트 결과입니다. RTX 5090 환경에서 llama.cpp를 활용하여 컨텍스트 제한, VRAM 사용량, 최적 파라미터 및 실행 명령어를 분석했습니다.
핵심 포인트
- RTX 5090 환경에서 Flash Attention 비활성화로 인한 컨텍스트 제한 발생
- Q6_K 양자화 시 최대 6,144, Q4_K_M 양자화 시 최대 10,240 컨텍스트 지원
- 양자화 비트수에 따른 최적의 diffusion-eb 파라미터 값 제안
- llama.cpp 기반의 최적 실행 명령어 및 속도 비교 데이터 제공
DiffusionGemma 26B A4B — 튜닝 결과 (참고: 본 결과는 개인의 튜닝 결과이며, 테스트 스크립트 및 보고서 생성에는 Deepseek의 도움을 받았습니다) https://huggingface.co/unsloth/diffusiongemma-26B-A4B-it-GGUF
시스템 -
GPU: RTX 5090 (32 GB VRAM), CUDA 13.3
- Build:
llama.cppPR #24423, GCC-15, Ninja, ccache - Flash Attention: SM120에서 자동 비활성화됨 — 최대 컨텍스트 (Max context) 제한
- Models:
unsloth/diffusiongemma-26B-A4B-it-GGUF
모델 | Q6_K | diffusiongemma-26B-A4B-it-Q6_K.gguf | 22 GB |
| Q4_K_M | diffusiongemma-26B-A4B-it-Q4_K_M.gguf | 16 GB |
| 최대 안정적 컨텍스트 (Max Stable Context) | 양자화 (Quant) | 공식 (Formula) | 최대 컨텍스트 (Max ctx) | -n 제한 (-n limit) | VRAM 제한 (VRAM limit) |
|-------|---------|---------|----------|------------| |
| Q6_K | 16 blocks × 256 + 2048 | 6,144 | -n 4096 | 22 GB 모델 + ~10 GB 버퍼 |
| Q4_K_M | 32 blocks × 256 + 2048 | 10,240 | -n 8192 | 16 GB 모델 + ~14 GB 버퍼 |
컨텍스트는 연산 버퍼 (compute buffer) 크기에 의해 제한됩니다 — RTX 5090 (SM120)에서는 Flash Attention이 자동으로 비활성화되어, 전체 어텐션 (full attention)에 대해 O(n²) 메모리 스케일링이 발생합니다. 모델 자체는 최대 262k 컨텍스트를 지원하며, Flash Attention이 활성화되면 64k까지 달성 가능합니다.
최적의 파라미터 (Best Parameters) | 파라미터 (Parameter) | Q6_K | Q4_K_M | |-----------|------|--------| | --diffusion-eb-t-max | 0.4 | 0.3 | | --diffusion-eb-t-min | 0.1 | 0.05 | | --diffusion-eb-max-steps | auto (48) | 20 | | --diffusion-eb-entropy-bound | 0.1 (기본값) | 0.1 (기본값) | | --diffusion-eb-confidence | 0.005 (기본값) | 0.005 (기본값) | | --diffusion-eb-stability | 1 (기본값) | 1 (기본값) | | -ub / -b | -n에서 자동 유도 | -n에서 자동 유도 | 최적의 호출 (Optimal invocations) Q6_K 최속: ./build/bin/llama-diffusion-cli \ -m /path/to/diffusiongemma-26B-A4B-it-Q6_K.gguf \ -ngl 99 -n 2048 \ --diffusion-eb-t-max 0.4 --diffusion-eb-t-min 0.1 Q4_K_M 최속: ./build/bin/llama-diffusion-cli \ -m /path/to/diffusiongemma-26B-A4B-it-Q4_K_M.gguf \ -ngl 99 -n 8192 \ --diffusion-eb-max-steps 20 \ --diffusion-eb-t-max 0.3 --diffusion-eb-t-min 0.05 속도 비교 (Speed Comparison) 멀티 블록 처리량 (Multi-block throughput) (긴 프롬프트, 2048 토큰 생성) | 컨텍스트 (Context) | Q6_K 기본값 | Q6_K 튜닝됨 | Q4_K_M 기본값 | Q4_K_M 튜닝됨 | |---------|-------------|------------|----------------|--------------| | -n 2048 (ctx=4096) | 180 tok/s | 213 tok/s | 174 tok/s | 244 tok/s | | -n 3072 (ctx=5120) | 183 tok/s | 209 tok/s | 175 tok/s | 245 tok/s | | -n 8192 (ctx=10240) | — | — | 175 tok/s | 252 tok/s | 짧은 프롬프트 (Short-prompt) (단일 블록, 256 토큰) | 지표 (Metric) | Q6_K 기본값 | Q6_K 튜닝됨 | Q4_K_M 기본값 | Q4_K_M 튜닝됨 | |--------|-------------|------------|----------------|--------------| | 처리량 (Throughput) | 523 tok/s | 523 tok/s | 456 tok/s | 545 tok/s | | 블록당 단계 (Steps per block) | 6 | 6 | 8 | 6 | 기본값 대비 속도 향상 (Speedup over default) 양자화 (Quant) | -n 2048 | -n 3072 | -n 8192 | |-------|---------|---------|---------| | Q6_K | +18% | +14% | — | | Q4_K_M | +40% | +40% | +44% | 파라미터 영향 분석 (Parameter Impact Analysis) 온도 범위 (t-max / t-min) — 가장 큰 조절 요소 (biggest lever) 온도를 낮추면 모델의 탐색성이 줄어들어, 더 적은 디노이징 (denoising) 단계 내에 캔버스가 수렴합니다. 이 효과는 두 양자화 방식 모두에서 일관되게 나타납니다.
| t-max / t-min | Q6_K steps/blk | Q6_K tok/s | Q4_K_M steps/blk | Q4_K_M tok/s |
|---|---|---|---|---|
| 0.8 / 0.4 (default) | 15.8 | 180 | 18.0 | 174 |
| 0.6 / 0.2 | 14.8 | 192 | 16.9 | 188 |
| 0.4 / 0.1 | 13.0 | 213 | 13.2 | 221 |
| 0.3 / 0.05 | 13.5 | 199 | 12.6 | 230 |
| 0.2 / 0.05 | 12.0* | 223* | 15.0* | 260* |
단일 블록 또는 부분 생성 — 품질 저하, 속도 부풀려짐. 너무 낮은 온도 (< t-max 0.25)는 멀티 블록 생성을 저해합니다: 모델이 너무 결정론적(deterministic)이 되어 이후 블록을 위한 다양한 토큰을 생성하지 못하게 됩니다.
EB max-steps — Q4_K_M 전용. 블록당 최대 디노이징 (denoising) 단계를 제한하는 것은 Q4_K_M에는 도움이 되지만 Q6_K에는 도움이 되지 않습니다. 더 작은 모델이 더 빨리 수렴하므로, 20단계로 엄격하게 제한하면 품질 저하 없이 블록당 약 1.2단계를 줄일 수 있습니다.
| max-steps | Q4_K_M steps/blk | Q4_K_M tok/s |
|---|---|---|
| auto (48) | 12.6 | 230 |
| 24 | 12.0 | 236 |
| 20 | 11.4 | 244 |
| 18 | 12.2 | 235 |
| 16 | 12.8 | 228 |
Entropy-bound — 기본값 유지
| entropy-bound | Q6_K tok/s | Q4_K_M tok/s | 효과 |
|---|---|---|---|
| 0.05 | 152 | 216 | 너무 선택적임 → 단계 증가 |
| 0.1 (default) | 180 | 230 | 최적의 지점 (Sweet spot) |
| 0.15 | — | 240 | Q4에서 약간의 개선 |
| 0.2 | 158 | 233 | 너무 노이즈가 많음 → 단계 증가 |
Batch size — auto가 최적
| -ub / -b | Q6_K tok/s | 비고 |
|---|---|---|
| auto (4096) | 213 | -n / ctx에서 유도됨 |
| 512 | 203 | 작을수록 병렬성 감소 |
| 8192 | 213 | 클수록 이점 없음 |
주요 결과
Q4_K_M이 더 나은 선택입니다 — 50% 더 많은 컨텍스트 (10k vs 6k) 및 18% 더 빠른 생성 속도 (최대 컨텍스트에서 252 vs 213 tok/s).
온도(Temperature)가 전부입니다 — t-max를 0.8에서 0.3으로, t-min을 0.4에서 0.05로 낮추는 것이 사실상 모든 속도 향상을 설명합니다. 나머지 EB 파라미터들은 이미 기본값에서 잘 튜닝되어 있습니다.
더 큰 컨텍스트가 Q4_K_M의 속도를 늦추지 않습니다 — 컨텍스트가 커질수록 속도가 실제로 향상됩니다 (-n 8192에서 252 tok/s vs -n 2048에서 244 tok/s). 더 큰 배치 (batch)가 엔트로피 제한 샘플러 (entropy-bound sampler)에 더 나은 신호를 제공합니다. Flash Attention이 64k의 걸림돌입니다 — llama.cpp에 SM120 지원이 도입되면 연산 버퍼 병목 현상 (compute buffer bottleneck)이 사라지고, DiffusionGemma의 전체 262k 컨텍스트를 단일 RTX 5090에서 구현할 수 있을 것입니다. /u/giveen이 r/LocalLLaMA에 제출함 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기