企画書 「ASIC化で名人に勝てまっせ!どないです、一口乗りまへんか旦那?」
いや、だからタイトルはその、あれですから。企画書なんで、目を引くものにしないと。どこまで本当なのよ?は、以下をじっくり読んでご判断ください。
前回はASIC化の作業とコストを一般論的に見てきました。今回は、ASIC化で将棋ハードがどれだけ性能向上するのか、をこれから考えていきますが、その前にまず性能の物差しを決めておきましょう。はっきりと決められないこともたくさんあるんですが、とにかく何らかの形で数値化しないことには議論にならないので、いろいろ仮定を入れていきます。
まずレーティングから。floodgateしかデータがないので、これを使います。将棋ハードというと、幸か不幸か現在のところAリーグしかないので、これをベースにしましょう。Aリーグのソースはここしばらくいじってませんが、最後にいじってたのは6月頃。このときたしか、MyMoveと約R250差でした。その後ソース改良さぼってたため今はもっと開いてますが、まあまじめに改良してればそのくらいの差に戻るだろう、ということで、6月の実績をベースに考えることにします。このときは15MHzで動かしてました。
MyMoveは現在トップのBonanzaと約R550差。棚瀬将棋や激指はfloodgateにいないので不明ですが、これもえいやでBonanzaよりR50上、としましょう。そうすると、Aリーグは現状のコンピュータ将棋のトップと約R850差、ということになります。計算の都合で、以下では800差とします。まあ50はパラメタ調整なり定跡なりで稼ぐとして。
棚瀬将棋や激指は今年アマトップに勝ちました。これもいろいろ考え方あるでしょうが、仮に奨励会三段レベル相当、としましょう。
レーティングと段の関係も明確ではありませんが、某所にR100=1段、という記述があったので、仮にそうだとしましょう。R100差は2勝1敗ペースですから、まあまあこんなもんではないでしょうか。少なくともそう大きく外してはいないと思います。将棋倶楽部24は+100だったり+200だったりするようですが、+200=3勝1敗ペース、までは差ないような気がしますが。
奨励会はプロの延長として、三段、四段、…、八段、まではそれぞれR100差/段、としましょう。九段というのはほとんど年功なので考えないとして、名人は八段より一段上(九段相当)としましょう。
そうすると、三段相当であるコン将トップソフトと名人はR600差。Aリーグと名人はR1400差、となります。
次に、性能向上とレーティングの関係です。以前にも書いた、「深さ1深く読むとR+200」が成り立つとしましょう。今のAリーグでは、大体深さ1深くするとノード数が5倍に増えます(終盤)。すると、性能5倍でR+200、ということになります。
ここまでをいったんまとめると、Aリーグがコン将トップソフトに追いつくにはR+800必要で、それを性能向上で達成するには 5**(800/200) = 625倍高速化すればよい、ということになります。同様に、名人に追いつくには 5**(1400/200) = 78125倍高速化すればよい、ということです。
くどいようですが、あくまで仮定をたくさん積んで、の話です。また、性能向上以外の要因(パラメタ調整とか)は除外してます。という前提でご理解ください。
さて、ASIC化時の性能向上には、動作速度と並列度の2つの面があります。動作速度N倍は即性能N倍と言えますが、並列度N倍で性能何倍か、はまた難しい問題です。
以前の記事では「ルート仮説」を使ってました。並列度N倍で性能 sqrt(N) 倍、という説です。これは、N=4や8ではまあまあもっともらしく見えますし、また実績データにも近いですが、Nが大きくなると並列度の効果がかなり小さくなります。N=100で性能10倍。N=10000で性能100倍。これはちょっと低過ぎるか?という気もします。と言っても、じゃあ何が正しいのか、と聞かれると、誰も答を持ってません。という状況なんですが、そう言っててはまた話が進まないので、ここでは仮に「並列度N倍で性能 N**0.75(Nの0.75乗) 倍」とします。いや全然根拠はないですよ。ただ、1乗は楽観過ぎるだろう、かといって0.5乗は悲観過ぎのような、ということで中間を取った、というだけです。
Nが数十、数百になると共有メモリはありえないので、クラスタ並列が前提です。なので、クラスタ並列でのαβ探索並列化のソフトをどれだけうまく書けるのか?にかかってくるような気もします。ただまあここでは、0.75乗のソフトが書けると仮定する、ということになります。今までいろんな仮定を積み重ねてきたうちで、この仮定がいちばんあやしげと言えるかもしれません。まあとにかく、ここでは「0.75乗仮説」で話を進めます。
推測になりますが、今までαβ探索並列化であまりいい結果が出ていない理由の1つは、単一コアでは手の順序づけがうまくいくからではないか、と思っています。単一コアではうまく働きますが、並列化時は効果が薄れるので、本来の並列化による伸びを相殺しているのではないかと予想します。同様に、共有メモリからクラスタ並列に移行すると、今度はハッシュも効果が薄れるため、並列化による伸びを相殺するだろうと予想します。Aリーグは手の順序づけも大してやっていないし、ハッシュもあまり効いてないので、逆に並列化時の伸びは大きいのではないか、というのが、楽観的かもしれませんがルート仮説が低すぎると思う根拠の1つです。
物差しを定義するだけでだいぶ話が長くなってしまいました。これでやっとASIC化の評価に入ることができます。
[合成結果]
私の手元に、某国内ファブのASIC向けの開発環境があります。今のAリーグのverilogソースをそのまま、ASIC向けに合成かけてみました。いやもちろん会社の環境なんですが^^; 夜にこそっと流しました。何やってんですかね、私は。
RAMの部分だけは自動合成できないので、かといってハードマクロに置き換えるのも面倒なので、ブラックボックス扱いにして、あとでRAMだけ手計算で面積出しました。そんなわけで若干不正確ではありますが、概算レベルでは大筋合ってると思います。P&Rはやってませんが、合成だけで9割方面積や周波数はわかるものです。
0.18um 面積 5 mm2 周波数 40MHz
0.13um 面積 2.5mm2 周波数 70MHz
90nm、65nmは環境なかったので試してませんが、えいやで予想すると65nmはこのくらいになるかと思います。
65nm 面積 1 mm2 周波数 160MHz
なお、ハッシュのRAMを入れると面積倍以上になるんですが、Aリーグではハッシュは10%程度しか効いてないので、ハッシュは削除する前提でいます。ハッシュRAMの面積は入れてません。
正確に言うと同じ0.18umでもファブ間で多少差はありますが、以下では他のファブにもこの値をベースに予測することにします。
[想定ボード構成]
ボードがどんなものかもざっと考えておきましょう。ボードのサイズは今FPGAで使ってるものと大差ないものとしましょう。この辺も、仮定、仮定、の連続ですが、ご了承ください。ボード1枚にASICチップが10個くらい載るでしょう。ボード1枚にイーサの口が1つあり、それがASICの1つにつながる。その1つから残りの9個はバスで接続するとしますか。チップの消費電力まではわかりませんが、65nmでも160MHzですんで、かなり大きいチップでも10Wも行かないんじゃないでしょうか。とりあえず最大でも10Wとすると、ボード1枚で最大100Wです。クラスタ並列のシステムは、(仮に)1個のマスターPCがいて、各ボードとイーサで通信する、という形を想定します。ここも「それで速い並列化できんの?」とかつっこみだすときりがありませんが、まあ仮にこうだとします。そうすると、各ボードはイーサのハブでずらずらつなげていくだけ、です。ま、とにかくいろんな要素がありすぎて、あれもこれもまじめに考えててはぜんぜん結論出ないので、ここは話が簡単に済むものとしよう、というとこなんですが。
ついでにASICチップ内についても言うと、CPUが1つあって、イーサで外と通信する。CPUは各コアとの(チップ内)インタフェースを持ち、CPUが各コアを制御する、という想定です。
[性能&コスト見積り]
さてようやく性能見積りです。どのテクノロジノード使うか、試作サービス使うのか、とかいろいろ選択肢がありますが、たくさん考えるのも大変なので、以下の2つのケースで考えてみましょう。
ケース1)リーズナブル路線
予算最大500万円程度を想定し、システム規模も個人で扱える程度に抑えるとして、
その範囲内でどこまで性能上がるか
ケース2)名人に追いつけ路線
予算の制約を考えず、名人に追いつくレベルを何が何でも実現する、としたとき、
どれだけのシステム規模が必要か
[ケース1 リーズナブル路線]
テクノロジは、VDECのローム0.18umで試作、としましょう。チップサイズ5mm角。これなら75万円です。合成結果から、チップあたり4コアとしましょう。周波数40MHz。設計サービスやらボード試作やら入れても、500万に収まるでしょう。
試作サービスはデフォルトではチップ数十個ですが、頼めばそう高くない追加料金でチップを増やすことは可能です。チップ100個くらいは問題ないはずです。ボードあたり10チップ、ボード10枚作るとしましょう。ボード10枚くらいなら、スタックできれば何とか机の上に置けるくらいでしょう。電力1000Wもご家庭でだいじょぶです。
そうすると、周波数は15->40MHzで2.3倍。並列度は、
4コア/チップ * 10チップ/ボード * 10ボード = 400 コアです。
性能向上は 2.3 * 400**0.75 ≒ 200。今だいたい9手弱くらい読んでるので、12手読みくらいになる計算です。
R+650くらいですか。bingoよりちょっと下くらい。決勝進出できるかなー、というところでしょうか。高速化しか考えてませんが、パラメタ調整やら定跡やらでもう少し強くできれば、優勝も夢ではない?
npsも見ておきましょう。npsの計算では「0.75乗」せず、単純に各コアの性能にコア数かける、でいいと思います。それだと40MHz / 2 * 400 = 8Gnps になります。正確に言うとイーサの通信オーバーヘッドが入ってきますが、これは当面無視することにします。
もう少しがんばるなら、チップサイズ2倍か4倍もできるはずです。価格は最大でも2倍なり4倍なり。つまり、150万/300万です。これでR+70~150くらい稼げるはず。ま企画書ですから、ここはひとつ景気良く「CSA大会優勝レベルが可能」としておきましょう^^; ただ、プロにはまだ届かないですね。
[ケース2 名人に追いつけ路線]
5**7 = 78125倍の性能が必要です。半端なんで8万倍としましょう。16手読みくらい。
金に糸目はつけない、ということで、迷わず65nm フルマスクです。1億円。サイズ20mm角強にすれば400コア入る計算になります。ボードあたり4000コア。
周波数は15->160MHz、約10倍。並列化で性能8000倍にするわけですね。0.75乗が8000なので、16万コア必要です。ボードあたり4000コアなんで、ボード40枚。あれ、思ったより少ないですね。もろもろ入れても1億数千万です。これでnpsは、160MHz / 2 * 16万 = 13Tnps。1手10秒考えるなら、0.13ペタ局面/手なので、一応ペタ領域、と言っておきましょう。
これならもう少し節約できますか。65nm 試作サービスにしてみましょう。1500万円。チップサイズは4mm角になると、チップあたりコア数25分の1になります。そのぶんボード5倍の200枚にしましょう。これだと2000チップ、コア数は5分の1の3.2万。性能は1/5**0.75 で 3.3分の1。R-150 ですね。これも、パラメタ調整等で挽回しますか。あるいは、もうすぐ45nmの試作サービスも始まるでしょうから、これを使えればコア数は倍くらいにはなるでしょう。2000チップだとウェハー代が無視できなくなってきますが、それでも総額5000万円くらいですかね。電力2万Wは、家庭ではさすがに苦しいですが、大学の実験室くらいなら対応できるのでは。
まあともかく、はい、これで名人に追いつきました。めでたしめでたし。
………
あ いや だから、今の間はツッコむところなんですよ?「そんなわけあるかー!!」というお声も重々あろうかとは思いますが。何度も書いたとおり、いろいろな仮定を入れておりますんで、不確定性かなり高い、のはもちろんその通り。ただ仮定と言っても、わからない部分があってしょうがないからbest guessの仮定を置いてるというだけで、そんな我田引水の楽観的仮定を入れてるわけでもありません。ですので、少なくとも「いろいろ可能なシナリオのうちの、割とありそうな一つ」とは言えると思います。
ただそうは言っても、不確定要素これだけ高いと、1億出してくれる人はさすがにいないかもしれません。だけど、500万くらいなら、「だめもとでチャレンジしてみなさい」とか言ってくれるとこないですかね?大学のプロジェクトでもまったく目がないわけではないと思うんですが、甘い?これだけ検討するとまじでやってみたくなってきました^^; ケース1がもし成功すれば、次のケース2の目も出てくるだろうし。
追記 LSI試作に関しては、デザインウェーブ誌(CQ出版社)2008年4月号で「自分専用のLSIを作る」という記事がありますね。これも参考にあげておきます。これはバックナンバー入手可能と思います。
« ロード・トゥ・ペタスケール・ポンダリング | トップページ | GPW予告編 »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
どうせなら「1Mコアで1Pnps」とか目指しませんか。
きりが良いですし、インパクトもあるかと思います。
予算は誰かに5億ほど追加してもらうって事にして。
投稿: 森岡@GA将!!! | 2008年10月12日 (日) 19時42分
フルマスクに比べて、1Mcoreは6倍、1Pnpsは80倍ですか。ま5億あれば、コア数的には足りますか。通信オーバヘッドが心配ではありますが。まあスポンサーさんが、「Pnps」に数億の広告価値を見出すかどうか、でしょうね。(やっぱ世間的には「名人に勝つ」の方が大きいかな)
うさ親さん:0.75乗ができるか、は…私も正直わからないです。ま、「わからないからやってみませんか」がここでの主張なんですが。
投稿: 伊藤 | 2008年10月14日 (火) 17時19分
『やってみないと分からない』のはその通りですね。
でも、工夫次第で行けるのかなぁ…(悩)。
『単純なαβ法で、最大の効率が得られるようにノードの順序が並び替えられているとした場合、並列による効果がどれ位になるか』はまじめに考えればちゃんと求められそうですね。以前から何となく頭の中にあったテーマなんですけれど、まじめに考えてみよう。
ノードの順序付けが不十分な場合や、ランダムに分布している場合も、そこから求められそうですし。
しかし、そこにNullMoveやLate Move Reductionとかが絡むと計算できる気がしない(w
投稿: うさぴょんの育ての親 | 2008年10月14日 (火) 19時12分
ぜんぜん別のものを作っているんですが、
FPGAには興味あります。
試作の基板作ったり、PCを毎年買ったりしているとかなりな出費です。500万じゃすみません。
私は企業でも研究所でもありません。
投稿: ふつうのひと | 2008年10月17日 (金) 11時47分
HP拝見しました。ロボ写真とか。
…作ってるものがぜんぜんレベル違う気がするんですが^^; これなら500万越えても驚かないです。
もしかしてこれを個人でやってるんですか?そりゃびっくりだ
投稿: 伊藤 | 2008年10月19日 (日) 11時20分
ヒト馬鹿にするのもいい加減にしろよ、
オレの名前をイシコロだの書きやがって、
何がびっくりだ、
投稿: ふつうのひと | 2008年10月21日 (火) 21時05分
違うリンク先の人ですね、某所の人と間違えました。すいません。
投稿: ふつうのひと | 2008年10月21日 (火) 21時30分
未踏ソフトウェア事業に応募してみるとかどうでしょう。
投稿: にしお | 2008年11月29日 (土) 10時03分
未踏何とかというのがわからなかったですが、助成金みたいのがあるのですね。ただ、要項等見てみましたが、これはソフトだけのような気が。まあハードOKとしても、ツールとか人とかいろいろあるんで、単にお金だけでは足りないかもしれません。
投稿: 伊藤 | 2008年12月 5日 (金) 12時56分