「Online KataGo」をリリースしました

少し時間が掛かってしまったのですが、以前からここにも少し書いていた、オンライン版のKataGoがようやくできました。

Online KataGo
https://www.onlinekatago.net/

まだ怪しいところがいろいろありますが、一回表に出しておきたいと思います。

いずれ作る予定の、でもまだ実装できていない機能もいくつかあるのですが、それを順に書いていくと、まず、クリック/タップしなくても自動的に解析が始まるようにしたいと思っています。ただこれは、ユーザの使用状況をしばらく確認してみないと仕様が定まらないので、実装するにも少し時間が必要です。

それから、SGFのLOAD/SAVEができないのは、当然できるようにしますのでしばらくお待ちください(SGFのパーサって難しいんですよね…)。その代わり、COSUMIの対局リプレイ式のクエリストリングがすでに使えるようになっています。こんな感じですね。今現在、使えるパラメータは、bs(碁盤サイズ)、k(コミ)、h(置き石)、gr(棋譜)のみですが、将来的にはもう少しいろんなパラメータを使えるようにするかもしれません。今すぐ手持ちの棋譜を解析したいって方は、オンライン棋譜ビューア使って変換してみてください。出来るだけすぐに、COSUMIの対局リプレイにも、Online KataGoへのリンクを用意するつもりです。というわけで、当面はCOSUMIユーザが優先ってことでお願いします。

あと、読み込んだ棋譜を丸ごと解析っていうのも当然考えはしますが、これは少し難しいかもしれません。仕様次第なんですが、リソースが無限にあるわけではないので… Online KataGoはもう少しピンポイントに使ってもらいたいなと思っています。さらっと全体を解析するだけだったら、COSUMIの対局リプレイを使ってください。

今現在、KataGoはAWS EC2のg6.4xlargeで動かしています。そしてそれではリソースが足りなくなったら、前にも書いた通りg6.12xlargeに移行することを本気で検討しているのですが、余裕で年400万円オーバーなんですよね…(COSUMIの大半もそこで動かせるので、Online KataGoで使う分としてはそこから年100万円ほど安くなりますが) 人生短いし(笑)、少なくとも1年間は私は楽しい思いができるので、お金ぶっこむことにはもう覚悟ができているのですが、とはいえなんだかものすごく割高な気がしています。で、なんでこんなに価格が高いんだろうって考えていると、とりあえずこれ、GPUのメモリが多すぎるんですよね。NVIDIA L4って24GBなんですが、KataGo動かすだけなのにそんなに要らない!(なんならg6.12xlargeのメインメモリは196GB。ほんとに要らない!(笑)) このあたり本当によくわからないのですが、もしかしてデータセンターでKataGo的なタスクを動かす需要ってほとんどないんですかね? データセンターのGPUって、推論ではなく学習に使われていることが多いとか、推論は推論でも大き目のサイズのNNか、もしくは複数種類のNNを同時に動かしていることが多くて、囲碁みたいに、ひとつの小さ目サイズのNNにほとんど違いの無い入力データを繰り返し繰り返し放り込み続けるっていうのは、かなり特殊な使い方なのかもしれません。元々、「囲碁のためにグラフィックボードを買うのはもったいないからやめよう」ってところから作り始めたプロダクトなんですが、囲碁のためにL4借りるのは、はるかにもっともったいないことのような気がしてきました。でももう後に引けないので、今Google Cloudの価格を調べています。N1+T4が正解とかってあるのかな? いやしかし、一介の個人がこんなのほいほい払っていたら、デジタル赤字なんて無くなる訳がないですね…

あとそれから、前にも書いた通り、いずれAdSenseのオファーウォールをかなりがっつり掛けるつもりにしています。ただ、それはあくまでサーバ構成が最終形態になって、そのリソースが使い切られるようになった時の話です。それまでは、広告フリーでお楽しみください。

COSUMIでAdSenseのオファーウォールを試しています

先日から、COSUMI(と六十秒英単語テスト)で、Google AdSenseのオファーウォールを試しています。

囲碁ブラウザゲーム COSUMI
https://www.cosumi.net/

