- PVSM.RU - https://www.pvsm.ru -

Честно говоря, я очень разочарован хабром. Почему никто не осветил такую вещь, как победа нейросетевого подхода с полностью открытым [1] кодом, а? И полностью открытыми нейросетевыми данными [2]? Действительно, ну вот DeepMind Technologies описали как [3] они обучали [4] шахматный ИИ, играющий сам с собой… Только вот код там закрыт, а обучение происходило на кластерах Google, а не распределённо на Nvidia Turing c тензорными ядрами [5], как в данном случае. Почему мне самому приходится править английскую википедию [6] (я там ZBalling), чтобы привлечь к этому внимание?
Ладно, что-то я переборщил [7] с эмоциями, наверное. (По ссылке все же есть в комментах упоминания leela.) Это статья эксперимент: способ показать мне, как другая моя статья [8], излишне популярная, на мой взгляд, повлияет на эту.
История началась, когда я обновил свою старенькую Nvidia Geforce GTX 770 на RTX 2080 Ti. Ну и учитывая, сколько [9] она стоит, мне хотелось по максимуму раскрыть её. Сначала я поигрался с Ray Tracing [10], почитал про то, как оно работает [11] с CUDA через NVIDIA OptiX [12]. Почитал про то, как один человек умудрился использовать [13] RT ядра совсем не по назначению. Повторил его. Но количество комментариев, что кожанная куртка [14] развела людей на лучи было таким большим, что мне надоело про это читать. Особенно учитывая, что я знаю, что трассировка пути это самый важный алгоритм киношной и игровой индустрии, и это не открытие Nvidia. Вообще нет. Даже аппаратно.
Дальше я решил посмотреть в сторону NVENC [15]. Я вообще любитель халявы. Как оказалось, в этом аппаратном энкодере её там было предостаточно. Во-первых, самая популярная статья [16]на Хабре про NVENC расcказывает о том, как YourChief [17], вооружившись дебаггером, смог ломануть ограничение на количество одновременных потоков кодирования для него (а моя карточка, как выяснилось может ого-го [18]). Причем патч, как это и бывает обычно, меняет всего пару байт [19].
Потом выяснилось, что технология NvFBC (ультрабыстрый захват полного кадра) можно включить и на карте geforce, если использовать магический патч поверх [20] Looking glass фреймворка, перед этим активировав эту технологию [21] (патч можно увидеть здесь [22]).
Затем я захотел себе 30 битный цвет в Photoshop. Повторив успех других, я нашел байтик, который ограничивал поддержку OpenGL в оконном режиме (так как в DirectX в оконном и полноэкранном режимах и в OpenGL в полноэкранном режиме 30 битный цвет и так работал). И написал об этом Nvidia, пообещав обнародовать патч. Может это совпадение, но они на Gamescom 2019 убрали это ограничение [23]. А ведь есть [24] еще неофициальная поддержка HDR10+ (динамические HDR метаданные).
Так, теперь настало время матричного ускорителя, нейронного акселератора, тензорных ядер, называйте, как угодно. Тут было немного сложнее. Скажу сразу, в универcity я лекции про нейросети проспал, поэтому мне пришлось разбираться. Но посмотрев пару видео [25], где мужчина спаунит тысячи птичек, чтобы пройти Flappy Bird, и спустя пару поколений эти птички проходят препятствия как по маслу, я проникся идеей. Вопрос заключался в том, что бы такое запустить. И тут я вспомнил, что Google тут недавно хвастался, что они обыграли своим ИИ лучшего игрока [26] в Go, что считалось невозможным до этого с помощью «обычных» алгоритмов. Честно говоря, любит же Google DeepMind сложную версификацию. Ну то есть кто это придумал: AlphaGo Lee → AlphaGo Master → AlphaGo Zero → AlphaZero (последняя уже может и в шахматы, и в шоги, и в go и вообще во все, так как они реализовали пространный механизм объяснения правил игры, её и под покер можно приспособить). Я в курсе про покер, если что, не пишите про это, а то знаю я вас.
Мой поиск в google «alphazero source code» ничего не дал. Ну то есть выяснилось, что код они и не подумали открыть! Но мне не верилось. Ну, то есть Илон Маск же выступает за OpenAI (типо чтоб когда ИИ разовьется, он был более изучен, что ли, и более свободен от копирайта авторов). И тут на reddit я наткнулся на ссылку [27]. Как выяснилось, некоторые сердобольные люди из DeepMind все же решили отдать часть исходного кода, впрочем, напечатав его в прям в pdf файле. /facepalm
Ну тут я сразу скачал [28] и нейросеть отсюда [29]. И поигравшись с ней, я понял, что почему-то оно не играет в шахматы. Мне потребовалось минут 20, чтобы понять, что оно играет в go, а не в шахматы и еще 40 минут, чтобы найти версию [1] для шахмат. И вот тут я удивился. Во-первых, они уже успели реализовать cuda backend c поддержкой тензорных ядер от Nvidia как для игры, так и для обучения (добровольного и распределенного [30], причем). Во-вторых, у них прямо в тот момент происходил поединок с Stockfish за 1 место в рейтинге компьютерных шахмат! Я не спал пол ночи, наблюдая за суперфиналом TCEC [31] и нейросеть победила! Я сразу же побежал редактировать википедию, в которой на тот момент было мало информации, и уже на следующий день об этом писали все кому не лень! Как выяснилось, при игре leela использовала всего лишь связку из 2080 Ti и 2080, то есть моей карточки было вполне достаточно. Скачав нейросеть отсюда [32], я вполне спокойно запустил её на моем компе! Ну конечно, нейросеть меня разбила. Вот инструкция [33] как настроить.
Лично я правда использовал оболочку HIARCS Chess explorer. Дальше я также дал людям на android потестить [34] leela в DroidFish. На Android используется дистиллированная сеть, попроще и поменьше, но все равно не слабая.
В принципе я могу расписать инструкцию на установку подробнее, добавить ссылок, пишите :=))
Кстати, такой вопрос, кто нибудь слышал про нестандартное применение NVENC и NVDEC? Вроде как его можно приспособить для ускорения математических операций. Я где-то про это прочитал, но там без подробностей было.
Автор: Balling
Источник [35]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/google/331201
Ссылки в тексте:
[1] открытым : https://github.com/LeelaChessZero/lc0
[2] данными: https://lczero.org/networks/
[3] как: https://habr.com/ru/post/343590/
[4] обучали: https://habr.com/ru/post/432370/
[5] тензорными ядрами: https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf
[6] википедию: https://en.wikipedia.org/w/index.php?title=Leela_Chess_Zero
[7] переборщил: https://habr.com/ru/post/436598/
[8] статья: https://habr.com/ru/post/468603/
[9] сколько: https://market.yandex.ru/search?cvredirect=2&text=nvidia%202080%20ti&local-offers-first=0
[10] Ray Tracing: https://rutracker.nl/forum/viewtopic.php?t=5770860
[11] работает : https://devtalk.nvidia.com/default/topic/1038845/cuda-programming-and-performance/rt-cores/
[12] NVIDIA OptiX: https://developer.nvidia.com/optix
[13] использовать : https://medium.com/@sulej.robert/the-moon-made-twice-at-home-a2cb73b3f1e8
[14] кожанная куртка: https://ru.wikipedia.org/wiki/%D0%A5%D1%83%D0%B0%D0%BD%D0%B3,_%D0%94%D0%B6%D0%B5%D0%BD%D1%81%D0%B5%D0%BD
[15] NVENC: https://en.wikipedia.org/wiki/Nvidia_NVENC
[16] статья : https://habr.com/ru/post/262563/
[17] YourChief: https://habr.com/ru/users/yourchief/
[18] ого-го: https://ffmpeg.org/pipermail/ffmpeg-user/2018-July/040609.html
[19] пару байт: https://github.com/keylase/nvidia-patch
[20] поверх : https://github.com/gnif/LookingGlass/issues/188
[21] эту технологию: https://github.com/vparitskiy/enable-disable-NVFBC/blob/master/README.md
[22] здесь: https://pastebin.pl/view/raw/45421e05
[23] это ограничение: https://www.nvidia.com/en-us/geforce/news/studio-driver/
[24] есть: https://github.com/rigaya/NVEnc/issues/119
[25] видео: https://youtu.be/WSW-5m8lRMs?t=258
[26] лучшего игрока: https://www.google.com/search?q=Ke+Jie&oq=Ke+Jie&aqs=chrome..69i64j0l5.1198j0j7&sourceid=chrome&ie=UTF-8
[27] ссылку: https://github.com/leela-zero/leela-zero
[28] скачал: https://github.com/leela-zero/leela-zero/releases
[29] отсюда: https://leela.online-go.com
[30] добровольного и распределенного: https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F
[31] TCEC: https://en.wikipedia.org/wiki/TCEC_Season_15
[32] отсюда: https://docs.google.com/spreadsheets/d/1-KAIfcaq5gwT90AlFNlqAWsmOehrCks86A88V47LDO0/edit#gid=375299081
[33] инструкция: https://blog.lczero.org/2018/09/guide-setting-up-leela-on-chess-gui.html
[34] потестить: https://4pda.ru/forum/index.php?showtopic=324262&st=900#entry86377029
[35] Источник: https://habr.com/ru/post/468775/?utm_source=habrahabr&utm_medium=rss&utm_campaign=468775
Нажмите здесь для печати.