AI supremacy: Leela Chess. Или про то, как полностью открытая нейросеть победила

    image

    Честно говоря, я очень разочарован хабром. Почему никто не осветил такую вещь, как победа нейросетевого подхода с полностью открытым кодом, а? И полностью открытыми нейросетевыми данными? Действительно, ну вот DeepMind Technologies описали как они обучали шахматный ИИ, играющий сам с собой… Только вот код там закрыт, а обучение происходило на кластерах Google, а не распределённо на Nvidia Turing c тензорными ядрами, как в данном случае. Почему мне самому приходится править английскую википедию (я там ZBalling), чтобы привлечь к этому внимание?

    Ладно, что-то я переборщил с эмоциями, наверное. (По ссылке все же есть в комментах упоминания leela.) Это статья эксперимент: способ показать мне, как другая моя статья, излишне популярная, на мой взгляд, повлияет на эту.

    История началась, когда я обновил свою старенькую Nvidia Geforce GTX 770 на RTX 2080 Ti. Ну и учитывая, сколько она стоит, мне хотелось по максимуму раскрыть её. Сначала я поигрался с Ray Tracing, почитал про то, как оно работает с CUDA через NVIDIA OptiX. Почитал про то, как один человек умудрился использовать RT ядра совсем не по назначению. Повторил его. Но количество комментариев, что кожанная куртка развела людей на лучи было таким большим, что мне надоело про это читать. Особенно учитывая, что я знаю, что трассировка пути это самый важный алгоритм киношной и игровой индустрии, и это не открытие Nvidia. Вообще нет. Даже аппаратно.

    Дальше я решил посмотреть в сторону NVENC. Я вообще любитель халявы. Как оказалось, в этом аппаратном энкодере её там было предостаточно. Во-первых, самая популярная статья на Хабре про NVENC расcказывает о том, как YourChief, вооружившись дебаггером, смог ломануть ограничение на количество одновременных потоков кодирования для него (а моя карточка, как выяснилось может ого-го). Причем патч, как это и бывает обычно, меняет всего пару байт.

    Потом выяснилось, что технология NvFBC (ультрабыстрый захват полного кадра) можно включить и на карте geforce, если использовать магический патч поверх Looking glass фреймворка, перед этим активировав эту технологию (патч можно увидеть здесь).

    Затем я захотел себе 30 битный цвет в Photoshop. Повторив успех других, я нашел байтик, который ограничивал поддержку OpenGL в оконном режиме (так как в DirectX в оконном и полноэкранном режимах и в OpenGL в полноэкранном режиме 30 битный цвет и так работал). И написал об этом Nvidia, пообещав обнародовать патч. Может это совпадение, но они на Gamescom 2019 убрали это ограничение. А ведь есть еще неофициальная поддержка HDR10+ (динамические HDR метаданные).

    Так, теперь настало время матричного ускорителя, нейронного акселератора, тензорных ядер, называйте, как угодно. Тут было немного сложнее. Скажу сразу, в универcity я лекции про нейросети проспал, поэтому мне пришлось разбираться. Но посмотрев пару видео, где мужчина спаунит тысячи птичек, чтобы пройти Flappy Bird, и спустя пару поколений эти птички проходят препятствия как по маслу, я проникся идеей. Вопрос заключался в том, что бы такое запустить. И тут я вспомнил, что Google тут недавно хвастался, что они обыграли своим ИИ лучшего игрока в Go, что считалось невозможным до этого с помощью «обычных» алгоритмов. Честно говоря, любит же Google DeepMind сложную версификацию. Ну то есть кто это придумал: AlphaGo Lee → AlphaGo Master → AlphaGo Zero → AlphaZero (последняя уже может и в шахматы, и в шоги, и в go и вообще во все, так как они реализовали пространный механизм объяснения правил игры, её и под покер можно приспособить). Я в курсе про покер, если что, не пишите про это, а то знаю я вас.

    Мой поиск в google «alphazero source code» ничего не дал. Ну то есть выяснилось, что код они и не подумали открыть! Но мне не верилось. Ну, то есть Илон Маск же выступает за OpenAI (типо чтоб когда ИИ разовьется, он был более изучен, что ли, и более свободен от копирайта авторов). И тут на reddit я наткнулся на ссылку. Как выяснилось, некоторые сердобольные люди из DeepMind все же решили отдать часть исходного кода, впрочем, напечатав его прям в pdf файле. /facepalm

    Ну тут я сразу скачал и нейросеть отсюда. И поигравшись с ней, я понял, что почему-то оно не играет в шахматы. Мне потребовалось минут 20, чтобы понять, что оно играет в go, а не в шахматы и еще 40 минут, чтобы найти версию для шахмат. И вот тут я удивился. Во-первых, они уже успели реализовать cuda backend c поддержкой тензорных ядер от Nvidia как для игры, так и для обучения (добровольного и распределенного, причем). Во-вторых, у них прямо в тот момент происходил поединок с Stockfish за 1 место в рейтинге компьютерных шахмат! Я не спал пол ночи, наблюдая за суперфиналом TCEC и нейросеть победила! Я сразу же побежал редактировать википедию, в которой на тот момент было мало информации, и уже на следующий день об этом писали все кому не лень! Как выяснилось, при игре leela использовала всего лишь связку из 2080 Ti и 2080, то есть моей карточки было вполне достаточно. Скачав нейросеть отсюда, я вполне спокойно запустил её на моем компе! Ну конечно, нейросеть меня разбила. Вот инструкция как настроить.

    Лично я правда использовал оболочку HIARCS Chess explorer. Дальше я также дал людям на android потестить leela в DroidFish. На Android используется дистиллированная сеть, попроще и поменьше, но все равно не слабая.

    В принципе я могу расписать инструкцию на установку подробнее, добавить ссылок, пишите :=))
    Кстати, такой вопрос, кто нибудь слышал про нестандартное применение NVENC и NVDEC? Вроде как его можно приспособить для ускорения математических операций. Я где-то про это прочитал, но там без подробностей было.

    Only registered users can participate in poll. Log in, please.

    Что будет быстрее по-вашему:

    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 41

      +2
      Забавно будет сделать мобильное приложение и назвать его «You never win in this Chess».
        0
        Уже есть такое приложение для Go. play.google.com/store/apps/details?id=cn.ezandroid.aq
        Ну смотрите, здесь есть такой момент, к сожалению разработчики пока что не интегрировали поддержку Tensorflow Lite, таким образом, нейроускорители в 845 snapdragon или 855 работать не будут. Без этого действительно быструю нейросеть на мобильном устройстве не запустишь, она всё равно будет слабее, чем stockfish на том же droidfish. И уж точно не получится устроить схватку 2 движков компьютерных шахмат, как это происходило в финале.))
          0
          Зачем на устройстве? Пусть будет на сервере. Все равно штука нишевая, можно взять небольшую оплату за игру на оплату аренды cpu/gpu на время игры.
            +2
            Проблема заключается в том, что в отличие от игры в Go для игры в шахматы существует совершенно стандартные алгоритмы, которые точно так же не дают выиграть на планшете, смартфоне даже десятилетней давности…
          +1
          Вообще программы давно обыгрывают людей в шахматы, даже без нейросетей…
            0
            c 1997 года, если быть точным
              0
              Если быть ещё более точным, в 97 году суперкомпьютер обыграл чемпиона мира в официальном турнире. Ещё через несколько лет простые компьютеры начали обыгрывать простых мастеров.
                +1
                Дальше улучшались алгоритмы и где-то в 2004-2006-х был таки переломный момент, когда персоналки стали обыгрывать ГМ.
          0

          Вступайте сюда: https://lichess.org/team/all-the-leelas

            +1
            Компьютеры уже довольно давно играют на очень приличном уровне.
            Но прелесть AlphaZero в том, что он (AI) изобретает порой соврешенно новые стратегии игры, до этого неизвестные.
            Например AlphaZero очень любит слонов и при выборе кого жертовать: коня или слона, будет стараться жертвовать коня и оставить обоих слонов. А потом блестяще их использовать.
            AlphaZero может пожертвовать фигуру, ради тактического преимущества.
            Еще один яркий пример, это когда AlphaZero старается продвинуть крайние пешки на 6-й ряд.
              0
              Конспект видео Шипова в одном комменте?
                0
                К своему стыду не знаю кто такой Шипов
                  0
                  Гроссмейстер и блоггер
                  0
                  Нет, это не конспект. Стандарное наблюдение, об этом много где писали. Стратегия жертвование это как блеф, а ИИ, как оказалось после покера сильны в этом.
                    +2
                    Стратегия жертвование это блеф, а ИИ, как оказалось после покера сильны в этом.
                    Нет, в шахматах жертвы к блефу никакого отношения не имеют… Игра с полной информацией, поэтому блефовать невозможно.
                      0
                      Да, я понимаю, что термин не применим, тем не менее это зависит от глубины исследования этой полной информации. Leela не иследует её полностью, ясно? Она не делает перебор вариантов, как Stockfish.
                        +2
                        Шахматы я хорошо понимаю, нейронные сети похуже, но понимаю.
                        Но не понимаю при чём тут блеф…

                        Нейронная сеть получает умение на основе своего опыта определять по текущей ситуации хорошее дальнейшее действие. И не важно какая игра, покер или шахматы. Блеф/жертва — это уже оценка со стороны человека, а для ИИ — это просто действие. И в таком контексте неважно как называть действие «жертва» или «блеф». Об этом речь?
                          0
                          Да. Впрочем нейросеть также может перебирать варианты, только на «нейросетевом» уровне…
                          И это не оценка, в покере это основной прием. Математически обоснованный, все дела.
                          0
                          Обе программы делают перебор. Stockfish тоже не делает полный перебор, а >99% вариантов отсекает. Но алгоритмы разные: alpha-beta и MCTS.
                  0
                  Что будет быстрее по-вашему:

                  Расслоение общества — одни улучшат мозг, а у других мозг захавают ИИ, ктулху и котики
                  Оно в общем-то и так есть, но с усилением и распространением ИИ, VR и прочего, будет гораздо выраженнее

                    +3
                    Комментирую свой «другой, напишу в комментариях))» выбор в голосовании. «Захватить власть над человечеством» — ну это как люди захватили власть над муравьями, или таки-нет? Людям муравьи по барабану (хотя нечаянно могут всех спалить, ну так получилось, не специально). Та же история с пост-хьюман соображениями, «что там будет?» — посмотрите, люди в шахматы друг с другом продолжают играть не смотря на победу Deep Blue над Каспаровым… сколько лет там назад это было? Ой, 22 с хвостом года назад. Что-то сильно в мире любителей шахмат изменилось за эти 22 года? Нет. Один мой знакомый (сильный шахматист) искал в партиях AlphaZero плодотворную дебютную идею, не нашёл и был сильно тем разочарован (ну, как если бы муравьи не нашли интересных идей для совершенствования муравейников у людей… которые свои муравейники строят непонятным муравьям способом :) )
                      0
                      зеро сама нашла один из самых популярных на сегодня дебютных вариантов.
                        +2
                        искал в партиях AlphaZero плодотворную дебютную идею, не нашёл и был сильно тем разочарован
                        новые дебютные идеи сложно искать, очень много наработок у людей. Не одна сотня лет на это ушла. То, что AlphaZero играет эти же дебюты — это закономерно, хотя и удивительно, что для этого ей понадобилось несколько часов.
                        И всё же кое-что новое она всё равно может найти, например вот
                          0
                          То, что AlphaZero играет эти же дебюты — это закономерно, хотя и удивительно, что для этого ей понадобилось несколько часов.
                          С учётом того, что за эти несколько часов она сыграла сама с собой больше партий, чем все профессиональные игроки за всю историю человечества — не, нифига не удивительно.
                          0
                          искал в партиях AlphaZero плодотворную дебютную идею

                          AlphaZero и её подобные программы всегда руководствуются правилом "делать тот ход, оценка которого максимальна", а ходы оцениваются хитрым перебором, использующим нейросети. Для таких программ нет разницы между дебютом и эндшпилем. И им не нужно знать эту разницу, а достаточно лишь перебирать тысячи вариантов специальным алгоритмом, чтобы играть лучше, чем любой человек, даже вооружённый базой дебютов, накопленной людьми за тысячу лет. Хочешь понять программу — сыграй в уме в режиме блиц тысячу партий на каждый вариант хода, какой вариант будет иметь больший процент выигрышей — тот и лучший. Логика какая-то не слишком человеческая, правда?
                          Иногда случается, что программы в чём-то повторяют известные дебюты — это значит, что эти дебюты действительно хороши по сравнению с другими дебютами (на данном уровне знаний, на данной мощности программ).

                            0
                            Самолёту не надо махать крыльями как птица, чтобы выполнить ту же задачу — полёт в воздухе, так что нечеловеческая логика не должна быть человеческой. Это во-первых, а во-вторых ещё неизвестно, что там в подсознании у человека происходит, возможно такой же перебор.
                          0
                          Честно говоря, я очень разочарован хабром. Почему никто не осветил такую вещь

                          Я думаю многие следят, а вот писать статью тяжело. На хабре нет формата создать статью-обсуждение, где каждый будет дополнять, как Wikipedia, поэтому переводные новости и доминируют.
                            +1

                            Переводные новости доминируют, так как это самый дешёвый путь для корпоративных блогов привлечь к себе внимание.

                            +4
                            Захватит/не захватит — это литературно-киношная постановка вопроса. Там за редкими исключениями, а в кино и редких исключений не бывает, все построено на антропо/зооморфизме. Все считают, что в ИИ общего назначения обязательно должны самозародиться человеческие страсти или, что они являются естественным приложением ИИ общего назначение. А дальше по сюжету ИИ либо всех полюбил, либо обманул, либо поработил, либо поубивал. Хотя у человеку все это досталось от предков и связано с индивидуальным и групповым выживанием в природе. А в ИИ все это само не появится, если инженеры не добавят. То, что люди сделают, будет сверпофигистом в стиле «могу копать, могу не копать». И оно не будет само по себе строить коварные планы, думать «Тварь я дрожащая или право имею». Самая реальная опасность — ИИ обесценит способности человека. Все будет как с шахматами. Все большее количество задач будет решаться штуками, которые можно купить в магазине и поставить на стол или даже положить в карман. Интересна контринтуитивность того, кого раньше программа помножит на ноль. Шахматист интеллектуальнее уборщика, но коммерческий потенциал пока остался только у второго. С другой стороны, шахматист на какое-то время может выкрутится. Переключится на покер, в политику может пойдет. А уборщик может рассчитывать только на пособие.
                            Строго говоря, вообще не известно, как будут развиваться события. Одно ясно, в кино ответов точно нет.
                              0
                              обязательно должны самозародиться человеческие страсти

                              Они будут зарождаться в любой нейросети. Хотя у людей дополнительно есть гормоны, которые усиливают эмоции, на самом деле эмоции просто переполнения в возбуждениях нейронов… А если говорить про любовь, то тут вообще наибольшую роль играют общие воспоминания и всё.

                              реальная опасность — ИИ обесценит способности человека

                              Вот тут я придерживаюсь противоположной точки зрения. Человек всегда мечтал о том, что вот наступит время и ему не надо будет работать, какие-то профессии уйдут, будучи заменены роботами под контролем ИИ, что в этом плохого? Я был бы счастлив, если бы ИИ помогли мне писать код. Впрочем, рассуждать здесь я могу только на уровне игры Detroit, где это было показано с плохой стороны.

                              А уборщик может рассчитывать только на пособие.

                              Не красиво, как-то)))

                              Захватит/не захватит

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

                              Но я вас плюсанул в карму))
                                0
                                Трансгуманизм, конечно, привлекательнее. Так как не смотря на то, что на мой взгляд, контролируемый ИИ, даже со сверхчеловеческими способностями, возможен, но способность понимать как он приходит к своим выводам для нас довольно быстро закончится. А дальше, скорее всего, и мы перестанем понимать смысл и пользу готовых решений.
                                  0
                                  Ну, может к тому времени ИИ сможет объяснить простыми словами свои сложные решения, это почти всегда возможно… Есть там, конечно, алгебра Ленга и всякие новые веяния в теории чисел, которые фиг поймешь, понятно, какие-то области нельзя понять с наскока, но все же.
                                    0
                                    В какой-то момент такой ИИ перестанет быть контролируемым, как мне кажется.
                                      0
                                      А вы можете контролировать человека, скажем, на другом конце провода, когда по телефону разговариваете? Контролировать разумного в любом проявлении — сложная задача.
                                      Да и смысла в этом мало.
                                0
                                И вот тут я удивился. Во-первых, они уже успели реализовать cuda backend c поддержкой тензорных ядер от Nvidia как для игры, так и для обучения (добровольного и распределенного, причем). Во-вторых, у них прямо в тот момент происходил поединок с Stockfish за 1 место в рейтинге компьютерных шахмат!

                                Я немного следил за этой темой, и могу заметить, что после первых побед AlphaGo весной 2016 вскоре (в 2017, кажется) появилось несколько её "клонов" — AQ Go, Leela Zero, и также сразу шли разговоры о применении этого подхода в сёги, шахматах, etc. А победа Leela Chess Zero, кажется, таки освещалась на хабре.


                                Какие из этого выводы? Человек сам — уже не стратег и не тактик, машины побеждают на этом поле. Побеждать будет тот, кто успеет создать более сильную, более производительную машину.

                                  0
                                  Нет, не освещалось. habr.com/ru/search/?target_type=posts&order_by=relevance&q=Leela&flow=
                                  Единственное место, это комментарии к той статье, которую я упоминул. Все.
                                  www.google.com/search?q=habr.com+leela+chess&oq=habr.com+leela+chess
                                  Побеждать будет тот, кто успеет создать более сильную, более производительную машину.

                                  Причем здесь это? Алгоритмы важнее. Вот же одной моей видеокарты хватило для этого… а когда мы научимся интегрировать эту нейросеть в мозг человека <потирает ручки>

                                  Человек сам — уже не стратег и не тактик

                                  Еще совсем недавно считалось, что машина не будет лучше, чем человек в Go. И вот уже она лучше, намного. А классических алгоритмов, не на нейросети как не было так и нет. Т.е. человечкий подход (нейросеть) лучше. Ну пока ИИ не создаст искусственный алгоритм, конечно =))
                                    +1
                                    Причем здесь это? Алгоритмы важнее.

                                    "более сильную, более производительную машину" — под "машиной" я имел в виду связку железо + софт + веса нейросетей, т.е. некая законченная конструкция, которая выполняет специализированные "стратегические" вычисления. А алгоритмы у этих современных "нейросетевых" движков примерно одинаковы — monte-carlo tree search (MCTS) + нейросеть для быстрой оценки на каждом шаге MCTS.


                                    а когда мы научимся интегрировать эту нейросеть в мозг человека

                                    Интегрировать эту нейросеть — наверно никогда. Максимум к мозгу можно приделать интерфейсы ввода-вывода, а считать, наверно, придётся в кремнии или его аналогах. Почему — см.далее.


                                    Т.е. человечкий подход (нейросеть) лучше.

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


                                    И поэтому я сомневаюсь, что можно вырастить настолько производительную, настолько быструю биологическую нейронную сеть и уместить её в черепную коробку, интегрировав в мозг. Между тем, реализации подобных вычислителей "в кремнии" уже готовы и хорошо работают, пусть и пока через клавиатурно-экранный интерфейс.

                                      0
                                      Во-первых, люди тоже просчитывают ходы. Не нужно просчитывать партию до конца, чтобы выиграть и оценить выгодность хода. Во-вторых, как вы думаете, сколько нейро вычислений происходит у человека, о которых он и не подозревает? Попробуйте быстро произнести что-нибудь, вы точно сможете ни о чем не думать во время этого, но значит ли это, что мозг не работал? Нет. Профессиональные игроки тоже знаете ли, не продумывают, ой, а что если я пойду сюда, они сразу видят выгодные и невыгодые ходы, НЕ ДУМАЯ НИ О ЧЕМ.

                                      И я все же надеюсь, что мы сможем когда нибудь засунуть себе tensorflow в мозг, пусть даже для этого может потребоваться и немного «кремния» себе вставить.
                                        0
                                        Во-первых, люди тоже просчитывают ходы. Не нужно просчитывать партию до конца, чтобы выиграть и оценить выгодность хода.

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


                                        Во-вторых, как вы думаете, сколько нейро вычислений происходит у человека, о которых он и не подозревает?

                                        В мозгу примерно 100 млрд. нейронов, у каждого примерно 10к связей, на скоростях примерно 10-100Гц… Это, наверно, примерно 10..100*10^15 каких-то операций в секунду как верхняя оценка. GTX2080Tiв идеале это примерно 23-27ТFLOPS half precision или 100 GFLOPS на тензорных операциях (не знаю, что здесь имеется в виду — multiply-add матриц 4х4 или скалярное умножение). Этот грубый расчёт даёт соотношение около "1000 видеокарточек ~ нейроны 1 мозга", в какой-то гипотетической ситуации, когда всё загружено на 100%. Не стоит воспринимать серьёзно эти цифры.
                                        Но алгоритм MCTS неплохо параллелится, и его при необходимости можно запустить на десятке или сотне видеокарт, а мозги так просто не объединяются, поэтому "кремний" всегда выиграет. Да и сейчас выигрывает у профессионалов всего на нескольких видеокартах (или тензорных ускорителях). Ничто не мешает докинуть ещё несколько карточек, если понадобится.


                                        Профессиональные игроки тоже знаете ли, не продумывают, ой, а что если я пойду сюда

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


                                        И я все же надеюсь, что мы сможем когда нибудь засунуть себе tensorflow в мозг, пусть даже для этого может потребоваться и немного «кремния» себе вставить.

                                        Наверно, без этого никак)

                                          0
                                          Разумеется, они могут просчитывают ходы. Если у них есть время на это. Ну вот я недавно смотрел видео youtu.be/p8-w8xEr6GI
                                          Очевидно, что у парня не было времени просчитать что-то осмысленно. На этот суперблиц игру в шахматы даётся для каждого по одной минуте…
                                            0
                                            Если у них есть время на это.

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


                                            Такой вот недостаток человеческого мозга.

                                Only users with full accounts can post comments. Log in, please.