Beam-VL v2

Beam-VL adds image understanding to Reflection's Beam-1.0-501B-A23B, a 501B-parameter mixture-of-experts model with 23B active parameters. It reads documents, charts, screenshots, UIs and photos, reasons over several images per prompt, and writes code, SVG and HTML from what it sees, while keeping Beam's text and tool-use abilities.

What's new in v2 (2026-10-27)

  • v2 is a clean retrain of the instruction stage from the alignment checkpoint on a new data mix, with a tuned speculative drafter (drafter/) that the launcher uses by default.
  • v1 stays available at tag v1.0: hf download diffbot/Beam-VL-1.0-501B-A23B-NVFP4 --revision v1.0.

Highlights

Architecture 501B total / 23B active MoE (256 routed experts, top-8) + 412M-parameter vision encoder
Context 131K tokens, up to 8 images per prompt, images in tool results
Reasoning Beam's reasoning-effort control (minimal ยท low ยท medium ยท high, or model-chosen)
Throughput (4x B200, NVFP4) 715 tok/s single stream with an image in context ยท 1,963 tok/s at 4 streams
Latency 0.35 s time to first token for a fresh single-image prompt
Runs on 4x B200 / B300 (NVFP4 experts)

Benchmarks

Served through vLLM with the recipe in this repository (NVFP4 experts, tensor parallel 4, speculative decoding on), default reasoning effort, max_tokens 4,096 (16,384 for HumanEval).

Benchmark Metric Beam-VL v2
MMMU (val) accuracy 68.7
MMStar accuracy 50.7
ChartQA (test) relaxed accuracy 78.0
DocVQA (val) ANLS 92.1
OCRBench accuracy 74.0
GSM8K accuracy 96.0
HumanEval pass@1 95.7
Brand recognition (held-out Diffbot logo and mascot images) accuracy 0.94

Vision benchmarks are fixed subsets: MMMU 150 and MMStar 150 questions (reasoning on), ChartQA, DocVQA and OCRBench 100 each (reasoning off). 95% confidence intervals are about ยฑ5 to ยฑ9 points. A repeat DocVQA run on the same 100 documents scored 92.3. GSM8K: 200 problems.

Speed

Setup Decode, 1 stream Decode, 4 streams Text decode (2K prompt) TTFT, 1 image
4x B200, NVFP4, tuned DFlash2 715 tok/s 1,963 tok/s 562 tok/s 0.35 s

Mean acceptance length of the tuned drafter at default effort: 3.96 on image prompts and 5.65 on text prompts (Reflection's stock DFlash2 on the same server: 3.77 / 5.50). Speculative decoding is lossless, so the drafter changes speed, not outputs.

Quickstart

4x B200 / B300 (NVFP4)

hf download diffbot/Beam-VL-1.0-501B-A23B-NVFP4 --local-dir ~/models/Beam-VL-NVFP4
API_KEY=change-me MODEL=~/models/Beam-VL-NVFP4 GPUS=0,1,2,3 \
    bash ~/models/Beam-VL-NVFP4/recipe/serve/serve-nvfp4-tp4.sh

The launcher uses the tuned drafter in this repository (drafter/) by default. Reflection's stock Beam-1.0-501B-A23B-DFlash2 also works as DRAFTER. For v1, add --revision v1.0 to the download and pass the stock drafter as DRAFTER.

Uses the pinned public image vllm/vllm-openai:nightly-83c078d955cd6e0c63d3b12abe669c8de936a370. The launcher applies the included Beam-VL plugin and parser patch.

A 2x RTX PRO 6000 Blackwell (EXL3) version is coming.

Request

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="change-me")
resp = client.chat.completions.create(
    model="beam-vl",
    messages=[{"role": "user", "content": [
        {"type": "image_url", "image_url": {"url": "https://example.com/chart.png"}},
        {"type": "text", "text": "When did Beacon overtake Atlas?"},
    ]}],
    max_tokens=8192,
)
print(resp.choices[0].message.content)

Images can be http(s) or data URLs. Set reasoning_effort to trade speed for depth; the reasoning is returned in message.reasoning.

Hardware

Setup GPUs Memory per GPU Disk
NVFP4, TP4 4x B200 (180 GB) or B300 ~162 GB at 0.88 utilization (71 GB weights) ~325 GB

Gallery

Best of 4 attempts per prompt, at reasoning effort high, temperature 0.6 and top_p 0.95. A reviewer compared the 4 attempts against the reference answers and kept the best one. The prompts are the same as v1's gallery. Four prompts are not shown because none of the 4 attempts was fully correct: the click point for a download button in a dashboard screenshot, counting the pelicans in a photo, adding up prices from Japanese price tags, and re-creating a survey chart as SVG. A fifth, an SVG of a bald eagle riding a bicycle, was dropped because no attempt was a clean drawing. Input images are our own (fictional data, CC0) or public domain from Wikimedia Commons.

Who is overdue?

Who is overdue?: "Using today's date shown on the board, list every task that is overdue (due date before today and not in Done). Return ONLY JSON: {"overdue": [{"title": ..., "assignee_initials": ..., "column": ..., "due": "Mar D", "days_late": inโ€ฆ"

Handwritten intake form

Handwritten intake form: "Digitise this filled-in patient intake form. Return ONLY JSON with: last_name, first_name, dob (YYYY-MM-DD), address, city, state, zip, phone, preferred_contact, insurance {provider, member_id, group}, conditions (checked boxes onโ€ฆ" The member ID is read as NHP-9471-0920; the form says NHP-4471-0920 (the handwritten 4 is ambiguous). All 4 attempts read it the same way.

When did Beacon overtake Atlas?

