БлогNot. Lc0 - как установить и настроить чудо-движок на обычной персоналке?..

Lc0 - как установить и настроить чудо-движок на обычной персоналке?..

Времена, когда среди шахматных движков доминировал "Стокфиш", заканчиваются, новый движок Leela Chess Zero, он же Lc0 (Вики), он(а) же "Лила", основанный на идеях AlphaZero, стал побеждать "Вяленого" регулярно.

Решил и я посмотреть это чудо, применяя всё ту же старую добрую "Арену" в качестве оболочки (описано по первой ссылке).

Скачать последнюю версию можно вот отсюда, обычные архивы .zip

Правда, сразу же вызывают вопрос загадочные суффиксы blas, cuda, opencl в названиях сборок.

Они означают просто тип видеокарты, которой движок будет активно пользоваться для расчётов, вот вольный перевод инфы из официального блога:

Теперь двоичный файл называется Lc0. Он использует 3 бэкэнда, CUDA, BLAS и opencl.

CUDA является самым быстрым из всех с большой разницей, и он предназначен для графических процессоров Nvidia, которые поддерживают библиотеки CUDA и cuDNN.

OpenCL предназначен для графических процессоров, которые не поддерживают CUDA, например, AMD.

BLAS преназначен для запуска Lc0 не с графическим процессором, а с основным процессором. Это НАМНОГО медленнее.

Я скачал CUDA, так как у меня Nvidia, и распаковал в папку движков "Арены":

распаковка Lc0 в папку движков "Арены", скриншот окна WinRAR
распаковка Lc0 в папку движков "Арены", скриншот окна WinRAR

Похоже, если у Вас Win32, а не Win64, то опаньки... какие-то сборки работают и с Win32, но где их искать?

Говорят, вот тут, но тоже не работает из-под "Арены" на Win32 - сам движок из консоли Win32 отвечает, но в оболочке (BLAS) просто бесконечно думает над первым ходом (или первым не из дебютной книги)

Затем берём для Лилы нейросетку вот отсюда (Up: с некоторых пор этот адрес не работает, актуальные ссылки - эта или вот эта).

Если скачался файл без расширения и с каким-то диким именем - добавьте к нему .zip, это всё равно архив с файлом .pb внутри.

Теперь на странице "актуальных сеток" они разделены по группам с пояснениями, какая для чего служит, например, "10 blocks x 128 filters"- это для игры процессором без видеокарты.

Выбор конкретной сетки - тема для отдельного холивара, реально можно брать любую из последних с ELO, начинающимся на 32XX, я для начала скачал номер 42534. Внутри архива будет один-единственный файл с расширением .pb, извлекаем его туда же, куда развернули движок (в моём случае - папка C:\Arena\Engines\Lc0).

Итак, просто кладём файл сети в папку с движком. Пишут, что без файла сети программа не запустится, и желательно иметь только один файл сети *.pb в папке движка, чтобы не путаться.

Далее устанавливаем Lc0 из Арены как обычный движок UCI, то есть, запускаем Arena.exe, в программе жмём F11 (Менеджер движков), в окне менеджера выбираем вкладку Детали (Details), жмём кнопку Мастер установки (Installation wizard), кнопка Вперёд (Forward), показываем на папку движка, опять Вперёд, выбираем и отмечаем "галочкой" файл lc0.exe, потом пару раз опять жмём кнопку Вперёд, правильно выбираем тип движка UCI и, наконец, тыкаем "Применить".

Первый запуск обычно более долгий из-за оптимизации под систему.

Пусть сыграют чуток с установленным следом Стокфишем 10, нажимаю F9 (окно Турнира), кнопку Новый, называю турнир в окне диалога, кнопочкой с треугольником влево добавляю в "Участники" нужные движки, кнопкой "Уровень" ставлю блиц по 5 минут:

Настройки простейшего турнира в "Арене"
Настройки простейшего турнира в "Арене"

Жмём "Старт"... и Lc0 падает сразу на выходе из дебютной книги (обоим движкам подключил в настройках стандартную книгу "Арены"), хотя железо, вроде, не самое худшее.

Как проверять Leela Chess Zero: как и другие UCI-движки.

Запустить файл lc0.exe, ввести в консоли

uci

[Enter] и посмотреть, что пишет. Если состояние нормальное, введите команду

go infinite

[Enter]. Если начнет считать - значит, проблем нет, и оболочка также должна работать с движком.

Похоже, моей видеопамяти ему таки мало, для нормальной работы нужно хотя бы 1.5-2 Гб видеопамяти или больше.

Переустановив движок на версию сначала OpenCL, а потом blas, добился лишь того, что движок стал все пять минут думать над первым ходом :)

На blas он задействовал при этом более 500 Мб оперативки.

В итоге, догадался взять сеть "поменьше", с номером на 36XXX из того же списка, учтите только, что старые архивы выложены криво, как файлы без расширения, но открыть их WinRAR-ом можно всё равно.

После этого турнир с 10-м "Стокфишем" из 4 партий по 5 минут + 3 секунды заработал, правда, в первой же партии "Лила" получила мат и вообще проиграла матч 0:4 :)

Комп, на котором проверял, имеет такую конфигурацию:

Intel Core i5 3,2 Ггц 4 ядра 16 Гб оперативки

Видеокарта NVidia 512 Мб видеопамяти

В общем, пишут, что без мощной видеокарты добиться победы над "Вяленым" нереально.

Зато при некоторых конфигурациях реально получить настоящего электронного тролля.

Сеть для "Лилы" 32 особенно склонна к троллингу, хотя никто её специально на это не программировал.

Итак, Lc0 здесь:

  • отдала ладью,
  • поставила ферзя,
  • отдала ферзя,
  • поставила коня,
  • отдала коня,
  • поставила ладью,
  • отдала слона,
  • затем одной ладьей матовала до истечения правила 50 ходов :)

Смотреть примерно с сотого хода.

P.S. Для просмотра партии подгружается плеер ChessTempo с внешнего ресурса.

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

P.P.S. В "Стокфиши", начиная с 12-го, нейросеть NNUE уже входит, так что ставить отдельно "Лилу" к 2020-му году стало незачем.

Осенью-2023 "Лила" версии lc0-v0.30.0-windows-cpu-openblas из того же источника с сетью T1-512x15x8h-distilled-swa-3395000 отсюда проиграла +0=0-4 16-му Стокфишу, контроль 5 мин. + 2 сек., без дебютных книг. Хода до 30-го Leela "держится", потом делает проигрывающий ход, теряет пешку или качество и получает мат.

11.06.2019, 18:39 [6245 просмотров]


теги: ошибка шахматы софт ai железо

показать комментарии (1)