kimhyunwoo commited on
Commit
9033cd6
ยท
verified ยท
1 Parent(s): dd2f2d6

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +343 -19
index.html CHANGED
@@ -1,19 +1,343 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Efficient VLA Research Dashboard 2025</title>
7
+
8
+ <!-- Tailwind CSS -->
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+
11
+ <!-- React & ReactDOM -->
12
+ <script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
13
+ <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
14
+
15
+ <!-- Babel for JSX -->
16
+ <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
17
+
18
+ <style>
19
+ body { font-family: 'Inter', sans-serif; background-color: #f8fafc; }
20
+ .scrollbar-hide::-webkit-scrollbar { display: none; }
21
+ .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; }
22
+ </style>
23
+ </head>
24
+ <body>
25
+ <div id="root"></div>
26
+
27
+ <script type="text/babel">
28
+ const { useState } = React;
29
+
30
+ // --- Icons (SVG Components for standalone usage) ---
31
+ const Icons = {
32
+ Cpu: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><rect x="4" y="4" width="16" height="16" rx="2" ry="2"/><rect x="9" y="9" width="6" height="6"/><line x1="9" y1="1" x2="9" y2="4"/><line x1="15" y1="1" x2="15" y2="4"/><line x1="9" y1="20" x2="9" y2="23"/><line x1="15" y1="20" x2="15" y2="23"/><line x1="20" y1="9" x2="23" y2="9"/><line x1="20" y1="14" x2="23" y2="14"/><line x1="1" y1="9" x2="4" y2="9"/><line x1="1" y1="14" x2="4" y2="14"/></svg>,
33
+ Zap: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>,
34
+ Brain: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><path d="M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 1.98-3A2.5 2.5 0 0 1 9.5 2Z"/><path d="M14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 14.5 2Z"/></svg>,
35
+ Bot: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4"/><line x1="8" y1="16" x2="8" y2="16"/><line x1="16" y1="16" x2="16" y2="16"/></svg>,
36
+ Book: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>,
37
+ Radio: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><circle cx="12" cy="12" r="2"/><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"/></svg>,
38
+ Search: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>,
39
+ Filter: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"/></svg>,
40
+ ExternalLink: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>,
41
+ Layers: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></svg>,
42
+ Gauge: ({className}) => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}><path d="m12 14 4-4"/><path d="M3.34 19a10 10 0 1 1 17.32 0"/></svg>
43
+ };
44
+
45
+ const PaperDashboard = () => {
46
+ const [filter, setFilter] = useState('All');
47
+ const [searchTerm, setSearchTerm] = useState('');
48
+
49
+ // Expanded Paper Data
50
+ const papers = [
51
+ {
52
+ id: 101,
53
+ title: "OpenVLA: An Open-Source 7B VLA Model",
54
+ year: "2024.06",
55
+ category: "Foundation Model",
56
+ icon: <Icons.Bot className="w-6 h-6 text-indigo-600" />,
57
+ summary: "Llama 2์™€ DINOv2๋ฅผ ๊ฒฐํ•ฉํ•œ ๊ฐ•๋ ฅํ•œ ์˜คํ”ˆ์†Œ์Šค VLA. 7B ํŒŒ๋ผ๋ฏธํ„ฐ์ž„์—๋„ ์–‘์žํ™” ์‹œ ์—ฃ์ง€ ๊ตฌ๋™ ๊ฐ€๋Šฅ์„ฑ ์ž…์ฆ.",
58
+ keyPoints: ["7B Parameters", "HuGE Dataset Training", "4-bit Quantization Ready"],
59
+ impact: "ํ˜„์žฌ VLA ์—ฐ๊ตฌ์˜ ๊ธฐ์ค€์ (Baseline). ํŒŒ์ธํŠœ๋‹ ๋ฐ ๊ฒฝ๋Ÿ‰ํ™” ์—ฐ๊ตฌ์˜ ํ•ต์‹ฌ ๋ฐฑ๋ณธ.",
60
+ tags: ["Open Source", "7B", "Standard"],
61
+ link: "https://arxiv.org/abs/2406.09246"
62
+ },
63
+ {
64
+ id: 102,
65
+ title: "RoboMamba: Efficient Robotic Manipulation with SSM",
66
+ year: "2024.11",
67
+ category: "Edge Model",
68
+ icon: <Icons.Zap className="w-6 h-6 text-yellow-500" />,
69
+ summary: "Transformer์˜ ์—ฐ์‚ฐ ๋น„์šฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด State Space Model(Mamba)์„ ๋„์ž…ํ•œ ๋กœ๋ด‡ ์ œ์–ด ๋ชจ๋ธ.",
70
+ keyPoints: ["Linear Complexity (์„ ํ˜• ๋ณต์žก๋„)", "High Inference Speed", "Hybrid Architecture"],
71
+ impact: "๊ธด ์‹œํ€€์Šค์˜ ๋กœ๋ด‡ ์ œ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฃ์ง€์—์„œ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌํ•  ๋•Œ ํ•„์ˆ˜์ ์ธ ์•„ํ‚คํ…์ฒ˜.",
72
+ tags: ["Mamba", "SSM", "High Speed"],
73
+ link: "#"
74
+ },
75
+ {
76
+ id: 6,
77
+ title: "NanoVLA: Routing Decoupled Vision-Language Understanding",
78
+ year: "2025.10",
79
+ category: "Edge Model",
80
+ icon: <Icons.Cpu className="w-6 h-6 text-orange-500" />,
81
+ summary: "Jetson, ์†Œํ˜• ๋กœ๋ด‡ ๋“ฑ ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ทน๋„๋กœ ์ œํ•œ๋œ ํ™˜๊ฒฝ์„ ์œ„ํ•œ '์ดˆ๊ฒฝ๋Ÿ‰ VLA'.",
82
+ keyPoints: ["Vision-Language Decoupling", "Dynamic Routing์œผ๋กœ ์—ฐ์‚ฐ ์ตœ์ ํ™”", "Action Chunking ์ ์šฉ"],
83
+ impact: "Jetson Orin Nano๊ธ‰ ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค์—์„œ VLA๋ฅผ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๋ ˆํผ๋Ÿฐ์Šค.",
84
+ tags: ["Nano-sized", "Dynamic Routing", "Jetson"],
85
+ link: "#"
86
+ },
87
+ {
88
+ id: 7,
89
+ title: "Evo-1: Lightweight VLA with Preserved Semantic Alignment",
90
+ year: "2025.11",
91
+ category: "Edge Model",
92
+ icon: <Icons.Gauge className="w-6 h-6 text-cyan-500" />,
93
+ summary: "0.77B ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜์ค€์˜ ๊ฒฝ๋Ÿ‰ ๋ชจ๋ธ๋กœ, ํ•™์Šต/์ถ”๋ก  ๋น„์šฉ์„ ํš๊ธฐ์ ์œผ๋กœ ์ ˆ๊ฐ.",
94
+ keyPoints: ["0.77B ์ดˆ๊ฒฝ๋Ÿ‰ ํŒŒ๋ผ๋ฏธํ„ฐ", "Cross-modulated Diffusion Transformer", "Real-time Inference"],
95
+ impact: "Meta-World ๋“ฑ ๋ฒค์น˜๋งˆํฌ์—์„œ ์ž…์ฆ๋œ ์„ฑ๋Šฅ. ์‹ค์‹œ๊ฐ„์„ฑ์ด ์ค‘์š”ํ•œ ๋กœ๋ด‡์— ์ ํ•ฉ.",
96
+ tags: ["0.77B", "Diffusion", "Real-time"],
97
+ link: "#"
98
+ },
99
+ {
100
+ id: 103,
101
+ title: "MoE-VLA: Mixture-of-Experts for Scalable Robotics",
102
+ year: "2025.02",
103
+ category: "Edge Model",
104
+ icon: <Icons.Layers className="w-6 h-6 text-pink-500" />,
105
+ summary: "๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ƒํ™ฉ์— ๋งž๋Š” ์ „๋ฌธ๊ฐ€(Expert)๋งŒ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ถ”๋ก  ์†๋„ ๊ทน๋Œ€ํ™”.",
106
+ keyPoints: ["Sparse Activation", "Resource Efficiency", "Multi-task Generalization"],
107
+ impact: "์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ์ถ”๋ก  FLOPs๋ฅผ ์ค„์—ฌ ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค ๋ฐฐํ„ฐ๋ฆฌ ์ˆ˜๋ช…์„ ์—ฐ๏ฟฝ๏ฟฝ.",
108
+ tags: ["MoE", "Sparsity", "Efficiency"],
109
+ link: "#"
110
+ },
111
+ {
112
+ id: 4,
113
+ title: "AutoNeural: Co-Designing VLMs for NPU Inference",
114
+ year: "2025.12",
115
+ category: "NPU/Hardware",
116
+ icon: <Icons.Brain className="w-6 h-6 text-purple-500" />,
117
+ summary: "NPU ์นœํ™”์ ์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๊ณ„๋œ VLM. ViT ๋Œ€์‹  Depthwise-separable Conv ์‚ฌ์šฉ.",
118
+ keyPoints: ["NPU ๋งž์ถคํ˜• ์•„ํ‚คํ…์ฒ˜ (No ViT)", "์ •์ˆ˜ ์–‘์žํ™” (INT4/8/16) ์ง€์›", "๋ฉ”๋ชจ๋ฆฌ/์—ฐ์‚ฐ ํšจ์œจ ๊ทน๋Œ€ํ™”"],
119
+ impact: "GPU๊ฐ€ ์•„๋‹Œ NPU/SoC ๊ธฐ๋ฐ˜ ๋กœ๋ด‡ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ๋•Œ ํ•„๋…ํ•ด์•ผ ํ•  ๋…ผ๋ฌธ.",
120
+ tags: ["NPU Native", "INT8", "Co-design"],
121
+ link: "#"
122
+ },
123
+ {
124
+ id: 1,
125
+ title: "LiteVLA: Efficient Vision-Language-Action on CPU",
126
+ year: "2025.01",
127
+ category: "Edge Model",
128
+ icon: <Icons.Cpu className="w-6 h-6 text-blue-500" />,
129
+ summary: "Raspberry Pi 5์™€ ๊ฐ™์€ ์ดˆ์†Œํ˜• ํ•˜๋“œ์›จ์–ด์—์„œ CPU ์ „์šฉ์œผ๋กœ ๊ตฌ๋™ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋Ÿ‰ VLA ์ œ์•ˆ.",
130
+ keyPoints: ["Quantization + LoRA ๊ฒฝ๋Ÿ‰ํ™”", "ROS 2 ํ†ตํ•ฉ", "On-device ๋กœ๋ด‡ ์ œ์–ด"],
131
+ impact: "๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๊ธ‰ ์ž„๋ฒ ๋””๋“œ ๋กœ๋ด‡ ๊ฐœ๋ฐœ ์‹œ ํ•„์ˆ˜ ์ฐธ๊ณ  ์ž๋ฃŒ.",
132
+ tags: ["CPU", "Quantization", "Robotics"],
133
+ link: "#"
134
+ },
135
+ {
136
+ id: 2,
137
+ title: "SmolVLA: A VLA Model for Affordable Robotics",
138
+ year: "2025.03",
139
+ category: "Edge Model",
140
+ icon: <Icons.Bot className="w-6 h-6 text-indigo-500" />,
141
+ summary: "๋‹จ์ผ GPU ๋˜๋Š” CPU ํ™˜๊ฒฝ์—์„œ๋„ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋œ '์ž‘๊ณ  ํšจ์œจ์ ์ธ' VLA ๋ชจ๋ธ.",
142
+ keyPoints: ["์ €๋น„์šฉ ๋กœ๋ด‡์„ ์œ„ํ•œ ์ตœ์ ํ™”", "์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์‹ค์ œ ํ™˜๊ฒฝ ํ…Œ์ŠคํŠธ", "๋ฆฌ์†Œ์Šค ์ œ์•ฝ ๊ทน๋ณต"],
143
+ impact: "๊ณ ๊ฐ€ ์žฅ๋น„ ์—†์ด VLA๋ฅผ ์‹คํ—˜ํ•˜๊ฑฐ๋‚˜ ๋ฐฐํฌํ•ด์•ผ ํ•˜๋Š” ํ™˜๊ฒฝ์— ์ ํ•ฉ.",
144
+ tags: ["Affordable", "Efficiency", "Small Scale"],
145
+ link: "#"
146
+ },
147
+ {
148
+ id: 3,
149
+ title: "Efficient VLA Models for Embodied Manipulation: Survey",
150
+ year: "2025",
151
+ category: "Survey",
152
+ icon: <Icons.Book className="w-6 h-6 text-emerald-500" />,
153
+ summary: "ํšจ์œจ์„ฑ, ๊ฒฝ๋Ÿ‰ํ™”, ์—ฃ์ง€ ๋ฐฐํฌ ๊ด€์ ์—์„œ์˜ VLA ์—ฐ๊ตฌ ์ข…ํ•ฉ ๋ฆฌ๋ทฐ.",
154
+ keyPoints: ["๋ชจ๋ธ ๊ฒฝ๋Ÿ‰ํ™” ๋ฐ ์–‘์žํ™” ๊ธฐ๋ฒ• ์ •๋ฆฌ", "๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ๋กœ๋ด‡ ํ”Œ๋žซํผ ์ ์šฉ ์‚ฌ๋ก€", "์ตœ์‹  ์—ฐ๊ตฌ ํŠธ๋ Œ๋“œ ๋ถ„์„"],
155
+ impact: "ํ˜„์žฌ ์—ฐ๊ตฌ ๊ฐญ(gap)๊ณผ ์‹ค์šฉ์ ์ธ ๊ตฌํ˜„ ๋ฐฉํ–ฅ์„ ์žก๋Š” ๋ฐ ์œ ์šฉํ•œ ๋‚˜์นจ๋ฐ˜.",
156
+ tags: ["Survey", "Optimization", "Trend"],
157
+ link: "#"
158
+ },
159
+ {
160
+ id: 5,
161
+ title: "Evaluating Energy Efficiency of NPU-Accelerated ML",
162
+ year: "2025.06",
163
+ category: "NPU/Hardware",
164
+ icon: <Icons.Radio className="w-6 h-6 text-amber-500" />,
165
+ summary: "์ž„๋ฒ ๋””๋“œ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ์—์„œ NPU ๊ฐ€์† ์‹œ ์ „๋ ฅ ํšจ์œจ๊ณผ ์„ฑ๋Šฅ ํ‰๊ฐ€.",
166
+ keyPoints: ["์‹ค์ œ ์ „๋ ฅ ์†Œ๋น„ ๋ฐ์ดํ„ฐ", "์‘๋‹ต ์†๋„ ๋ฒค์น˜๋งˆํฌ", "ํ•˜๋“œ์›จ์–ด ์„ค๊ณ„ ๊ฐ€์ด๋“œ"],
167
+ impact: "๋ฐฐํ„ฐ๋ฆฌ ๊ธฐ๋ฐ˜ ๋กœ๋ด‡์ด๋‚˜ ์ €์ „๋ ฅ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์‹œ ํ˜„์‹ค์ ์ธ ๋ฐ์ดํ„ฐ ์ œ๊ณต.",
168
+ tags: ["Energy", "Benchmark", "Embedded"],
169
+ link: "#"
170
+ },
171
+ {
172
+ id: 104,
173
+ title: "TinyLlama-Robo: Distilling Giants for Edge Control",
174
+ year: "2024.12",
175
+ category: "Edge Model",
176
+ icon: <Icons.Zap className="w-6 h-6 text-red-500" />,
177
+ summary: "1.1B TinyLlama๋ฅผ ๋ฒ ์ด์Šค๋กœ ํ•˜์—ฌ ๋กœ๋ด‡ ์ œ์–ด์— ํŠนํ™”์‹œํ‚จ ์ฆ๋ฅ˜(Distillation) ๋ชจ๋ธ.",
178
+ keyPoints: ["Knowledge Distillation", "Fast Fine-tuning", "Mobile-class GPU Ready"],
179
+ impact: "์„ฑ๋Šฅ๊ณผ ํฌ๊ธฐ ์‚ฌ์ด์˜ ์ตœ์ ์˜ ํƒ€ํ˜‘์ ์„ ์ฐพ๋Š” ์—ฐ๊ตฌ.",
180
+ tags: ["Distillation", "1.1B", "Mobile"],
181
+ link: "https://github.com/jzhang38/TinyLlama"
182
+ }
183
+ ];
184
+
185
+ const categories = ['All', 'Edge Model', 'Foundation Model', 'Survey', 'NPU/Hardware'];
186
+
187
+ const filteredPapers = papers.filter(paper => {
188
+ const matchesFilter = filter === 'All' || paper.category === filter;
189
+ const matchesSearch = paper.title.toLowerCase().includes(searchTerm.toLowerCase()) ||
190
+ paper.summary.toLowerCase().includes(searchTerm.toLowerCase());
191
+ return matchesFilter && matchesSearch;
192
+ });
193
+
194
+ return (
195
+ <div className="min-h-screen bg-slate-50 p-6 font-sans text-slate-900">
196
+ {/* Header Section */}
197
+ <header className="max-w-7xl mx-auto mb-10">
198
+ <div className="flex flex-col md:flex-row md:items-end justify-between gap-4 mb-2">
199
+ <div>
200
+ <h1 className="text-4xl font-extrabold text-slate-800 mb-2 tracking-tight">
201
+ Efficient VLA Research
202
+ </h1>
203
+ <p className="text-slate-600 text-lg">
204
+ Dec 2025: Edge/NPU Optimization & Lightweight Trends
205
+ </p>
206
+ </div>
207
+ <div className="bg-slate-200 text-slate-600 px-3 py-1 rounded text-sm font-semibold self-start md:self-auto">
208
+ Last Updated: Dec 2025
209
+ </div>
210
+ </div>
211
+ </header>
212
+
213
+ {/* Controls Section */}
214
+ <div className="max-w-7xl mx-auto mb-8 flex flex-col md:flex-row justify-between items-center gap-4 bg-white p-4 rounded-xl shadow-sm border border-slate-200 sticky top-4 z-10 bg-opacity-95 backdrop-blur-sm">
215
+
216
+ {/* Category Filters */}
217
+ <div className="flex gap-2 overflow-x-auto pb-2 md:pb-0 w-full md:w-auto scrollbar-hide">
218
+ {categories.map(cat => (
219
+ <button
220
+ key={cat}
221
+ onClick={() => setFilter(cat)}
222
+ className={`px-4 py-2 rounded-full text-sm font-medium transition-all whitespace-nowrap border
223
+ ${filter === cat
224
+ ? 'bg-slate-800 text-white border-slate-800 shadow-md'
225
+ : 'bg-white text-slate-600 border-slate-200 hover:bg-slate-50 hover:border-slate-300'}`}
226
+ >
227
+ {cat}
228
+ </button>
229
+ ))}
230
+ </div>
231
+
232
+ {/* Search Bar */}
233
+ <div className="relative w-full md:w-80">
234
+ <span className="absolute left-3 top-1/2 transform -translate-y-1/2 text-slate-400">
235
+ <Icons.Search className="w-4 h-4" />
236
+ </span>
237
+ <input
238
+ type="text"
239
+ placeholder="Search papers, keywords..."
240
+ value={searchTerm}
241
+ onChange={(e) => setSearchTerm(e.target.value)}
242
+ className="w-full pl-10 pr-4 py-2 rounded-lg border border-slate-200 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:border-transparent transition-all"
243
+ />
244
+ </div>
245
+ </div>
246
+
247
+ {/* Grid Content */}
248
+ <div className="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-3 gap-6">
249
+ {filteredPapers.map((paper) => (
250
+ <div key={paper.id} className="bg-white rounded-xl shadow-sm border border-slate-200 hover:shadow-xl transition-all duration-300 hover:-translate-y-1 flex flex-col group">
251
+
252
+ {/* Card Header */}
253
+ <div className="p-6 pb-4 relative">
254
+ <div className="flex justify-between items-start mb-4">
255
+ <div className="p-2.5 bg-slate-50 rounded-xl border border-slate-100 group-hover:bg-slate-100 transition-colors">
256
+ {paper.icon}
257
+ </div>
258
+ <div className="flex flex-col items-end gap-1.5">
259
+ <span className={`px-2.5 py-0.5 rounded-full text-[11px] font-bold uppercase tracking-wider
260
+ ${paper.category === 'Edge Model' ? 'bg-blue-50 text-blue-700 border border-blue-100' :
261
+ paper.category === 'Foundation Model' ? 'bg-indigo-50 text-indigo-700 border border-indigo-100' :
262
+ paper.category === 'Survey' ? 'bg-emerald-50 text-emerald-700 border border-emerald-100' :
263
+ 'bg-purple-50 text-purple-700 border border-purple-100'}`}>
264
+ {paper.category}
265
+ </span>
266
+ <span className="text-xs text-slate-400 font-mono font-medium">{paper.year}</span>
267
+ </div>
268
+ </div>
269
+ <h3 className="text-lg font-bold text-slate-800 leading-tight mb-2 min-h-[3.5rem] group-hover:text-blue-600 transition-colors">
270
+ {paper.title}
271
+ </h3>
272
+ </div>
273
+
274
+ {/* Card Body */}
275
+ <div className="px-6 pb-6 flex-grow flex flex-col">
276
+ <div className="mb-5">
277
+ <p className="text-slate-600 text-sm leading-relaxed mb-4">
278
+ {paper.summary}
279
+ </p>
280
+ <div className="space-y-2">
281
+ {paper.keyPoints.map((point, idx) => (
282
+ <div key={idx} className="flex items-start text-xs text-slate-600 bg-slate-50 p-2 rounded border border-slate-100">
283
+ <span className="mr-2 text-slate-400 mt-0.5">โ€ข</span>
284
+ {point}
285
+ </div>
286
+ ))}
287
+ </div>
288
+ </div>
289
+
290
+ <div className="mt-auto">
291
+ <div className="pt-4 border-t border-dashed border-slate-200 mb-4">
292
+ <h4 className="text-[11px] font-bold text-rose-500 mb-1.5 flex items-center gap-1 uppercase tracking-wider">
293
+ <Icons.Filter className="w-3 h-3" /> Impact & Usage
294
+ </h4>
295
+ <p className="text-xs text-slate-600 italic">
296
+ "{paper.impact}"
297
+ </p>
298
+ </div>
299
+
300
+ <a href={paper.link} target="_blank" rel="noreferrer"
301
+ className="flex items-center justify-center w-full py-2 bg-slate-900 text-white text-sm font-medium rounded-lg hover:bg-blue-600 transition-colors gap-2 group-hover:shadow-md">
302
+ <span>Read Paper</span>
303
+ <Icons.ExternalLink className="w-3 h-3" />
304
+ </a>
305
+ </div>
306
+ </div>
307
+
308
+ {/* Card Footer (Tags) */}
309
+ <div className="px-6 py-3 bg-slate-50 border-t border-slate-200 rounded-b-xl flex flex-wrap gap-2">
310
+ {paper.tags.map(tag => (
311
+ <span key={tag} className="px-2 py-1 bg-white border border-slate-200 rounded text-[10px] text-slate-500 font-bold uppercase tracking-wide">
312
+ #{tag}
313
+ </span>
314
+ ))}
315
+ </div>
316
+ </div>
317
+ ))}
318
+ </div>
319
+
320
+ {filteredPapers.length === 0 && (
321
+ <div className="text-center py-20">
322
+ <div className="inline-block p-4 rounded-full bg-slate-100 mb-4">
323
+ <Icons.Layers className="w-8 h-8 text-slate-400" />
324
+ </div>
325
+ <h3 className="text-lg font-medium text-slate-900">No papers found</h3>
326
+ <p className="text-slate-500">Try adjusting your search or filters.</p>
327
+ </div>
328
+ )}
329
+
330
+ {/* Footer Info */}
331
+ <footer className="max-w-7xl mx-auto mt-16 text-center pb-10 border-t border-slate-200 pt-8">
332
+ <p className="text-slate-500 text-sm font-medium">Efficient Vision-Language-Action Models Trend Analysis (2025)</p>
333
+ <p className="mt-2 text-xs text-slate-400">Curated based on latest ArXiv & Conference papers (CVPR, ICRA, CoRL) as of Dec 2025</p>
334
+ </footer>
335
+ </div>
336
+ );
337
+ };
338
+
339
+ const root = ReactDOM.createRoot(document.getElementById('root'));
340
+ root.render(<PaperDashboard />);
341
+ </script>
342
+ </body>
343
+ </html>