2022年12月
        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 31

tweet

  • tweets

« 2009年6月 | トップページ | 2009年8月 »

2009年7月

Deep Thoughtの学習

紫外線さん情報

>この学習法を使用の自律調整方法は将棋ソフト界では「ボナンザ メソッド(学習法)」と呼んでいますが、実際には本家は20年程前に確立されていました。

あ、そうだったんだ…
上のリンクで紹介されてるこれを読むと、まさしくボナメソですね。

ボード検討

まず業務連絡から。RTLソースのパーマネントな置き場所ですが、ブログ画面の左上に「資料館」というコーナーを設けてそこに置きました。ソースの他、各種発表資料も置いてあります。なおソースですが、細かい修正が数回入りまして今v1.13になってます。といってもRTL自体は変更なくてドキュメントの細かい修正ですんで、「RTL読むだけ」ならDLしなおすこともないと思いますが。

 * * *

さて最近の開発状況ですが、まずプライオリティNo.1はクラスタ並列。正確にはメッセージパッシングと言うべきかな。でも慣習でクラスタと言ってます。仕様を鋭意検討中ですが、動きだすまでにはまだ2、3か月はかかりそう。これは長期戦を覚悟。

それと並行して進めてるのがボードの検討。究極の絵としてはASICによる超並列化になるわけですが、まずは(コスト的にもリソース的にも)手の届く範囲内で簡易版でいいからアイデアを具体化していきたい。feasibility studyの目的でも、実績作りという意味でも。で、最初に作るプロジェクトの具体的詳細を詰めているところ。

ASICがもちろんいちばんコストかかるわけですが、つい最近Alteraからの宣伝メールで Cyclone III LS発表、というのが来ました。今まで普及品であるCycloneシリーズの最大規模のは120K LUTだったんですが、150K、200Kのが出ました。今のAリーグは120Kには入らず150Kぎりぎりなので、Cyc3では無理、Stratixが要るなと思ってたんですが、テクノロジの進歩を考えてなかったのは我ながら超迂闊でした。高級品のStratixは150Kクラスのは1個数十万するので手が出ないですが、Cycloneが使えるなら5個10個程度なら個人でもまあ何とかなるレベル。LS150はまだ価格出てませんでしたが、従来のCyc3の120KはAltera Online Storeで$387/個。ちなみにXilinxの方も最近普及品の方の最新シリーズであるSpartan 6を発表しまして、これも150K LUTのがあります。こちらは$~200/個。こっちの方が安いのは、45nmだからでしょうか。Cycloneの方もたぶんもうすぐ40nmのシリーズが出て、もう少し安くなると思います。

まあとにかく、1個数万くらいのFPGAが使えるならば、まずはASICよりもこちらでやるべきでしょう。FPGA 3~4個のボードをまず作りたい。これだと将棋的な強さの方はあまり期待できません。Cycloneにしたら速度半分になるので、4個並列にしてもStratixの単体とあまり変わらない。なので目的は専らfeasibility検証用になります。

次、基板の設計と実装について。こんな↓絵をVDECフォーラムで出してましたが、

Boardpict_2

これをどう作るのか、もっと具体的に詰めてみます。

まずコストから。私はボードは直接自分で開発したことがなく、この辺の詳細が実はさっぱりわかっておりません。コストも見当つかなかったので、VDECフォーラム及びその前後にいろいろ聞きまわりました。3人の方から話聞いたのですが、

Aさん:うちで作ってるのは2000万円くらい。1000万はするんじゃないかな。
Bさん:200-300万くらいするよ
Cさん:1万くらいでできました

…??どうなってるんじゃ一体?どうも前提が大幅に違うような気がします。で更にいろいろ調べてみたところ、基板とひとくちに言ってもピンキリで、動作周波数、層数、部品点数、ピン数、実装形態、等によって全然異なるようです。GHzで動かしたり1000ピンオーダの部品が複数載せたりするような板だとめちゃくちゃかかりますが、そうでなければ最近はネット通販の基板製作屋というのがあって、数万からで試作できるらしいです。


上述のCさんから聞いたのはP板.com。ここは回路図CADとアートワークCADをフリーでDLできて、それらを使って作った設計データを送ると製造してくれます。将棋では周波数もピン数もそう高い要求がないので、基板だけなら数万でたしかにできそう。部品の実装(基板への取り付け)は、サービスとしてはP板.comでもあるようですが、価格はまだ不明。部品実装はひきつづき調査です。なお、いろいろぐぐって調べたところ、回路図を渡せばアートワークをこれも数万で請け負う、という会社もあるようです。というわけで、部品実装がまだあれですけど、なんか雰囲気的には基板も何とかなりそう。

