861

На пути к нейросети

Мы занимаемся разработкой экзоскелета кисти с биологической обратной связью для реабилитации детей с синдромом ДЦП. А точнее, пытаемся обучить нейросеть распознавать сигналы мозга для управления экзокистью.

Хочу рассказать, с чего началось и как продвигается наше исследование.

Несколько месяцев назад мы начали подготовку данных - сняли около 1000 энцефалограмм, которые содержат признаки, характерные для мысленного представления определенных движений кистью. Всего планируем снять 2000 ЭЭГ, но уже сейчас у нас достаточно данных для начала работы.

Следующий этап - установка видеокарты GeForce RTX 3090 c GDDR6 24Гб. Она позволяет обрабатывать большие обучающие выборки благодаря наличию большого объема памяти и использованию технологии CUDA. Но в новизне видеокарты скрывались подводные камни, которые я не без труда, но с успехом преодолел.

Видеокарта «взлетела» не сразу. Для начала стало ясно, что она не помещается ни в один из имеющихся в наличии корпусов. Был приобретен новый корпус Full Tower и отдельно блок питания на 750Вт. При попытке задействовать возможности CUDA в обучении нейронных сетей возникла следующая проблема – видеокарта слишком новая, фреймворки и библиотеки для искусственного интеллекта (DeepLearning4j, Theano, TensorFlow) её еще не поддерживают. Выход – скачать исходники фреймворков для ИИ и самостоятельно перекомпилировать их для поддержки видеокарты. Однако в процессе оказалось, что эти фреймворки ускоряются не только за счет ресурсов видеокарты, но и требуют поддержки современных инструкций процессора. Был приобретен современный процессор Inter Core I7-10700K с поддержкой AVX, AVX2 команд – , вместе с новой материнской платой и 32 Гб DDR4.


И вот наконец GeForce RTX 3090 смогла продемонстрировать свои возможности!


На первом графике видно, как задействуется память видеокарты и ресурсы GPU при обучении Convolution 1D — сверточной одномерной сети, обрабатывающей временные ряды — данные исследований ЭЭГ. Ранее обучение нейронной сети на этом датасете занимало около 4 часов. На новой видеокарте — порядка 3-4 секунд.

А вот задача посложнее: LSTM — рекуррентная сеть с долгой краткосрочной памятью. Те же данные считаются дольше — около 2 минут, и нагрузка на GPU выше:

Видеокарта решает! Раньше при внесении даже небольших изменений в конфигурацию сети, приходилось ждать несколько часов, чтобы понять, каким образом внесенные изменения отобразились на качестве распознавания признаков нейронной сетью. Теперь эта задача существенно облегчается.


Таким образом, видеокарту удалось запустить в Keras, используя только что вышедшее обновление TensorFlow в версии для GPU.

Однако эти решения используют Python, который при всех его положительных качествах (возможность быстрого прототипирования нейронных сетей, развитые библиотеки для работы с данными, простота и скорость разработки приложений) плохо подходит для многопоточных задач, когда в пределах одного приложения надо получать данные с устройства в реальном масштабе времени, обрабатывать их, подавать на вход ИНС, сохранять в файл, управлять внешними устройствами, рисовать данные на экране и т.д.

Поэтому необходимо было получить возможность работать с ИНС в Java-приложениях, но с этим из-за использования слишком нового железа возникли трудности. Описанными в мануалах способами GPU никак не хотел подключаться, и решения на тематических форумах на сайте разработчиков и GitHub не было, а те рецепты решения проблемы, которые советовали разработчики, не помогали.


Возникло понимание, что причина проблемы - в несовместимости ряда библиотек, компонентов фреймворка, с новыми библиотеками CUDA от NVIDIA.

Пришлось скачивать исходники и пытаться собирать библиотеки под необходимые платформы: CUDA 11.* и CuDNN 8.*, что оказалось нетривиальной задачей: имелось несколько тысяч файлов и масса условий окружения для нормальной сборки, а мануалы описывали сборки устаревших версий и не работали с новыми.

Кроме того, в исходных кодах возникали некоторые ошибки компиляции, одинаковые как для компиляции из Windows 10 (VS2019), так и из Ubuntu (gcc).

Удалось скомпилировать, после правки исходных кодов, часть зависимых библиотек проекта - libnd4j, а затем уже с ними библиотеку nd4j-cuda-11.1.


Ранее поддержка проекта рекомендовала использовать snapshots - версии библиотек из специального репозитория:


«we’ll be releasing a version with 11.0 in a bit, for now you can use snapshots and see if that works? https://deeplearning4j.konduit.ai/config/config-snapshots»


Однако, как оказалось, часть необходимых для работы файлов там отсутствовала, и рекомендация не помогла.


https://oss.sonatype.org/service/local/artifact/maven/redire...

404 — Not Found

Path /org/nd4j/nd4j-cuda-11.0/1.0.0-SNAPSHOT/nd4j-cuda-11.0-1.0.0-20201117.023522-181-windows-x86_64.jar not found in local storage of repository «Snapshots» [id=snapshots]


Что и обусловило компиляцию недостающих файлов. К счастью, версия deeplearniung4j для 11.0 версии CUDA импортировалась, и, добавив в проект в виде отдельных jar и dll файлов скомпилированные библиотеки, удалось запустить приложение на видеокарте!


Часть POM файла работоспособного проекта:

