ailev.ru

Обсуждение

В архиве: 43 комментария.

Читать и комментировать в ЖЖ ↗

slobin · 3 августа 2015

Комментарий

// И слишком высоко на экспоненте висящие в 1983 году плоды могут оказаться низко висящими в 2015 Я тут немножко игрался с задачками на теорию чисел (ну там простые числа всякие) и удивился, насколько точно мой довольно хилый десктоп (двухядерник, четыре гига) без применения человеческого интеллекта (написал в лоб задачку, через час-другой получил ответ) попадает в рекорды 1980 года. Ну то есть поражает именно малость разброса: не 1975, не 1985, а именно 1980. С учётом того, что и железка у меня не сегодняшняя, на сегодняшних может быть как раз 1983. ... Press any key... No, no, no, NOT THAT ONE! ...

Имя не сохранено · 3 августа 2015

Комментарий

резюме: "я про сетки ничего не понимаю, но ученые и человеческий мозг - это не про это!". Мда-с...

Имя не сохранено · 3 августа 2015

Комментарий

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

Имя не сохранено · 3 августа 2015

Комментарий

>технологический стек, где сидят программисты и математики, важен: он может дать (возвращаясь к теме поста) тот порядок или даже пару порядков (а иногда и три порядка) запаса вычислительной мощности Увы, не может. Можно накосячить в реализации и недобрать несколько порядков мощности, но если не косячить, то резервов роста на одной видюшке нет. Нейросетям действительно важны все соединения, это вам не Decision Tree. Единственное улучшение -- давно знакомый нам FFT, позволяет O(n^2) свести к O(n log n) (с большей константой), что на практике при n порядка 1000 даёт выигрыш скорости всего в 2-5 раз. Поизучайте https://github.com/soumith/convnet-benchmarks . Как видите, конкуренты довольно близки.

Имя не сохранено · 3 августа 2015

Комментарий

И, кстати, вот как выглядит "FPGA революция" (точнее, её отсутствие): http://auvizsystems.com/products/auvizcv/ (картинка 2х-годичной давности, видимо, даже соотношением 1-к-1 похвастаться больше не получается) http://auvizsystems.com/products/auvizdnn/ вообще ни с чем не сравнимы, и показывают, что рост неспециализированного FPGA железа очень медленный.

Ответ на комментарий

Анатолий Левенчук · 3 августа 2015

Комментарий

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

Ответ на комментарий

Анатолий Левенчук · 3 августа 2015

Комментарий

Один пример тут не пример. Плохо, что в сравнениях разных архитектур используются совсем разные показатели сейчас -- одни флопсы на ватты оценивают, другие производительность на MNIST, третьи ещё всякое разное. Я давал уже несколько ссылок про FPGA эксперименты и добавлял, что пока не устаканится показатель сравнения, мало что будет происходить, "соревнование" будет дохлым. В http://ailev.livejournal.com/1204705.html я писал:
В http://cadlab.cs.ucla.edu/~cong/slides/fpga2015_chen.pdf есть какие-то ориентиры измерителей для организации "гонки нейрофлопс", хотя можно и упрощённые бенчмарки использовать, типа "As a proof of concept, we combined 128 identical neural cores together to build a handwritten digit recognition system using the MNIST database and achieved a recognition rate of 96.55%. The system is implemented on a state-of-the-art FPGA and can process 5.12 million digits per second" -- это из помянутой уже свеженькой http://arxiv.org/abs/1507.05695. Твори, выдумывай, пробуй! Быстрее, выше, сильнее! Можно также пойти альтернативным путём и поисследовать процессоры для суперкомпьютеров: тот же Intel Knights Landing Xeon Phi (там более 64 ядер, но это не GPU архитектура, а нормальные процессорные ядра -- и можно поиграться с самыми разнообразными архитектурами там) -- http://www.zdnet.com/article/intels-next-big-thing-knights-landing/. Но это, боюсь, не совсем класса "мейкеров", суперкомпьютер в хакспейсе не сделаешь. Хотя это хорошая "цель на вырост" ;)

Ответ на комментарий

Анатолий Левенчук · 3 августа 2015

Комментарий

Мне кажется, что этим сильно должны озаботиться в IBM Watson: сам тамошний подход подразумевает комплексирование разных солверов -- и буквально месяц назад они объявили, что берут солверы на нейронных сетках в свой оборот. В принципе, сами нейронные сетки вполне себе архитектурно гибки: -- обучение ведётся в них вполне послойно или покомпонентно (в этом и был прорыв: учить по слою за раз, а не все сразу), это даже не вопрос про комбинирование сеток -- активно используются концепции претренинга, подбора начального состояния и т.д. Это в том же направлении Вообще, каждый из типовых пакетов для нейронных сеток имеет какой-то язык их описания, в котором можно выражать желаемые архитектурные конструкции. С этим сейчас и играются, но эффективность очень часто предлагаемых решений низка. Типа "давайте добавим сюда слой вот такого типа и научим его так-то" -- в одной архитектуре и на одних данных это вдруг срабатывает и у всех счастье, а в другом очень похожем случае -- оказывается даже вредным.