マイコンの候補選定。これも調べてるとPICとかAVRとかpSoCとかいろいろあります。どれがどういう特徴あるのか、を調べるのでひと苦労。マイコンは価格はたいしたことはないので、選ぶ要因としては、ホストとASIC/FPGAとの通信がメインであることから、以下のような感じ。
 ・I/F。イーサやUSBのついてるものの方がボード設計が楽。
 ・メモリ容量(フラッシュ+RAM)。そう大きくなくてもよいが、ある程度はほしい
 ・性能。8bitよりは32bitの方が転送に必要なサイクル数は少ないだろう
 ・GPIOの数。複数チップとできるだけ広いバス幅で通信したいので。
 ・ソフト環境。とにかく楽したいので^^;

今まで探したところだと、Coldfireがけっこうよさそうかな、という感触。100Mイーサで32bit。GPIO 50+本。TOWERキット$99というのがあるので、買って使ってみようかなー、などと思っております。まあまた調べてくともっといいの出てくるかもしれませんが。

なお上に出した絵では、マイコンとASICを1枚のボードに載せてますが、マイコンにはほぼ必ず評価ボードというのがあるので、最初はそれをそのまま使う方が楽かもなどと更に日和りつつあります。それならマイコン制御のソフトやドライバ等が付属のをそのまま使えばよいので気にしなくていいし。自作のボードに載せるのはほとんどASIC(/FPGA)だけなのでボード設計が多少楽になるし。つまり、自分の苦手な分野のウェイトを少しでも減らしたいわけです^^;

マイコン以外の部品。おそらく慣れた人にとってはほとんど気にもしないところなのかもしれませんが、素人にとっては何をどうすればいいのかわからないところです。
FPGAのボードやマイコンのボードの回路図を勉強のためにいろいろ眺めてます。たとえばこんなの。これは、CQ出版から出してるColdFireブレッドボードの回路図だったかな。少なくとも以下のようなものは(本命のFPGAやCPUの他に)必ずついてます:
 ・電源コネクタ
 ・電源スイッチ
 ・水晶
 ・コンデンサ
 ・抵抗
 ・I/O用コネクタ
最初見たときは、コネクタやスイッチはともかく、水晶、コンデンサ、抵抗は、容量や抵抗値をどうやって決めればよいのかさっぱりわからない。でまたいろいろ調べたわけですが、まず水晶およびそのまわりのコンデンサ・抵抗については、マイコンなりのマニュアルに推奨(いやだじゃれじゃなくて)の接続が書いてあるようで、どうもそれに従えばよい模様。その他は、コンデンサは主にいわゆるパスコン、抵抗はプルアップ抵抗の模様。といっても パスコンやプルアップの容量・抵抗はどうやって決めるのかいまいちわからないのですが、もう最初は他のボードのを真似して、あとは実際にボード作ってカット&トライしようかな、などと開き直ってます。容量値・抵抗値以外にも、サイズがいろいろあったりとか、コンデンサはいろんなタイプがあるみたいでどれ選べばいいのよとか、ほんとわからないことだらけ。まあこの辺も探せば情報あるようなのでおいおい調べていきます。

あそうそう、あとAlteraやXilinxのFPGAを使うとなると、コンフィギュレーションファイルのロード方法を用意する必要があります。まだちらっとしかマニュアル見てないですが、FPGAがマスターになって専用のフラッシュメモリにアクセスするよう。てことはフラッシュもボードに載るのか。接続はたぶんマニュアルに書いてあるんだろうな。I2Cでいいのかな。あれでもパワーオンリセットの回路とかいるのかな。フラッシュメモリへの書き込みは…この辺もこれから調査。

大規模FPGAだとパッケージも限定されます。Cyc3 120Kだと484FBGAに。手ではんだづけ、というオプションはありえなくなります。これで実装コストはね上がったりするのかな。あと、プローブ当てることもできません。観測用コネクタまで線引くしかないですかね。ちなみに万一に備えて、オシロスコープは20MHzくらいなら10万ちょいくらいで買えるようです。あまりオシロ使いたくはないんですが。

CPUとFPGAつなげたボードだとバウンダリスキャンとかした方がいいのか、とも思いましたが、マイコン評価ボードを使うなら部品はほとんどFPGAのみなので、そこまでしなくてもいいような気がします。バウンダリスキャンのツールもちょっと調べてみましたが、目についた範囲だと数百万のオーダ。こりゃあ無理ですが、今のところ後まわしです。ちなみにBSDLのファイルはマイコンもFPGAもだいたいネットでDLできるようです。

