1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/icybee-icyChessZero

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 00:44 2afc5da

IcyChessZero: Китайские шахматы Alpha Zero

Этот проект вдохновлён Alpha Go Zero и направлен на обучение глубокой нейронной сети среднего или выше среднего человеческого уровня для выполнения задач китайских шахмат. В настоящее время проект активно разрабатывается и ещё не завершён. Мы приветствуем pull request или star. Однако из-за ограничений вычислительных ресурсов такая масштабная задача не может быть выполнена на одном компьютере, что также является причиной того, почему я завершил распределённое обучение кода. Надеюсь, вы сможете присоединиться к нам и вместе обучить сеть, подобную Alpha Go в китайских шахматах.

По моим оценкам, когда сеть достигнет 4000–5000 очков Эло, она сможет достичь цели. Сейчас сеть достигла уровня около 3000 Эло, и достижение цели на уровне выше среднего человека не невозможно.

Текущий рейтинг Эло:

Эло

Подробная таблица результатов:

Конечно, текущая сила игры всё ещё средняя, потому что она была обучена полностью случайным образом. Например, фрагмент партии (800 playouts):

Рекомендуемые среды выполнения кода

  • Python==3.6.0
  • TensorFlow==1.4.0
  • ThreadPool==1.3.2
  • Xmltodict==0.11.0
  • Urllib3==1.22
  • Numpy==1.14.3
  • Tflearn==0.3.2
  • Pandas==0.19.2
  • Scipy==1.1.0
  • Matplotlib==2.0.0
  • Tqdm==4.19.4
  • Tornado==4.5.1 (обязательно установить на master, не требуется на slave)
  • UVloop==0.9.1 (можно не устанавливать на Windows)

Рекомендуемая аппаратная среда

  • Машины находятся в компьютерном зале Пекинского университета почты и телекоммуникаций (если вы не присоединяетесь к нашему кластеру или создаёте свой собственный кластер, это не имеет значения).
  • Серверы Windows или Linux.
  • Память 16 ГБ или больше.
  • 4 или более физических ядра процессора.
  • Одна или несколько видеокарт, способных выполнять вычисления глубокого обучения.

Присоединяйтесь к нашему кластеру для обучения (только в Пекинском университете почты и телекоммуникаций)

В настоящее время наш кластер уже имеет четыре машины с графическими процессорами (две Windows, две Linux), которые работают круглосуточно. Нам нужно больше, поэтому, если у вас есть полномочия на использование серверов с графическими процессорами в компьютерном зале Пекинского университета, пожалуйста, присоединяйтесь к нам, чтобы обучать китайские шахматы Alpha Go Zero.

Кластер разделён на master и slave. Присоединяющиеся к кластеру машины являются slave, а master и slave выполняют следующие функции:

  • Slave: отвечает за автоматическое получение последних весов модели от master, самостоятельную игру и автоматическую загрузку игр на master.
  • Master: отвечает за предоставление весов slave, обновление модели, оценку и получение игр от slave.

Если вы хотите присоединиться к нашему обучению:

  1. Сначала свяжитесь со мной по QQ/WeChat: 892009517 или электронной почте: icybee@yeah.net. Поскольку проект всё ещё находится в стадии быстрой итерации, часто требуется обновлять код, и важно поддерживать связь со мной, чтобы получать актуальную информацию или обновления кода.
  2. Если вы действительно не хотите связываться со мной, вы можете напрямую присоединиться к кластеру (не рекомендуется):

Windows-машины присоединяются к кластеру (только в компьютерном зале Пекинского университета)

После клонирования проекта выполните следующую команду в командной строке:

cd script
./multithread_start.bat [thread_number] [gpu_core] [python_env]

Например:

./multithread_start.bat 10 0 python3

Это означает запуск 10 процессов на GPU с номером 0 с использованием среды Python3 (обычно один GPU 1080ti может поддерживать до 24 процессов), но GPU — не единственное узкое место, и не рекомендуется запускать более чем в два раза больше количества ядер процессора.

Linux-машины присоединяются к кластеру (только в компьютерном зале Пекинского университета)

После клонирования проекта запустите следующую команду в оболочке:

cd script
sh multithread_start.sh -t 10 -g 0 -p python3

Это означает запуск 10 процессов на GPU с номером 0 с использованием среды Python3 (аналогично версии для Windows).

В общем

Короче говоря, если вы хотите присоединиться к кластеру, сначала свяжитесь со мной, поскольку прямое присоединение к кластеру может привести к ситуации, когда мой код обновляется, но часть slave не обновляется, что может вызвать несоответствия и непредсказуемые последствия.

Создание собственного кластера

Если у вас нет машин в компьютерном зале Пекинского университета, но у вас есть некоторые машины вне его, и вы хотите запустить такую распределённую программу, выполните следующие шаги:

  1. Убедитесь, что вы готовы к этому, это трудоёмкая, дорогостоящая и сложная работа, но интересная.
  2. Рекомендуется, чтобы ваша машина (ы) соответствовала рекомендуемой конфигурации, и были установлены необходимые пакеты.
  3. Master-машина обязательно должна быть Linux (в настоящее время нет поддержки master на Windows).
  4. Создайте форк кода IcyChessZero, найдите файл config/conf.py и измените IP сервера на IP желаемой master-машины.
  5. На master и slave клонируйте этот форк.
  6. На master запустите initize_weight.py в каталоге scripts, чтобы создать первую случайную весовую матрицу.
  7. На master запустите distributed_server.py в каталоге distribute, чтобы запустить мастер-сервис.
  8. На slave-машине запустите процесс slave так же, как описано в разделе «Присоединение к кластеру».
  9. На master можно запустить несколько slave-процессов, если есть свободные ресурсы.
  10. Методы обновления модели и проверки описаны в файле scripts/daily_update.sh. Измените этот файл оболочки в соответствии с вашими потребностями и добавьте его в crontab для запуска один раз в час (он проверит количество игр, и когда их будет достаточно, он выполнит работу по обновлению модели и оценке).

Просмотр игр

Игры, созданные slave-машинами, находятся в каталоге data/distributed в формате CBF. Их можно просмотреть с помощью программного обеспечения «Сянци-мост» или в блокноте ipynbs/see_gameplay.ipynb.

Просмотр состояния обучения

Состояние обучения модели в кластере можно просмотреть в блокноте master ipynbs/elo_graph.ipynb.

Невыполненные задачи

Есть ещё много вещей, которые можно сделать, и разработка всё ещё продолжается. Вот некоторые из них:

  1. Добавить метаданные к играм, такие как анализ MCTS для каждой ступени, для детального изучения отдельных случаев. 2. Реализовать определение длинных пешек и длинных коней.
  2. Ограничить приём master только играми с той же версией, что и у него.
  3. Создать веб-интерфейс для отображения реального времени elo и игр.
  4. Улучшить документацию модуля. .....

Если у вас есть идеи, которые вы хотели бы реализовать, отправьте pull request или свяжитесь со мной.

Некоторые детали этого проекта опубликованы в виде черновика по адресу: http://icybee.cn/article/69.html.

Контакты:

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/icybee-icyChessZero.git
git@api.gitlife.ru:oschina-mirror/icybee-icyChessZero.git
oschina-mirror
icybee-icyChessZero
icybee-icyChessZero
master