Code Monkey home page Code Monkey logo

elmo_for_learn's Introduction

将棋ソフトelmo(評価関数生成用コード)

elmoは2017年の世界コンピュータ将棋選手権で優勝した将棋ソフトです。 本コードはelmoの評価関数を生成する開発者向けプログラムとなります。 対局用のプログラムはやねうら王を推奨していますが、旧Apery形式(2017年3月迄のApery)の評価関数を利用するプログラムであれば どのプログラムでも利用出来ます。2017年5月時点で以下プログラムで利用出来ることを確認しています。 (利用できることを保証するものではありません)

開発者の皆様へ

評価関数生成時はメモリを非常に必要とします。1スレッドで7GB, その後1スレッド増える度に2GB必要とします。 つまり、4コアで4スレッド利用する場合、15GBを必要とします。ご注意ください。

elmoの技術的特徴については、簡易なものですが以下をご参照ください。

バグ等を発見されましたら、twitterへご報告いただけますと幸いです。

コンパイルの方法

以下のようにコマンドを実行してください。

cd elmo/src
make -j 8 sse
mv elmo ../bin/

上記8はコンパイル時のスレッド数(幾つでも良いです)、sseはSSE4.2でのコンパイルを示します。 AVX2対応のCPUをご利用の場合は、sseをbmi2に置き換えてコンパイルしてください。

学習の方法

Step 0. 事前準備

  1. 評価関数生成に使うコンピュータの準備
  • CPU: SSE 4.2 対応のCPU(Core iシリーズ以降のアーキテクチャ)
  • メモリ: 16GB以上の空きメモリ(32GB以上のメモリを推奨)
  • OS: Ubuntu Linux 14.04以上(Ubuntu Mate 16.04で主に開発しています)。
  • コンパイラ等: g++ 4.8以上, make
  1. 初期評価関数の取得
  • elmo: https://t.co/NJQ95elVma にアクセスし、elmo.shogi.zipをダウンロードします。
  • 上記ファイルを解凍し、evalフォルダ配下の3ファイルをelmo/bin/20161007/に保存します。
  • 以下の通りファイル名を変更します。
    • KK_synthesized.bin → kks.kk.bin
    • KKP_synthesized.bin → kkps.kkp.bin
    • KPP_synthesized.bin → kpps.kpp.bin
  1. 初期局面集ファイルの取得

Step 1. 教師局面の生成

以下のコマンドを実行し、教師局面を生成します。

./elmo make_teacher roots.hcp <出力ファイル名> <実行スレッド数> <生成する局面数>

出力ファイル名は任意のものをご指定ください。 実行スレッド数は論理CPUコア数と同程度を目安に設定してください。 生成する局面数も任意ですが、100万程度(1000000)で実行してみてください。

最終的に50億局面程度必要となりますが、下記Step 2.でファイルサイズ分のメモリが必要となります。私(瀧澤)は1千万局面毎に生成し、メモリが許容出来るサイズ程度に結合(catコマンド)してStep 2.を適用しています。シャッフル後にそれらファイルを結合しています。

Step 2. 教師局面のシャッフル

Step 1.で生成した教師局面ファイル名を説明の為に以下、output.teacherとして記載します。

cd ../utils/shuffle_hcpe/
make
cd ../../bin/
../utils/shuffle_hcpe/shuffle_hcpe output.teacher <シャッフル後のファイル名>

Step 3. 評価関数の生成

Step 2.で生成した教師局面ファイル名を説明の為に以下、output.shuffleとして記載します。 以下のコマンドを実行し、評価関数の生成を行います。

./elmo use_teacher output.shuffle <実行スレッド数>

注意:実行スレッド数は搭載メモリ量およびCPUコア数を考慮し、決定してください。 必要なメモリ量の目安はページ上部の「開発者の皆様へ」の欄をご確認ください。 メモリが不足した場合、OSの動作が不安定となりますのでご注意ください。

謝辞

本Readmeは技巧を参考に同様のアウトラインで作成させて頂きました。 分り易く秀逸な文章と思います。この場を借りて感謝申し上げます。

本学習コードの大部分はAperyのコードをそのまま利用させて頂いています。 Apery無しにelmoの評価関数を作製することは非常に困難でした。心から感謝しております。

最後に、2017年の選手権での対局は評価関数と定跡部分を除き、やねうら王をそのまま利用していました。 elmoの優勝にやねうら王の貢献は欠かせないものでした。大会当日までご尽力頂き、頭が下がる思いです。

最後に

最近のコンピュータ将棋界は、開発者同士でワイワイやっています。

ご興味を持たれましたら是非大会への参加をご検討ください。開発者は全員歓迎すると思います。 大会出場には思考部分への独自性が必要となりますが、elmoもライブラリとして利用可能とする予定ですので、 私がApery/やねうら王を利用したように、ご利用頂ければ大変嬉しく思います。

「elmo」開発者 瀧澤 誠

elmo_for_learn's People

Contributors

hiraokatakuya avatar kenbin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.