どうも、吟遊詩人です。今回もDeep Learning、やっていきますよ。
前回、古いグラボ(GT520)の限界を見ました。
(前回:吟遊詩人のDeep Learningその1〜将棋AIを作りたかった話〜)
あれからというもの寝ても覚めてもグラボのことばかり考えていました。
そんな時、TLにこんなツイートを見かけました。
さすがやねうら王さんですね。やねうら王さんは2019年の世界コンピュータ将棋選手権でも優勝されている超強豪AIです。
RTX3090はGPUの中でもハイエンドで、消費電力は1枚当たり300Wなので、3台でGPUだけでも消費電力1 kWです。ちょっとした暖房並みですね。
対して、私が今回購入したGPUはこちら……


GEFORCE GT1030です!!!
……いや、GTXでもないんかい。
GT1030の実装
最初はGTX1650とかにしようとしたんですが、自分のPC見返してこれにしました。
というのも、私のPC、スリムタイプのやつなんですね。

そんで中身はこんな感じ、

せっかくだし、一応スペック書いときましょうかね。
それじゃあイカれたメンバーを紹介するぜ!!
・CPU: Intel(R) Core(TM) i7-2600CPU @3.40 GHz
・メモリ: DDR3 RAM 8.00 GB (4.00 GB×2)
・SSD: Seagate Barracuda 1000 GB
・HDD: なし
・光学ドライブ: LG Super Multi Blue
・マザーボード: H61H2-M5 v5.0
・電源ユニット: FSP 300-60GHT(J) (300 W)
・グラフィックボード: Geforce GT520
……正気か?こんなスペックでDeep Learningするの?(できらぁ)
特に電源300 Wしかないんですね。てっきり500Wくらいはあると思ってたよ。RTX3090の1枚分の電力じゃないか。
こんなんでも、10年前の当時学生の身分としてはそこそこいいスペックでそろえたんですけどね。
そんなわけで消費電力の大きいグラボはつめないし、補助コネクタも無の奴じゃないと。
寸法も小さくないとですね。
そこでの強い味方がGT1030ですよ。
GT1030の詳細は以下の記事見てください。↓
まあcuda capabilityが3.0以上あればこっちはナンだっていいんですよ。
GT1080はcuda capability6.1もありますからね。cuDNNが2回も使える(?)
そんなわけで早速つんでいきましょうね。

今つんであるGT520がこんな感じ
(一見2スロットあるような涼しい顔をしているが、アナログDVIはコード生やしているだけである。)

で、GT1030つんだのがこれ。
いや~いい感じ。
GT520のアナログケーブルはそのまま残してある。
GT1030使ってDeep Learning
早速つんだばかりのGT1030にCUDAを食べさせていきます。ドライバーもついでにインストールしてっと。
「CUDA10.2もちゃんと食べられて偉いねぇ、GT520に無理やり食べさせようとしたら(エラー)吐いちゃったからねぇ」
(´;ω;`)ウッ…
「ほら、バッチも2個あるからちゃんと食べるんだよ?」
(^ω^ ≡ ^ω^)
更新後の環境がこちら
Python | pip | Visual Studio | GPU(本体) | GPUドライバー | CUDA | cuDNN | Cupy | Chainer |
3.8.5 | 21 | 2015 | GeForce GT1030 | 441.22 | 10.2 | 8.1.0 | 7.8.0 | 7.7.0 |
ちなみにCupyとChainerもCUDA10.2にあわせてインストールしなおしてます。Cupy入れる際は
>pip install cupy-cuda102==7.8.0 –no-cache-dir |
として、最新版にならないようにしてます。
あと今回はcuDNN使えるのでCHAINER_CUDNNを環境変数から削除してます。

Chainerで見るとこんな感じ。
そんで、前回もやったtrain_mnist.pyを実行した結果がこれ

うんうん、いいね。実行時間が110秒くらいになりました。本で使ってたGTX1080の大体半分くらいの計算速度ですかね。
そんで前回動かなかったAIの学習処理の結果がこちら

「えらいねぇ、ちゃんとお勉強しているねぇ」
(´;ω;`)ウッ…
logのプロット貼っときますね

