Instructions to use ulamai/Ulam-1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ulamai/Ulam-1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="ulamai/Ulam-1") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("ulamai/Ulam-1") model = AutoModelForMultimodalLM.from_pretrained("ulamai/Ulam-1", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use ulamai/Ulam-1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ulamai/Ulam-1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ulamai/Ulam-1", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/ulamai/Ulam-1
- SGLang
How to use ulamai/Ulam-1 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 "ulamai/Ulam-1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ulamai/Ulam-1", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'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 "ulamai/Ulam-1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ulamai/Ulam-1", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use ulamai/Ulam-1 with Docker Model Runner:
docker model run hf.co/ulamai/Ulam-1
Ulam-1
Ulam-1 is a 27.357-billion-parameter mathematical reasoning model developed by Ulam AI. It is distributed as a standalone merged BF16 Transformers model obtained by cumulative post-training of a pinned Qwen3.8-27B base. No separate Qwen checkpoint or adapter is required. The released model is Math-RL v3 seed 303 checkpoint 80.
Built with Qwen. The upstream model is Qwen/Qwen3.8-27B. Ulam post-training modifies low-rank modules in the text decoder while preserving the upstream tokenizer, processor, chat template, and vision branch. Attribution and modifications are recorded in NOTICE and provenance.json.
The model is intended for exploratory mathematical problem solving, proof debugging, and research assistance. It is not a theorem-certification system: strong claims, counterexamples, imported theorems, and literature statements require independent expert review.
Model details
| Field | Value |
|---|---|
| Developer | Ulam AI |
| Repository | ulamai/ulam-1 |
| Release | v1.0.0 |
| Base model | Qwen/Qwen3.8-27B |
| Architecture | Qwen3_5ForConditionalGeneration |
| Parameters | 27,356,728,560 |
| Weight dtype | BF16 |
| Native position setting | 262,144 tokens |
| Validated serving context | 131,072 tokens |
| Selected checkpoint | Math-RL v3 seed 303 checkpoint 80 |
| Distribution format | Standalone merged safetensors model |
The 262,144-token architectural setting is not a guarantee that every deployment can serve that length. Context capacity and concurrency depend on accelerator memory, KV-cache settings, serving engine, and workload. Validate the intended configuration before production use.
Quick start with Transformers
Ulam-1 retains the upstream multimodal architecture. The same processor supports text-only, image, and video messages; Ulam post-training and the reported ErdosBench audit are text-focused.
import torch
from transformers import AutoModelForMultimodalLM, AutoProcessor
model_id = "ulamai/ulam-1"
processor = AutoProcessor.from_pretrained(
model_id,
trust_remote_code=False,
)
model = AutoModelForMultimodalLM.from_pretrained(
model_id,
dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=False,
)
messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Prove that there are infinitely many prime numbers.",
}
],
}
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
output = model.generate(
**inputs,
do_sample=False,
max_new_tokens=4096,
)
completion = output[0, inputs["input_ids"].shape[-1]:]
print(processor.decode(completion, skip_special_tokens=True))
The model operates in thinking mode by default and can emit explicit <think>...</think> spans. Applications should deliberately retain, route, or suppress those spans rather than assuming they are absent.
Serving with SGLang
python3 -m sglang.launch_server \
--model-path ulamai/ulam-1 \
--served-model-name ulamai/ulam-1 \
--host 0.0.0.0 \
--port 30000 \
--tp-size 1 \
--context-length 131072
Example OpenAI-compatible request:
curl http://localhost:30000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "ulamai/ulam-1",
"messages": [
{"role": "user", "content": "Solve x^2 - 5x + 6 = 0."}
],
"temperature": 0,
"max_tokens": 4096
}'
Start with a smaller context or fewer concurrent requests if the target accelerator cannot sustain the validated configuration. Long mathematical generations can consume substantial KV-cache memory even when the model weights fit comfortably.
Release validation
The final adapter was merged into the pinned BF16 base with safe merge enabled. The standalone release contains 15 safetensors shards, retains 27,356,728,560 runtime parameters, and preserves the upstream processor and multimodal assets.
A private NVIDIA DGX Spark/GB10 SGLang smoke test loaded the merged model with a 131,072-token context, BF16 KV cache, and two concurrent request slots. /health, /v1/models, and /v1/chat/completions passed, and the requested smoke response returned exactly READY. This is a tested compatibility configuration, not a minimum-memory claim.
The final tree passed native Transformers generation with trust_remote_code=False, base-plus-adapter versus merged-model equivalence checks, full tensor and checksum validation, and clean-download validation at the immutable release commit. Machine-readable build, equivalence, and runtime receipts are included in this repository.
Intended uses
- exploratory mathematical problem solving with human review;
- proof debugging, obstruction finding, and statement checking;
- research-progress summaries and candidate approaches;
- research on verifier-backed mathematical post-training;
- text-focused inference and experimental multimodal mathematical assistance;
- local or hosted inference through standard Transformers and SGLang interfaces.
Out-of-scope uses
- treating generated arguments as formally verified proofs;
- autonomous theorem announcements or unsupervised research publication;
- factual or literature citation without checking primary sources;
- high-stakes medical, legal, financial, or safety decisions;
- autonomous tool use or agentic API operation without separate validation;
- redistributing protected benchmark prompts, private training rows, verifier controls, or reviewer material.
See RESPONSIBLE_USE.md for deployment guidance.
Training lineage
Qwen/Qwen3.8-27B (pinned revision)
-> curated research-reasoning SFT, seed 303 checkpoint 33
-> V-RLVR seed 202 checkpoint 2 (U2)
-> conclusion-focused Math-RL v2 seed 404 checkpoint 58
-> conclusion-focused Math-RL v3 seed 303 checkpoint 80
-> standalone merged Ulam-1 candidate
Every selected stage continues from the retained state produced by the preceding stage. The final checkpoint is not an independent adapter applied directly to the public Qwen base. Post-training adapters target the text decoder; the upstream vision branch remains frozen.
Training data
Ulam AI develops mathematical training data as a data vendor. The complete production mixture, private rows, and intermediate training artifacts are not disclosed. The following public repositories provide representative inspection samples and task formats:
ulamai/verified-research-reasoning-trajectories: examples of research-level proof-process and reasoning trajectories;ulamai/Math-RL-Tasks: examples of verifier-backed mathematical environments used in the final reinforcement-learning work.
These repositories are not complete dumps of the proprietary training corpus. Protected ErdosBench prompts, answers, grades, reviewer notes, and final-evaluation artifacts were excluded from the final-stage training builders.
Post-training objectives
The retained pipeline combines:
- supervised research-reasoning refinement;
- verified-reward optimization;
- conclusion-focused mathematical reinforcement learning;
- correctness-dominant reward shaping;
- terminal credit assignment spanning the reasoning suffix and final answer.
The final reward assigns 0.95 weight to verifier correctness, 0.01 to valid terminal format, 0.01 to EOS, and up to 0.03 to correctness-gated concision. An incorrect but formatted response can receive at most 0.02 auxiliary reward. A missing natural reasoning close receives a 0.005 penalty. Actor credit covers the final 512 sampled tokens, including the reasoning suffix and answer; controller-inserted boundary tokens receive no policy credit.
Evaluation
ErdosBench
The final candidate received one independent solve-only attempt on each of 226 protected problem variants. Generation used SGLang, temperature 0, top-p 1, a 131,072-token server context, and at most 120,000 output tokens.
| Artifact | A | B | C | D | F | M | Mean / 4 | A+B | Natural stop | Length hit |
|---|---|---|---|---|---|---|---|---|---|---|
| Ulam-1 seed303 cp80 | 19 | 118 | 82 | 5 | 2 | 0 | 2.385 | 137 | 163 | 63 |
| CURRENT-SFT previous run | 14 | 10 | 200 | 0 | 2 | 0 | 1.872 | 24 | 27 | 199 |
Grades use A/B/C/D/F/M = sound and scoped / useful but incomplete / material gap / likely wrong / contradicted / missing, mapped to 4/2.7/1.7/1/0/0 points. ErdosBench is used here as a correctness-first signal for research-mathematics progress, not as theorem certification.
The two rows share 226 problem identities but are not protocol-matched. The candidate used transformed solve-only prompts, SGLang, and a 120,000-token cap; CURRENT-SFT used a different protected prompt asset, vLLM, and a 65,536-token cap. Of the candidate's 163 natural stops, 117 occurred at or beyond 65,536 generated tokens. The comparison supports selecting seed303 checkpoint 80 under the intended long-output service protocol, but it does not isolate a checkpoint-only training effect.
The solve-only protocol did not request a self-verdict. A heuristic strong-claim audit identified 132 responses containing language such as "we prove", "we solve", "false", or "counterexample". These received 19 A, 93 B, 14 C, 5 D, and 1 F grades. Across the full run, seven outputs were graded D or F. Strong claims remain subject to independent expert or formal review.
SIMOBench was deliberately excluded from this final checkpoint-selection decision.
Development-time selection evidence
Intermediate development repeatedly used 139-item ErdosBench slices to compare supervised mixtures, reinforcement-learning doses, and later endpoints. V-RLVR seed 202 checkpoint 2 scored 0.3743135 on the matched selector, compared with 0.371908 for the previous U1 selection, and became the parent of the conclusion-focused stages. These consumed development slices are model-selection evidence, not untouched generalization estimates.
Machine-readable metrics and claim boundaries are provided in evaluation_results.json.
Limitations
- Outputs are not formal proofs and can contain subtle or decisive mathematical errors.
- The 226-problem audit uses one deterministic generation and one supplied item-level judgment pass.
- Eighty-two candidate outputs retain material mathematical gaps; seven are graded D or F.
- The candidate and CURRENT-SFT comparison differs in prompt transformation, inference engine, and output cap.
- Intermediate checkpoint selection repeatedly consumed ErdosBench-family development slices.
- No sampling-variance estimate or inter-rater agreement statistic is available for the final audit.
- The full response archive and protected prompts are not distributed in the model repository.
- The model can expose reasoning spans or fail to produce a compact terminal answer.
- The retained vision branch was not independently evaluated after text-only Ulam post-training.
- Quantized runtimes and serving configurations other than the recorded Transformers and SGLang setups require independent validation.
Reproducibility and integrity
release_manifest.jsonrecords the public file inventory and validation state.provenance.jsondescribes the public lineage without private storage paths or proprietary rows.evaluation_results.jsoncontains publishable aggregate results, protocol details, and claim boundaries.build_receipt.jsonandsglang_smoke_receipt.jsonrecord the sanitized merge and serving checks.checksums.sha256binds every publication file except the checksum manifest itself.
Use the immutable v1.0.0 tag for reproducible downloads. Do not treat a mutable main revision as the canonical scientific artifact.
License
Ulam-1 weights and repository content are released under the Apache License 2.0. The upstream Qwen3.8-27B model is also licensed under Apache 2.0; upstream terms and attribution are recorded under UPSTREAM_LICENSES/.
Citation
@misc{ulam2026ulam1,
title = {Ulam-1: Conclusion-Focused Post-Training for Research Mathematics},
author = {{Ulam AI}},
year = {2026},
howpublished = {Hugging Face model release},
url = {https://huggingface.co/ulamai/ulam-1}
}
The complete technical report is included under paper/.
Contact
For model questions, data licensing, deployment guidance, or responsible disclosure, contact Ulam AI through ulam.ai.
- Downloads last month
- 6
Model tree for ulamai/Ulam-1
Datasets used to train ulamai/Ulam-1
ulamai/verified-research-reasoning-trajectories
Evaluation results
- Weighted grade mean (A/B/C/D/F/M = 4/2.7/1.7/1/0/0) on ErdosBench solve-only audit (226 problems)Ulam-1 evaluation receipt2.385