2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

tweet

  • tweets

« 異端のアプローチ | トップページ | 24への道 »

各種データ採取

企画書に対し、幸いH取締役もGさんもそこそこ興味を持ってくれたようで、マシン利用はOK、また研究所側でも研究ネタとして何かできないか考えてみたいので、打合せしようという話になりました。

8月中は皆さん夏休みで都合が合わず、8/31にH取締役、Gさんともう1人研究所のIさんに私の4人で最初の打合せをしました。このときは私は新横浜にある子会社に出向していて、まだ本業とは関係ないため、本業の仕事が終わってから(業務でなく個人として)川崎の研究所に行き、そこで打合せ、でした。お互いのスタンスを確認し、当面のマシン利用のことをいろいろ相談しました。

研究所側としては、機械学習やクラスタ並列は技術として汎用性があるので、将棋をネタにしてこれらを研究するのは面白そうだし有りだと思う、とのこと。ただ当然ながら、すぐに予算つけてどうこうというわけではありません。年度(4月~翌3月)ごとに研究計画を作って予算を立てるので、まずは本業の(今年度計画の)研究をやる傍ら、3月までは「アングラで」コンピュータ将棋について調査し、研究テーマにできそうなら来年(12年)度から公式の研究計画に組み入れて、4月から堂々とやろう、というスタンス。GさんとIさんはこのスタンスで、本業の研究の合間に少しずつ将棋も考える、という感じで始めました。

マシンについては、F研究所ですからマシンはまあたくさんありまして、遊んでいるマシンを数台私が使っても研究所側はほとんど困らないし、かかるコストかかるもせいぜい電気代くらい。コストもリソースもほとんどかけず、うまくいけば新しい研究テーマが見つかるかもしれない。一方私としては、元々研究所に開発を手伝ってもらおうというつもりはなく、当面マシンさえ貸してもらえれば万々歳だったので、お互いメリットがあるということで、この体制で協力がスタートしました。結局12年度の計画には将棋は入らなかったのですが、それがはっきりする12年2月までこの体制が続きました。

Iさんがマシンの担当になってくれて、さっそく翌9/1から準備が始まり、9/5にはマシンが使えるようになりました。このとき用意してもらったマシンは、第1回電王戦で使ったブレードサーバ(BX400)よりひとまわり大きいBX900という、ブレード(=CPUが2個載ったサーバ1台に相当)が18枚刺さるマシンのうち、8枚ぶんを使わせてもらえることになりました。CPU正確に覚えてませんが、たしかnehalem世代の4コアXeon 3.3GHz x 2ソケット/ブレード、だったと記憶してます。計64コア。それまで自宅で使っていたのは、980X(6コア)、2600K(4コア)、AMD 1100T(6コア)の計16コアで、CPUもばらばらだと性能測定等で条件を揃えての実験ができなかったので、同じCPUを64コア使えるのは大変ありがたかったです。このあと、12年2月までほぼずっとこの64コアを占有して使っていました。

このマシンを利用して、これまでやりたくてもできなかったいろいろな実験を始めました。9月始めから、10月下旬くらいまで。このときやった実験のいくつかの結果を記しておきます。ちょっとテクニカルな話になりますが、「コンピュータ将棋の開発ってのはこういう感じなのか」というのを多少でも感じていただければと思います。

(1) 1コア x Nノード構成によるレーティング向上度測定

ボンクラーズ/Puella αのクラスタ並列方式では、1つのコアが「マスター」となって探索の全体を指揮します。他のコアは「スレーブ」となり、実際の局面探索を分担して行います。スレーブは複数あってよく、また1個のスレーブが複数コアを使ってよいですが、各スレーブはそれぞれ1枚のブレードに収まらなくてはならないという制限がつきます。上記の構成だと、ブレード1枚に8コア載っているので、各スレーブは最大8コアということになります。スレーブの個数のことを「ノード数」と呼びます。たとえば8コアのスレーブを2個使うなら「8コア x 2ノード」のように記します。