実戦
では早速作ったAIと勝負してみましょうかね。
将棋所にエンジン登録する際はbatファイルの位置を1つ上のフォルダにするといいそうです。
(参考:http://www2.ezbbs.net/cgi/reply?id=shogidokoro&dd=09&re=828)
ほんでエンジンの設定でさっき学習したモデルの場所を指定して……、いざ実戦!!
KIF形式棋譜ファイル
Generated by Shogidokoro
手合割:平手
先手:GILBEY
後手:policy_player
手数—-指手———消費時間–
1 2六歩(27) (00:03 / 00:00:03)
2 3四歩(33) (00:01 / 00:00:01)
3 7六歩(77) (00:03 / 00:00:06)
4 8四歩(83) (00:01 / 00:00:02)
5 7八金(69) (00:02 / 00:00:08)
6 8五歩(84) (00:01 / 00:00:03)
7 2二角成(88) (00:16 / 00:00:24)
8 同 銀(31) (00:01 / 00:00:04)
9 8八銀(79) (00:02 / 00:00:26)
10 6二銀(71) (00:01 / 00:00:05)
11 2五歩(26) (00:01 / 00:00:27)
12 5二金(61) (00:01 / 00:00:06)
13 7七銀(88) (00:01 / 00:00:28)
14 3三銀(22) (00:01 / 00:00:07)
15 4八銀(39) (00:02 / 00:00:30)
16 7四歩(73) (00:01 / 00:00:08)
17 4六歩(47) (00:01 / 00:00:31)
18 7三桂(81) (00:01 / 00:00:09)
19 6六歩(67) (00:02 / 00:00:33)
20 6四歩(63) (00:01 / 00:00:10)
21 6八玉(59) (00:03 / 00:00:36)
22 5四歩(53) (00:01 / 00:00:11)
23 4七銀(48) (00:02 / 00:00:38)
24 4二玉(51) (00:01 / 00:00:12)
25 4八金(49) (00:04 / 00:00:42)
26 4四歩(43) (00:01 / 00:00:13)
27 3六歩(37) (00:02 / 00:00:44)
28 5三銀(62) (00:01 / 00:00:14)
29 3七桂(29) (00:01 / 00:00:45)
30 6五歩(64) (00:01 / 00:00:15)
31 同 歩(66) (00:02 / 00:00:47)
32 7五歩(74) (00:01 / 00:00:16)
33 同 歩(76) (00:03 / 00:00:50)
34 8六歩(85) (00:01 / 00:00:17)
35 同 歩(87) (00:02 / 00:00:52)
36 同 飛(82) (00:01 / 00:00:18)
37 同 銀(77) (00:02 / 00:00:54)
38 5五歩(54) (00:01 / 00:00:19)
39 7一飛打 (00:05 / 00:00:59)
40 5四銀(53) (00:01 / 00:00:20)
41 7三飛成(71) (00:05 / 00:01:04)
42 4五歩(44) (00:01 / 00:00:21)
43 同 桂(37) (00:13 / 00:01:17)
44 4四銀(33) (00:01 / 00:00:22)
45 1五角打 (00:07 / 00:01:24)
46 3三銀(44) (00:01 / 00:00:23)
47 同 桂成(45) (00:03 / 00:01:27)
48 3一玉(42) (00:01 / 00:00:24)
49 2二銀打 (00:03 / 00:01:30)
50 投了 (00:01 / 00:00:25)
まで49手で先手の勝ち

戦った感想ですが、短時間しか学習してない割には序盤は定石に従ってさしていてすごいなって思いました。
ただ中盤の駒の価値なんかはまだ分かっていない様子でした。
いや、でも、本のコピーしただけでも、初めて自分が学習させたAIと対局できるっていうのは、感動ですね。
当面は10年前のボナンザさんに勝つくらいを目標にやっていきたいですね。
ゆくゆくは世界一のAI目指して……
それではお疲れ様でした。