25 сентября 2019

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

Искусственный интеллектЛогические игры
image

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

Ладно, что-то я переборщил с эмоциями, наверное. (По ссылке все же есть в комментах упоминания 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? Вроде как его можно приспособить для ускорения математических операций. Я где-то про это прочитал, но там без подробностей было.
Теги:NvidiaAlphaZeroшахматыgoogle
Хабы: Искусственный интеллект Логические игры
+14
7,9k 44
Комментарии 41
Лучшие публикации за сутки

Минуточку внимания

Разместить