"Новый нейронный" - проект Open Source движка нейронной сети для платформы MetaTrader 5. - страница 71

 
joo:

Если рассматривать обучение нейронок как микроуровни (независимые циклы обработки массивов в ГА, расчет отдельных нейронов сети и др) и макроуровни (вся ФФ целиком), то с первым вопросов и проблем не возникает - всё прекрасно параллелится и чудесно будет работать на GPU.

А вот с макроуровнем проблема. Во первых, подозреваю, что это не возможно в силу ограничений на объём обрабатываемой инфы в GPU. Можно было бы это обойти, используя штатный тестер и облако (каждый макроуровень будет передаваться на отдельных агентов а там уже будет вестись обработка на микроуровне - если это позволяет хост конечно). Но у нас нет инструментов, позволяющих управлять тестером извне, что бы использовать внешний ГА.

Поэтому придётся ограничится ускорением на микроуровне. Ускорение тоже будет очень приличным, так как сами сетки и ГА изобилуют независимыми друг от друга вычислениями.

Что касается самого UGA - если не касаться его доработки под OpenCL, то усовершенствовать в нем практически уже нечего (разве что только отдельные какие то участки кода, но это погоду  не сделает, спасибо участникам ветки обсуждения алгоритма из статьи). Можно лишь попробовать подобрать настройки UGA специально для обучения сетей.


У современных GPU объем ОЗУ от 1 ГБайт

Я слабо себе представляю обучающую выборку большего объема

С макроуровнем все в порядке - проверено )

Для ГА разумно использовать следующую архитектуру: сам ГА на CPU, а тяжелые вычисления ФФ на GPU

 
her.human:

Можно маленький примерчик использования для МТ5?


Пример чего? Нейросетевого индикатора, нейросетевой стратегии, ... ?
 
yu-sha:

У современных GPU объем ОЗУ от 1 ГБайт

Я слабо себе представляю обучающую выборку большего объема

Если я не ошибаюсь, то у современных видеокарт два вида операционной памяти - общая, которая может быть несколько ГБайт и которая довольно медленная, и та, которая есть у каждого отдельного процессора GPU - быстрая, но небольшого объёма в несколько сотен КБ. Я рассуждал, что проблема может возникнуть именно тут.

yu-sha:

С макроуровнем все в порядке - проверено )

Но, если Вы так говорите, то я верю на слово и теперь спокоен. :)

yu-sha:

Для ГА разумно использовать следующую архитектуру: сам ГА на CPU, а тяжелые вычисления ФФ на GPU

Ну, а это уже, как говорится, дело техники. Можно и так. Насколько я знаю, OpenCL позволяет в коде выбирать, на каких именно ядрах будут проводится вычисления - на CPU или GPU.

 
yu-sha:
Пример чего? Нейросетевого индикатора, нейросетевой стратегии, ... ?
Как задать свободную (не полносвязную) архитектуру сети, куда подать вход, откуда забрать выход, где находятся веса?
 
joo:

Если я не ошибаюсь, то у современных видеокарт два вида операционной памяти - общая, которая может быть несколько ГБайт и которая довольно медленная, и та, которая есть у каждого отдельного процессора GPU - быстрая, но небольшого объёма в несколько сотен КБ. Я рассуждал, что проблема может возникнуть именно тут.

Общая "медленная" - это полный аналог DDR для CPU (~ 0,75 - 1,00 ГГц - не очень медленно)

Быстрая - это аналог кэш-памяти CPU. 

GPU позволяют управлять этой самой внутричиповой (кэш) памятью, в отличие от CPU (может я и ошибаюсь, но как-то не приходилось сталкиваться с таким вопросом)

Но все это вопросы доп.оптимизации, без них можно жить 

 

her.human:

yu-sha:
Пример чего? Нейросетевого индикатора, нейросетевой стратегии, ... ?
Как задать свободную (не полносвязную) архитектуру сети, куда подать вход, откуда забрать выход, где находятся веса?

Да да, нам бы такой толчковый примерчик а дальше разберёмся.

Запаралелить расчет ФФ помог бы стандартный ГА и облако. Тем более Ренат обещал:

Не канает, тестерный ГА ограничен 64 битами поиска, а для обучения весов на каждый вес нужно по 16-64 бита (зависит от точности поиска), а весов может быть до..... нескольких тысяч, а может и десятков и сотен тысяч. UGA с этим вполне справляется, а тестерному это не по силам.

Так что либо пинать MQ чтоб модернизировали ГА(чем я безуспешно занимаюсь битых два года), либо встраивать UGA, но будет намного медленнее чем на кластере.

 
yu-sha:

Общая "медленная" - это полный аналог DDR для CPU (~ 0,75 - 1,00 ГГц - не очень медленно)

Быстрая - это аналог кэш-памяти CPU. 

GPU позволяют управлять этой самой внутричиповой (кэш) памятью, в отличие от CPU (может я и ошибаюсь, но как-то не приходилось сталкиваться с таким вопросом)

Но все это вопросы доп.оптимизации, без них можно жить 

Не в том суть, память памятью, а на GPU будет сложно реализовать выкрутасы объектной логики, я вполне прекрасно представляю как реализовать НС, как сложное взаимодействие объектов внутри которых имеются функции GPU расчётов(это про микро уровни), но я не представляю как этот сложный объектный код те всю НС подсунуть GPU как несколько ФФ с разными наборами весов (макроуровень) ???

Вопрос риторический, хотя если кто представляет непрочь послушать.

 

Щас стрельнула шальная мыслишка:

может быть попросить у MQ  API постановки задач кластеру???

чтоб раздавать задание минуя тестер, прямо из MQL5. Задача конечно сложная, нужно много проверок устанавливать, но решаемая.

ЗЫ как думаете братья, не шибко высоко замахнулся? кластер конечно священная корова, но пахать то нужно.

 
Urain:

Да да, нам бы такой толчковый примерчик а дальше разберёмся.

 Пример №1:

Постановка задачи:

- необходимо восстановить алгоритм работы индикатора, исходники которого недоступны (либо это "перерисовывающийся" индикатор - кстати, неплохой учитель для НС), но известны значения на каждом баре

- значения индикатора находятся в диапазоне (-1;+1) 

Входные данные:

- мы знаем (подозреваем?), что этот индикатор использует последние 10 цен закрытия 


 Пример №2:

Постановка задачи:

- необходимо подобрать нейросетевую торговую стратегию, которая наилучшим образом (maximize Profit/MaxDD) торгует на участке истории

Входные данные:

- нормированные значения MACD (13,35), MACD (50,100), RSI(8), RSI(13)

 

Пример №3:

Постановка задачи:

- научить нейросеть таблице умножения

Входные данные:

- множители x,y  в диапазоне (-1;+1)

 

Можете предложить свой пример и, если это возможно, - покажу архитектуру сети в XML  

 
yu-sha:

Можете предложить свой пример и, если это возможно, - покажу архитектуру сети в XML  

и главное исходничек как эта архитектура создавалась, как генерится файл XML.

Причина обращения: