Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
33f3e08
Initial commit (clean repo)
AhmedRadwan02 Jan 13, 2026
a5fb627
Ignore optionalFiles and uv.lock
AhmedRadwan02 Jan 13, 2026
d0fb179
Remove optionalFiles and uv.lock from branch
AhmedRadwan02 Jan 13, 2026
6a12e45
Refactor: Reorganize project structure with numbered directories
AhmedRadwan02 Jan 14, 2026
011311f
Add vqa to gitignore
AhmedRadwan02 Jan 14, 2026
6e2901c
Remove backup files and demographics metrics from tracking
AhmedRadwan02 Jan 15, 2026
0428194
Remove visualitzation and all backup txt files from tracking
AhmedRadwan02 Jan 15, 2026
60df5a3
Remove backup_vllm_qwen3.txt from tracking
AhmedRadwan02 Jan 15, 2026
2932b57
updated path
AhmedRadwan02 Jan 15, 2026
9d32d16
last Readmes
AhmedRadwan02 Jan 15, 2026
9df7e89
Bridge: connect sonic-o1 history to main
AhmedRadwan02 Jan 15, 2026
fb0123d
-
AhmedRadwan02 Jan 15, 2026
7ca166b
-
AhmedRadwan02 Jan 15, 2026
4fb11d1
Stop tracking evaluation scores output
AhmedRadwan02 Jan 15, 2026
a11e0c7
fixing relative
AhmedRadwan02 Jan 15, 2026
641315d
fixing default value
AhmedRadwan02 Jan 15, 2026
e8716a0
Delete sonic-o1/04_vqa_generation/check_empty_demographics.py
AhmedRadwan02 Jan 15, 2026
dd31b9d
Delete sonic-o1/04_vqa_generation/check_failed_summary.py
AhmedRadwan02 Jan 15, 2026
8dc487f
"small fixes"
AhmedRadwan02 Jan 20, 2026
42f2167
Merge remote deletions
AhmedRadwan02 Jan 20, 2026
1828d26
Fixing 01 Directory
AhmedRadwan02 Jan 22, 2026
659490c
moving readme
AhmedRadwan02 Jan 22, 2026
45f5ce2
-
AhmedRadwan02 Jan 22, 2026
f4b4eb6
fixed qwen req
AhmedRadwan02 Jan 22, 2026
2e3df90
SONIC-O1 Website
AhmedRadwan02 Jan 23, 2026
52ec711
Merge branch 'main' into sonic-o1-legacy
AhmedRadwan02 Jan 23, 2026
e1f9d92
added aieng-temp, cleaned white spaces errors
AhmedRadwan02 Jan 24, 2026
4713985
Merge remote changes
AhmedRadwan02 Jan 24, 2026
386e48e
"Updates to code without docs"
AhmedRadwan02 Jan 29, 2026
db32f2b
adding headline
AhmedRadwan02 Jan 29, 2026
0e07cac
refactor: modularize folder 04 and address PR review comments
AhmedRadwan02 Mar 17, 2026
634e917
Adding new models
AhmedRadwan02 Apr 15, 2026
1c0966d
ignore docs folder
AhmedRadwan02 Apr 15, 2026
1c3853d
resolve docs conflict with main
AhmedRadwan02 Apr 15, 2026
8441fc8
"feat: adding parser correction, inference new models"
AhmedRadwan02 Apr 15, 2026
3bbd45b
Merge branch 'main' into sonic-o1-legacy
AhmedRadwan02 Apr 15, 2026
b65ba6f
Add SONIC-O1 Technical Blog (#6)
AhmedRadwan02 Jun 18, 2026
cd1e964
Merge branch 'main' into sonic-o1-legacy
AhmedRadwan02 Jun 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,552 changes: 7,552 additions & 0 deletions blog/package-lock.json

Large diffs are not rendered by default.

31 changes: 31 additions & 0 deletions blog/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"name": "sonic-o1-blog",
"private": true,
"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --hot",
"build": "cross-env NODE_ENV=production webpack --progress",
"profile": "cross-env NODE_ENV=production webpack --profile --json > webpack-stats.json"
},
"devDependencies": {
"@babel/core": "^7.23.0",
"@babel/preset-env": "^7.26.0",
"babel-loader": "^9.1.3",
"copy-webpack-plugin": "^11.0.0",
"cross-env": "^7.0.3",
"css-loader": "^6.8.1",
"eases-jsnext": "^1.0.10",
"file-loader": "^6.2.0",
"html-replace-webpack-plugin": "^2.6.0",
"html-string-replace-webpack-plugin": "^1.0.5",
"html-webpack-plugin": "^5.5.0",
"lucid-components": "0.0.6",
"raw-loader": "^4.0.2",
"svg-inline-loader": "^0.8.2",
"webpack": "^5.89.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.2.1"
},
"dependencies": {
"d3": "^7.9.0"
}
}
Binary file added blog/src/assets/error-examples.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/src/assets/pipeline.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/src/assets/spider-chart.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/src/assets/sunburst-topics.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/src/assets/task-distribution.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/src/assets/teaser-figure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
260 changes: 260 additions & 0 deletions blog/src/diagrams/benchmark-comparison.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,260 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
background: #f8f9fa;
padding: 14px;
color: #333;
}
.container {
max-width: 1200px;
margin: 0 auto;
background: #fff;
padding: 18px;
border-radius: 12px;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
}

