Instructions to use allenai/OLMo-2-0425-1B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use allenai/OLMo-2-0425-1B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="allenai/OLMo-2-0425-1B")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("allenai/OLMo-2-0425-1B") model = AutoModelForCausalLM.from_pretrained("allenai/OLMo-2-0425-1B", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use allenai/OLMo-2-0425-1B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "allenai/OLMo-2-0425-1B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "allenai/OLMo-2-0425-1B", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/allenai/OLMo-2-0425-1B
- SGLang
How to use allenai/OLMo-2-0425-1B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "allenai/OLMo-2-0425-1B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "allenai/OLMo-2-0425-1B", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "allenai/OLMo-2-0425-1B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "allenai/OLMo-2-0425-1B", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use allenai/OLMo-2-0425-1B with Docker Model Runner:
docker model run hf.co/allenai/OLMo-2-0425-1B
Main revision
Hi!
I was playing around with the revisions and I get different results with the main and the stage2-ingredient3-step23852-tokens51B revision.
Shouldn't these be the exact same model according to https://github.com/allenai/OLMo?
For the 1B model, we have trained three times with different data order on 50B high quality tokens, used last checkpoint of seed 42 as final checkpoint.
I couldn't figure it out, sorry
Ya I think this is just a bug with the checkpoints, stage2-ingredient3 seems correct.
Weight-level evidence that may explain the mismatch reported here and in #2: main does not come from the same training run as the released stage1/stage2 branches, while -Instruct does descend from stage2-ingredient3.
Summary. The model card says main is the final checkpoint and that fine-tuning can start from it, and that for the 1B model only stage-2 ingredient 3 is the real mid-training run. In the published weights, however, main is unrelated to every stage1-* / stage2-ingredient* branch, including stage2-ingredient3-step23852-tokens51B, while the -Instruct model descends from the stage-2 ingredient-3 branch. main looks like a model from a different training run (different initialization).
Evidence (Pearson correlation of flattened tensors, float64, read from the published safetensors):
| comparison | layer-5 q_proj | layer-5 v_proj | layer-5 mlp.down_proj | embed_tokens |
|---|---|---|---|---|
main vs stage2-ingredient3-step23852-tokens51B |
0.0003 | 0.0002 | β0.0004 | 0.0058 |
main vs stage1-step1907359-tokens4001B |
0.0004 | β | β | 0.0059 |
main vs stage1-step0-tokens0B |
0.0001 | β | β | 0.0024 |
stage1-step1907359 vs stage2-ingredient3-step23852 |
0.960 | 0.977 | 0.971 | 0.9996 |
OLMo-2-0425-1B-Instruct vs main |
β | β | β0.0004 | β |
OLMo-2-0425-1B-Instruct vs stage2-ingredient3-step23852 |
β | β | 0.995 | β |
- The configs of
mainand the stage-2 branch are identical, so this is not a format difference. The near-zero correlation also holds forv_proj,down_projand the embeddings, which a q/k RoPE permutation in conversion would not affect. - Functionally,
mainandstage2-ingredient3-step23852give different next-token distributions (mean KL 0.21 nats/token, top-1 agreement 0.78 on three short prompts), i.e. they are different models, not the same weights stored differently. stage1-step0-tokens0Bvsstage1-step1907359gives 0.005, as expected for a single run;mainis equally far from all branches.
Why it matters. Work that treats main as the endpoint of the released stage1 β stage2 trajectory, or as the base model of -SFT/-DPO/-Instruct (e.g. base-vs-instruct comparisons, training-dynamics analyses that append main to the checkpoint series), compares unrelated models. Could you clarify which run main comes from, or point main to the intended final checkpoint?
Reproduce: read one tensor per revision via huggingface_hub.hf_hub_url("allenai/OLMo-2-0425-1B", <shard>, revision=...) with an HTTP Range request, e.g. model.layers.5.mlp.down_proj.weight, and compute the correlation.