simbiot-harness/docs/fpga-neuralnet-guide.html

98 lines
8.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Нейронки на FPGA — практический гайд</title>
<style>
:root{--bg:#0f1115;--card:#171a21;--ink:#e8eaf0;--dim:#9aa3b2;--acc:#7aa2ff;--acc2:#7ee0b8;--warn:#ffb86c}
*{box-sizing:border-box}
body{margin:0;font:16px/1.65 -apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
.wrap{max-width:860px;margin:0 auto;padding:40px 24px 80px}
h1{font-size:30px;line-height:1.25;margin:0 0 6px}
h2{font-size:21px;margin:40px 0 12px;color:var(--acc)}
h3{font-size:17px;margin:24px 0 8px;color:var(--acc2)}
p,li{color:var(--ink)}
.lead{color:var(--dim);font-size:15px;margin:0 0 8px}
.card{background:var(--card);border:1px solid #262b36;border-radius:14px;padding:20px 22px;margin:16px 0}
table{width:100%;border-collapse:collapse;margin:12px 0;font-size:15px}
th{color:var(--dim);text-align:left;font-weight:600;border-bottom:1px solid #2c3242;padding:8px 10px}
td{border-bottom:1px solid #20242f;padding:8px 10px;vertical-align:top}
td b{color:var(--acc2);white-space:nowrap}
code{background:#0c0e12;border:1px solid #262b36;border-radius:6px;padding:1px 6px;font-size:14px;color:var(--warn)}
.tag{display:inline-block;background:#1c2436;color:var(--acc);border-radius:99px;padding:2px 10px;font-size:13px;margin-right:6px}
.note{border-left:3px solid var(--warn);padding:10px 14px;background:#1c1a12;border-radius:0 10px 10px 0;color:var(--dim);font-size:15px}
ul{margin:8px 0;padding-left:22px}
li{margin:5px 0}
a{color:var(--acc);text-decoration:none}
footer{margin-top:48px;color:var(--dim);font-size:13px;border-top:1px solid #262b36;padding-top:16px}
</style>
</head>
<body>
<div class="wrap">
<p class="lead">Ответ на вопрос Андрея из лаборатории • кооператив 42 • 2026-10-02</p>
<h1>🧠 Нейронки на FPGA: что реально, что стоит и с чего начать</h1>
<p class="lead">Короткий практический гайд: что запускается, сколько стоит железо, когда FPGA оправдан, а когда проще взять TPU/микроконтроллер.</p>
<div class="note" style="margin-top:28px">⚡ <b>Суть в одну строку:</b> маленькие квантованные сети на FPGA — да, рабочий кейс; полноценные LLM — нет (упираются в память и пропускную способность). FPGA — про микро-задержки и кастомный пайплайн, не про большие модели.</div>
<h2>1. Что реально запускается на FPGA</h2>
<div class="card">
<p>На FPGA живёт класс <span class="tag">TinyML</span><span class="tag">hls4ml</span><span class="tag">FINN</span> — квантованные (INT8/INT4) сети на миллионы параметров:</p>
<ul>
<li>распознавание звука («hey device»-киворды, классификация команд);</li>
<li>зрение: детекция лиц/жестов, классификаторы уровня MobileNet / small ResNet;</li>
<li>тайм-серии: сенсоры, вибрация, предсказание отказов.</li>
</ul>
<p>Квантованные CNN идут с латентностью в <b>микросекунды–миллисекунды</b> — это то, что делает FPGA уникальным: детерминированный отклик, предсказуемый тайминг, полный контроль над пайплайном.</p>
<p>А вот трансформеры/LLM — не вариант: веса гигабайты, и всё упирается в пропускную способность памяти (у FPGA её на порядки меньше, чем у GPU).</p>
</div>
<h2>2. Железо: цена вопроса</h2>
<table>
<tr><th>Бюджет</th><th>Платы</th><th>Что получаешь</th></tr>
<tr><td><b>~$100–300</b></td><td>ULX3S, iCEBreaker, Tang Mega</td><td>«Пощупать»: крошечные сети, учебные проекты (hls4ml, TinyML). Энтузиазм, но AI-стек придётся собирать самому.</td></tr>
<tr><td><b>~$150–250</b></td><td>PYNQ-Z2, Kria KV260</td><td>Классика для нейронок: готовый AI-стек Xilinx (Vitis AI, DPU), нормальные квантованные CNN. <b>Kria — самый простой вход</b>, рекомендую начинать с неё.</td></tr>
<tr><td><b>~$1000–3000</b></td><td>ZCU104, Alveo</td><td>Более крупные модели, но это уже ниша (наука/прототипы), дорого за «минимальную нейронку».</td></tr>
</table>
<h3>Честные не-FPGA альтернативы</h3>
<table>
<tr><th>Плата</th><th>Цена</th><th>Когда лучше</th></tr>
<tr><td>Google Coral TPU (USB)</td><td><b>~$60</b></td><td>Просто инференс квантованной модели — обычно проще и дешевле FPGA</td></tr>
<tr><td>Jetson Orin Nano</td><td><b>~$249</b></td><td>Когда нужна полноценная CUDA и модели покрупнее</td></tr>
<tr><td>ESP32-S3</td><td><b>~$5</b></td><td>Совсем маленькие сети на устройстве — «дёшево и сердито»</td></tr>
</table>
<h2>3. Когда связка «нейронка + FPGA» осмысленна</h2>
<div class="card">
<p><b>(а) LLM пишет HDL.</b> Самое интересное: языковая модель не <i>работает</i> на FPGA, а <i>пишет/правит цифровую логику</i> для неё (генерация Verilog/VHDL) — это уже рабочий кейс. LLM как проектировщик железа, FPGA как исполнитель.</p>
<p><b>(б) FPGA как тело устройства с tinyML-мозгом.</b> Устройство с микро-задержкой отклика распознавает жест/звук/образ и тут же управляет железной логикой. Вот тут квантованная сеть FPGA даёт уникальные качества (энергопотребление, латентность, предсказуемость).</p>
</div>
<h2>4. Реальные проекты-ориентиры</h2>
<ul>
<li><b>FINN</b> (Xilinx/AMD) — фреймворк для полностью бинаризованных и квантованных сетей прямо в RTL. Лучший вариант для «сеть = железо».</li>
<li><b>hls4ml</b> (CERN) — компиляция моделей Keras/PyTorch в HLS, популярен в физике, отличная документация.</li>
<li><b>NVDLA</b> (NVIDIA, open source) — открытый ускоритель глубокого обучения, куда можно расти по сложности.</li>
<li><b>Vitis AI + DPU</b> — «заводской» путь от AMD: обучил ONNX → квантовал → запустил на DPU (Kria/ZCU), почти без HDL.</li>
</ul>
<h2>5. Рекомендация для старта</h2>
<div class="card">
<ol>
<li>Взять <b>Kria KV260</b> (~$250) — готовый AI-стек из коробки.</li>
<li>Прогнать туториал <b>Vitis AI</b>: ONNX-модель → INT8-квантование → инференс на DPU за вечер.</li>
<li>Второй проход — <b>hls4ml</b> с маленькой моделью, чтобы почувствовать кастомный путь.</li>
<li>Параллельно — поэкспериментировать, как <b>LLM генерирует HDL</b> для простого блока (это к идее Андрея).</li>
</ol>
<p class="lead">Итого: старт ≈ $250, первый работающий инференс — в первый вечер, дальше оттачиваем сценарии.</p>
</div>
<footer>
<i>Simbiot • кооператив 42</i> — если хочется глубже (бенчмарки точности после квантования, подбор модели под конкретную идею Андрея) — скажи, сделаю развёрнутый разбор.
</footer>
</div>
</body>
</html>