Ответ на комментарий

Анатолий Левенчук · 3 августа 2015

Комментарий

http://nextbigfuture.com/2015/07/currently-quantum-computers-might-be.html -- “We did an analysis at Google recently in what it would take to implement a Grover’s algorithm for extremely hard problems where classical algorithms fail beyond 40 or 50 bits and with 70 bits you would not be able to do it. Grover’s algorithm is a search algorithm that provides a quadratic speedup for extremely hard problems; if you have 2n steps to find the solution on structured search, you would need only n/2 steps to find a solution with that algorithm on a quantum machine. For a problem of size 60, you would need about 3.5 billion qubits and it would take about three hours with a speed up over a single CPU of over 1.4 million times. For the problem of size 70, the speedup would be 34 million and you would need only a little bit more qubits at 5.9 billion. If it is about $1 per qubit, and you spend another $500 million to bid down the price, roughly with a $2 billion investment you would be able to build a decent supercomputer with several millions of CPUs.” Все эти технологии идут по экспонентам, неудивительно, что никто никого догнать не может )))

Ответ на комментарий

Анатолий Левенчук · 3 августа 2015

Комментарий

Про сетки понимание как раз очень быстро накапливается, но учёные и человеческий мозг -- это не про это!

Ответ на комментарий

Анатолий Левенчук · 3 августа 2015

Комментарий

Порядок, а то и два всё-таки иногда делают: https://github.com/rbgirshick/fast-rcnn Сейчас таких работ как дождик идёт, за всем не уследишь. А потом все таблички вдруг оказываются на другом уровне скоростей -- и опять "всё со всем сравнимо и одинаково".

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

У них это всю жизнь так и было -- Ватсон это вообще не что-то цельное, а просто огромный набор разнородного софта, который они за $200/час адаптируют для вашей задачи. Они сами недавно горевали, что у них одновременно используется 50 (!) разных токенизаторов текста в разных компонентах для Ватсона (и, кстати, никакими онтологиями это не исправить -- процедурное знание крайне тяжко преобразовывать, даже при наличии автотестов)

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

Ну так я на ту писанину и ссылаюсь, собственно. А неплохой ориентир давно есть -- CNN, которые необходимы для анализа того же NSFW-контента (not-safe-for-view) и жрут столько флопсов, что мама не горюй. Ссылку на бенчмарк я давал: https://github.com/soumith/convnet-benchmarks Уж не говоря о том, что для видео даже в 30 кадров в секунду нужно жрать ещё на порядок больше флопсов, т.к. сейчас быстродействие одной видюшки позволяет только 100мс на кадр (если при этом учиться)... И сравнения вычислительной мощи Xeon Phi я тоже видел -- один Phi получался в два раза быстрее 16 ядер CPU. То есть всё равно одна десятая от видюшки ( http://devblogs.nvidia.com/parallelforall/wp-content/uploads/sites/3/2015/03/cuDNN_Perf_chart011.png ).

Ответ на комментарий

Анатолий Левенчук · 3 августа 2015

Комментарий

