RapidSSLからJPRSに乗り換えました

COSUMIで使用していたSSL/TLS証明書の期限が近づいて来ていたので、このタイミングでRapidSSLからJPRSに乗り換えました。

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

併せて、TLS 1.0とTLS 1.1を切って、さらにcipher suiteも大幅に制限しました。

# Apache
SSLProtocol    all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

この設定はこちらのIntermediateを参考にしたものです。

Mozilla SSL Configuration Generator
https://ssl-config.mozilla.org/

3年前も同じくIntermediateを参考にしたはずですが、状況がかなり変わったんでしょうね、その時と比較すると大幅に厳格になっているように思います。COSUMIはそんなサイトではありませんので、そこまでカリカリに設定する必要もないのですが、もし仮にこれでアクセスできない環境があっても、そんな環境はそもそも対局ゲームなどはまず動きませんので、これで良いと考えています。

JPRSの証明書はさくらで990円/年と十分に安くて良かったです。逆に、最近は有効期間が1年での証明書しか駄目になったようで、毎年この作業をしなければならないのは、結構面倒ですね。

ナニゴケをアップデートしました (Ver. 1.5.1)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別するWEBアプリ
https://www.nanigoke.net/

今回は、判別可能な種の追加はありません。20700枚だったTrainのデータ数は、21300枚に、ネットワークの構造は、少し気になっていたところがいくつかあったのでそれを修正しました。いつも通り、TensorFlow.jsのバージョンも上げてます。

最初のリリース時から、「学習データの拡充」と「学習方法の改良」の両方を行ってきたわけですが、その内、より多くの労力が掛かったのは、断然、前者の方ですが、実際に精度を上げたのはどちらかといえば後者だったのではと考えています(今思うと、最初の方のバージョンはちょっと雑過ぎたかも(笑))。ところが、気づけば今や、手元のデータに対してのロスはいくらも無くなってしまい、もはや、コードを書いて何とかできる余地はほとんどありません。ここから先は、基本的に「学習データの拡充」のみで精度を上げていかないといけないのかと思うと、だいぶ頭が痛いです… まあ、もう少し涼しくなったらたぶん本気出します。それまではアニメとビールの毎日かな… 次回のアップデートは、かなり先になる予定にしています。

日本ルールの7路盤では黒は盤面9目も勝てない?

このブログへのコメントで教えていただいたのですが、7路盤の次の局面で白からAに切る手があるようです。ちなみに今までは単にBに押さえるぐらいと考えられていたはずです。


Sorry, your browser doesn’t support WGo.js.

このキリがあっては、どうもこの局面から黒が盤面9目勝つのも難しいようで、もしも仮にそうだとすると、今まで悪手だと思われていた白6手目のカタツギが唯一の最善手となり、唯一の最善手だと思われていた黒3手目のハネは、ノビと同じ価値になります(併せて、これも最善手のひとつだと思われていた白4手目でのキリチガイは悪手となります)。そしてそれは、従来から言われてきた「日本ルールの7路盤は、最善尽くして黒の盤面9目勝ち」という結論が覆されることを意味しますので、これは結構大変な話ではないでしょうか? ぜひ強い方に調べて頂けたらと思います。

いつも書いていますが、7路盤についてはこちらが詳しいのでどうぞ。

七路盤の研究
http://orange.zero.jp/qin.olive/7ro/

7路盤に関しては、もう今となっては、7路盤専用に強化学習してしまえば、結構簡単にそれなりの答えが出そうな気もしますね。

ナニゴケをアップデートしました (Ver. 1.5.0)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別するWEBアプリ
https://www.nanigoke.net/

今回は、判別可能な種に、「アオハイゴケ」、「アズマゼニゴケ」、「ヒメコクサゴケ」が追加されました。また、19600枚だったTrainのデータ数は、20700枚になっています。ネットワークの構造は、実質的に変更なし。TensorFlow.jsは、最新のバージョンに上げておきました。

ナニゴケ始めて1年が経過しましたが、さすがに一番最初のリリース時と比べると、手元の数字などは段違いに良くなっています。そろそろ少しぐらいは信じてもらっても良いかもしれません(笑)。

COSUMIのサーバを3台から2台に減らします

かなり長い期間、COSUMIは専用サーバ3台で運用してきたのですが、これを7月末までに2台に減らします。

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