まずやったのは、スレーブが1コア x Nノードの構成が、1コア x 1ノード(つまり、クラスタ並列なし)に比べてどれだけ強くなるか、です。Nを変えて、1コア x Nノードと1コア x 1ノードを各Nごとに300局ずつ対局させました。結果は次の通りです。

  複数ノード側
  から見た勝敗  勝率
N=2 169勝123敗    0.579
N=3 171勝122敗    0.584
N=4 191勝104敗   0.647
N=5 189勝102敗   0.649
N=6 204勝 93敗   0.687
N=7 191勝103敗   0.650

6ノードで勝率 0.687 (1ノードに対して)がピーク、となりました。この勝率はレーティング差に換算すると135程度です。ちなみに引き分け(千日手)は除いているので勝と負の和が300ぴったりではないです。N=4->5でなぜかほとんど良くなっていませんが、まあ確率的な誤差の範囲だと思います。

このとき使ったバージョンは、11年5月のWCSCで使用したものに近いです。このバージョンを「ボンクラーズ」、または「11年版」と呼んでいます。12年1月の対米長戦までは、11年版を使っていました。11年5月から12年1月の間に少しずつ改良を加えていますが、基本となるアルゴリズムは変わっていません。

12年5月のWCSCに向けての次期バージョンの開発は11年5月のWCSC直後から始めていて、これは12年の3月頃に動きだします。これを「Puella α」または「12年版」と呼んでいます。上記の実験結果は11年版です。12年版ができたときにはF社は手を引いていたため、12年版に対して同様のデータは取れていません。たぶんPuella αの方が良くなってるだろうとは思うのですが。

F社マシンを使う前は、CPUを揃えようと思うと6コアが最大だったので、6コアのうち1つをマスター、4つをスレーブ(1コア x 4ノード)、1つを相手(1コア x 1ノード)、とするのが精一杯でした。7ノードまでできるようになったのは大きな収穫でした。

(2) スレッド並列のNコアによるレーティング向上度測定

クラスタ並列に対して「スレッド並列」という言葉があります。大雑把に言うと、複数台のPCがネットワークを介して協調するのがクラスタ並列、1台のPCの中の複数コアどうしが協調するのがスレッド並列です。(ブレード1枚はPC1台相当で、複数ブレードはクラスタ並列)

ボンクラーズの本題ではないのですが、スレッド並列の効果も棋力と大いに関係あるため、マシンが入手できたついでに測定してみました。
Nコアスレッド並列 vs 1コア でやはりNを変えて各180局ほど対戦させました。結果は以下です。

  複数コア側
  から見た勝敗  勝率
N=2 111勝66敗    0.627
N=3 132勝38敗    0.776
N=4 126勝44敗   0.741
N=5 142勝31敗   0.821
N=6 149勝31敗   0.828
N=7 143勝31敗   0.822

6コアで勝率 0.828 (1コアに対して)がピーク、となりました。この勝率はレーティング差に換算すると275程度です。クラスタ並列よりスレッド並列の方がだいぶよくなっています。

6コアがピークになり、「あれ?7コア以上は効果ないのか?」と一瞬思いましたが、よく調べると、構成が不適切だったせいでした。ハッシュテーブルというのがあるのですが、これはコア数が増えるとより多く必要なのに、増やすのを忘れたせいでした。このように、ちょっと構成を変えただけで結果がかなり変わるというのはよくあることで、開発者としては非常に悩まされたところです。

そこで、ハッシュを増やして N=6,7,8 が N=5 に対する勝敗・勝率・レーティング差を求めました。相手をN=1でなく、より釣り合うN=5に変えています。

N=6  140-149  0.484 (R-10)
N=7  166-131  0.559 (R+40)
N=8  179-116  0.607 (R+75)

今度はN=8までレーティング上昇が確認されました。N=6で下がったのは誤差の範囲でしょう。

8コア/ブレードのマシンでは、9コア以上のスレッド並列の実験はできません。ですがこの後、一時的に12コア(6コア x 2ソケット)のマシンを貸してもらい、N=12,10 vs N=8 も試しました。

               勝率  レーティング
N=10   98- 74 0.569  +50
N=12  157-131 0.545  +30

時間の関係か、10vs8は途中で終わっており、対局数がやや少ないです。これだとN=10の方がN=12よりよいのですが、対局数が少ないための誤差なのか、12コアあたりで向上がサチュって(止まって)いるのか、これだけでは何とも言えません。12コアマシンは1台しか使えなかったので、10 vs 12はできませんでした。今から考えると気になるところなのですが、なぜここでやめたんだっけ?ちょっと思い出せませんが、メールの記録によると12コアマシンを使っていたのは10月下旬なので、次回書く24向け開発が佳境だったはずで、そちらを優先したのかもしれません。このように、本来やるべきことなのに何かの拍子でやり損ねた、ということも実はけっこうあったりします。

(3) スレーブの1ノードを7コアにして6ノード vs 1ノード の効果測定

実験(1)では「1コア x 6ノード vs 1コア x 1ノード」で前者がレーティング135高かったですが、これがスレーブ1コアでなく7コアでも同様か?を確認するものです。

7コア x 6ノード vs 7コア x 1ノードの対戦結果
   ->  6ノードが 203勝93敗  勝率 0.686 (R+135)

6ノード vs 1ノードでは、ノードあたり1コアでも7コアでも変わらず効果が出ているようです。

(4) 6コアx1ノード vs 3コアx2ノードの差

実験(1)と(2)を比較すると、同じだけのコア数を使うなら、できるだけスレーブの個数を減らして1スレーブあたりのコア数を増やす方が良さそうに思えますが、実際そうか?どのくらい効果があるか?を調べるものです。

6コアx1ノード vs 3コアx2ノード の対戦結果
   ->  6コアx1ノードが 149勝144敗  勝率 0.509 (R+5)
でした。「同じコア数なら、可能な限りクラスタ並列よりスレッド並列を優先すべし」はたぶん間違いないと思うのですが、この実験ではあまり効果がわかりませんでした。

実験は基本的にずっとマシン上で対局させてるだけで、時間はかかりますが手間はそれほどかかってません。floodgateと同じ15分切れ負けでやってたはずで、大体1局20分くらい。3局/時、72局/日。300局だと4日強くらいでしょう。1コアNノードはブレード複数使って並行して対戦できますが、7コア6ノードとかは同時に2つはできません。そのため、ブレード8枚あっても2か月とかかかるわけです。

前に書いたとおり、9月初めにK常務から電王戦の話が来て、また12年版の開発も進めてまして、9~10月は対戦実験・電王戦対応・12年版開発の3つが同時に進行していました。

ところで、ここまでこの記事を読んでこられた方の中には、「これほんとに将棋の話なの?」と思われた方も少なくないかもしれません。銀とか桂とか、矢倉とか中飛車とか、そういう「将棋っぽい」単語は一切出てきていません。実際私も、上の実験をやっている間、棋譜を見たり敗因を分析したりといったことは全くやっていません。ひたすら機械的に何百局と対戦させ、データとして勝率を測定しているだけです。以前の記事で「大事なのは勝率。一局一局の勝敗には興味ない」と書いたことがありますが、その意味がわかっていただけたのではないかと思います。

これは私だけ特別なのではなく、他のソフトでも大体これに近いはずです。開発当初はバグがあるため、それを調べるのに盤面を見て原因を追っていくこともありますが、完成してしばらくして大方のバグが取れると、あとはひたすら
  プログラムを変更 -> 数十~数百局対戦させ、勝率が上がったか確認
を繰り返す感じとなります。web系開発でいうA/Bテストみたいな感じというか。上記でやってるのはマシン構成を変えてるだけでプログラムを修正してはいませんが、「変更->数百局対戦で確認」という流れは同じです。

普通に将棋を指す人の感覚としてはまず理解しがたいだろうと思いますし、実際私も(たぶん他の多くの開発者も)、慣れないうちは奇妙な感じを覚えました。ですが結果的に、「将棋の神様」により近づくには、このようなアプローチの方が早道、というのは何とも不思議と言えば不思議です。

私もだいぶ昔には、たとえば「銀ばさみの形をマイナス」などというのをいちいちプログラムしていたこともありますが、だいたいそういうのは非常に限られた局面しか効果がなく、勝率でいうとほとんど変わらないものです。それよりも、探索を効率化・高速化して深く読むのは、どんな局面でも効果があり、勝率に大きく影響します。ですので、特に私のように会社員をしながら限られた時間をやりくりしていた開発者にとっては、少ない開発時間をどこにかけるかというと、将棋の知識をプログラムするよりも、探索の高速化の方が費用対効果が高い、ということになります。

« 異端のアプローチ | トップページ | 24への道 »

電王戦記録」カテゴリの記事

コメント

スレッドを増やして強くなっているということは 1つの手を深く読む力があったら 他の色んな手を読む時間に回した方が 強くなってるってことなのか☆?

よし、そうと分かったら 自分の頭にも応用して 将棋ウォーズで将棋指してくるぜ☆!

読んでて頭がパンクしました。( ^ω^ )

伊藤さん、こんにちは。

将棋ソフトの登場で、アマ棋界は以前より活性化しています。わざわざ道場に足を運ぶ必要はなくなり、いつでも家でソフト相手に将棋が指せるようになりました。弱かった時代もありましたが、今では鬼のように強くなり、上位のソフトはプロ棋士を大差で打ち負かすほどになっています。ソフトはいつも全力で手加減をせず、真夜中でも早朝でもこちらの指したいときに相手をしてくれます。負かしても文句ひとつ言わない。人間相手とちがって、ひとつも厭な思いをしません。その点では最高の「人格者」でしょう。インターネット将棋や強い将棋ソフトの普及で、アマチュア棋界はますます興隆していくと思います。

これとくらべて気がかりなのが日本将棋連盟、プロ棋界の行く末です。将棋ソフトの実力がプロ棋士に追いつき追い抜いていったとき、この事態にどういう対応をするかは連盟にとって非常に重要な事柄でした。長年見下してきた相手(コンピュータ将棋)に歯が立たなくなり、将棋がいちばん強いという唯一の美質が失われるという現実にどう応ずるのか。がんばってもう一度抜き返すという実力は絶対にないでしょうから、これからは「コンピュータ将棋よりも弱いプロ棋士」という寂しい立場に、おそらくは永遠に縛りつけられることになります。その境涯は変えられないし、強いふりをして世間をだましつづけることもできません。

プロ棋士に対して一部の将棋ファンがもっていた多少の敬意は、彼らの人格に対するものではなく、将棋の実力に対するものでした。だからもっと強いものが登場してきたことによる影響は大きく、敬意の減少は避けらないでしょう。プロ棋士の地位が徐々に下がって、アマチュアに近づいてくるとも考えられます。将棋のプロとアマとは今のところ厳格に分けられていますが、両者間の境界意識はゆるんでいくでしょう。プロ棋士は私たちアマチュアより比較的、相対的に強いだけであって、絶対的な強者ではもうないからです。コンピュータ将棋の前では同じように弱い者たちを、適当なところで線を引いて、ここから上は「プロ」、これ以下は「アマ」と明確に分けて見せることに大きな意味があるのかどうか。そういう意識上の問題も生じてくると思います。