Скомпилированные библиотеки добавлены в зависимости вручную:

В данном случае - обучение на сравнительном не большом объеме данных заняло 42 минуты 37 секунд, на CPU эта же задача выполнялась более 2500 минут при полной загрузке процессора.


Вот так я сам добавил поддержку современных видеокарт в Deeplearniung4j, чтобы не дожидаться, пока это сделают разработчики.


Спасибо за внимание. Пока мы еще в начале пути, буду продолжать рассказывать о нашей работе!

Искусственный интеллект

5.4K постов11.7K подписчиков

Правила сообщества

ВНИМАНИЕ! В сообществе запрещена публикация генеративного контента без детального описания промтов и процесса получения публикуемого результата.


Разрешено:


- Делиться вопросами, мыслями, гипотезами, юмором на эту тему.

- Делиться статьями, понятными большинству аудитории Пикабу.

- Делиться опытом создания моделей машинного обучения.

- Рассказывать, как работает та или иная фиговина в анализе данных.

- Век жить, век учиться.


Запрещено:


I) Невостребованный контент

  I.1) Создавать контент, сложный для понимания. Такие посты уйдут в минуса лишь потому, что большинству неинтересно пробрасывать градиенты в каждом тензоре реккурентной сетки с AdaGrad оптимизатором.

  I.2) Создавать контент на "олбанском языке" / нарочно игнорируя правила РЯ даже в шутку. Это ведет к нечитаемости контента.

  I.3) Добавлять посты, которые содержат лишь генеративный контент или нейросетевой Арт без какой-то дополнительной полезной или интересной информации по теме, без промтов или описания методик создания и т.д.


II) Нетематический контент

  II.1) Создавать контент, несвязанный с Data Science, математикой, программированием.

  II.2) Создавать контент, входящий в противоречие существующей базе теорем математики. Например, "Земля плоская" или "Любое действительное число представимо в виде дроби двух целых".

  II.3) Создавать контент, входящий в противоречие с правилами Пикабу.


III) Непотребный контент

  III.1) Эротика, порнография (даже с NSFW).

  III.2) Жесть.


За нарушение I - предупреждение

За нарушение II - предупреждение и перемещение поста в общую ленту

За нарушение III - бан

Вы смотрите срез комментариев. Показать все
49
Автор поста оценил этот комментарий

Сарказм, если че:)

Иллюстрация к комментарию
раскрыть ветку (12)
19
Автор поста оценил этот комментарий

Даааааа

3 строчки про дцп и детях,

20 абзацев про видяху)))))

раскрыть ветку (3)
11
Автор поста оценил этот комментарий
Не всё сразу )
раскрыть ветку (2)
13
Автор поста оценил этот комментарий

Прально, сначала киберпанк

7
DELETED
Автор поста оценил этот комментарий
Вы мегакруты. Вот мои яйца только поджимаются от самого процесса данных технологий. Боюсь, уже никогда не пойму это. А ведь было дело... Спектрум на колене собирал. Спасибо, что вы есть! Благодаря вам и куется будущее.
4
Автор поста оценил этот комментарий

А ведь кроме шуток. Существует совершенно потрясный проект по предоставлению мощностей отдельных машин, который позволяет получать суммарную производительность на уровне нехилых суперкомпьютеров.


Из этого вырос майнинг, на какое-то время проект просел из-за сверхприбылей от майнинга, но сейчас снова огромный и мощный, и очень крутой. Ты просто сидишь за компом, а в процессе помогаешь бороться с различными болячками.


https://ru.wikipedia.org/wiki/Folding@home

1
Автор поста оценил этот комментарий
Я так себе комп для "учебы" выпрашивал у мамы. -МАААМ ну для нормальной работы в экселе обязательно надо 8 гб озу, и тд))
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

правильный ответ :

надо еще 20 вагонов разгрузить !

1
Автор поста оценил этот комментарий

Кто-то может объяснить мне как выбрать видеокарту? Почему они блять сто разных от одного производителя? И цена разная. Я просто хотел новую нвидиа купить, комп первый раз собрал себе. До этого на ноутах сидел. Там вообще не было никаких вопросов.

А тут захожу, от палит сто карт, от мси столько же, но дороже. Хз что за херня.

раскрыть ветку (4)
2
Автор поста оценил этот комментарий

Разные версии карт от разных производителей отличаются в основном только 1.охлаждением 2.мощностью цепей питаний (для оверклокеров и разгона карты проще говоря) то есть условная  3080 от palit равна по производительности 3080 от msi (только температуры могут отличаться) но по цене разница может быть в  10к (особенно если много подсветки) так что если хочешь условную 3080 можешь брать хоть самую дешевую версию, только отзывы почитай (может там процент брака больше, неудачные модели есть у всех производителей)

Автор поста оценил этот комментарий
Я не год назад пришел в днс, сказал чем хочу заниматься и сколько у меня денег, ребята в своем конструкторе накидали сборку, погуглил эти агрегаты и купил. Остался очень доволен)
раскрыть ветку (2)
1
DELETED
Автор поста оценил этот комментарий
я пару месяцев назад пришел в этот супер магаз и попросил простую рожковую кофеварку. мало того, что она оказалась нерабочей, так ее с витрины в Твери сняли, о чем конечно умолчали, збс?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Этим и в кей'е грешили, да:(
Иллюстрация к комментарию
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества