Upload app.py with huggingface_hub
Browse files
app.py
CHANGED
|
@@ -569,74 +569,125 @@ VALIDATION = f"""
|
|
| 569 |
|
| 570 |
ARCHITECTURE = """
|
| 571 |
<div>
|
| 572 |
-
|
| 573 |
-
|
| 574 |
-
|
| 575 |
-
|
| 576 |
-
|
| 577 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 578 |
</div>
|
| 579 |
</div>
|
| 580 |
-
|
| 581 |
-
|
| 582 |
-
|
| 583 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 584 |
</div>
|
|
|
|
| 585 |
</div>
|
| 586 |
-
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:
|
| 587 |
-
<div style="
|
| 588 |
-
|
| 589 |
-
4 models × 1 held-out site each. No model ever saw the test subject's scanner. Cross-model agreement = site-independent finding.
|
| 590 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 591 |
</div>
|
| 592 |
</div>
|
| 593 |
|
|
|
|
| 594 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;overflow:hidden">
|
| 595 |
-
<table style="width:100%;border-collapse:collapse;font-size:0.
|
| 596 |
-
<tr><td style="padding:10px 16px;color:#8b95a7;width:
|
| 597 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.
|
| 598 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.
|
| 599 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.
|
| 600 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.
|
| 601 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px">Interpretability</td><td style="padding:10px 16px;color:#cbd5e1">Real-time gradient saliency on FC adjacency matrix</td></tr>
|
| 602 |
</table>
|
| 603 |
</div>
|
|
|
|
| 604 |
</div>
|
| 605 |
"""
|
| 606 |
|
| 607 |
AMD = f"""
|
| 608 |
<div>
|
| 609 |
-
<div style="display:flex;gap:32px;margin-bottom:22px;flex-wrap:wrap">
|
| 610 |
-
<div><div style="font-size:1.7rem;font-weight:700;color:#fb923c;line-height:1;font-variant-numeric:tabular-nums">192<span style="font-size:0.8rem;color:#5e6675;font-weight:500"> GB</span></div><div style="color:#8b95a7;font-size:0.7rem;margin-top:5px;text-transform:uppercase;letter-spacing:1px">HBM3 unified</div></div>
|
| 611 |
-
<div><div style="font-size:1.7rem;font-weight:700;color:#fb923c;line-height:1">bf16</div><div style="color:#8b95a7;font-size:0.7rem;margin-top:5px;text-transform:uppercase;letter-spacing:1px">Full precision</div></div>
|
| 612 |
-
<div><div style="font-size:1.7rem;font-weight:700;color:#f4f4f5;line-height:1">7B</div><div style="color:#8b95a7;font-size:0.7rem;margin-top:5px;text-transform:uppercase;letter-spacing:1px">Qwen2.5 params</div></div>
|
| 613 |
-
<div><div style="font-size:1.7rem;font-weight:700;color:#f4f4f5;line-height:1;font-variant-numeric:tabular-nums">2,000</div><div style="color:#8b95a7;font-size:0.7rem;margin-top:5px;text-transform:uppercase;letter-spacing:1px">Domain examples</div></div>
|
| 614 |
-
<div><div style="font-size:1.7rem;font-weight:700;color:#f4f4f5;line-height:1">r=16</div><div style="color:#8b95a7;font-size:0.7rem;margin-top:5px;text-transform:uppercase;letter-spacing:1px">LoRA rank</div></div>
|
| 615 |
-
</div>
|
| 616 |
|
| 617 |
-
<
|
| 618 |
-
|
| 619 |
-
<tr><td style="padding:10px 16px;color:#8b95a7;width:160px;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px">Base model</td><td style="padding:10px 16px;color:#cbd5e1">Qwen/Qwen2.5-7B-Instruct <span style="color:#5e6675">· AMD partner model</span></td></tr>
|
| 620 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px">Method</td><td style="padding:10px 16px;color:#cbd5e1">LoRA r=16, α=32 · all projection layers (q, k, v, o, gate, up, down)</td></tr>
|
| 621 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px">Hardware</td><td style="padding:10px 16px;color:#cbd5e1">AMD Instinct MI300X · ROCm · bf16 — no quantization</td></tr>
|
| 622 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px">Training data</td><td style="padding:10px 16px;color:#cbd5e1">2,000 GCN→clinical report pairs · ASD-grounded · 3 epochs</td></tr>
|
| 623 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px">Task</td><td style="padding:10px 16px;color:#cbd5e1">Structured clinical interpretation of LOSO GCN ensemble outputs</td></tr>
|
| 624 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px">Output</td><td style="padding:10px 16px;color:#cbd5e1">DMN / salience / cerebellar-cortical findings grounded in ASD literature</td></tr>
|
| 625 |
-
</table>
|
| 626 |
-
</div>
|
| 627 |
|
| 628 |
-
<
|
|
|
|
| 629 |
|
| 630 |
-
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px">
|
| 631 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:18px 20px">
|
| 632 |
-
<div style="color:#
|
| 633 |
-
<div style="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 634 |
</div>
|
|
|
|
| 635 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:18px 20px">
|
| 636 |
-
<div style="color:#
|
| 637 |
-
<div style="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 638 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 639 |
</div>
|
|
|
|
| 640 |
</div>
|
| 641 |
"""
|
| 642 |
|
|
|
|
| 569 |
|
| 570 |
ARCHITECTURE = """
|
| 571 |
<div>
|
| 572 |
+
|
| 573 |
+
<!-- Pipeline flow -->
|
| 574 |
+
<div style="display:flex;align-items:center;gap:0;margin-bottom:24px;overflow-x:auto;padding-bottom:4px">
|
| 575 |
+
|
| 576 |
+
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:14px 16px;min-width:130px;text-align:center;flex-shrink:0">
|
| 577 |
+
<div style="color:#8b95a7;font-size:0.65rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px">Input</div>
|
| 578 |
+
<div style="color:#f4f4f5;font-weight:600;font-size:0.88rem">fMRI BOLD</div>
|
| 579 |
+
<div style="color:#5e6675;font-size:0.74rem;margin-top:3px">T × 200 ROIs</div>
|
| 580 |
+
</div>
|
| 581 |
+
|
| 582 |
+
<div style="color:#252a35;font-size:1.4rem;padding:0 6px;flex-shrink:0">→</div>
|
| 583 |
+
|
| 584 |
+
<div style="background:#1a1810;border:1px solid #fb923c44;border-radius:8px;padding:14px 16px;min-width:160px;text-align:center;flex-shrink:0">
|
| 585 |
+
<div style="color:#fb923c;font-size:0.65rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px">Step 1</div>
|
| 586 |
+
<div style="color:#f4f4f5;font-weight:600;font-size:0.88rem">Brain Mode Decomp.</div>
|
| 587 |
+
<div style="color:#8b95a7;font-size:0.74rem;margin-top:3px">K=16 · 19,900→152 dims</div>
|
| 588 |
+
<code style="color:#fb923c;font-size:0.7rem;display:block;margin-top:5px">M_kl = v_k · FC · v_l</code>
|
| 589 |
+
</div>
|
| 590 |
+
|
| 591 |
+
<div style="color:#252a35;font-size:1.4rem;padding:0 6px;flex-shrink:0">→</div>
|
| 592 |
+
|
| 593 |
+
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:14px 16px;min-width:140px;text-align:center;flex-shrink:0">
|
| 594 |
+
<div style="color:#8b95a7;font-size:0.65rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px">Step 2</div>
|
| 595 |
+
<div style="color:#f4f4f5;font-weight:600;font-size:0.88rem">Shared Encoder</div>
|
| 596 |
+
<div style="color:#5e6675;font-size:0.74rem;margin-top:3px">MLP · hidden_dim=64</div>
|
| 597 |
+
</div>
|
| 598 |
+
|
| 599 |
+
<div style="color:#252a35;font-size:1.4rem;padding:0 6px;flex-shrink:0">→</div>
|
| 600 |
+
|
| 601 |
+
<div style="display:flex;flex-direction:column;gap:6px;flex-shrink:0">
|
| 602 |
+
<div style="background:#1a2e1a;border:1px solid #22c55e44;border-radius:8px;padding:10px 16px;min-width:150px;text-align:center">
|
| 603 |
+
<div style="color:#22c55e;font-size:0.65rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:3px">ASD Head</div>
|
| 604 |
+
<div style="color:#f4f4f5;font-weight:600;font-size:0.85rem">p(ASD) + saliency</div>
|
| 605 |
+
</div>
|
| 606 |
+
<div style="background:#1a1018;border:1px solid #8b5cf644;border-radius:8px;padding:10px 16px;min-width:150px;text-align:center">
|
| 607 |
+
<div style="color:#8b5cf6;font-size:0.65rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:3px">GRL → Site Head</div>
|
| 608 |
+
<div style="color:#f4f4f5;font-weight:600;font-size:0.85rem">Site deconfounding</div>
|
| 609 |
</div>
|
| 610 |
</div>
|
| 611 |
+
|
| 612 |
+
</div>
|
| 613 |
+
|
| 614 |
+
<!-- Three concept cards -->
|
| 615 |
+
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-bottom:18px">
|
| 616 |
+
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:16px 18px">
|
| 617 |
+
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
| 618 |
+
<span style="background:#fb923c22;color:#fb923c;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:0.8px">Brain Modes</span>
|
| 619 |
</div>
|
| 620 |
+
<div style="color:#cbd5e1;font-size:0.84rem;line-height:1.55">K=16 learnable directions compress the 200×200 FC matrix into 152 bilinear features — each mode specialises to a functional network (DMN, salience, FPN).</div>
|
| 621 |
</div>
|
| 622 |
+
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:16px 18px">
|
| 623 |
+
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
| 624 |
+
<span style="background:#8b5cf622;color:#8b5cf6;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:0.8px">GRL</span>
|
|
|
|
| 625 |
</div>
|
| 626 |
+
<div style="color:#cbd5e1;font-size:0.84rem;line-height:1.55">Gradient Reversal Layer (Ganin 2016) forces the encoder to learn representations that are <em>maximally confusing</em> to a site classifier — scanner artifacts can't leak into the ASD prediction.</div>
|
| 627 |
+
</div>
|
| 628 |
+
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:16px 18px">
|
| 629 |
+
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
| 630 |
+
<span style="background:#ef444422;color:#ef4444;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:0.8px">LOSO</span>
|
| 631 |
+
</div>
|
| 632 |
+
<div style="color:#cbd5e1;font-size:0.84rem;line-height:1.55">4 models, each trained blind to one scanner site. At inference all 4 vote — if 3/4 agree across different hardware, it's a biology signal, not an artifact.</div>
|
| 633 |
</div>
|
| 634 |
</div>
|
| 635 |
|
| 636 |
+
<!-- Spec table -->
|
| 637 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;overflow:hidden">
|
| 638 |
+
<table style="width:100%;border-collapse:collapse;font-size:0.85rem">
|
| 639 |
+
<tr><td style="padding:10px 16px;color:#8b95a7;width:150px;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Dataset</td><td style="padding:10px 16px;color:#cbd5e1">ABIDE I · 1,102 subjects · 17 acquisition sites</td></tr>
|
| 640 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Parcellation</td><td style="padding:10px 16px;color:#cbd5e1">CC200 (Craddock 2012) · 200 functional ROIs</td></tr>
|
| 641 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Model</td><td style="padding:10px 16px;color:#cbd5e1">AdversarialBrainModeNetwork · K=16 modes · hidden_dim=64</td></tr>
|
| 642 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Validation</td><td style="padding:10px 16px;color:#cbd5e1">LOSO AUC = <span style="color:#ef4444;font-weight:600">0.7872</span> · 529 held-out subjects · 0 confident misclassifications</td></tr>
|
| 643 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Interpretability</td><td style="padding:10px 16px;color:#cbd5e1">Real-time gradient saliency · 7-network aggregation · 3D brain surface</td></tr>
|
|
|
|
| 644 |
</table>
|
| 645 |
</div>
|
| 646 |
+
|
| 647 |
</div>
|
| 648 |
"""
|
| 649 |
|
| 650 |
AMD = f"""
|
| 651 |
<div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 652 |
|
| 653 |
+
<!-- Benchmark chart first — most impressive thing -->
|
| 654 |
+
<img src="data:image/png;base64,{AMD_BENCH_B64}" style="width:100%;border-radius:8px;margin-bottom:20px;border:1px solid #252a35"/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 655 |
|
| 656 |
+
<!-- Two-column layout: stat grid left, pipeline right -->
|
| 657 |
+
<div style="display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px">
|
| 658 |
|
|
|
|
| 659 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:18px 20px">
|
| 660 |
+
<div style="color:#8b95a7;font-size:0.68rem;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:14px;font-weight:500">Hardware</div>
|
| 661 |
+
<div style="display:grid;grid-template-columns:1fr 1fr;gap:14px">
|
| 662 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#fb923c;font-variant-numeric:tabular-nums">192<span style="font-size:0.75rem;color:#5e6675;font-weight:400"> GB</span></div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">HBM3 unified mem</div></div>
|
| 663 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#fb923c">bf16</div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">Full precision</div></div>
|
| 664 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#fb923c">30×</div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">Faster than CPU</div></div>
|
| 665 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#fb923c">94ms</div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">Per subject</div></div>
|
| 666 |
+
</div>
|
| 667 |
</div>
|
| 668 |
+
|
| 669 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:18px 20px">
|
| 670 |
+
<div style="color:#8b95a7;font-size:0.68rem;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:14px;font-weight:500">LoRA Fine-Tune</div>
|
| 671 |
+
<div style="display:grid;grid-template-columns:1fr 1fr;gap:14px">
|
| 672 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#f4f4f5">7B</div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">Qwen2.5 params</div></div>
|
| 673 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#f4f4f5">r=16</div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">LoRA rank</div></div>
|
| 674 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#f4f4f5">2K</div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">Domain examples</div></div>
|
| 675 |
+
<div><div style="font-size:1.5rem;font-weight:700;color:#f4f4f5">3</div><div style="color:#8b95a7;font-size:0.68rem;margin-top:3px;text-transform:uppercase;letter-spacing:0.8px">Epochs</div></div>
|
| 676 |
+
</div>
|
| 677 |
</div>
|
| 678 |
+
|
| 679 |
+
</div>
|
| 680 |
+
|
| 681 |
+
<!-- Fine-tune spec table -->
|
| 682 |
+
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;overflow:hidden">
|
| 683 |
+
<table style="width:100%;border-collapse:collapse;font-size:0.85rem">
|
| 684 |
+
<tr><td style="padding:10px 16px;color:#8b95a7;width:150px;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Base model</td><td style="padding:10px 16px;color:#cbd5e1">Qwen/Qwen2.5-7B-Instruct <span style="color:#5e6675">· AMD partner model · ROCm native</span></td></tr>
|
| 685 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Method</td><td style="padding:10px 16px;color:#cbd5e1">LoRA r=16 α=32 · q, k, v, o, gate, up, down projections · bf16 — no quantization needed</td></tr>
|
| 686 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Training task</td><td style="padding:10px 16px;color:#cbd5e1">GCN ensemble output → structured clinical referral letter with ICD-10 codes</td></tr>
|
| 687 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Why MI300X?</td><td style="padding:10px 16px;color:#cbd5e1">192 GB unified HBM3 fits the full 7B model in bf16 without sharding — impossible on consumer GPUs. ROCm enables native PyTorch training with zero code changes.</td></tr>
|
| 688 |
+
</table>
|
| 689 |
</div>
|
| 690 |
+
|
| 691 |
</div>
|
| 692 |
"""
|
| 693 |
|