3台目のサーバというのは、実質的にアクセスの多い時間帯の9路盤~13路盤のレベルの高い対局のためだけにあるようなものだったのですが、さすがにそのためだけに年40万+はちょっと辛いので、解約することにしました。本当はもう少し早い時期に行う予定だったのですが、コロナの影響でアクセスがかなり多くなっていたので、ここまで延期することになってしまいました。未だにアクセスは高止まりしたままなので、解約するのは正直かなり怖いのですが、もしもどうにもならないようなら、Amazon EC2辺りを特定の時間帯だけ使おうかなと考えています。今回解約するサーバは6年間以上借りてたみたいで、確かに初期費用も小さくはなかったですが、それでもそろそろ割高になってきそうなのも理由のひとつで、実はまだちゃんと調べてはいないのですが、以前ほどはEC2などに価格の優位性はないはずです。

ただ、一番理想的なのは、9路盤~13路盤はwhite shadeがごっそり受け持ってくれることで、これをなんとかしたいのですが、中途半端な誘導ではみなさんほとんど打ってくれないんですよね…(泣) 私の環境からだとほぼ問題ないのですが、動作しないことも多いのでしょうか? 月末までにいろいろよく考えてみます。

あと、これはかなり今更ですが、サーバのリソースがたっぷり余る時間帯は、逆にそれを贅沢に使ったなにかをやってみたい気もしています。

[追記 2020/7/27 7:50]
やはり常時サーバ2台で済ますのはさすがにちょっと無理があるように思うので、曜日問わず、15:00から18:00まで、EC2をサポートに使う予定です。とりあえずのテストとして、今日(と明日?)は、その時間帯以外、2台でいってみて、データ取れたらまた考えます。

[追記 2020/7/28 8:00]
いやあ、昨日はちょっときつかったですね… とりあえず、今日も少しだけ設定を変更した上で、15:00~18:00以外はサーバ2台でいきます。

[追記 2020/7/29]
15:00~18:00のみというのは、どうも虫がよすぎたようです。少し薄くても構わないので10:00~22:00は必要ですね。しかしそうなると、EC2にはリザーブドインスタンスとかがありますから、時間帯を限らず24時間動かしっぱで良いですね。って、それはただのサーバの乗り換えでは…

ここ最近、EC2のコストパフォーマンスをちょくちょく調べていたのですが、先月出たばかりのC6gというArmのCPUが載ったインスタンスが、COSUMI的に激安なんですよね。24時間動かし続けても、ぜんぜん今のサーバより安そうです。なので、その辺りが落としどころかな… しかしなんにせよ、「サーバ解約する前に良く調べておけよ」って思いました(笑)。

[追記 2020/8/1]
昨日の朝、専用サーバ3台から専用サーバ2台+c6g.4xlargeに変更しました(間に合って良かった…)。今のところは特に問題ないようです。ほんの少しだけ全体の処理能力が落ちましたが、たいしたほどではありません。

ナニゴケをアップデートしました (Ver. 1.4.0)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別するWEBアプリ
https://www.nanigoke.net/

今回は、判別可能な種に、「アカイチイゴケ」、「コモチフタマタゴケ」、「ジャバウルシゴケ」、「トサカホウオウゴケ」、「ナガサキホウオウゴケ」、「ナメリチョウチンゴケ」が追加されました。また、16400枚だったTrainのデータ数は、19600枚になっています。ネットワークの構造は、微調整程度の変更。TensorFlow.jsのバージョンは、最新の2系にしました(どう変わったのかはぜんぜん知らん(笑))。それから、学習データの水増しにおいての左右フリップを、20%だけ行うようにしました。これ、今まで私は絶対絶対絶対絶対やりたくなかったのですが、あまり自己満足だけを追い求めるのは、使ってくださる方たちに悪い気がして、今回少し妥協しました。でも、今後は少しずつ割合を減らしていって、いつかはまた0%に戻したいと思います(「じゃないとダメ」って苔が言ってるような気がする…)。ちなみに、詳しく調べたわけではありませんが、今回ロスがぐっと減ってて少しムカついています(笑)。

その他、今回はさまざまな細かい修正をいれているのですが、主なものだけ列挙しておくと、まず、iOSからファイルを読み込んだ時に画像が回転することがもともとあって、これは一応すでに対応済みだったのですが、最新のiOS(バージョン13.4から?)ではなにか変わったのでしょうか、また再発していたので、使っていたJavaScript Load Imageっていうライブラリを最新のものにして直しました(ただ、ちゃんと調べていないので、なにか勘違いしているかもしれません)。それから、判別結果に表示される種名はGoogleの検索ページへのリンクにしておきました。それから、PCやスマホの横向き画面では、5位まで表示していた判別結果を7位までとしました。さらにその表示形式の場合のみ、判別に掛かった時間を下に小さく表示するようにもしましたので、ちょっとしたベンチマークとしてお使いください。