将棋ソフトはハードの進歩とともに、これからもどんどん強くなってゆきます。強さが頭打ちになることは当分ないでしょう。今のところ将棋ソフトの大会はそれほど人気はありませんが、それは開発者たちに商売っ気がないからであって、よい演出者がつけばどうなるかわかりません。地上最強という、プロ棋士にない大きな美質をもっているのですから、やり方次第で何とでもなります。将棋の内容も「切った張った」で緊迫感があり、個人的には現段階でも、定跡をなぞるばかりのプロ棋士の将棋より、コンピュータ将棋のほうがずっと面白い。やり方を工夫すれば、立派に商売になります。

追いつかれ追い抜かれるという重要な時期に、将棋連盟は非常にまずい(というより最悪に近い)対応を繰り返してきました。対局禁止令以来、連盟の行動はコンピュータ将棋に対する恐怖と憎悪に貫かれています。こういった負の感情以外のものが連盟を動かしたことは一度もなく、この悪しき傾向はついに変わることがありませんでした。いろいろと言い訳をしていますが、私はまったく信用していません。連盟が何を言ったかではなく、連盟が何をしたかを見るのが重要です。いくらでも嘘はつけますが、行動はそうはいかないからです。

連盟はコンピュータ将棋との共存共栄など毛ほども望んでいないし、コンピュータに負けて大丈夫というわけでもありません。本当にそうなら、記者会見が通夜になったりしないでしょう。ソフトの進歩を訳知り顔で当然視したり、歓迎したりするような発言をする棋士もいますが、もちろん口だけです。プロ棋士は自分たちの地位を低いところに落とした将棋ソフトとその開発者たちが憎く、そうなってしまった自分たちの境涯が呪わしく、最強だったころの佳き日々を回想しながら今を生きています。

第三回電王戦ではソフト開発者を一切排除して、連盟が一方的に新ルールを決めました。開発者を排除した理由も、ルール内容を変更した理由も、連盟は一切説明しようとしません。記者の口も封じて質問すら許さない。異常なことです。あの日のルール発表で、連盟はコンピュータ将棋との真剣勝負を全面的に拒絶しました。二度とやらないという宣言です。ファンのささやかな希望(プロ棋士と将棋ソフトの対局)は、永遠に実現しないでしょう。共存共栄どころか、ソフト開発者に最後通牒を突きつけたに等しい。俺たちに屈服しろ。それがいやなら出ていけいうわけです。

ソフトもハードも開発者の手を離れて、将棋連盟の管理下にあります。五か月あればいろいろなことができたでしょう。もはや真剣勝負どころか「なぞり将棋」ですらありません。ハードやソフトに五か月間でどういう処理と細工が施されているか、開発者も将棋ファンも一切知ることができない。すべては闇の中です。五人の棋士があたかも自宅で研究しているかのように見せかけていますが、本当の研究は別の場所で、別の人間がやっているでしょう。

第三回電王戦のルールは、コンピュータ将棋の進歩という新事態に対する、将棋連盟のこのうえなくあからさまな返答であり、最終的な意志表示でした。勝てなくて不愉快だから、将棋ソフトとは今後一切まともな対局はしない。連盟とかかわりたいならば、こちらの決めたルールに一方的に従ってもらう。ソフト開発者とは、どんなことであれ一切協議しないし、興行や運営に対するいかなる関与も認めない。開発者だけではなく、真剣勝負を望む多数のファンに対しても、将棋連盟は敵意をむきだしにして隠そうともしません。他者に対してどれほどにどす黒い憎悪を抱けば、ひとつの組織が恥も外聞もなくこういう行動がとれるようになるのか。やはり普通の団体ではないのでしょう。私たちよりすこし強いだけで、コンピュータ将棋よりも明らかに実力の劣る人たちが、将棋ファンに対してこういう傲岸な態度をつづけていても大丈夫なのかどうか。将棋連盟の行く末が本当に気がかりです。

長文で失礼しました。