When did Beacon overtake Atlas?: "In which month did Beacon first have more monthly active users than Atlas, and by roughly how many users did Beacon lead in December?"

Whiteboard to Mermaid

Whiteboard to Mermaid: "Convert this whiteboard flowchart into a Mermaid flowchart that preserves every node, decision, edge label and the retry loop. Return one ```mermaid block."

Timetable to CSV + plan a trip

Timetable to CSV + plan a trip: "Convert this timetable to CSV (use an empty cell where a train does not stop). Then answer: I board at Harbor Point and must reach University by 7:45 a.m. Which is the LATEST train I can take, and how long is the ride?"

Find the bug (Python)

Find the bug (Python): "Why does the last assert fail? Point to the exact line, explain, and give the corrected code."

Spot the difference

Spot the difference: "Spot the differences between these two pictures. List each one." There are 6 differences; this answer finds 4 of them (it misses the removed cloud and the chimney).

Equation and area from a plot

Equation and area from a plot: "Find the equation of the plotted quadratic from the marked points, then compute the area of the shaded region. Give exact values."

Render, look, fix: design to HTML

Render, look, fix: given a target design and one tool, render_html(html), which returns a screenshot of the page from a headless browser, Beam-VL wrote an energy-dashboard card, rendered it three times and compared each screenshot with the target. After render 1 it narrowed the bars and spread them across the chart; after render 2 it widened the bars and enlarged the line points; after render 3 it judged that "the third render matches the target design closely" and returned the page. It did not notice that its solar line is nearly flat while the target's swings between about 40 and 95, and the Grid bars are slightly short. Best of 4 runs, model-chosen reasoning, temperature 0.6 ยท the final HTML: html/agentic-energy-card/index.html

three.js Golden Gate Bridge three.js Statue of Liberty

three.js Golden Gate Bridge: "Write a single self-contained HTML file that renders an animated Golden Gate Bridge with three.js." ยท the model's HTML: html/threejs-golden-gate/index.html

three.js Statue of Liberty: "Write a single self-contained HTML file that renders an animated Statue of Liberty with three.js." ยท the model's HTML: html/threejs-statue-of-liberty/index.html

Both prompts also fix the rendering setup (three.js r160 core only, loaded through an import map; no other scripts). Rendered headless on a fixed clock at t = 3 s.

Logo from a design brief

Logo from a design brief: "Design an SVG logo for a coffee roaster called 'North Ember'. Brief: a minimal geometric mark combining a coffee bean and a small flame, a warm palette (deep brown, ember orange, cream), the wordmark 'NORTH EMBER' set in a clean sโ€ฆ"

A consistent icon set

A consistent icon set: "Generate an SVG of a set of four app icons: home, search, settings and profile"

Booking card to HTML/CSS

Booking card to HTML/CSS: "Write a single self-contained HTML file (inline CSS, no external images, fonts or scripts) that reproduces this UI component as faithfully as possible. The page background is the light grey around the card."

Water-cycle infographic

Water-cycle infographic: "Generate an SVG of the water cycle with labeled arrows for evaporation, condensation and precipitation"

Model details

  • Vision encoder: the 412M-parameter ViT from DeepSeek-V4.1-Flash-1017 with a 3x3 token-merging aligner; up to 1,024 visual tokens per image.
  • Training: alignment of the encoder to Beam then 1,480 steps (~1.5B tokens) of instruction tuning on documents, charts, screens and UI grounding, photos, multi-step visual reasoning and tool use with images, with a distillation term that keeps Beam's text behaviour. Every example trains the end of the reasoning block, including empty reasoning at low efforts. Evaluation sets were removed from the training data by image hash and question overlap. Beam's 256 routed experts are unchanged, so Beam-VL runs on Beam's existing NVFP4 and EXL3 expert packs.
  • Drafter: drafter/ is Reflection's Beam-1.0-501B-A23B-DFlash2 fine-tuned on Beam-VL v2's own answers to image and text prompts (same architecture and block size; 1,500 steps on about 8,000 of Beam-VL v2's answers to image and text prompts from its training mix).
  • Files: Reflection's Beam-1.0-501B-A23B-NVFP4 weights as released (revision f8ecac0e16045babf60156f6ba996a77fcb48cf9), plus vl/overlay.safetensors (the tensors Beam-VL changes), vl/ds41_vision.safetensors (the vision encoder) and drafter/.

License and credits

Beam-VL is released under Apache-2.0 as a modified version of Beam-1.0-501B-A23B by Reflection (see NOTICE). The drafter is a modified version of Reflection's Beam-1.0-501B-A23B-DFlash2 (Apache-2.0). The vision encoder follows DeepSeek-V4.1-Flash (MIT). three.js (MIT) is bundled with the gallery pages.

Training data: WebSight (CC-BY-4.0), FineVision collections (DoclingMatix, SynthCodeNet, SynthChartNet, PlotQA, VQAv2, TextVQA, Screen2Words, Localized Narratives, FinQA, TAT-QA, A-OKVQA, SynthDoG), Docmatix page images (with regenerated questions and answers), PixMo-Cap, OS-Atlas (incl. AMEX), Android Control, UIBert RefExp, Widget Captioning, RicoSCA, GroundCUA, open front-end template libraries and exam-question sources (listed in recipe/DATA_CREDITS.md), Lichess puzzles (CC0), and NVIDIA Nemotron, OpenCodeReasoning and OpenThoughts3 text data. Thank you to everyone who released these.

Downloads last month
65
Safetensors
Model size
255B params
Tensor type
BF16
ยท
F32
ยท
U8
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for diffbot/Beam-VL-1.0-501B-A23B-NVFP4

Finetuned
(5)
this model