Multilingual text model
Actually running BLOOM-176B: the full VRAM math from 329GB bf16 down to a 5.27GB quant
BigScience's 176-billion-parameter multilingual base model, in 72 safetensors shards, with a 2048 context and pure multi-head attention. Here is every tier's real memory footprint, parallelism constraint, and known trap.
BLOOM · self-hosted
BLOOM — BigScience Large Open-science Open-access Multilingual Language Model — was finished on 11 July 2022 on 384 A100 80GB GPUs at France's Jean Zay supercomputer, at exactly 176,247,271,424 parameters. The architecture is a Megatron-LM GPT2-lineage decoder-only transformer: 70 layers, 14336 hidden dimension, 112 attention heads, ALiBi relative position bias instead of learned positional embeddings, GeLU activations, and an extra LayerNorm applied to the word embedding layer (StableEmbedding). Pretraining ran on ROOTS: 1.6TB of text, 350B unique tokens, 366B tokens actually seen, sequence length pinned at 2048 throughout. The tokenizer is a multilingual byte-level BPE with 250,680 real tokens, padded to 250,880 in the config so tensor-parallel splits divide evenly.
ROOTS is where BLOOM still holds an edge nobody else from that era can match on paper: Simplified Chinese makes up 16.16% of the corpus, second only to English at 30.03%, ahead of French at 12.9%, Spanish at 10.85%, Portuguese at 4.91% and Arabic at 4.6%. That mix is exactly why BELLE picked bloomz-7b1-mt as its base and fine-tuned it on a million Chinese instructions. The blind spots matter just as much: the 46 natural languages include no Russian, no Japanese, no Korean, no German — the BLOOM+1 ACL paper exists specifically to study bolting those on. What is genuinely scarce is the other end of the list: Wolof, Bambara, Twi, Kikuyu, Fon and Tumbuka still have almost no hundred-billion-scale coverage anywhere else.
The hard part of self-hosting BLOOM is not the download, it is the shape of the memory. The bigscience/bloom repo is 705GB total, weights split across 72 safetensors shards, 329GB of that being pure bf16 parameters. The trap people miss is the KV cache: BLOOM predates GQA and MQA and uses full multi-head attention, so 70 layers times 14336 dimensions works out to roughly 4MB of KV per token — one sequence at the full 2048 context eats 8.2GB, and a batch of 8 burns 66GB on cache alone. Separately, 112 attention heads mean your tensor-parallel degree must divide 112: TP=8 works, TP=6 will not start. And vLLM's BloomForCausalLM supports pipeline parallelism but not LoRA adapters, so parameter-efficient fine-tuning has to go through PEFT with transformers instead.
01 —
Every BLOOM / BLOOMZ variant and what it costs in VRAM
Parameter counts are the official model-card figures; GGUF sizes are measured community files. Context is 2048 across the whole family.
| Version | Parameters | VRAM | Context | Notes |
|---|---|---|---|---|
| bigscience/bloom (BLOOM-176B) | 176,247,271,424 (70 layers / 14336 dim / 112 heads) | bf16 ~329GB / Q8_0 191.2GB / Q4_K_M 114.8GB / Q2_K 68.2GB | 2048 | The original pretrained base — it continues text, it does not follow instructions. 72 safetensors shards, 705GB repo. The GGUF quants ship split across multiple parts and must be concatenated before loading. |
| bigscience/bloomz, bloomz-mt (BLOOMZ-176B) | 176,247,271,424 | Same class as BLOOM-176B: bf16 ~329GB / Q4_K_M ~115GB | 2048 | Instruction-tuned on the xP3 crosslingual task mixture, so it follows instructions zero-shot. bloomz-mt was tuned on xP3mt for non-English prompting — pick it if your prompts are not in English. |
| bigscience/bloom-7b1, bloomz-7b1, bloomz-7b1-mt | 7,069,016,064 (30 layers / 4096 dim / 32 heads) | bf16 ~14.1GB / Q8_0 8.62GB / Q6_K 6.66GB / Q4_K_M 5.27GB / Q2_K 3.44GB | 2048 | The practical tier: bf16 on a single 24GB card, no tricks. Word embeddings alone are 1,027,604,480 parameters (14.5% of the model), which is why the quant files run slightly fatter than a same-size Llama. |
| bigscience/bloom-3b, bloomz-3b | 3,002,557,440 (30 layers / 2560 dim / 32 heads) | bf16 ~6.0GB / Q4 quant around 2.4GB | 2048 | The sweet spot for multilingual ablations and tokenizer studies. KV cache is only ~0.3MB per token, so you can push a very large batch through an evaluation set in one pass. |
| bigscience/bloom-1b7, bloomz-1b7 | 1,722,408,960 (24 layers / 2048 dim / 16 heads) | bf16 ~3.4GB | 2048 | Word embeddings are 513,802,240 parameters — a full 30% of the model. Full-parameter fine-tuning still fits on one 24GB card, which makes it the right size for low-resource-language continued pretraining trials. |
| bigscience/bloom-560m, bloomz-560m | 559,214,592 (24 layers / 1024 dim / 16 heads) | bf16 ~1.1GB | 2048 | The 250,880 x 1024 embedding table is 256,901,120 parameters — nearly half the entire model. The definitive specimen for studying how a large multilingual vocabulary eats a small model alive. |
02 —
Which NexGPU card for which job
Sized against real bf16 weights plus real KV cache, with no optimistic rounding.
560M / 1B7 / 3B for multilingual baselines, tokenizer and vocabulary analysis
RTX 3090 24GB$0.193/GPU-hr
Even 3B in bf16 is only 6GB, so 24GB holds the model plus a large evaluation batch, and the lowest rate on the list makes repeat runs effectively free.
BLOOMZ-7B1 / 7B1-mt bf16 inference, or LoRA / QLoRA instruction fine-tuning
RTX 4090 24GB$0.540/GPU-hr
14.1GB of weights plus roughly 1GB of KV per sequence fits comfortably, and Ada-generation bf16 throughput roughly doubles your fine-tuning iteration speed over the previous generation.
Single-GPU BLOOM/BLOOMZ-176B at Q4_K_M (114.8GB) for capability probing or offline batch work
H200 141GB$6.660/GPU-hr
141GB swallows the 114.8GB quant on one card, which removes every tensor-parallel communication and tuning headache; the ~26GB left over holds KV for about three full-context sequences.
BLOOM/BLOOMZ-176B bf16 full-precision serving or paper reproduction
A100 SXM4 80GB x 8 (640GB total)$1.088/GPU-hr ($8.704/hr for the node)
TP=8 divides the 112 attention heads exactly, and after the 329GB of weights land you still have roughly 310GB of KV headroom — enough for dozens of concurrent 2048-token sequences.
03 —
Four steps to a running BLOOM
All on NexGPU's prebuilt vLLM / PyTorch images — SSH in and copy these verbatim.
- 01
Launch, size the volume, pull the weights
Boot the vLLM prebuilt image and give yourself enough disk up front: 40GB for BLOOMZ-7B1, and for the 176B at 329GB bf16 just provision 400GB. The hf CLI resumes interrupted shards automatically; expect one to two hours to pull all 72 shards of the 176B. Remember that compute stops billing the second the instance stops, but the storage volume keeps billing until you destroy it.
hf download bigscience/bloomz-7b1 --local-dir /workspace/bloomz-7b1 - 02
Serve it with vLLM on one GPU (the 7B1 route)
Set --max-model-len 2048 explicitly. BLOOM's config carries no max_position_embeddings, and because ALiBi will not throw on longer sequences, letting vLLM infer the context length silently distorts your KV reservation and quietly degrades output quality — the model saw 2048 and nothing longer during all 350B tokens of pretraining. You get a standard /v1/completions endpoint.
vllm serve /workspace/bloomz-7b1 --dtype bfloat16 --max-model-len 2048 --gpu-memory-utilization 0.90 --port 8000 - 03
Shard the 176B across eight GPUs with tensor parallelism
The 112 attention heads must be divisible by your TP degree, which leaves 1/2/4/7/8/14/16/28/56/112 — in practice 8x A100 80GB is the stable landing spot. Loading 329GB takes well over ten minutes on its own, so point --download-dir at a persistent volume and skip the re-download next boot. vLLM's BloomForCausalLM does pipeline parallelism but not LoRA, so do not try to attach adapters here.
vllm serve bigscience/bloomz --tensor-parallel-size 8 --dtype bfloat16 --max-model-len 2048 --download-dir /workspace/hf - 04
Or quantize to GGUF and shrink the bill
llama.cpp's convert_hf_to_gguf.py handles the bloom architecture natively. The 7B1 comes out at 5.27GB for Q4_K_M and 8.62GB for Q8_0, which a single 3090 handles with room to spare. The 176B converts too, but Q4_K_M lands as 114.8GB split into three parts that you must cat back together in order before loading — a step that gets skipped in most write-ups and fails loudly when you do.
python convert_hf_to_gguf.py /workspace/bloomz-7b1 --outfile bloomz-7b1-f16.gguf --outtype f16 && ./llama-quantize bloomz-7b1-f16.gguf bloomz-7b1-Q4_K_M.gguf Q4_K_M
What all three routes actually cost
Straight off our list rates. Route one, exploring BLOOMZ-7B1 (14.1GB bf16): an RTX 3090 24GB at $0.193/GPU-hr for a solid 24 hours is 24 x $0.193 = $4.63; add a 40GB volume for the weights and your GGUF builds at $0.414/GB-month, which prorates to 40 x $0.414 / 30 = $0.55/day, for $5.18 all in. Route two, the 176B Q4_K_M (114.8GB) on one card: H200 141GB at $6.660/GPU-hr, about 1.5 hours to download and concatenate the parts plus 3 hours of evaluation, so (1.5 + 3) x $6.660 = $29.97. Route three, full bf16 reproduction: A100 SXM4 80GB x 8 = 640GB at 8 x $1.088 = $8.704/hr; two hours to pull and load the weights is $17.41, three hours of benchmarking is $26.11, so a complete 176B bf16 evaluation run comes to $43.52. For contrast, buying the 640GB in route three outright is a six-figure capital expense; here it is forty-three dollars and change. Compute billing stops the second the instance stops, while the storage volume keeps billing until you destroy it — so delete that 400GB volume when the run is done.
04 —
Frequently asked questions
How much VRAM does BLOOM need, and what is the minimum GPU count for the 176B?
What is the difference between BLOOM and BLOOMZ, and which should I download?
How good is BLOOM at Chinese, and how much Chinese was actually in the training data?
The context is only 2048 — can I extend it to 4K or 8K?
Is BLOOM still worth deploying, or has it been superseded?
Does the RAIL licence allow commercial use?
Start building on NexGPU
Enterprise R&D team or solo developer — either way, your first job can be running in minutes.
Sign up to browse live network pricing. No payment method required.
