--- license: apache-2.0 library_name: gguf base_model: HuggingFaceBio/Carbon-8B language: - dna tags: - dna - genomic - llama.cpp - gguf - hybriddna --- # Carbon-8B GGUF GGUF (bf16) conversion of [HuggingFaceBio/Carbon-8B](https://huggingface.co/HuggingFaceBio/Carbon-8B) for use with [llama.cpp](https://github.com/ggml-org/llama.cpp). Carbon is a hybrid DNA / English language model that switches between Qwen3-4B-Base byte-level BPE for natural text and fixed 6-mer chunking for DNA inside `...` tags. ## Requires a recent llama.cpp HybridDNATokenizer support was merged in [ggml-org/llama.cpp#23410](https://github.com/ggml-org/llama.cpp/pull/23410), so any build from `master` after that works: ```bash git clone https://github.com/ggml-org/llama.cpp cd llama.cpp && cmake -B build && cmake --build build -j ``` ## Files | File | Quant | Size | |---|---|---| | `carbon-8b-bf16.gguf` | bf16 (lossless from source) | 16 GB | ## Usage ### Download ```bash hf download HuggingFaceBio/Carbon-8B-GGUF carbon-8b-bf16.gguf --local-dir . ``` ### Basic DNA completion ```bash ./build/bin/llama-completion -m carbon-8b-bf16.gguf \ -p 'ATGCGCTAGCTACGATCGATCGTAGCTAGCTAGCTAGCTACG' \ -n 64 --temp 0 -no-cnv ``` ### Metadata-conditioned generation ```bash ./build/bin/llama-completion -m carbon-8b-bf16.gguf \ -p 'ATGCGCTAG' \ -n 64 --temp 0 -no-cnv ``` ### Speculative decoding with Carbon-500M draft (~2x speedup) The 500M shares the HybridDNA vocab, so it's a near-ideal draft. Measured ~2.1x speedup at temp=0 with 87% accept rate on DNA prompts. Grab the draft GGUF first: ```bash hf download HuggingFaceBio/Carbon-500M-GGUF carbon-500m-bf16.gguf --local-dir . ``` Then run the standalone tool with `--model-draft`: ```bash ./build/bin/llama-speculative \ -m carbon-8b-bf16.gguf \ -md carbon-500m-bf16.gguf \ -p 'ATGCGCTAGCTACGATCGATCGTAGCTAGCTAGCTAGCTACG' \ -n 256 --temp 0 ``` Or serve the 8B with the 500M draft (`llama-server` accepts the same `-md` flag): ```bash ./build/bin/llama-server \ -m carbon-8b-bf16.gguf \ -md carbon-500m-bf16.gguf \ --draft-max 16 --draft-min 1 \ --port 8080 ``` ```bash curl -s http://localhost:8080/completion -d '{ "prompt": "ATGCGCTAGCTACGATCGATCGTAGCTAGCTAGCTAGCTACG", "n_predict": 256, "temperature": 0 }' | jq -r .content ``` ### Likelihood scoring The source card's Python `score()` function computes mean log-prob per DNA token. In llama.cpp the closest tools are `llama-perplexity` for corpus-level perplexity (`perplexity = exp(-mean_logprob)`): ```bash # one prompt per line in dna_corpus.txt, each wrapped in ... ./build/bin/llama-perplexity -m carbon-8b-bf16.gguf -f dna_corpus.txt --ppl-stride 0 ``` Or `llama-server` with `logprobs` for per-token log-probabilities: ```bash ./build/bin/llama-server -m carbon-8b-bf16.gguf --port 8080 & curl -s http://localhost:8080/completion -d '{ "prompt": "GGGCTATAAAGGCCATCGATCGATCGATCGATCGATCGATCG", "n_predict": 0, "n_probs": 1 }' | jq '.completion_probabilities' ``` ### Long context with YaRN (65k tokens ≈ 393 kbp) Mirrors the source card's `rope_scaling = {type: yarn, factor: 4.0, original_max_position_embeddings: 32768}`: ```bash ./build/bin/llama-completion -m carbon-8b-bf16.gguf \ -c 65536 --rope-scaling yarn --rope-scale 4 --yarn-orig-ctx 32768 \ -p '...' -n 64 --temp 0 -no-cnv ``` ### Base-pair-level generation (FNS branch) — not supported The `revision="fns"` example from the source card needs custom modeling code (factorized nucleotide supervision head), which only the Python transformers path can load. llama.cpp can't run that branch. ## See also - Source weights: [HuggingFaceBio/Carbon-8B](https://huggingface.co/HuggingFaceBio/Carbon-8B) - Other GGUF variants: [500M](https://huggingface.co/HuggingFaceBio/Carbon-500M-GGUF) · [3B](https://huggingface.co/HuggingFaceBio/Carbon-3B-GGUF) · [8B](https://huggingface.co/HuggingFaceBio/Carbon-8B-GGUF) ## License Apache-2.0, inherited from the source model.