この辺の話は興味があったので面白かったです。特に、ノードを単純に増やしても6ノードがピークで、7ノードだと強くならなかったという件が。
クラスタの数だけなら伊藤さんより何倍、何十倍も多い開発者の人もいるのに、コンピュータ将棋選手権の順位が単純に台数の多い順にならないのは
やっぱりクラスタで強さを引き出すには難しい部分があった為なのか、と改めて納得出来ました。
あまりにクラスタが多いと、クラスタ間のやりとりの負担の方が大きくなり、指し手を十分に検討出来ず弱くなるという事が、たった6ノードぐらいでも起きてしまうとは驚きでした。
数台のクラスタの性能を存分に引き出して、何百台ものGPSクラスタに勝ったボンクラーズも
何百台ものクラスタを正しく制御して、棋力の向上に成功しているGPS将棋も、どちらも凄いのだなあと思いました。
実際は分かったつもりになっているだけなので、このような私の理解で正しいのか非常に不安ですが(笑)

棋士のみに研究を許す今のルールはどう考えてもバランスが悪すぎます。

開発者にも研究を許すー>バージョンアップを認める事は最低限必要でしょう。

無制限com vs 森内さん、羽生さん、渡辺さん
各5戦 計15戦 週1戦 4ヵ月の死闘 各プロ3週間に1戦
対局料 各プロ2億円 連盟1億円 開発者1億円
対局視聴料(動画)1局1000円
今年でしょ!

>棋士のみに研究を許す今のルールはどう考えてもバランスが悪すぎます。
>開発者にも研究を許すー>バージョンアップを認める事は最低限必要でしょう。
開発者と棋士の「研究」を同列に並べてフェアにしようという考え方はむしろフェアじゃない気がします。
極端な話ですがコンピュータ側は戦型を変えるどころかプログラムをまるまる変えることもできます(人に例えると羽生さんを森内さんに変えてしまうくらいでしょうか。。)ですので棋士側の研究が全くの無意味になる可能性があります。

チラ裏ですがバランスを取るのではなく、第二回のようにコンピュータ側制限なしの全力勝負、もしくは第三回のように人間側は1敗でもしたらお察し、くらいのほうが観戦者側としては楽しめるのではないか、と最近では思うようになりました。

>「大事なのは勝率。一局一局の勝敗には興味ない」
とのことですが

伊藤さんは電王戦のPVで
>「一敗と一引き分けの内容が。(プロ棋士は)実力で勝ったわけじゃない」
と言っています

将棋の内容ではなく勝率で将棋の神様に近づくならば、
伊藤さんの電王戦PVでの将棋の内容に言及した発言には違和感があります

伊藤英紀先生
将棋界への多大な貢献、いつも感動しております。
電王戦は大変盛り上がり、素晴らしかったと思います。

伊藤先生を誹謗中傷する記事は大変残念でなりません。
しかし、日本将棋連盟と開発者の方々の力でもりあがった電王戦を見て、楽しませていただいた者としましては、将棋連盟と伊藤先生が裁判で争うのは残念なものです。

伊藤先生のお気持ちはごもっともですが、裁判をせずに解決する道はないものでしょうか?

ぜひ今一度ご検討の上、お考えをお聞かせください。

よろしくお願いいたします。

羽生善治様

提訴する前にこちらから話し合いを提案したのですが、連盟側が拒否してきました。私としては話し合えば誤解の解ける部分もあるかもとは思っているのですが、むこうの態度がああでは、こちらとしてはどうしようもないです。

連盟と話し合い出来ていたら、誤解を解くこと以外に、共存発展の提案が出来たかも知れませんね。
何かアイデアみたいなもの持っておられました?
私、ぽつぽつ無記名コメントしてますが、この人からまた来たな、とか伊藤さんは分かるのでしょうか?
閲覧者が分かるのは嫌ですけど、伊藤さんが分かればいいなと思っています。

9番目にコメントしておられる方は羽生善治さんその人なのでしょうか?

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/507007/55106425

この記事へのトラックバック一覧です: 各種データ採取:

« 異端のアプローチ | トップページ | 24への道 »