오프로딩을 위해 설계된 전문가 혼합 모델용 고속 추론 엔진입니다. HTTP 서버부터 CUDA 커널까지 Rust로 작성되었으며 llama-server를 즉시 대체할 수 있습니다.
오프로딩을 위해 구축한 전문가 혼합 모델용 고속 추론 엔진입니다.
HTTP 서버부터 CUDA 커널까지 Rust로 작성했습니다. 즉시 대체 가능한 llama-server입니다.
Q3_K_M (347 GB)는 두 요청을 합쳐 34.4 tok/s로 제공하고, GLM-5.3-Flash는 26.9입니다.--parallel 2를 사용하면 바쁜 두 스트림이 모델을 함께 통과합니다. 하나의 스트림보다 초당 총 토큰 수가 25–37 % 더 많습니다(A6000에서 측정).brew install midagedev/tap/bloomery # Linux x86-64, NVIDIA sm_86+ bloomery-serve --hf unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q4_K_M --port 8080
| 영역 | 상태 |
|---|---|
| Linux x86-64, NVIDIA sm_86 (RTX 3090, RTX A6000, RTX 3060) | 실행됨. 여기의 모든 수치는 이 카드들에서 나온 것입니다 |
| NVIDIA 드라이버 | R580 이상(CUDA 13). 이전 드라이버는 시작 시 거부됩니다 |
| Ada 및 Blackwell (sm_89, sm_120) | 여기서는 아직 실행하지 않았습니다. sm_86 PTX는 최초 시작 시 해당 카드용으로 컴파일됩니다. 보고 환영 |
| 호스트 CPU | AVX2(x86-64-v3)를 지원하는 x86-64, AMD 또는 Intel |
| macOS, Apple silicon · AMD GPU, WSL2 없는 Windows | 아직 지원하지 않음 · 지원하지 않음 |
| OpenAI 및 Anthropic API, 스트리밍, 도구 호출 | 모든 생성 모델 |
여러 요청 동시 처리(--parallel, 기본값 2) | V4.1, GLM-5.3, Qwen3.8 및 카드 전체를 쓰는 Qwen3-30B 또는 Qwen3.6에서는 한 번의 패스, 나머지는 순차 처리 |
| MTP 초안(Qwen3.8, GLM-5.3) | 기본으로 켜짐 |
| 카드 | 카드 한 장 또는 카드 한 장과 전문가 계층 카드 한 장(--place bp) |
| 비전 입력(V4.1) | 이번 릴리스에는 없음 |
사용해 보고 공정하게 평가하려면(llama-server와의 비교 포함): docs/evaluating.md. 전체 제한 사항: docs/serving.md.
바이너리 하나만 있으면 되며 CUDA 툴킷과 Rust 툴체인은 필요 없습니다. AVX2, glibc 2.34+를 갖춘 Linux x86-64, 컴퓨팅 성능 8.6 이상인 NVIDIA GPU 및 R580 이상 드라이버가 필요합니다. Windows에서는 WSL2 내부에서 실행하세요(wsl --install, 재부팅 후 동일한 명령).
brew install midagedev/tap/bloomery
curl -fsSL https://raw.githubusercontent.com/midagedev/bloomery/main/tools/release/install.sh | sh
docker run --gpus all -p 8080:8080 -v bloomery-cache:/root/.cache/bloomery
ghcr.io/midagedev/bloomery --hf unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q4_K_M
tar -xzf bloomery-0.2.5-linux-x86_64-cuda-sm86.tar.gz && cd bloomery-0.2.5-linux-x86_64-cuda-sm86 bin/bloomery-serve --hf unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q4_K_M --port 8080
Tarball은 릴리스 페이지에 있습니다(0.2.5). 소스에서 빌드: docs/BUILD.md.
바이너리 하나, 자리 다섯 개입니다. 파일의 아키텍처가 자리를 선택하므로 모든 모델에서 --place를 설정하지 않아도 됩니다.
| 자리 | 제공 모델 | 명령 하나 |
|---|---|---|
ds41 | DeepSeek-V4.1-Flash | bloomery-serve --hf vcruz305/DeepSeek-V4.1-Flash-GGUF:Q3_K_M |
glm | GLM-5.3-Flash | bloomery-serve --hf unsloth/GLM-5.3-Flash-GGUF:UD-Q4_K_XL |
qwen38 | Qwen3.8-Flash-Next | bloomery-serve --hf unsloth/Qwen3.8-Flash-Next-GGUF:UD-Q4_K_XL |
qwen3 | Qwen3.6-35B-A3B, Qwen3-30B-A3B | bloomery-serve --hf unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q4_K_M |
decide | Clef-Flash (결정 모델) | bloomery-serve --hf bartowski/Cloudflare_clef-flash-GGUF:Q5_K_M |
curl -s http://127.0.0.1:8080/v1/chat/completions
-d '{"messages": [{"role": "user", "content": "Hello"}], "max_tokens": 64}'
Claude Code: ANTHROPIC_BASE_URL=http://localhost:8080. API, 플래그, 동시 요청, 초안 및 적응형 상주: docs/serving.md. 각 모델에 필요한 GPU, RAM 및 디스크: docs/models.md. 요약하면 Qwen3-30B와 Qwen3.6은 24 GB 카드에서 실행되며(또는 12–16 GB에서 CPU로 자체 분할), Qwen3.8은 128 GB RAM, GLM-5.3과 V4.1은 256 GB를 필요로 합니다.
512토큰 프롬프트 이후 동시에 두 요청(--parallel 2, 둘 다 사용 중)을 실행한 결과이며, AVX2 32코어 호스트, DDR4 채널 8개, RAM 256 GB에서 두 요청을 합친 디코드 tok/s입니다. 3090의 전력 제한은 250 W입니다. 조건과 각주: docs/performance.md. 모든 행과 이력: rig-log 벤치 페이지.
RTX 3090 24 GB 한 장
| 모델 | 실행 위치 | 두 요청 합계 tok/s | 프롬프트 tok/s (P = 512) |
|---|---|---|---|
Qwen3-30B-A3B Q4_K_M | 전체 모델을 카드에서 실행 | 254.0 | 6,482 |
Qwen3.6-35B-A3B Q4_K_M | 전체 모델을 카드에서 실행 | 193.9 ¹ | 5,834 |
Qwen3.8-Flash-Next UD-Q4_K_XL | 카드 + CPU | 60.7 | 486 |
GLM-5.3-Flash UD-Q4_K_XL | 카드 + CPU | 26.9 | 179 |
DeepSeek-V4.1-Flash Q3_K_M | 카드 + CPU | 34.4 ² | 199 |
RTX A6000 48 GB + RTX 3090 24 GB (--place bp)
| 모델 | 두 요청 합계 tok/s | 프롬프트 tok/s (P = 512) |
|---|---|---|
DeepSeek-V4.1-Flash Q3_K_M | 55.9 | 206 |
GLM-5.3-Flash UD-Q4_K_XL | 35.3 | 223 |
Qwen3.8-Flash-Next UD-Q4_K_XL | — ³ | — ³ |
¹ Qwen3.6이 두 요청을 순차 실행했을 때 측정함(한 요청의 속도). 0.2.3부터는 한 번의 패스이나 재측정하지 않음 · ² 적응형 상주 끔 · ³ 현재 두 카드에서 두 요청을 순차 실행. Qwen3.8과 GLM-5.3은 MTP 초안을 끄고 실행했습니다.
각 항목에는 docs/performance.md의 동일 엔진 측정치가 있습니다.
출력은 ik_llama.cpp를 기준으로 레이어별 검사합니다(V4.1: PPL 2.2401 대 2.2378, 동일한 최상위 토큰 97.46 %). 또한 수정이 반영되기 전에 모든 게이트가 해당 결함에서 실패함을 보입니다(방법).
| 페이지 | 다루는 내용 |
|---|---|
docs/evaluating.md | 실행 및 공정 비교를 위한 점검표, 하드웨어 보고 |
docs/serving.md | llama-server 호환성, 플래그, 자리, 동시 요청, 제한 사항 |
docs/models.md | 권장 파일 및 각 모델의 요구 사항 |
docs/performance.md | 수치 조건, 빠른 이유, 검증, 기록된 세션 |
docs/BUILD.md, docs/cuda-oxide.md | 소스에서 빌드, Rust의 커널 |
docs/upstream/ | ik_llama.cpp, cuda-oxide, llama.cpp 등으로의 풀 리퀘스트 |
docs/README.md | 그 밖의 모든 페이지와 작업 기록 |
측정값과 명령줄: rig-log (한국어). 작업 규약: AGENTS.md, CONTRIBUTING.md. AI 보조 풀 리퀘스트를 환영하며, 특히 보유하지 않은 하드웨어를 위한 풀 리퀘스트를 가장 환영합니다.
ik_llama.cpp와 ggml은 수치 기준입니다. ggml의 k-quant 코드와 ik_llama.cpp의 iqk_mul_mat를 읽어 커널을 작성했으며, 정확도는 이들의 출력에 대해 정의합니다. exllamav3와 mistral.rs는 설계 참고 자료이며, 사용한 곳에서 인용합니다. 넷 모두 MIT입니다. GPU 커널은 cuda-oxide(Apache-2.0)로 컴파일됩니다.
AI 보조 도구가 코드와 문서 작성에 도움을 주었습니다. 여기의 모든 수치는 tools/ref/의 실행기가 측정했습니다.
MIT, LICENSE를 참조하세요. crates/oxide-ice-unroll에는 NVIDIA의 Apache-2.0 헤더가 포함되어 있습니다. 제3자 고지는 THIRD_PARTY_NOTICES.md에 있습니다.