1年ほど前ナニゴケを初めてリリースした時に、1年後の目標を「判別できる種の数120・Trainに使用したデータ20,000枚」と書きました。今回のバージョンがその課題の提出期限だと思い、ちょうど苔シーズンでもあるのでそれにも間に合わせたいと結構がんばったつもりです(ばたばたしていて、少し遅れましたが…)。でも、「Trainに使用したデータ20,000枚」はだいたい達成しましたが、「判別できる種の数120」にはぜんぜん届きませんでしたね。ごめんなさい。まあ少しだけ言い訳させてもらうと、やっぱり終盤のコロナが痛かった… 一番最後にバスに乗って苔の写真を撮りに行ったのは、去年の年末だったようで、その後は行動範囲が大幅に制限されてしまいました。今年に入ってから、私はまだ一度もタマゴケを見ていないのですが(!)、そんな春を過ごすことになるとは年始の頃には想像もできなかった… ただ、そのかわり徒歩圏内の身近な苔たちと向き合う良い時間になったのも事実です。半年前の自分が聞いたらびっくりしそうな、いくつもの発見がありました。探せばあるんですよ。ほんとにね…

一応、今回のアップデートで、いろいろ気になっていた細かい部分は作り終えました。気分的には、一段落です。ここから先は、もうただひたすらに学習データを増やしていくだけだと思っているので、やらないといけないことがはっきりしてずいぶんと気が楽になりました。

ナニゴケにはかなりの時間を割いてしまい、もうすでにCOSUMIに掛けた時間を超えちゃったんじゃないかと思っているのですが、なんか、やればやるほどゴールが遠くなるような感覚があって、じゃあなぜそうなるのかというと、自分で勝手にゴールを遠ざけているからなんですよね。一番最初に苔をやってみようと思いついた時(本当に遠い昔のことみたい…)に考えていたゴールは、もうとっくに通り過ぎているような気がします。別に自分が後ろに後退しているわけじゃない。まあ、いつか納得いくものができるんでしょうが、どうせならできるだけ早めのほうがいいなとは思います。

white shadeをアップデートしました(2020年4月)

white shadeに7路盤が新しく追加され、9路盤~13路盤では強さをレベル6まで選択できるようになりました。

white shade – 囲碁ブラウザゲーム COSUMI
https://www.cosumi.net/whiteshade.html

ここ最近、COSUMIへのアクセスが本当にかなり多い状態が続いていて(昨日なんか36,010敗…)、なんとか早急に手を打たないと不味いので、実はまだいくつか問題点が残っているのですが、とりあえずwhite shadeをここで一度アップデートして、できるだけそちらへ誘導していきたいと思います。

その問題点としてはまず、7路盤で対局結果を1目間違えることがよくあります。できるだけ早く直したいと思いますが、きちんとやるには学習やり直さないといけないので、少なくとも2週間でしょうか? その次に、アップデート直前に自分の少し非力なiPadで動かすまで気づいていなかったのですが、今回の設定では動作がちょっと重すぎるみたいなので(そのせいで少し不安定かも?)、これも今後修正したいと思います。今は、white shadeもかなり強くなって、特に大きな碁盤サイズでは、今回のレベル6程度の強さなら、そんなにリソース使わなくてもいけるようになっているのですが、もろもろ事情があって、ここを直すのは、全部やり直さないと無理なので、だいぶ先のことになります。あと、レベルが低い時の手の汚さも気になります。white shadeが強くなるにしたがって、弱い設定にするのがかなり難しくなってきました。今回こんなにアップデートに時間が掛かったのも、かなりの部分、そのせいです。良い方法がどうしても見つからなければ、どうせ置き石もたくさん置けることですし、レベル1は今後無くすかもしれません。

white shadeは、一応COSUMI史上最強だと思いますし、もう少しブラッシュアップできたら、メインコンテンツのひとつに昇格かな? もうちょっとだけ頑張ってみます。

前回のwhite shadeのアップデートはちょうど一年前だったみたいですが、この一年間、私は一体何をしていたのでしょうか?(笑) ほんとに心配なるわ…

