Mario: Multimodal Graph Reasoning with Large Language Models
Organizations: New York University Shanghai · New York University · Tsinghua University · EPFL
Abstract
Recent advances in large language models (LLMs) have opened new avenues for multimodal reasoning. Yet, most existing methods still rely on pretrained vision-language models (VLMs) to encode image-text pairs in isolation, ignoring the relational structure that real-world multimodal data naturally form. This motivates reasoning on multimodal graphs (MMGs), where each node has textual and visual attributes and edges provide structural cues. Enabling LLM-based reasoning on such heterogeneous multimodal signals while preserving graph topology introduces two key challenges: resolving weak cross-modal consistency and handling heterogeneous modality preference. To address this, we propose Mario, a unified framework that simultaneously resolves the two above challenges and enables effective LLM-based reasoning over MMGs. Mario consists of two innovative stages. Firstly, a graph-conditioned VLM design that jointly refines textual and visual features through fine-grained cross-modal contrastive learning guided by graph topology. Secondly, a modality-adaptive graph instruction tuning mechanism that organizes aligned multimodal features into graph-aware instruction views and employs a learnable router to surface, for each node and its neighborhood, the most informative modality configuration to the LLM. Extensive experiments across diverse MMG benchmarks demonstrate that Mario consistently outperforms state-of-the-art graph models in both supervised and zero-shot scenarios for node classification and link prediction. The code will be made available at https://github.com/sunyuanfu/Mario.
Figures & tables
| Methods | Node Classification Accuracy (%) | Link Prediction Accuracy (%) | ||||||
| Datasets | Movies | CDs | Arts | Movies | CDs | Arts | ||
| Text-only | ||||||||
| GCN | ↑9.86 | ↑11.01 | ↑11.99 | ↑15.21 | ↑23.70 | ↑17.07 | ↑21.07 | ↑23.69 |
| GATv2 | ↑4.92 | ↑9.73 | ↑8.76 | ↑11.74 | ↑21.27 | ↑20.67 | ↑19.43 | ↑20.49 |
| SAGE | ↑10.46 | ↑9.66 | ↑11.27 | ↑6.87 | ↑28.43 | ↑19.77 | ↑23.97 | ↑24.46 |
| LLaMA3-8B | ↑38.13 | ↑18.07 | ↑29.91 | ↑19.71 | ↑30.80 | ↑12.00 | ↑18.40 | ↑23.56 |
| Methods | Node Classification Accuracy (%) | Link Prediction Accuracy (%) | ||||||
| Datasets | Movies | CDs | Arts | Movies | CDs | Arts | ||
| Text-only | ||||||||
| GCN | ↑3.83 | ↑7.03 | ↑9.17 | ↑12.17 | ↑22.15 | ↑16.23 | ↑20.57 | ↑30.27 |
| SAGE | ↑4.13 | ↑3.24 | ↑6.69 | ↑3.74 | ↑29.15 | ↑18.70 | ↑31.47 | ↑28.90 |
| LLaGA | ↑3.18 | ↑2.06 | ↑8.60 | ↑17.18 | ↑5.17 | ↑1.78 | ↑3.18 | ↑5.54 |
| GraphPrompter | ↑5.77 | ↑2.84 | ↑15.23 | ↑7.29 | ↑22.18 | ↑4.03 | ↑10.30 | ↑4.30 |
| Toys Movies | Toys+Movies CDs | Toys Books | ||||
| Model Tasks | NC | LP | NC | LP | NC | LP |
| GCN | ||||||
| GATv2 | ||||||
| SAGE | ||||||
| GraphPrompter | ||||||
| LLaGA | ||||||
| Model | Arts | Movies | ||||
| Acc(%) | s/epoch | Acc(%) | s/epoch | Acc(%) | s/epoch | |
| GCN | ↑2.00 | ↑2.14 | ↑5.36 | |||
| SAGE | ↑1.52 | ↑3.47 | ↑4.95 | |||
| GATv2 | ↑2.33 | ↑2.58 | ↑4.54 | |||
| MLP | ↑2.42 | ↑2.80 | ↑5.78 | |||
| GVLM | ||||||
| Dataset | Domain | # Nodes | # Edges | # Classes |
| Movies | E-commerce | 16,672 | 109,195 | 20 |
| Toys | E-commerce | 20,694 | 63,443 | 18 |
| CDs | E-commerce | 36,272 | 844,878 | 15 |
| Arts | E-commerce | 28,195 | 197,428 | 7 |
| Reddit(S) | Social Media | 15,894 | 566,160 | 20 |
| Goodreads | Literature | 685,294 | 7,235,084 | 11 |
| Model | Movies | Arts |
| SAGE | 44.07 | 85.35 |
| GATv2 | 49.29 | 81.19 |
| GCN | 46.96 | 76.76 |
| MMGCN | 46.79 | 86.63 |
| MGAT | 40.17 | 87.25 |
| Model | Trainable Params | Movies | CDs | Arts | |
| Node Classification (Trainable parameters are from Stage 2) | |||||
| Frozen Mario | 18,886,656 (0.2346%) | 50.85 | 93.60 | 60.45 | 89.69 |
| Mario + LoRA | 22,294,528 (0.2768%) | 53.63 | 95.30 | 63.43 | 92.13 |
| Link Prediction (Trainable parameters are from Stage 2) | |||||
| Frozen Mario | 18,886,656 (0.2346%) | 90.90 | 89.00 | 88.60 | 86.30 |
| Mario + LoRA | 22,294,528 (0.2768%) | 93.90 | 91.30 | 92.70 | 89.96 |
| Model | Toys Movies | Toys+Movies CDs | ||
| NC | LP | NC | LP | |
| MLP | 6.12 | 52.60 | 7.04 | 50.20 |
| GCN | 3.29 | 62.13 | 10.01 | 64.17 |
| GATv2 | 4.32 | 64.47 | 8.13 | 67.97 |
| SAGE | 3.11 | 55.83 | 6.14 | 59.63 |
| MLP(Vision Only) | 4.61 | 52.13 | 9.06 | 46.09 |
| Different Size | Arts | Toys |
| Mario-7B (LLaMA2) | 91.06 | 81.20 |
| Mario-13B (LLaMA2) | 91.23 | 80.93 |
| Mario-7B (Vicuna-v1.5) | 91.09 | 81.07 |
| Mario (FLAN-T5-XXL) | 92.08 | 81.63 |
| Mario-8B (LLaMA3) | 92.13 | 82.58 |
| Dataset | Movies | Toys | Arts | CDs | Goodreads | |
| Heterophily Ratio | 0.53 | 0.26 | 0.34 | 0.69 | 0.33 | 0.04 |
| Method | Movies (NC) | Arts (LP) |
| Mario (Single Focus) | ||
| Mario (Mix Training) |
| Method | Arts | Movies | #Epoch | Avg Acc(%) | |
| Tuned CLIP/Other Baselines vs. GVLM (stage1) (Columns 2–4: GPU-hours) | |||||
| GCN | 0.95 | 0.94 | 0.88 | 36.9 | 78.17 ↑2.79 |
| SAGE | 0.91 | 0.90 | 0.88 | 34.3 | 77.98 ↑3.04 |
| GATv2 | 0.93 | 0.91 | 0.89 | 33.0 | 78.08 ↑2.92 |
| MLP | 0.90 | 0.87 | 0.85 | 37.0 | 77.78 ↑3.30 |
| Tuned CLIP | 0.99 | 0.98 | 0.99 | 22.3 | 78.01 ↑3.00 |
| Task | Prompt Template |
| Node Classification | I’m starting a node classification task in the <dataset> . Each node represents a <product> with text and image features, and edges indicate <relationship> . Given a target node, the raw text is …, the text feature is <text feature> and the image feature is <image feature> . The neighbors are described in the following template: <text feature> , <image feature> , and <label> . It has the following neighbors at hop 1: N1: <1-hop neighbor 1 text feature> , <1-hop neighbor 1 image feature> , <1-hop neighbor 1 label> N2: <1-hop neighbor 2 text feature> , <1-hop neighbor 2 image feature> , <1-hop neighbor 2 label> N3: ……….. It has the following neighbors at hop 2: N1: <2-hop neighbor 1 text feature> , <2-hop neighbor 1 image feature> , <2-hop neighbor 1 label> N2: <2-hop neighbor 2 text feature> , <2-hop neighbor 2 image feature> , <2-hop neighbor 2 label> …… Based on the information provided, please classify the target node into one of the following categories: {all_categories} . |
| Link Prediction | I’m starting a link prediction task in the <dataset> . Each node represents a <product> with text and image features, and edges indicate <relationship> . Given the two nodes: Node 1: The raw text is … the text feature is <text feature> , and the image feature is <image feature> . Node 2: The raw text is … the text feature is <text feature> , and the image feature is <image feature> . The neighbors of node 1 (common neighbors with node 2) are described in the following template: <text feature> , <image feature> . It has the following neighbors at hop 1 (Directly connected): N1: <1-hop neighbor 1 text feature> , <1-hop neighbor 1 image feature> N2: <1-hop neighbor 2 text feature> , <1-hop neighbor 2 image feature> N3: ……….. It has the following neighbors at hop 2 (Indirectly connected by shared neighbors): N1: <2-hop neighbor 1 text feature> , <2-hop neighbor 1 image feature> N2: <2-hop neighbor 2 text feature> , <2-hop neighbor 2 image feature> …… Based on the information provided, please determine whether a link exists between the two nodes. Answer ”yes” if a link exists or ”no” if it does not. |