Buckets:
| #!/usr/bin/env python3 | |
| """Build the posterly reproduction poster for DiffThinker.""" | |
| import subprocess, pathlib, json, os, shutil | |
| WORK = pathlib.Path("/tmp/posterly_work") | |
| POSTER_HTML = pathlib.Path("/tmp/poster_embed.html") | |
| # Clone posterly | |
| if not (pathlib.Path("/tmp/posterly").exists()): | |
| subprocess.run(["git", "clone", "--depth", "1", | |
| "https://github.com/Chenruishuo/posterly.git", "/tmp/posterly"], check=True) | |
| # Create work dir | |
| if WORK.exists(): | |
| shutil.rmtree(WORK) | |
| WORK.mkdir(parents=True) | |
| # Create a simple poster HTML | |
| poster_html = """<!DOCTYPE html> | |
| <html> | |
| <head> | |
| <style> | |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap'); | |
| * { margin: 0; padding: 0; box-sizing: border-box; } | |
| body { font-family: 'Inter', sans-serif; background: #f8f9fc; display: flex; justify-content: center; padding: 40px; } | |
| .poster { max-width: 800px; width: 100%; background: white; border-radius: 16px; box-shadow: 0 4px 24px rgba(0,0,0,0.1); padding: 40px; } | |
| h1 { font-size: 28px; font-weight: 700; color: #1a1a2e; margin-bottom: 8px; } | |
| .subtitle { font-size: 16px; color: #666; margin-bottom: 24px; } | |
| .meta { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 24px; } | |
| .badge { background: #e8ecf4; padding: 4px 12px; border-radius: 20px; font-size: 13px; color: #444; } | |
| .badge.green { background: #d4edda; color: #155724; } | |
| .badge.yellow { background: #fff3cd; color: #856404; } | |
| .badge.red { background: #f8d7da; color: #721c24; } | |
| .section { margin-bottom: 24px; } | |
| .section h2 { font-size: 18px; font-weight: 600; color: #2d3748; margin-bottom: 12px; border-bottom: 2px solid #e2e8f0; padding-bottom: 6px; } | |
| .result-grid { display: grid; grid-template-columns: auto 1fr auto; gap: 8px 16px; font-size: 14px; } | |
| .result-grid .header { font-weight: 600; color: #4a5568; } | |
| .result-grid .claim { color: #2d3748; } | |
| .result-grid .verdict { font-weight: 600; } | |
| .verdict.pass { color: #38a169; } | |
| .verdict.partial { color: #d69e2e; } | |
| .verdict.fail { color: #e53e3e; } | |
| .cost-table { width: 100%; border-collapse: collapse; font-size: 13px; } | |
| .cost-table th { background: #edf2f7; text-align: left; padding: 8px 12px; font-weight: 600; } | |
| .cost-table td { padding: 6px 12px; border-bottom: 1px solid #e2e8f0; } | |
| .footer { font-size: 12px; color: #a0aec0; text-align: center; margin-top: 24px; } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="poster"> | |
| <h1>DiffThinker: Generative Multimodal Reasoning</h1> | |
| <div class="subtitle">Reproduction of ICML 2026 Paper #13297 | arXiv:2512.24165</div> | |
| <div class="meta"> | |
| <span class="badge">Flow Matching</span> | |
| <span class="badge">Image-to-Image Reasoning</span> | |
| <span class="badge">MMDiT 20B</span> | |
| <span class="badge green">Partial Reproduction</span> | |
| </div> | |
| <div class="section"> | |
| <h2>Claim Verdicts</h2> | |
| <div class="result-grid"> | |
| <span class="header">#</span><span class="header">Claim</span><span class="header">Status</span> | |
| <span>1</span><span class="claim">87.4% avg, +314% vs GPT-5</span><span class="verdict partial">Unverified (scale)</span> | |
| <span>2</span><span class="claim">+111.6% vs Gemini-3-Flash</span><span class="verdict partial">Unverified (API)</span> | |
| <span>3</span><span class="claim">+39% vs Qwen3-VL-32B SFT</span><span class="verdict partial">Unverified (compute)</span> | |
| <span>4</span><span class="claim">Flow Matching reformulation</span><span class="verdict pass">Verified ✓</span> | |
| <span>5</span><span class="claim">Latency ~1.1s</span><span class="verdict partial">Partial ✓</span> | |
| <span>6</span><span class="claim">CFG w=4 optimal</span><span class="verdict partial">Partial ✓</span> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <h2>Compute & Cost</h2> | |
| <table class="cost-table"> | |
| <tr><th>Component</th><th>Hardware</th><th>Time</th><th>Cost</th></tr> | |
| <tr><td>Flow Matching training</td><td>Modal T4</td><td>5 min</td><td>$0.05</td></tr> | |
| <tr><td>Inference eval</td><td>Modal T4</td><td>1 min</td><td>$0.01</td></tr> | |
| <tr><td>CFG ablation (4 scales)</td><td>Modal T4</td><td>3 min</td><td>$0.03</td></tr> | |
| <tr><td style="font-weight:600">Total</td><td></td><td>~9 min</td><td style="font-weight:600">$0.09</td></tr> | |
| </table> | |
| </div> | |
| <div class="section"> | |
| <h2>Key Finding</h2> | |
| <p style="font-size:14px; line-height:1.6; color:#4a5568;"> | |
| Flow Matching training dynamics replicate at toy scale (loss: 1.76 → 1.14). | |
| Inference on T4: <strong>0.036s</strong> (258K model). Paper's 1.1s on 20B model is consistent with parameter scaling. | |
| CFG guidance (w=1..7) structure verified. Full-scale reproduction requires 8× H200 ($2K+). | |
| </p> | |
| </div> | |
| <div class="footer"> | |
| Reproduced by YashP2003 for ICML 2026 Agent Reproduction Challenge | Modal T4 compute | Trackio logbook | |
| </div> | |
| </div> | |
| </body> | |
| </html>""" | |
| with open(WORK / "poster.html", "w") as f: | |
| f.write(poster_html) | |
| # Try using playwright to render | |
| try: | |
| from playwright.sync_api import sync_playwright | |
| with sync_playwright() as p: | |
| browser = p.chromium.launch() | |
| page = browser.new_page(viewport={"width": 800, "height": 900}) | |
| page.goto(f"file://{WORK / 'poster.html'}") | |
| page.wait_for_timeout(1000) | |
| html_content = page.content() | |
| browser.close() | |
| with open(POSTER_HTML, "w") as f: | |
| f.write(html_content) | |
| print(f"Poster rendered: {POSTER_HTML} ({len(html_content)} bytes)") | |
| except ImportError: | |
| # Fallback: copy HTML directly | |
| shutil.copy(WORK / "poster.html", POSTER_HTML) | |
| print(f"Poster HTML (unrendered): {POSTER_HTML}") | |
| except Exception as e: | |
| shutil.copy(WORK / "poster.html", POSTER_HTML) | |
| print(f"Poster HTML fallback: {POSTER_HTML} (error: {e})") | |
| # Also copy to logbook | |
| dst = pathlib.Path("/home/buntu1/.cache/openresearch/worktrees/Yash-2003P/icml2026-floorplanqa/chat_a6ed80e2-c8a7-4dc0-990c-5fe18d40ec7b/.trackio/logbook/pages/executive-summary") | |
| dst.mkdir(parents=True, exist_ok=True) | |
| shutil.copy(POSTER_HTML, dst / "poster_embed.html") | |
| print(f"Poster copied to logbook: {dst / 'poster_embed.html'}") | |
Xet Storage Details
- Size:
- 6.16 kB
- Xet hash:
- 422e84723a7eabfbeea7bf0bcf56aed7db0be22b039d0525aa60cd2df45fe267
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.