ベンチマーク
DLManaka と Manaka の現在速度を、同じ手順で測定した記録です。現在の速度値はこのページを正本とし、設計資料や過去の実験記録に残る古い値は性能比較に使いません。
測定コミットは 360398d。各エンジン固有の説明は DLManaka ベンチマーク と Manaka ベンチマーク を参照してください。
測定環境
| GPU | ドライバ | Compute Capability | CPU |
|---|---|---|---|
| RTX 4070 Ti 12 GB | 595.84 | 8.9 | Core Ultra 7 265KF |
| A100-SXM4-80GB | 580.126.09 | 8.0 | EPYC 7742 |
| RTX 5060 | 595.84 | 12.0 | Core i5-14400 |
GPU 測定は、実行前後にホスト側の nvidia-smi で他プロセスがいないことを確認したものだけ採用しています。A100 のホストは共有環境なので、小さいバッチの値は他よりばらつきます。
最良設定
GPU
| 処理 | RTX 4070 Ti | A100 | RTX 5060 |
|---|---|---|---|
| DLManaka 学習 | 6,818 pos/s, 256×4, torch.compile | 21,396, 4096×1, torch.compile | 3,854, 256×4, torch.compile |
| DLManaka 推論 | 9,728 pos/s, バッチ 128 | 19,602, バッチ 512 | 測定不可 |
| Manaka 学習 | 104,579 pos/s, バッチ 4096 | 117,059, バッチ 2048 | 58,080, バッチ 2048 |
DLManaka 学習では、測定した全条件で torch.compile が有効でした。最適なバッチ幅は GPU と処理ごとに違うため、別マシンの設定をそのまま流用しないでください。
RTX 5060 で DLManaka 推論が動かないのは、ort が使うビルド済み ONNX Runtime に sm_120 のカーネルイメージがないためです。同じ GPU で PyTorch 学習が動くこととは矛盾しません。
CPU探索
search_speed、既定の d128_o3_h512_pair16、5,000シミュレーション、1 コア:
| CPU | sims/s | nps | evals/s |
|---|---|---|---|
| Core Ultra 7 265KF P-core | 22,329 | 22,334 | 29,608 |
| Core i5-14400 | 16,411 | 16,414 | 23,736 |
| EPYC 7742 | 4,411 | 4,412 | 11,006 |
EPYC の値は共有ホストが高負荷の状態で測ったため、CPU 同士の厳密な比較には使えません。
265KF では、1 つのパラメータ表を共有するスレッド方式が最もよく伸び、20 スレッドで 371,498 sims/s。20 個の独立プロセスでは 246,556 sims/s でした。manaka-selfplay は既に共有表方式を使っています。
条件を揃えた推論速度
Manaka の evals/s と DLManaka の pos/s は、そのままでは比較できません。eval_throughput では Manaka も異なる局面を 1 回ずつ評価します。
| 評価器 | スループット | ハードウェア |
|---|---|---|
| Manaka、毎回アキュムレータを再構築 | 19,389 pos/s | 265KF 1 コア |
| Manaka、差分更新 | 28,550 pos/s | 265KF 1 コア |
| DLManaka バッチ 1 | 917 pos/s | RTX 4070 Ti 1 枚 |
| DLManaka 4070 Ti 最良 | 9,728 pos/s | RTX 4070 Ti 1 枚、バッチ 128 |
| DLManaka A100 最良 | 19,602 pos/s | A100 1 枚、バッチ 512 |
構造比較では Manaka の再構築側を使います。ONNX の残差ネットワークは、Manaka のようにノード間で差分状態を保持できないためです。この条件では A100 1 枚と 265KF 1 コアの局面処理速度がほぼ同じです。棋力比較ではありません。
学習側の要点
- DLManaka: 小さいバッチでは A100 を使い切れない。
torch.compileの効果も 4070 Ti より大きい。 - Manaka: バッチ幅を調整しても A100 の優位は小さく、残差 CNN と同じ伸び方はしない。
- GPU 使用率だけでは飽和を判断できない。 99% と表示されていても改善余地はあり得る。
- 比率は複数回の中央値で判断し、競合プロセスがいた測定は捨てる。
測定ルール
- コミット・処理・手順が揃った数値だけ比較する。
- CUDA が実際に使われていることを確認する。ONNX Runtime は CPU へ自動フォールバックすることがある。
- GPU の競合確認はコンテナ内ではなくホスト側で行う。
- 非単調なバッチ曲線を平滑化したり、数%の単発差から結論を出したりしない。
- 現在の絶対速度には、このページの値を使う。