[追記 2020/5/10]
原因が思っていたのと違っていたのでだいぶ頭抱えましたが、7路盤でスコアをよく間違える理由がようやく判明しました。分かってしまうと、よくこれで7路盤を普通に打っていたなって感じだし、それ以外の碁盤サイズにもだいぶ悪影響があった気がします… このえげつないバグを見た後に、このまま7路盤を公開したままにするのは、ちょっと気が引けるので、一度、7路盤は削除しました。再度公開できるのは、一回学習を回さないといけないので早くて10日後ぐらいですね。ついでに、少し軽く動くようにもします。たぶん、全体的に手もきれいになるでしょう。レベル調整は狂ってきそうですが、それはまたおいおい修正していきます。あと、7路盤では互先はこのままずっと削除したままにするつもりです。やるならまた別の場所に用意します。

[追記 2020/5/21]
スコアをよく間違えるのが直ったので、互先以外は7路盤を元に戻しました。全碁盤サイズで少し軽くなって、おそらく手が自然になってもいるはずです。9路盤以上の碁盤サイズでは、同じレベルで比較した場合、少しだけ弱くなっているとも思いますが(ただ、元々がたぶん少し強すぎたと思う)、ここを調整するのが一番リソースを食うので、細かい修正を全部終わらせた後に行う予定です。もう少し全体的に軽くするために、できるだけ早くPNも学習し直したいのですが、一回先にやります。

[追記 2020/6/5]
今現在、2種類のPNを使用しているのですが、その内のひとつを大幅に小さくしました。少しだけ弱くなっていますが、だいぶリソースを食わなくなっているはずです。手は自然になっているかもしれません。あと、tensorflowjs_converterの--quantization_bytesというオプションを設定して、すべてのNNのウェイトを4byteから2byteに丸めました。半分になった今現在でファイルサイズが全部合わせて3MB弱ぐらいあって、今まではいくらなんでもちょっと大きすぎだったんですよね… 1byteとかだと、予めそういう学習の仕方をしておかないとだめだと思いますが、2byteだと、出力はたぶんあんまり変わらないんじゃないかと思います(以前調べた気がするのですが、詳しいことは忘れた)。それから、話がちょっと変わりますが、クリック/タップ周りも少し手を入れました。本当はこれもっと早くやらなければいけなかったのですが、こういうところを触るのは本当に怖くて、ずっと見て見ぬふりをしてました。なにかまずそうなら、出来るだけすぐに直します。問題無さそうなら、通常版などCOSUMI全体を書き換えたいと思います。

white shadeが動きにくいことはだいぶ減ったと思うので、ぜひ一度遊んでみてください。

[追記 2020/9/7]
white shadeが極端に早いタイミングでパスすることがあったのですが、ようやくひとつ理由がわかった! ちょっとおかしな話なのですが、左上10×10以外の箇所でコウが発生した時に、そこをコウだとしていませんでした(全く頓珍漢なコードだったので、本来なら盤面全体でそうなるはずが、かなり運悪く左上10×10では動いてしまってた…(泣))。なので、このバグは9路盤以下には影響がなく、11路盤でも限定的ですが、13路盤では大問題となっていました。うーん、条件がかなり限られるので、なかなか気づきませんでした… というわけで、急いで修正しておきましたが、結果的に13路盤(と11路盤)はおそらく大幅に強くなっています。もともと、今現在のこの強さに設定したかったのが、意図せず弱くなってしまっていたということです。いろいろと申し訳ありませんでした。

ただ、今回のバグは手元のPython版には関係なかったものですが、そちらでも早すぎるパスは見たことがありますので、単にVNの精度の問題と言えるケースは、これからも残っていくと思います。

COSUMIのプレイ実況動画

COSUMIを始めた頃だったでしょうか、「アメリカでは若者世代のYouTube視聴時間がテレビ視聴時間を抜いた」というニュースを見て、本当にひっくり返りそうなぐらいびっくりしたのを、今でもよく覚えているのですが、気がつけば、私の家にはテレビは無く、暇があったらYouTubeをずっと観ている毎日になってしまいました。そんなみんな大好きYouTubeに、COSUMIとの対局のプレイ実況動画を上げてくださる方が少しずつ増えてきて、すごくうれしく思っています。

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

今回はその中からいくつか紹介していきたいと思います。

まず最初はVTuber。オドロキノシロサ(笑)。 それにしてもこの子、将棋する人だからでしょうか? 入門者にしては異常にセンスが良いですね…

もう一人VTuber。最後は熱いですねえ。ほんとCOSUMIはクソザコやろーです(笑)。

強い方も打ってくださいました。当然COSUMIは勝てないのですが、この2局はレベルの割に上手できれいに打てていると思うので、正直うれしいです。

政光さんも、純碁の紹介にCOSUMIを使ってくださいました。

