- BrainTools - https://www.braintools.ru -
Кажется, идея «научить железо думать как мозг» витает в воздухе уже не первый десяток лет. Но только недавно всё это начало превращаться из фантазии в реальный, пусть и немного сумасшедший, стек технологий. Да, речь о нейроморфных чипах — штуках, которые пытаются подражать [1] структуре и работе биологических нейронов. В отличие от привычных CPU/GPU, где всё последовательно и синхронно, тут полное безумие: события обрабатываются асинхронно, нейроны [2] «спайкаются», синапсы [3] учатся на лету.
Для кого-то это просто красивая идея из научпопа, а для кого-то — возможность сделать ИИ, который не сожрёт всю розетку за час. Я — из второй категории.
Сценарий: у нас есть встраиваемая система, на которой должен работать ИИ. Размер — с половину кредитки. Питание — от батарейки. Типовой ИИ на TensorFlow с RTX 4090, как вы понимаете, не вписывается. Нужна альтернатива.
Вот здесь и всплывают нейроморфные чипы. Например, тот же Loihi 2 от Intel — его можно обучать прямо на устройстве, он потребляет милливатты, и при этом решает задачи вроде классификации сигналов, распознавания речи и даже простенькой навигации.
Для эксперимента использовался чип Loihi 2 в составе платы Kapoho Point. Из коробки там — SDK под названием Lava, написанный на Python. Он не идеален, но работать можно.
Вот минимальный пример, как создать спайковую нейросеть, обучающуюся на входных паттернах:
from lava.magma.core.process.neuron import LIF
from lava.magma.core.process.process import Process
from lava.magma.core.run_configs import Loihi1SimCfg
from lava.magma.core.run_conditions import RunSteps
class MyInput(Process):
# простой источник спайков
pass
lif = LIF(shape=(10,))
input = MyInput(shape=(10,))
input.s_out.connect(lif.a_in)
lif.run(condition=RunSteps(100), run_cfg=Loihi1SimCfg())
Конечно, в реальности всё будет сложнее — синапсы, STDP (обучение [4] через зависимость от времени спайков), топология сети, прерывания. Но главное — с этим реально можно работать, даже без магистратуры по нейробиологии.
Реальный пример: устройство должно распознавать жесты по сигналу с акселерометра. Традиционное решение — записать окно сигнала, прогнать через LSTM-сеть, получить результат. Минусы: нужно хранить историю, нужно много ресурсов, долго обрабатывать.
На нейроморфии мы подходим иначе. Каждый входной канал генерирует спайки по амплитуде (пороговая квантовка), которые сразу поступают на нейроны [5]. Вся сеть — это своего рода резонансный фильтр: определённые шаблоны возбуждают определённые нейроны. Прелесть в том, что сеть обучается на лету, не требуя переобучения всей модели.
from lava.proc.learningrules.stdp.process import STDPLoihi
stdp = STDPLoihi(
pre_trace_decay=10,
post_trace_decay=10,
learning_rate=5
)
lif.synapse.connect(stdp)
После пары сотен примеров, система начинает стабильно распознавать жесты с точностью 85-90%, потребляя при этом меньше 50 мВт.
Во-первых, документация — боль [6]. Всё ещё ощущение, что ты где-то в альфа-тесте. Периодически нужно лезть в исходники SDK, чтобы понять, почему сеть не обучается. Во-вторых, визуализации пока убогие. В-третьих, отладка… это вообще отдельная песня. Асинхронность — зло и благо одновременно.
Был баг, когда нейроны просто не стреляли. Искал проблему 3 дня. Оказалось — забыл задать порог возбуждения [7]. В логах — ничего. Просто тишина.
Если хочется хайпа и готового фреймворка с кнопкой “обучи и выкати в прод” — нейроморфия пока не для вас. Но если вы хотите копнуть глубже, получить энергоэффективный ИИ и кайфануть от нестандартной архитектуры — стоит попробовать.
Мой следующий шаг — попробовать сшить такую систему с обычным Edge AI-стеком, чтобы получить лучшее из двух миров: мозг [8] + сила. А пока — пусть кремний учится думать, как мозг. С минимумом потребления и максимумом интереса [9].
P.S. Если кто-то пробовал работать с Loihi или другими нейроморфными платформами — напишите, как вы решаете проблему дебага. Или мы все страдаем в одиночку?
Автор: AntonBelyaev7
Источник [10]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/13695
URLs in this post:
[1] подражать: http://www.braintools.ru/article/5584
[2] нейроны: http://www.braintools.ru/article/9161
[3] синапсы: http://www.braintools.ru/neuron-the-structure-of-nerve-cell/synapse
[4] обучение: http://www.braintools.ru/article/5125
[5] нейроны: http://www.braintools.ru/article/6020
[6] боль: http://www.braintools.ru/article/9901
[7] возбуждения: http://www.braintools.ru/article/9158
[8] мозг: http://www.braintools.ru/parts-of-the-brain
[9] интереса: http://www.braintools.ru/article/4220
[10] Источник: https://habr.com/ru/articles/895662/?utm_campaign=895662&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.