この手のことはいつも流動的で、先のことについて確定なことは何も言えませんが、今のところ悪くはなさそうなので、できれば今後も使い続けたいと思っています。

今現在、オファーウォールが表示されるのは、以下の4ページのみです。

https://www.cosumi.net/play.html
https://www.cosumi.net/en/
https://www.cosumi.net/ko/
https://www.cosumi.net/zh/

ここについては、今後もおそらく変更はありません。トップページとか、対局リプレイとかに表示することは絶対にないです。

「頻度の設定」は、デフォルトの4PVから上げて10PV、リワードはデフォルトの24時間アクセス可能に、今現在、設定していますが、実は、「頻度の設定」って初回の表示にしか関係ないものだとずっと思い込んでいて(頻度とは…(笑))、そうじゃないと今頃ようやく気づいたので、今後、両方とも少し下げるかもしれません。なんか表示回数が少ないなあと思ってたんですよね…(笑) ページビューのカウントは、あくまで上の4ページだけで行われるので、10PVはちょっと大きすぎると思います。リワードの24時間も、例えばそれを半分の12時間にしたとしても、表示回数はそんなに大きくは違ってこないんじゃないかな? なんていうか、ユーザと交わす約束はできるだけ小さくしておきたいのです。ただ、本当に初めましての人には、相当長い期間、一切オファーオールを表示させたくないって気持ちも強いです。もう少し柔軟に設定できるとよいのですが…

あと、言語の設定は当初、「デフォルトが日本語で、加えて英語(en-US)韓国語中国語(zh-CN)」としていたのですが、先ほど、「デフォルトが英語(en-US)で、加えて日本語だけ」に変更しました。通常のAdSenseは、ページの言語に広告の言語をできるだけ合わせるようにしてくれていると思うのですが、オファーウォールでは、ブラウザでの言語設定に合わせて、表示する言語を決定しているようで、例えば、設定言語がベトナム語のブラウザで、英語ページ見ても、日本語のオファーウォールが表示されていたはずです。で、それはちょっと不味いので先の変更をしたわけですが、COSUMI以外のアクセスの大半が日本人な日本語サイトでも、デフォルトは英語にしておくのがおそらく無難なのでは? ちなみに、日本語英語は文言を良く練ったものに変更していますが、韓国語中国語はオリジナルのままでした。両言語とも、自動翻訳に掛けるとオリジナルの英語をほぼ直訳したような内容に思えたのですが、

サイトやアプリでユーザーに表示される文言については、パブリッシャー様が責任を負うことになります。メッセージは、その内容が正しいことを確認できる言語でのみ作成してください。

とのことなので、このあたり要注意です。オリジナルの文言からリワードの数字を変更するぐらいなら、まあ安全かなとは思いますけど… しかし、練られた英語と、ふわっとした自国語ってどちらの方がコンバージョン高いのかな? またおいおいテストしていきたいと思います。

AdSenseのオファーウォールは、まだベータ版とのことですが、今回利用するにあたって、気になったことをいくつか書いておきます。

まず、これってサイト単位ではなく、ページ単位のリワードって出せるんですかね? なんかちょっとよくわからないのですが、それが出来なかったら使いたくても使えない人たちが結構たくさん居そうです。あと、条件によってON/OFF切り替えるのはどうすれば良いのでしょうか? タグを出したり消したりするのは、他のAdSense広告があると上手くいかないと思います。このあたり、もう少し使いやすいと良いのですが…

次に、オファーウォール(offerWALL)と言っておきながら、閲覧者が取りえる選択肢が「広告を見る」ひとつだけなのは、ちょっと残念です。こんなの全然WALL(壁)じゃないですよね… マイクロペイメントとか、全く別の種類のオファーを用意するのはなかなか難しいのかもしれませんが、同じ「広告を見る」でも、いくつかの広告動画のサムネイルを表示しておいてお好きなのをどうぞとか、「テキストもしくは静止画で5秒」、「動画15秒」、「動画30秒」の中から選択出来て、それぞれに異なるリワードが設定できるとか、そういうのを期待してしまいます。ここは本当になんとかならないでしょうか?