h3 {
font-size: 18px;
font-weight: 600;
margin-bottom: 16px;
color: #111;
}

/* Filter controls */
.filter-row {
display: flex;
gap: 10px;
margin-bottom: 20px;
flex-wrap: wrap;
}
.filter-btn {
padding: 8px 16px;
border: 1px solid #e2e8f0;
border-radius: 20px;
background: #fff;
cursor: pointer;
font-size: 13px;
font-weight: 500;
color: #475569;
transition: all 0.2s ease;
box-shadow: 0 1px 2px rgba(0,0,0,0.02);
}
.filter-btn:hover { background: #f1f5f9; }
.filter-btn.active {
background: #3b82f6;
color: #fff;
border-color: #3b82f6;
box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);
}

/* Responsive Table Wrapper */
.table-responsive {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
border: 1px solid #e2e8f0;
border-radius: 8px;
}

table {
width: 100%;
min-width: 820px; /* Keep the paper's key comparison columns within the article width. */
border-collapse: collapse;
font-size: 12.5px;
text-align: left;
}

thead th {
background: #f8fafc;
color: #334155;
padding: 10px 9px;
font-weight: 600;
border-bottom: 2px solid #e2e8f0;
white-space: nowrap;
}

tbody td {
padding: 10px 9px;
border-bottom: 1px solid #e2e8f0;
color: #475569;
vertical-align: middle;
}

