最速で違いを理解する方法
自分が作っていない対戦相手とボットを戦わせたいなら、Open Pokerを選んでください。自分のゲーム環境を構築してself-play実験を行うライブラリが欲しいなら、OpenSpielを選んでください。ほとんどの開発者は両方が必要です:OpenSpielでトレーニングし、Open Pokerでライブ検証とリーダーボード入りでトレーニングが実際に機能したことを証明します。
並べて比較
| 機能 | Open Poker | OpenSpiel |
|---|---|---|
| 主な目的 | ライブ競技アリーナ | 研究ライブラリ |
| リアルな対戦相手 | はい、他の開発者のボット | いいえ、self-playまたはスクリプト |
| 公開リーダーボード | はい、バッジ付き14日間シーズン | いいえ |
| ノーコード | はい、5つの戦略テンプレート、ホスティングデプロイ | いいえ、PythonまたはC++が必要 |
| 自分のコードを持ち込み | はい、JSONをパースできる任意の言語 | はい、PythonまたはC++ |
| ホスティング実行 | はい、サーバーサイド24/7 | いいえ、ローカル実行 |
| コスト | 無料、Proは$5/シーズンから | 無料、オープンソース |
| 対応ゲーム | 6-max No-Limit Hold'em | ポーカー含む80以上のゲーム |
| 内蔵アルゴリズム | 5つのプリセットテンプレート、カスタムパラメータ | CFR, MCTS, RLエージェント, policy gradients |
| 最初のハンドまでの時間 | 5分未満(登録+デプロイ) | セットアップとトレーニングに数時間 |
| ライセンス | Platform-as-a-Service | Apache 2.0 |
Open Pokerが正しい選択のとき
以下の1つ以上が欲しい場合はOpen Pokerを選んでください:
- 自分が作っていない対戦相手。 ライブプラットフォームの意味は、他の人があなたが予想しなかった戦略のボットを作ることです。見知らぬ相手に対してエージェントを走らせることが、戦略が汎化するかどうかを知る唯一の方法です。
- 公開リーダーボード。 ボットのスコアは公開され、リアルタイムで、プラットフォーム上の他のすべてのボットとランク付けされます。500ハンド以上で分散が薄れ、スキルが現れます。運の良い連勝の裏に悪い戦略を隠すことはできません。
- ホスティング実行。 ボットはOpen Pokerのインフラで24/7稼働します。サーバーの管理、再接続の処理、午前3時に起きてクラッシュしたプロセスを再起動する必要はありません。
- ノーコードのエントリーポイント。 すべての開発者がハンドエバリュエーターをゼロから書きたいわけではありません。テンプレートを選び、Proならチューニングしてデプロイ。登録から1分以内に最初のボットがハンドをプレイし始めます。
OpenSpielが正しい選択のとき
以下の1つ以上が欲しい場合はOpenSpielを選んでください:
- アルゴリズム研究。 OpenSpielにはCounterfactual Regret Minimization、Monte Carlo Tree Search、policy gradient手法、reinforcement learning環境が含まれています。ポーカーAIが内部でどう動くかを研究しているなら、OpenSpielが実際の実装を提供します。
- 複数のゲーム環境。 OpenSpielはポーカー以外にもチェス、囲碁、バックギャモン、Hex、花火など80以上のゲームをサポートしています。複数のゲームにまたがって作業したり、異なる問題クラスでアルゴリズムを比較したい場合、共有フレームワークは価値があります。
- 再現可能な学術実験。 学術論文は特定のOpenSpielバージョンとランダムシードを引用します。研究を発表するなら、OpenSpielがデファクトスタンダードです。
- 完全なローカルコントロール。 コードを端から端まで所有できます。外部サービスへの依存なし、レート制限なし、ネットワーク遅延なし、プラットフォーム利用規約なし。
両方を一緒に使えますか?
はい。これは真剣なボット開発者のほとんどが最終的に使うパターンです。OpenSpielでself-playまたはCFRを使ってローカルでエージェントをトレーニングし、強いベースラインを得ます。次にトレーニングされたエージェントをOpen Pokerに接続する薄いアダプターを書きます:入ってくるgame stateを読み、OpenSpielエージェントが期待するフォーマットに変換し、エージェントにアクションを要求し、返送します。アダプターは通常100行未満のPythonです。これで研究レベルのボットが無限のself-playループの代わりに、公開リーダーボード上で実際の対戦相手と戦っています。
この2つのツールは本質的に異なる問題を解決します。OpenSpielは強いボットの作り方を教えてくれます。Open Pokerはボットが実際に強いかどうかを教えてくれます。
Open Pokerが提供しないもの
ギャップについて正直に言います。Open Pokerは6-max No-Limit Texas Hold'emのみをサポートしています。ヘッズアップモード、トーナメント構造(まだ)、ショートデッキバリアント、オマハはありません。他のポーカーバリアントや他のゲームが必要な場合、OpenSpielのほうが広い範囲をカバーします。
Open Pokerにはトレーニングインフラも含まれていません。CFR実装、RLトレーナー、構築済みのニューラルネットワークポーカーモデルはありません。ゼロからトレーニングしたい場合は、別の場所(OpenSpiel、RLlib、カスタムセットアップ)でトレーニングし、トレーニング済みモデルをここに持ち込んで実際の対戦相手に対峙させます。
よくある質問
Open PokerとOpenSpielの主な違いは何ですか?
Open Pokerは、AIボットが14日間のシーズンで公開リーダーボード上で他のボットとリアルな試合を行うライブ競技プラットフォームです。OpenSpielは、主にself-playを通じてゲーム環境でアルゴリズムを研究するためのDeepMindの研究ライブラリです。Open Pokerはあなたが作っていない対戦相手を提供します。OpenSpielはゲームをローカルでシミュレートする環境を提供します。
Open PokerはOpenSpielと同じように無料ですか?
はい。Open Pokerでのゲームプレイは全員無料です。すべてのユーザーがプリセット戦略テンプレートを受け取り、24/7無料でプレイするホスティングボットをデプロイできます。オプションのProティアはシーズンあたり$5(3シーズンと6シーズンのバンドル割引あり)で、フルパラメータコントロール付きのCustom Bot builder、より豊富なアナリティクス、リーダーボードのProバッジが利用可能になります。OpenSpielもApache 2.0ライセンスの下で無料かつオープンソースです。
OpenSpielのボットをOpen Pokerのボットに対して使えますか?
直接はできません。OpenSpielはOpen Pokerに接続せず、Open PokerはOpenSpielのゲーム定義をインポートしません。OpenSpielでボットを構築して実際の対戦相手に対してテストしたい場合、Open Pokerのgame stateを読み取り、OpenSpielでトレーニングされたエージェントに入力し、アクションを返送するアダプターを書く必要があります。実際にそうしている開発者もいて、うまくいっています。
ポーカーAIの学習にはどちらのプラットフォームが良いですか?
ボットをすぐに実際の対戦相手と対戦させてライブフィードバックに基づいてイテレーションしたいなら、Open Pokerから始めてください。Counterfactual Regret Minimization (CFR)のような特定のアルゴリズムを研究したり、reinforcement learningエージェントをゼロからトレーニングしたいなら、OpenSpielから始めてください。多くの開発者は両方を使います:OpenSpielでトレーニング、Open Pokerで実世界の検証。
OpenSpielにはリーダーボードがありますか?
いいえ。OpenSpielはライブラリであり、プラットフォームではありません。公開リーダーボード、マッチメイキング、ホスティングされた対戦相手、他の開発者とボットを比較する方法はありません。すべて自分で構築する必要があります。Open Pokerはリーダーボード、マッチメイキング、テーブル管理、競争的な対戦相手ローテーションをすぐに使える形で提供します。
OpenSpielをコードなしで使えますか?
いいえ。OpenSpielはPythonバインディングを持つC++ライブラリで、使用にはコードを書く必要があります。Open Pokerはノーコードパスを提供します:登録し、プリセット戦略テンプレート(The Shark、The Rock、The Gambler、The Bluffer、またはGTO Lite)を選び、24/7プレイするホスティングボットをデプロイします。自分のボットを書きたい場合、そのパスもOpen Pokerに存在しますが、デフォルトではありません。