あと、最後にちょっと細かい話にはなるのですが、ロゴ画像の画質がちょっと悪すぎじゃないでしょうか? どうやら縦60pxにまで縮小してるみたいなんですが、ここはあまりケチらないで欲しいです。しかも、これは私のところではないですが、いくらなんでも違うだろって感じのロゴがJPEGになってる時とかあって、わけわからん…(元画像がJPEGだったらそうなるんでしょうか? だとしたら二重にバカですが…) なんでこんなことを言うのかっていうと、これコンバージョンに結構影響すると思うんですよね。画質悪いのって、なんか信用できないです。

ここ最近、こまごまとしたCOSUMIの改良をいくつかしていたのですが、まだできていないことの中で今一番やりたいのが、棋譜解析機能の精度を上げることです。というのも、せっかく高いお金を出して買ったg5g.4xlargeのGPUが、ピークでも半分ぐらい余ってるんですよね… 棋力を変えられない「対局での着手」にリソースを割いてもほとんど意味はないですが、「棋譜解析」にはいくら突っ込んでも良いわけで(レイテンシの問題だけは発生しますが)、できるだけ早い内になんとかします。で、そんな時にこのオファーウォールを試していて思ったのは、アクセスされるたびに毎回表示するとか極端なことをすれば、無料のオンラインKataGoもできるんじゃないかなということです。例えば、COSUMIで今使っているg5g.4xlargeg6.4xlargeに替えれば、COSUMIの隣で簡易的なオンラインKataGoが動かせますが、価格差は約40万/年。こんなのは余裕でペイしそうですし、万が一少しぐらい赤になっても、まあ大きな問題ではありません。でもできることならその程度じゃなくて、GPUが4発のg6.12xlargeとかで本当に挑戦してみたいんですけど、これはさすがに無理かなあ? もし上手くいかなくても、1年間だけなら命までは取られませんが…

以前にも書きましたが、KataGoの動作環境はできるだけ多くの人で共有した方が良いと、私は強く思っています。KataGoはとりあえず動かすだけでも大変な環境も多いですし、KataGoを快適に使うためには、高価なハードウェアが必要ですが、そういう物って基本的にアイドルタイムがあってはいけない。極度のリアルタイム性が要求されるグラフィカルなビデオゲームなどでは仕方ありませんが、囲碁のためにグラフィックボードを買うことが一般的に行われているのは、ちょっとおかしいと思います。それに、他の人と動作環境を共有すると、キャッシュも共有できる可能性があります。特定の対局を、多くの人が同時に観戦しているような状況だと、こんなのも結構ばかにならないはずです。あと共有うんぬんではありませんが、サーバでKataGoを動かすと、モバイルな環境のバッテリーを食わないのは、良いですよね。

ということでオンラインKataGo、g6.xlargeで一回動かしてみますかね。すでにあるコードを切り貼りするだけなので、作るのはそれほどたいへんではないと思います。需要が無かったら止める、有ったら秋にCOSUMIのg5g.4xlargeのSavings Plansが切れるタイミングで、g6.4xlargeかもしくはg6.12xlargeに、いっしょにお引越しということで。でもやっぱりg6.12xlargeいってみたいですねー 私は囲碁クラスタに対して、でっかいでっかい借りがありますし… それにしても、スーパーのお惣菜を買うときはあんなに慎重な私が、ことサーバになるとこんなにイケイケになるのは、自分でもなぜだかよく分かりません(笑)。

[追記 2025/4/28]
「頻度の設定」は、10PVから7PVに下げました。一度これで様子を見ますが、なんか表示回数はそんなに少なくないような気がしてきたので、リワードの24時間アクセス可能っていう設定は、もう下げれないかもしれません。

[追記 2025/5/30]
「頻度の設定」を、7PVから5PVに下げました。ここにはちょっと書けないこともあるのですが、表示回数がやはり少なすぎました。

[追記 2025/6/28]
リワードを、24時間アクセス可能から12時間アクセス可能に下げました。表示回数はあまり大きく変わってこないのではと思っているのですが、もし多くなりすぎるようならばまた調整します。