"Никакими онтологиями это не исправить" -- в Watson онтологии используются очень боком, только для улучшения качества ответа при подведении под сознательно маленький набор этих типов. Токенизаторы разные понятно почему: там идеологическая фишка такая, что для разных обработок нельзя текст прекодировать (например, разбивать на токены), потому как для разных вопросов любое сжатие (предобработка текста -- это его сжатие) теряет какую-то информацию, предположительно важную для ответа. Поэтому любая работа всегда с голым текстом. Отсюда и разные токенизаторы, особенно если учесть то, что они во всяких Jeopardy! вынуждены были учитывать разную игру слов, и поэтому с токенизаторами, которые могли бы отсекать эту игру слов, они осторожны заранее. Насчёт преобразования процедурного знания, так и непроцедурное тоже тяжело преобразовывать, только по другим причинам. ))) Отлаживать непроцедурные экспертные системы тоже было тяжело, хотя и не нужно было точно знать точку в тексте, куда вставлять дополнительную продукцию. Даже при полностью аддитивном модульном декларативном знании есть проблема вставки махонького факта, который переворачивает всю систему этих знаний -- и все прекомпиляции нужно опять-таки выкидывать на помойку (https://en.wikipedia.org/wiki/Belief_revision). CYC наиболее продвинулся в этом направлении, заведя механизм микротеорий, но там опять-таки пока ручное кодирование, а это уже очевидный тупик. Они это понимают, и пытались взлететь на самостоятельное чтение текстов для обучения программой, но воз и ныне там (план был выйти на это ещё в 2001 году).

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

>и как раз подразумеваю неадекватность архитектур этих видюшек задачам глубоких архитектур Вы заблуждаетесь. Видюшка оптимизирована под параллельные сложения и умножения. Именно они и нужны массово при перемножении матриц, которые и используются для задач глубоких архитектур. Вас смущает регулярность операций? Так это и есть те три порядка распараллеливания, которые дают видюшке фору: именно 3072 потоковых процессоров в видюшке и позволяют одновременно делать 3000 операций перемножения и сложения: 3072*1ггц*2 операции = 6,144 GFLOPS -- для Titan X. (И от механизма действия FPGA этот принцип не сильно отличается, кстати). Нет какого-то способа уменьшить требования к производительности -- все элементы матрицы одинаково важны, сравните их со своим словарным запасом: какими слова из вашего лексикона вы готовы были бы пожертвовать? Даже если мы какие-то элементы занулим (пусть даже 3/4 матрицы), то нам потребуется 750 гораздо более сложных процессоров, которые будут управлять порядком вычислений, предсказывать переходы, и требовать разные данные (один посчитал быстрее, второй медленнее -- а значит, вспоминаем ограничения на произвольный доступ к памяти и почему L1, L2, L3 кеши всё ускоряют) -- и вместо роста производительности для несильно разреженной матрицы мы получаем большую просадку производительности.

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

Это не ускорение CNN, это переиспользование вычислений для повторяющихся частей задачи: одни и те же данные используются для разных частей изображения. Я потому и говорю, что распознавание изображений с помощью CNN -- каноническая задача. А тут задача другая: получить не один объект в выборке, а сотню. И сравнивается это с сотней вызовов старой функциональности (каждый старый вызов получает один объект). Поэтому RCNN не будет работать быстрее, чем CNN, но может работать быстрее, чем в сто раз медленее, чем CNN.

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

А почему "на одной видюшке" нет резервов? Речь как я понимаю про то, что обучение медленный процесс, а применение модели быстрый. Ну так обучение с оптимизацией структуры сети может прекрасно идти изолировано на "миллионах видюшек". Какая тут проблема?

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

Я не очень вас понимаю. У вас есть одна видюшка, вы сможете ускорить что-либо? Это и имелось в виду под отсутствием резервов. Анатолий считает, что можно -- новыми алгоритмами или более эффективной реализацией на железе. Ну а если у вас сто видюшек, то конечно, проблем считать в 100 раз быстрее нет -- просто давайте им разные картинки/другие данные, и пусть каждая своё считает. (При попытке делить модель между ними возникают свои проблемы, но некоторое нелинейное ускорение тоже можно получить -- просто bandwidth большой и поэтому data locality имеет очень большое значение при подобном ускорении.)

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

>Токенизаторы разные понятно почему: там идеологическая фишка такая, что для разных обработок нельзя текст прекодировать (например, разбивать на токены), потому как для разных вопросов любое сжатие (предобработка текста -- это его сжатие) теряет какую-то информацию, предположительно важную для ответа Да нет конечно -- для ответа информация не настолько важна -- теряется в разы больше информации, она важна для дальнейших методов обработки. Модели настраивать -- очень сложная задача. А теперь представьте, что одна модель построена и протестирована с запятыми, вторая без запятых, третья в нижнем регистре, четвёртая с апострофом присоединённым к левому слову, пятая точки добавляет, ещё в пяти стоп слова разные пропускаются, итп. Не уберёте запятые -- а в модели запятых нет -- и модель сломается или будет выдавать неправильные результаты. Можно было бы переучить/перенастроить, но это огромный труд. Поэтому я онтологии и припоминаю -- многие видели в них спасение от именно таких проблем с разными толкованиями, ведь вроде бы вместо (N)*(N-1) конвертеров можно написать по онтологии для каждого представления, а дальше компьютер сам между ними научится преобразовывать данные. >CYC наиболее продвинулся в этом направлении ага, обогнали своё время лет на тридцать.

Ответ на комментарий

Имя не сохранено · 3 августа 2015

Комментарий

вот я вижу, просто читая текст, что про сетки и вас сплошняком идет "нет понимания, нет понимания, нет понимания, неизвестно". Про wetware сетки, очевино (да-да, очевидно-преочевиднейше) - тоже нет понимания. И при том вы говорите - "ученые и человеческий мозг - это не про то". С одной стороны вещь, про которой пониманий нет, с другой нет (уже этого достаточно, не упоминая о том что "близость вещей очевидна", и "во второй точно решаются многие из "не понимаю как", заявленные здесь по отношению к первой"). И все "...это - не про то!". Ну а рефлексия-то когда включится? Или все как у милновского ведмедя так и будет - "некогда думать, "бумкать" надо"?

Ответ на комментарий