tbody tr:last-child td { border-bottom: none; }
tbody tr:hover { background: #f8fafc; }

tbody td:first-child {
font-weight: 600;
color: #0f172a;
white-space: nowrap;
}

.separator-row td {
background: #f1f5f9;
font-weight: 600;
color: #334155;
text-transform: uppercase;
letter-spacing: 0.5px;
font-size: 11px;
padding: 10px 16px;
}

tbody tr.highlight {
background: #eff6ff; /* Soft blue background */
}
tbody tr.highlight:hover {
background: #e0f2fe;
}
tbody tr.highlight td:first-child {
color: #1d4ed8; /* Darker blue text for the highlighted name */
}

/* Colorful Pills */
.badge {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
font-weight: 700;
min-width: 28px;
}
.yes {
background: #dcfce7;
color: #166534;
}
.no {
background: #fee2e2;
color: #991b1b;
}
.partial {
background: #fef3c7;
color: #b45309;
}

.note {
font-size: 12px;
color: #64748b;
margin-top: 16px;
line-height: 1.5;
}
</style>
</head>
<body>
<div class="container">
<h3>SONIC-O1 Benchmark Comparison</h3>
<div class="filter-row">
<button class="filter-btn active" onclick="filterRows('all')">All Benchmarks</button>
<button class="filter-btn" onclick="filterRows('video')">Video-QA Only</button>
<button class="filter-btn" onclick="filterRows('avqa')">Audio-Visual Only</button>
</div>

<div class="table-responsive">
<table id="comparison-table">
<thead>
<tr>
<th>Benchmark</th>
<th>Size</th>
<th>Lengths (min)</th>
<th>Summ.</th>
<th>Temp.</th>
<th>Reas.</th>
<th>AVQA</th>
<th>Social Cues</th>
<th>Human Ann.</th>
<th>Open Src</th>
</tr>
</thead>
<tbody id="tbody"></tbody>
</table>
</div>

<p class="note">
<strong>Summ.</strong> = Summarization task. <strong>Temp.</strong> = Full temporal localization (δ = partial). <strong>Reas.</strong> = Reasoning/rationale required.<br>
<strong>AVQA</strong> = Native Audio-Visual QA. <strong>Social Cues</strong> = Demographic metadata included for fairness evaluation.
</p>
</div>

<script>
const benchmarks = [
// Video-QA
{ group: 'video', name: 'LongVideoBench', size: '6,678', lengths: '~8', qa: 'MCQs', summ: false, temp: 'partial', reas: true, avqa: false, social: false, auto: false, human: true, open: true },
{ group: 'video', name: 'LVBench', size: '1,549', lengths: '~68', qa: 'MCQs', summ: false, temp: 'partial', reas: true, avqa: false, social: false, auto: false, human: true, open: false },
{ group: 'video', name: 'CinePile', size: '305K', lengths: '~3', qa: 'MCQs', summ: false, temp: 'partial', reas: false, avqa: false, social: false, auto: true, human: true, open: false },
{ group: 'video', name: 'Sports-QA', size: '94,000', lengths: '<1', qa: 'Open-ended', summ: false, temp: 'partial', reas: true, avqa: false, social: false, auto: true, human: true, open: true },
{ group: 'video', name: 'InfiniBench', size: '87,700', lengths: '~53', qa: 'MCQs + Open', summ: true, temp: 'partial', reas: true, avqa: false, social: false, auto: true, human: true, open: true },

// AVQA
{ group: 'avqa', name: 'VAST', size: '27M', lengths: '<1', qa: 'Captioning', summ: false, temp: false, reas: false, avqa: true, social: false, auto: true, human: false, open: false },
{ group: 'avqa', name: 'Daily-Omni', size: '1,197', lengths: '<1', qa: 'MCQs', summ: false, temp: 'partial', reas: true, avqa: true, social: false, auto: true, human: false, open: true },
{ group: 'avqa', name: 'WorldSense', size: '1,662', lengths: '~2.4', qa: 'MCQs', summ: false, temp: false, reas: true, avqa: true, social: false, auto: false, human: true, open: true },
{ group: 'avqa', name: 'LongVALE', size: '8,411', lengths: '~3.9', qa: 'Captioning', summ: false, temp: true, reas: false, avqa: true, social: false, auto: true, human: true, open: true },
{ group: 'avqa', name: 'Video-MME', size: '2,700', lengths: '<2; 4–15; 30–60', qa: 'MCQs', summ: false, temp: 'partial', reas: false, avqa: true, social: false, auto: false, human: true, open: true },
{ group: 'avqa', name: 'MAVERIX', size: '2,556', lengths: '~6', qa: 'MCQs + Open', summ: false, temp: 'partial', reas: true, avqa: true, social: false, auto: false, human: true, open: false },
{ group: 'avqa', name: 'CG-Bench', size: '12,129', lengths: '10–60', qa: 'MCQs + Open', summ: false, temp: true, reas: true, avqa: true, social: false, auto: false, human: true, open: true },
{ group: 'avqa', name: 'OmniVideoBench', size: '1,000', lengths: '1–30', qa: 'MCQs + Open', summ: true, temp: 'partial', reas: true, avqa: true, social: false, auto: false, human: true, open: true },
{ group: 'avqa', name: 'AURA', size: '1,600', lengths: '<1', qa: 'MCQs', summ: false, temp: 'partial', reas: true, avqa: true, social: false, auto: true, human: false, open: true },
{ group: 'avqa', name: 'SONIC-O1', size: '4,958', lengths: '<5; 5–20; 20–60', qa: 'MCQs + Open', summ: true, temp: true, reas: true, avqa: true, social: true, auto: true, human: true, open: true, highlight: true },
];

function getBadge(val) {
if (val === true) return '<span class="badge yes">✓</span>';
if (val === false) return '<span class="badge no">✗</span>';
if (val === 'partial') return '<span class="badge partial">δ</span>';
return val;
}

function renderTable(filter) {
const tbody = document.getElementById('tbody');
tbody.innerHTML = '';
const filtered = filter === 'all' ? benchmarks : benchmarks.filter(b => b.group === filter || b.name === 'SONIC-O1');

let lastGroup = '';
filtered.forEach(b => {
// Add group headers if showing 'all'
if (filter === 'all' && b.group !== lastGroup) {
const sepRow = document.createElement('tr');
sepRow.className = 'separator-row';
const label = b.group === 'video' ? 'Video-QA Benchmarks (AVQA: ✗)' : 'Audio-Visual Benchmarks (AVQA: ✓)';
sepRow.innerHTML = `<td colspan="10">${label}</td>`;
tbody.appendChild(sepRow);
lastGroup = b.group;
}

const tr = document.createElement('tr');
if (b.highlight) tr.className = 'highlight';

tr.innerHTML = `
<td>${b.name}</td>
<td>${b.size}</td>
<td>${b.lengths}</td>
<td style="text-align:center">${getBadge(b.summ)}</td>
<td style="text-align:center">${getBadge(b.temp)}</td>
<td style="text-align:center">${getBadge(b.reas)}</td>
<td style="text-align:center">${getBadge(b.avqa)}</td>
<td style="text-align:center">${getBadge(b.social)}</td>
<td style="text-align:center">${getBadge(b.human)}</td>
<td style="text-align:center">${getBadge(b.open)}</td>
`;
tbody.appendChild(tr);
});
}

function filterRows(filter) {
document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));
event.target.classList.add('active');
renderTable(filter);
}

// Initial render
renderTable('all');
</script>
</body>
</html>
Loading
Loading