Model reference · open weights
h2o-danube3 is an open-weight language model from h2oai. h2o-danube3-500m-chat (BF16) weighs 1.0 GB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the h2oai/h2o-danube3-500m-chat model card, 2026-10-01
What it is
| Released by | h2oai |
|---|---|
| Released | 2024-07-04 |
| Parameters | 514M |
| VRAM | 1.0 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 8K each | |||
| RTX 3060 12 GB | 25 | all 8K | 11.6 GB |
| RTX 4060 Ti 16 GB | 34 | all 8K | 15.4 GB |
| RTX 3090 24 GB | 54 | all 8K | 23.4 GB |
| RTX 4090 24 GB | 54 | all 8K | 23.4 GB |
| RTX 5090 32 GB | 73 | all 8K | 31.0 GB |
| L40S 48 GB | 105 | all 8K | 44.0 GB |
| A100 80 GB | 190 | all 8K | 78.2 GB |
| H100 80 GB | 183 | all 8K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 222 | all 8K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 256 | all 8K | 107 GB |
| H200 141 GB | 332 | all 8K | 138 GB |
| B200 180 GB | 426 | all 8K | 176 GB |
| Requests at once | 8K tokens each |
|---|---|
| 1 | 2.0 GB |
| 5 | 3.6 GB |
| 8 | 4.8 GB |
| 16 | 8.0 GB |
| 32 | 14.4 GB |
| 64 | 27.3 GB |
One card, with vLLM's small-card settings.
From the model card
alt="Slightly cropped image" style="width: 102%; height: 102%; object-fit: cover; object-position: center; margin: -5% -5% -5% -5%;">
h2o-danube3-500m-chat is a chat fine-tuned model by H2O.ai with 500 million parameters. We release two versions of this model:
| Model Name | Description |
|---|---|
| h2oai/h2o-danube3-500m-base | Base model |
| h2oai/h2o-danube3-500m-chat | Chat model |
This model was trained using H2O LLM Studio.
Can be run natively and fully offline on phones - try it yourself with H2O AI Personal GPT.
We adjust the Llama 2 architecture for a total of around 500m parameters. For details, please refer to our Technical Report. We use the Mistral tokenizer with a vocabulary size of 32,000 and train our model up to a context length of 8,192.
The details of the model architecture are:
| Hyperparameter | Value |
|---|---|
| n_layers | 16 |
| n_heads | 16 |
| n_query_groups | 8 |
| n_embd | 1536 |
| vocab size | 32000 |
| sequence length | 8192 |
To use the model with the transformers library on a machine with GPUs, first make sure you have the transformers library installed.
pip install transformers>=4.42.3
import torch
from transformers import pipeline
pipe = pipeline(
"text-generation",
model="h2oai/h2o-danube3-500m-chat",
torch_dtype=torch.bfloat16,
device_map="auto",
)
# We use the HF Tokenizer chat template to format each message
# https://huggingface.co/docs/transformers/main/en/chat_templating
messages = [
{"role": "user", "content": "Why is drinking water so healthy?"},
]
prompt = pipe.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
res = pipe(
prompt,
return_full_text=False,
max_new_tokens=256,
)
print(res[0]["generated_text"])
This will apply and run the correct prompt format out of the box:
Alternatively, one can also run it via:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "h2oai/h2o-danube3-500m-chat"
tokenizer = AutoTokenizer.from_pretrained(
model_name,
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
messages = [
{"role": "user", "content": "Why is drinking water so healthy?"},
]
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(
prompt, return_tensors="pt", add_special_tokens=False
).to("cuda")
# generate configuration can be modified to your needs
tokens = model.generate(
input_ids=inputs["input_ids"],
attention_mask=inputs["attention_mask"],
min_new_tokens=2,
max_new_tokens=256,
)[0]
tokens = tokens[inputs["input_ids"].shape[1]:]
answer = tokenizer.decode(tokens, skip_special_tokens=True)
print(answer)
You can load the models using quantization by specifying load_in_8bit=True or load_in_4bit=True. Also, sharding on multiple GPUs is possible by setting device_map=auto.
LlamaForCausalLM(
(model): LlamaModel(
(embed_tokens): Embedding(32000, 1536, padding_idx=0)
(layers): ModuleList(
(0-15): 16 x LlamaDecoderLayer(
(self_attn): LlamaSdpaAttention(
(q_proj): Linear(in_features=1536, out_features=1536, bias=False)
(k_proj): Linear(in_features=1536, out_features=768, bias=False)
(v_proj): Linear(in_features=1536, out_features=768, bias=False)
(o_proj): Linear(in_features=1536, out_features=1536, bias=False)
(rotary_emb): LlamaRotaryEmbedding()
)
(mlp): LlamaMLP(
(gate_proj): Linear(in_features=1536, out_features=4096, bias=False)
(up_proj): Linear(in_features=1536, out_features=4096, bias=False)
(down_proj): Linear(in_features=4096, out_features=1536, bias=False)
(act_fn): SiLU()
)
(input_layernorm): LlamaRMSNorm()
(post_attention_layernorm): LlamaRMSNorm()
)
)
(norm): LlamaRMSNorm()
)
(lm_head): Linear(in_features=1536, out_features=32000, bias=False)
)
| Benchmark | acc_n |
|---|---|
| Average | 40.71 |
| ARC-challenge | 39.25 |
| Hellaswag | 61.02 |
| MMLU | 26.33 |
| TruthfulQA | 39.96 |
| Winogrande | 61.72 |
| GSM8K | 16.00 |
First Turn: 4.16
Second Turn: 2.40
Average: 3.28
Please read this disclaimer carefully before using the large language model provided in this repository. Your use of the model signifies your agreement to the following terms and conditions.
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.