しかしこんな調子で、ほんとに物できるんでしょうかね。我ながら甚だ不安ではありますが、まあ実行あるのみです。どうしてもできなさそうだったら、お金の許すかぎりはプロを頼るつもり。

…てなことを考えてたところへ、当ブログがSim's blogで紹介されていました。電子工作のブログで、この中の記事やリンクからたどるとボード関連でかなりいろんな情報があり、非常に参考になります。今まで電子工作系のネット情報はあまりまじめに探したことなかったんですが、しばらくここをベースにしていろいろ知識を仕入れさせてもらおうと思っております。

うーんしかし、とてもコンピュータ将棋のブログとは思えない記事ですね^^; 完全に、選挙でいうところの「独自の戦い」というやつになってます。

初リア将

昨年末くらいに勤め先の会社のけっこう偉い人で将棋好きの人とコン将の話をする機会がありまして。その時その方から「いちどうち(会社)の将棋部にも来てよ」と言われてまして、大会やフォーラムの準備でずっと忙しかったのですが一段落したので、お邪魔しに行ってみました。

昔はまあ私自身も将棋指しましたが、コン将を始めてからは専らコンピュータを強くする方が重要で、自分が指そうという気はあまりしません。なので、FPGAボードを持っていってAリーグと対戦してもらってきました。Aリーグが人間とやるのは、私が2、3回お遊びでやったことがあるのと、floodgateで人間の参加者とあたったこともありましたが、それ以外はほぼはじめて。リアルの対戦初挑戦です。

4局やりました。相手は1局ごとに別の方。最初は人間と同じく将棋盤で私が指し、相手の指し手を私がPCに入れてました。時間は15分、切れたら1手30秒。ところが手入力にけっこう時間がかかり、あっという間に秒読みになり、ちょっと長考したら切れて負けてしまいました。ただこれではつまらないので参考ということで指し継いでもらい、その参考結果ではいちおう勝ち。序盤は大駒を押さえこまれてと金を作られ、必敗の形勢でしたが、コン将得意の終盤でじりじり追い上げて逆転してました。相手の方は24で1300~1400くらいだそう。

あと3局は1勝2敗。2局めからは対局時計はなしで、相手に直接PCを操作してもらいました。ローカルでshogi-serverを動かして、KShogiでTCPIP対あなた、で動作。2敗の相手のうち1人は24で2千何百くらい(<-よく聞き取れなかったが、たしか2400と言ったような…)、もう1人はその2千何百の人と互角以上とのこと。1勝の相手は、「道場で免状は四段もらったけど、実力は初段あるかないかくらい」とのこと。けんそんもあるのかもしれませんがいちおう信じるとすると、Aリーグがfloodgateの診断で24で1800くらい、二段相当、というのはけっこう合ってるかもしれません。

生で人間と対戦を見てて思ったのは、普通の人間の将棋指しから見るとまだまだ変なところいっぱいあるなぁ、ということ。私は見慣れてるので、コン将らしい変な手を見ても「あ、またやってるよ…えーと、評価関数がああなってるから、こっちよりこっちの方が優勢と思ってるんだろうなぁ。しょーがないなぁ…」くらいですぐ納得してしまうんですが、人間の人(?)ってめちゃくちゃ驚いたりするんですよね。「え!?何で!?」みたいな反応をされて、「いや、えーと、コンピュータ将棋の特徴で…」とかしどろもどろで説明したりしてました。幸い2敗の相手は2人ともきれいに詰ませてくれましたが、これで必至かけられて王手ラッシュなんかやられた日には、弁明が大変なところでした^^; 人間と対戦するだけなら24とかでできるわけですが(やったことないけど)、やっぱ目の前にいるのとネットとではちょっと違います。

「前コンピュータ将棋がアマ竜王戦とか出てましたよね。最近は出ないんですか?」とか聞かれましたが、私もわかりません。最近は出ないんですか?教えて、さわやかなエロい人。

ちなみに、もしかしてハード設計やってる人が将棋部にいたりして、引きずりこめないかなぁ、などとちらっと思ってたんですが、残念ながらデジタルの回路設計者は将棋部にいらっしゃいませんでした。

しかし、久しぶりに生の対局してるのを見ると、ちょっと指してみたくなったりもしますね。でも自分が対局してる暇があったら設計なりコーディングなりしなきゃ、とか思ってしまうんですが。定跡とかもほとんど忘れてるんで勉強してる暇ないし。

« 2009年6月 | トップページ | 2009年8月 »