Обсуждение

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

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

potan · 6 декабря 2008

Комментарий

GPGPU подходят для узкого круга задач. На выходе должен быть массив и каждый элемент массива должен зависить от не очень большого количества элементов входных массивов (эти зависимости должны быть известны заранее) и вычисляться по фиксированному алгоритму. Под это не попадают большенство задач ИИ, кроме нейронных сетей и распознавания образов. Даже тривиальную сорировку на них проблематично запрограммировать. Кроме того видеокарты используют 32-битные числа (старые - даже не IEEE, при умножении точность на несколько бит падала), а многим научным приложениям требуется 64-бита. Так что революция откладывается.

vi_z · 7 декабря 2008

Комментарий

Проблема же в том, что GPGPU хорошо делают только векторные и около-векторные операции. Я вот даже Reinforcement Learning (RL) не вижу, как на таком девайсе ускорить. Так что когда тут выясняли, нужен ли тут кому комп с Cell-нодами, сказал, что не знаю, куда такое приткнуть, и что как по мне, так лучше нормальные general-purpose ноды. Или я чего-то про это счастье недопонял?

Анатолий Левенчук · 7 декабря 2008

Комментарий

Насколько я понимаю, в 2006 году в этих девайсах произошли некоторые архитектурные изменения, широкой публикой плохо отслеженные. Люди начали находить способы, как эту специализированную архитектуру использовать не по прямому назначению и получать выигрыш. Конечно, выигрыш в скорости получают не в 240 раз, как было бы при полном распараллеливании, но очень часто в более чем 10 раз.

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

Имя не сохранено · 7 декабря 2008

Комментарий

Новый AMDшный GPU 64 бит вычисления поддерживает, скорость конечно в 5 раз меньше, но 200 Гфлопс в пике тоже неплохо.

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

Имя не сохранено · 7 декабря 2008

Комментарий

С ИИ проблема в том, что алгоритмы для решения таких задач слабопредсказуемы в смысле паттернов доступа к памяти, взаимодействия отдельных подзадач. Из-за это их трудно параллелизовать. А уж на специфическую архитектуру аля GPU трудно вдвойне. Я недавно пробовал представить как реализовать SAT solver (т.е. проверку выполнимости огромных булевых формул) на FPGA. Имеется в виду, конечно, не тупой перебор, а современные ускоренные методы. Мой моск пока сломался, отдохну буду думать дальше. Надо на досуге и GPU обдумать. Но в перспективе задача решаемая (хотя бы на Лараби, а может и на Селлах, про GPU - не уверен на 100%). Ибо в шахматных алгоритмах задачи примерно такие же (это тоже ИИ в конце концов), но их научились неплохо параллелить и на железо раскладывать. Параллельные SAT солверы тоже уже есть - а к SAT задачам так или иначе сводимо большинство задач ИИ.

Анатолий Левенчук · 7 декабря 2008

Комментарий

Да, это очень близко к тому, о чем я пишу. Надеюсь, ссылка на статью про графы в тексте постинга вам чем-то поможет.

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

Имя не сохранено · 7 декабря 2008

Re: Very close.

> А ведь эти персональные параллельные архитектуры адресуют ахиллесову пяту всех искусственноинтеллектуальных методов: слишком долгий счет. Увы, экспоненциально долгий. Но ведь и в начале экспоненты можно неплохо поразвлекаться. Полного перебора стараются избежать. И не мудрено, самый мощный петафлопный компьютер на Земле делает за год 365*24*3600*10^15 ~ 32*10^21 ~ 2^75 операций. Т.е. он за год "перебирает" пространство размером 75 бит :). Негусто. К счастью, многие практические задачи все же обычно решаются гораздо быстрее, но не гарантировано. Т.е. worst-time конечно экспонента. Например, современные алгоритмы позволяют решать SAT проблемы (выполнимость булевских формул в конъюктивной нормальной форме) размеров в миллионы переменных и подформул. Проблематика там примерно такая. Во многих случаях, зная значения некоторых переменных, можно вывести значения других без перебора. К примеру, если есть ограничение a|b|c= true, где а,b,c - булевы переменные, и если известно, что a=b=false, то из этого автоматом следует, что с = true. Это называется Unit Propagation. На практике, если таковых ограничений много, то один Unit Propagation может породить целую цепочку других таких Unit propagation'ов. Т.е. если правильно выбирать множество переменных для перебора, то можно перебор существенно сократить. К сожалению, заранее выбрать такие переменные в общем случае нельзя, нужно использовать эвристики. Также если выяснилось, что некоторые назначения переменных ведут к конфликтам, то можно эти комбинации запомнить и "вычеркнуть" из пространства поиска. К примеру, есть формулы a|b|c & ~c|d|e. Если a=b=d=e=false, то формула противоречива, т.е. из a|b|c следует что c=true, а из ~c|d|e - что с = false. Таким образом, компьютеры может выучить новую формулу, что a,b,d,e не могут быть false одновременно (a|b|d|e = true), и в дальнейшем выбора таких значений избегать. Это называется Learning, а выведенное утверждение - Лемма. Таким образом, чтобы это все дело эффективно распараллелить, параллельные потоки должны уметь обмениваться Леммами, а также нужно динамически распределять между ними пространство перебора. На GPU это пока плохо ложиться, ибо GPU расчитан на планомерное перепахивание более-менее однородных структур данных, а не на "шизофренические" метания, характерные для алгоритмов ИИ.

