WorldReward
Collection
WorldReward: Reward Modeling for Camera-Conditioned World Models • 3 items • Updated • 1
How to use CodeGoat24/WorldReward-qwen35-9b with Transformers:
# Use a pipeline as a high-level helper
from transformers import pipeline
pipe = pipeline("image-text-to-text", model="CodeGoat24/WorldReward-qwen35-9b")
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("CodeGoat24/WorldReward-qwen35-9b")
model = AutoModelForMultimodalLM.from_pretrained("CodeGoat24/WorldReward-qwen35-9b", 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]:]))How to use CodeGoat24/WorldReward-qwen35-9b with vLLM:
# Install vLLM from pip:
pip install vllm
# Start the vLLM server:
vllm serve "CodeGoat24/WorldReward-qwen35-9b"
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "CodeGoat24/WorldReward-qwen35-9b",
"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 run hf.co/CodeGoat24/WorldReward-qwen35-9b
How to use CodeGoat24/WorldReward-qwen35-9b with SGLang:
# Install SGLang from pip:
pip install sglang
# Start the SGLang server:
python3 -m sglang.launch_server \
--model-path "CodeGoat24/WorldReward-qwen35-9b" \
--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": "CodeGoat24/WorldReward-qwen35-9b",
"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 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 "CodeGoat24/WorldReward-qwen35-9b" \
--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": "CodeGoat24/WorldReward-qwen35-9b",
"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"
}
}
]
}
]
}'How to use CodeGoat24/WorldReward-qwen35-9b with Docker Model Runner:
docker model run hf.co/CodeGoat24/WorldReward-qwen35-9b
WorldReward: Reward Modeling for Camera-Conditioned World Models.
git clone https://github.com/CodeGoat24/WorldReward
cd WorldReward && pip install -e .
python examples/run_single_pair.py \
--input-image my_data/scene.jpg \
--left-video my_data/system_x.mp4 \
--right-video my_data/system_y.mp4 \
--caption "A sunlit street lined with colorful European-style buildings." \
--actions forward,forward,left+camera_down \
--frames-per-action 8 \
--show-reasoning
Inference needs vLLM new enough to register Qwen3_5ForConditionalGeneration:
python -c "from vllm.model_executor.models.registry import ModelRegistry as R; \
print('Qwen3_5ForConditionalGeneration' in R.get_supported_archs())"
Three-way agreement with human labels on
WorldReward-Bench (760 pairs, %).
All pairs count: a pair labelled tie is correct only if the model also predicts
tie.
| Reward model | Action | Appearance | Motion |
|---|---|---|---|
| WorldReward-9B | 77.63 | 81.32 | 73.03 |
| GPT-5.5 | 74.21 | 79.87 | 69.47 |
| Gemini-3.1-Pro | 65.79 | 80.13 | 60.79 |
| DAv3 | 70.53 | -- | -- |
| WorldMirror | 68.55 | -- | -- |
| Qwen3.5-VL-27B (zero-shot) | 63.68 | 44.34 | 62.76 |
| Qwen3.5-VL-9B (zero-shot) | 48.42 | 48.29 | 43.82 |
| HPSv3 | -- | 73.68 | -- |
| Aesthetic | -- | 69.87 | -- |
| UnifiedReward-Think | -- | 66.09 | 38.79 |
| UnifiedReward-Flex | -- | 64.62 | 49.86 |
| VideoAlign | -- | 61.32 | 40.13 |
@article{WorldReward,
title={WorldReward: Reward Modeling for Camera-Conditioned World Models},
author={Wang, Yibin and Wang, Zehan and Tang, Junshu and Li, Zhimin and Zhou, Yujie and Bu, Jiazi and Ling, Pengyang and Han, Feng and Zhang, Zhixiong and Xing, Long and Ding, Shengyuan and Li, Ziang and Jin, Cheng and Zang, Yuhang and Wang, Jiaqi and Pang, Tianyu},
journal={arXiv preprint arXiv:2609.03952},
year={2026}
}