上の5つの動画はすべて、今現在、視聴回数がものすごく少なくてなんだか悲しいので、試しに、COSUMIの対局ページにパソコンからアクセスした時、ランダムに選択して右下の空いているスペースに埋め込むことにしました。ささやかですが、COSUMIからの恩返しです。でも、意外と視聴回数伸びるかもしれませんよ。ちなみに、今現時点では上から順に、36回、44回、377回、403回、233回です。

私は、自分の目の前で誰かがCOSUMIと対局しているのを見たことが、今の今までただの一度も無く(もっと言うと、リアルな間柄で私のことを中の人だと知っている人も一人もいない…)、昔、こういうプレイ実況動画を初めて見た時に、「ああ、本当に対局しているユーザがいるんだ」と変に感動した覚えがあります。あと、COSUMIの話をしている人もリアルでは見たことがなく、「COSUMIって声に出して読むとそういうイントネーションなんだ」とかは、今でもよく思ったりします(笑)。

COVID-19とCOSUMI

ここ最近、COSUMIへのアクセスがかなり多い状態が続いています。

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

説得力のあるデータは出せませんし、私も決して断言する訳ではありませんが、これは新型コロナウイルス感染症の流行のみでほぼ説明できると、自分の中では確信しています。

今年に入ってからのCOSUMIが一日に負けた数の推移です。寒さの厳しい時期の話でもありますので、比較対象として前々年と前年もグラフに加えました。

以前からここでも何度か書いていますが、COSUMIは雨や雪が降ると、アクセスが増える傾向があります(これは、他のオンラインゲームなどでも同じようです)。COSUMIへのアクセスの約1/4は海外からで、さらにその内訳に韓国や中国など東アジアが占める割合が多いというのが計算を難しくしますが、とりあえず直近見られる28,000+という数字は、仮に日本全国で大雨が降ったとしても、特別な他の要因が無ければなかなかいくことのない、非常に大きな値です。新型肺炎による健康被害が最終的にどれぐらいのものになるのかは、現時点では私にはよくわかりませんが、もしも実際に、それほどまでに人の外出が抑えられているのならば、経済的な影響についてはすでに甚大なものなのではないでしょうか?

中国でオンラインゲームや動画アプリの利用急増、新型肺炎で – ロイター
https://jp.reuters.com/article/china-health-online-idJPKBN1ZY109

しかし、こんな時ですので、外出を控えること自体はとても良いことだと思います。実はCOSUMIでは、この春、3台あるサーバを2台に減らす予定だったのですが、これについてはとりあえず当面の間、延期します。サーバの負荷が高い時間帯が続いて申し訳ありませんが、あと一か月ほどでwhite shadeをかなり強くできそうなので、そのあたりでそちらへの誘導を強めます。しばらくお待ちください。

[追記 2020/4/1]
3月末までのデータを追加したグラフです。細い線は、7日移動平均です。

なんだかえぐみが増してきましたね… 3月中旬からの自粛ムードの中だるみも、うっすら観測できているような気もします。white shadeは、ちょっといろいろ手間取っています。申し訳ありませんが、もう少しだけお待ちください。

ナニゴケをアップデートしました (Ver. 1.3.0)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

今回は、結構大きめのアップデートになっています。まず、判別可能な種に、「エダウロコゴケモドキ」、「クビレケビラゴケ」、「ケゼニゴケ」、「スギバゴケ」、「ヒメジャゴケ」、「リボンゴケ」が追加されました。また、12600枚だったTrainのデータ数は、16400枚になっています。さらに、ネットワークの構造もいくらか改良しました。その中で、特に性能の改善が著しかったのが、通常のSENetとは別に独立して、Average Poolingで1×1ではなく2×2にするSE-blockを用意して、それも併せて両方いっしょにメインの出力と掛け合わせるというやつで、これがかなり汎化性能を上げました。で、そのあたりを頼りに、パラメータ数が増える形でネットワークを大きくもしました。さらにPredictを全体で1回だけではなく、中央を中心とした少し狭い範囲での2回目も行い、2つの結果を平均したものを、判別結果として表示するようにもしました。そして、TensorFlow.jsのバージョンも上げました。

ということで、もろもろかなり良い改善になっていると思います。判別可能な種の数は、なかなか増やしていくことができなくてちょっと辛いのですが、データ数には少し余裕が出てきました。5月6月の苔シーズンまでには、何とかある程度納得いく形にしたいと、自分で言うのもなんですが、今、結構頑張っています。

私の住む所の周りでは、コバノチョウチンゴケがすでにかなり目立つようになりました。春はすぐそこですね。