Имя не сохранено · 8 декабря 2008

Комментарий

Larrabee кстати очень хорошая штука должна получится. По сути - это Sun'овская Niagara, только в варианте от Интел: много ядер, 4 потока на ядро, простые ядра без внеочередного исполнения. У меня был случай поиграться с Ниагарой. Одиночные потоки конечно тормозят, но в целом один Сановский чип был такой же как пара дуал-корных Оптерона, на целочисленных задачах. И это без оптимизаций под Ниагару. Я тогда подумал, хорошо бы чтобы Интел или АМД такой же сделали: типа и ядер побольше и частоту повыше. И вот Интел услышал мои мольбы :). Larrabee и Niagara по архитектуре очень хорошо подходят под ИИ задачи. Ибо out-of-order там не поможет, а большое кол-во ядер - плюс. 4 потока на ядро хорошо маскируют задержки памяти. Общий кэш - очень хорошо для алгоритмов с непредсказуемым доступом к памяти. Надеюсь, еще Интеловцы реализуют быструю передачу управления между потоками как и в Ниагаре.

Имя не сохранено · 10 декабря 2008

Комментарий

"Оказалось, что вся разница в звучании проистекает из-за моего неумения обеспечить одинаковую силу удара каждым пальцем правой руки.." Да-да. В хороших школах - что клавишных, что гитарных, об этом знают. Впрочем, что тех, что тех - очень немного. По той же самой (я про наш спор об empowering) причине - это требует личных затрат труда и времени :-) Зато владение акцентированием ноты в аккорде позволяет вести две-три "мелодических линии", знакомая музыка получает неожиданную трактовку, особенно для гетарастов с их "игрой перебором".

Анатолий Левенчук · 10 декабря 2008

Комментарий

Вот-вот. Это как раз к вопросу об empowering. Я же как раз написал, что "правильный" аккорд услышал только благодаря тому, что он был взят мной через пад. Это значит, что для production (а не для развлечения) я буду использовать именно такое взятие аккорда. И добьюсь успеха не меньшего, чем выпускники школы, много-много времени потратившие на "выравнивание силы удара".

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

Имя не сохранено · 11 декабря 2008

Комментарий

Толи я неточно описал, толи Вам "тот" спор мешает меня услышать: Вы обнаружили "неровность" аккорда, я же говорю, что следующий за "выравниванием" уровень - произвольное акцентирование! Через пад Вы возьмете аккорд "ровно". ВСЕГДА ровно. Я же могу (не скажу, что идеально, но до слушателя "доходит") взять ноты в аккорде с сознательно разной громкостью. Мне это продемонстрировали на замечательной пьесе "По течению" А. Ольшанского. Поскольку она для гитары, то пример раскрывал одновременно два момента: вторая мелодическая линия и специфически гитарный - важность правильной аппликатуры (в неправильной вторая линия рвется). Да, успех на фоне "выпускников обычных школ" будет. Насчет школ, прорабатывающих "выравнивание": 1)смотря кто слушать будет - могут и не услышать разницы 2)выравнивание - первый этап в этих школах, следующий - сознательное управление "неровностью" 3)если разницу услышат - у них преимущество

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

Анатолий Левенчук · 11 декабря 2008

Комментарий

Я, наверное, тоже не прописал свою мысль до конца. Ежели я знаю про существование этого акцентирования отдельных нот в аккорде, то свободно пропишу эту отдельную мелодическую линию техническими средствами (например, в муз.редакторе. Или в каком-нибудь real-time средстве типа Karma, наверняка что-нибудь подобное появится через пару-тройку версий этой программы). Моя мысль проста: вместо того, чтобы учиться быстро бегать, нужно изобретать хотя бы велосипед, или сразу автомобиль, или даже самолет. Вместо того, чтобы учиться умножать в римских числах, нужно переходить на умножение хотя бы в арабских, а еще лучше -- на калькуляторе, или еще лучше -- компьютере. Самое важное -- знать, что нужно. Вот узнал я о разной громкости нот в аккорде и пользе от этого или вреде, и при помощи технологий сразу могу этим пользоваться на "промышленном уровне", не тратя нескольких лет на тренировки ;)

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

vasja_iz_aa · 14 декабря 2008

Комментарий

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

Анатолий Левенчук · 14 декабря 2008

Комментарий

Гм. Ведь все то же самое относится и к наиболее привычным современным методам естественного интеллекта, нет?

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

Имя не сохранено · 15 января 2009

Комментарий

В смысле? Что вы называете "методами естественного интелекта"? В принцыпе все правильно. Сложно оттестировать то, что непонятно как должно работать. Проще всего показать на примере экспертных систем. Инженер по знания отчуждает только внешнюю сторону опыта, но не может ни скопировать, ни оценить внутренний механизм приобретения этого опыта, чтобы повторить его в ЭС.

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