PAPO Model

This is the official model for the paper Perception-Aware Policy Optimization for Multimodal Reasoning.

Abstract

Reinforcement Learning with Verifiable Rewards (RLVR) has proven to be a highly effective strategy for endowing Large Language Models (LLMs) with robust multi-step reasoning abilities. However, its design and optimizations remain tailored to purely textual domains, resulting in suboptimal performance when applied to multimodal reasoning tasks. In particular, we observe that a major source of error in current multimodal reasoning lies in the perception of visual inputs. To address this bottleneck, we propose Perception-Aware Policy Optimization (PAPO), a simple yet effective extension of GRPO that encourages the model to learn to perceive while learning to reason, entirely from internal supervision signals. Notably, PAPO does not rely on additional data curation, external reward models, or proprietary models. Specifically, we introduce the Implicit Perception Loss in the form of a KL divergence term to the GRPO objective, which, despite its simplicity, yields significant overall improvements (4.4%) on diverse multimodal benchmarks. The improvements are more pronounced, approaching 8.0%, on tasks with high vision dependency. We also observe a substantial reduction (30.5%) in perception errors, indicating improved perceptual capabilities with PAPO. We conduct comprehensive analysis of PAPO and identify a unique loss hacking issue, which we rigorously analyze and mitigate through a Double Entropy Loss. Overall, our work introduces a deeper integration of perception-aware supervision into RLVR learning objectives and lays the groundwork for a new RL framework that encourages visually grounded reasoning.

Project Page: https://mikewangwzhl.github.io/PAPO/ Code: https://github.com/mikewangwzhl/PAPO

Model Version

PAPO (NO KL_ref)

Usage

This model is designed for multimodal reasoning tasks, taking both image and text inputs to generate text. You can load it using the transformers library. For detailed usage instructions, including how to prepare multimodal inputs, please refer to the official project page and code repository.

from transformers import AutoProcessor, AutoModelForCausalLM
import torch

model_id = "mikewangwzhl/PAPO-7B-NO-KL" # Or the specific model identifier on the Hub

# Load processor and model
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16)

# Move model to appropriate device (e.g., GPU if available)
if torch.cuda.is_available():
    model = model.to("cuda")

# Example of a text-only generation (if supported by the multimodal model)
# For full multimodal usage, you would also prepare and pass image data.
prompt = "Hello, what can you do?"
messages = [{"role": "user", "content": prompt}]

# Apply chat template and get input IDs
input_ids = processor.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")
if torch.cuda.is_available():
    input_ids = input_ids.to("cuda")

# Generate a response
output_ids = model.generate(input_ids, max_new_tokens=100)

# Decode the generated text
generated_text = processor.decode(output_ids[0], skip_special_tokens=True)
print(generated_text)
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train PAPOGalaxy/PAPO-G-NRef-Qwen2.5-VL-7B

Collections including PAPOGalaxy/PAPO-G-NRef-Qwen2.5-VL-7B