Этот проект вдохновлён Alpha Go Zero и направлен на обучение глубокой нейронной сети среднего или выше среднего человеческого уровня для выполнения задач китайских шахмат. В настоящее время проект активно разрабатывается и ещё не завершён. Мы приветствуем pull request или star. Однако из-за ограничений вычислительных ресурсов такая масштабная задача не может быть выполнена на одном компьютере, что также является причиной того, почему я завершил распределённое обучение кода. Надеюсь, вы сможете присоединиться к нам и вместе обучить сеть, подобную Alpha Go в китайских шахматах.
По моим оценкам, когда сеть достигнет 4000–5000 очков Эло, она сможет достичь цели. Сейчас сеть достигла уровня около 3000 Эло, и достижение цели на уровне выше среднего человека не невозможно.
Текущий рейтинг Эло:
Эло |
---|
Подробная таблица результатов:
Конечно, текущая сила игры всё ещё средняя, потому что она была обучена полностью случайным образом. Например, фрагмент партии (800 playouts):
В настоящее время наш кластер уже имеет четыре машины с графическими процессорами (две Windows, две Linux), которые работают круглосуточно. Нам нужно больше, поэтому, если у вас есть полномочия на использование серверов с графическими процессорами в компьютерном зале Пекинского университета, пожалуйста, присоединяйтесь к нам, чтобы обучать китайские шахматы Alpha Go Zero.
Кластер разделён на master и slave. Присоединяющиеся к кластеру машины являются slave, а master и slave выполняют следующие функции:
Если вы хотите присоединиться к нашему обучению:
После клонирования проекта выполните следующую команду в командной строке:
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 — не единственное узкое место, и не рекомендуется запускать более чем в два раза больше количества ядер процессора.
После клонирования проекта запустите следующую команду в оболочке:
cd script
sh multithread_start.sh -t 10 -g 0 -p python3
Это означает запуск 10 процессов на GPU с номером 0 с использованием среды Python3 (аналогично версии для Windows).
Короче говоря, если вы хотите присоединиться к кластеру, сначала свяжитесь со мной, поскольку прямое присоединение к кластеру может привести к ситуации, когда мой код обновляется, но часть slave не обновляется, что может вызвать несоответствия и непредсказуемые последствия.
Если у вас нет машин в компьютерном зале Пекинского университета, но у вас есть некоторые машины вне его, и вы хотите запустить такую распределённую программу, выполните следующие шаги:
config/conf.py
и измените IP сервера на IP желаемой master-машины.initize_weight.py
в каталоге scripts
, чтобы создать первую случайную весовую матрицу.distributed_server.py
в каталоге distribute
, чтобы запустить мастер-сервис.scripts/daily_update.sh
. Измените этот файл оболочки в соответствии с вашими потребностями и добавьте его в crontab для запуска один раз в час (он проверит количество игр, и когда их будет достаточно, он выполнит работу по обновлению модели и оценке).Игры, созданные slave-машинами, находятся в каталоге data/distributed
в формате CBF. Их можно просмотреть с помощью программного обеспечения «Сянци-мост» или в блокноте ipynbs/see_gameplay.ipynb
.
Состояние обучения модели в кластере можно просмотреть в блокноте master
ipynbs/elo_graph.ipynb
.
Есть ещё много вещей, которые можно сделать, и разработка всё ещё продолжается. Вот некоторые из них:
Если у вас есть идеи, которые вы хотели бы реализовать, отправьте pull request или свяжитесь со мной.
Некоторые детали этого проекта опубликованы в виде черновика по адресу: http://icybee.cn/article/69.html.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )