katago-on-google-colaboratory

【無料GPU】囲碁AI KataGoをGoogle Colaboratory上で動かす方法

【お知らせ】 2021/8/26 問題なく動かせる手順に修正しました。 2021/8/22 2021年6月ころから、以前紹介していた方法が使えなくなったため、2021年8月以前に本記事の手順でColab-katagoを使っていた方は、乗り換えに以下の作業が必要です。 Colabのノートブックを以下のものに変更(ngrokのトークン、USER_PASSWORDは今までと同じものが使えます) https://colab.research.google.com/github/mildinvestor/katago-colab/blob/master/colab_katago_gd_en.ipynb 新しいクライアントcolab-katago-gd.exeをダウンロード https://github.com/mildinvestor/katago-colab/releases/download/v1.9.1-alpha/colab-katago-gd.windows.zip Lizzieのエンジン設定変更 colab-katago.exeをダウンロードしたcolab-katago-gd.exeに置き換え 第一引数USER_NAMEを、ノートブック実行時に表示されるGoogle DriveのファイルID(SSH_INFO_GOOGLE_DRIVE_FILE_ID: [ここの文字列])に変更 AlphaGoが人間の実力を超えたのが記憶に新しい囲碁ですが、すでにいろいろな囲碁AIが登場しており、個人のパソコン上でも人間以上に強いAIを動かすことができます。 ただし、囲碁AIはディープラーニングを使用しているため、性能を引き出すには高性能なGPU(グラフィックボード)が必要になります。 そのために、ヘビーな囲碁AIユーザは、高性能な自作パソコンを組んだり、AWS(Amazon Web Services)やGCP(Google Cloud Platform)、Vast.aiなどのクラウドサービスを利用することが一般的です。ただし、クラウドの利用料などが多少なりともかかるので、気軽には利用しにくい面もあります。 クラウドで囲碁AIを動かす方法 aws guide(AWSで囲碁プログラムを起動する方法) Leela Zero を GCE で動かす 〜 その1 Google Compute Engine 設定編 Azure で Leela Zero を動かす手順 Setting up KataGo and Lizzie on vast.ai(英語) 本記事では、Google Colaboratory(Google Colab)という、オンラインでGPUを使った機械学習が利用できるクラウドサービスを利用して、人間以上の強さがあると言われている囲碁AIであるKataGoを無料で動かす方法を紹介します。 Google Colaboratoryは完全無料なので、課金される心配なく使用できます。 本記事を読んでできるようになること GPUの入っていないパソコンからでも、最新の囲碁AIであるKataGoを高速に動かせるようになります。 利用料金は完全無料です。ただし、1回の連続利用時間は最大12時間です。 CPU版のKataGoの数十倍の性能がでるので、Lizzieなどのソフトでの検討に利用可能です。 準備が必要なもの Windows、Mac、Linuxいずれかのパソコン(64bit環境) Googleアカウント ブラウザ(Google Chrome推奨) なお、本記事では、主にWindows10、Chromeブラウザの環境向けに解説します。 基本的にプログラミングや難しい操作は必要ありません。本記事の通りに操作するだけで、KataGoを動かせるようになります。では、説明していきます。 Google Colaboratory(Google Colab)とは Google Colabは、環境構築なしに機械学習などのプログラムをブラウザから実行することができます。Googleが無料で公開しており、Googleアカウントがあれば誰でも無料で利用できます。 もう少し詳しく言うと、Google ColabはJupyter Notebookのクラウド版です。Jupyter Notebookとは、ノートブックと呼ばれるファイルに、Pythonプログラムを記載して実行したり、説明の文章や図を書いたり、実行結果を保存したりできるツールです。 ...

2021-08-26 · 3 分 · mild.investor
sir-model-r0-2.5

感染症流行の数理(SIRモデル)のグラフ化

お久しぶりです。ブログ更新サボっていました(^_^;) 3月頃からの新型コロナウイルスのパンデミックにより、世界中が混乱に陥っていますね。私も日々ニュースをみて不安になったり、投資の含み損を見て嫌な気持ちになったりしています。 仕事もフルリモートワークとなって、オーバワーク気味で疲れが溜まっておりました。しかし、ゴールデンウィークの休みで元気を取り戻してきました。 今回の記事は気分転換とリハビリも兼ねて、雑記回です。コロナショックで不安を抱えている方への頭の体操や、プログラミングの入門となれば幸いです。 さて、今回は感染症流行の古典的モデルである「SIRモデル」をPythonでプログラミングしてみました。 SIRモデルは、すでに色々なサイトやYoutubeで解説されておりますが、感染症の流行を表すのに一番シンプルな数学的なモデルだそうです。100年近く前からあるモデルですが、未だに使えるそうです。SIRモデルの詳しい数理は Wikipedia や後述の参考サイトに解説があるので、興味のある方は調べてみると面白いと思います。 基本再生算数2.5のときのグラフ SIRモデルにおいて、感染率βを0.25、回復率γを0.1(10日間で隔離、回復または死亡する)、つまり1人の感染者が感染を移す人数R0(基本再生算数)を2.5とした場合の流行は以下のようなグラフとなりました。 R0=2.5という数字は、専門家会議で提示されていたものです。実態はまだわからないそうですが、2~3くらいというのが見立てだそうです。 感染者が発生してから流行のピークまで約50日ほどかかり、20%以上の方が感染し、流行収束までに約90%が感染するとなりました。 日本では、重症者だけ受け入れるとしても、医療キャパシティはせいぜい数千から数万人程度でしょうから、 ほとんどの人が軽症とはいえ、放っておけば医療崩壊待ったなしですね。 再生算数を低く抑えながらみんなの免疫がつくまで長く付き合っていかざるをえなさそうですね。 SIRモデルのソースコード(Python) グラフを表示するのに使ったPythonのソースコードです。参考サイトのものをほとんどコピーしたものですが、一部見やすく修正しています。差分方程式を解いたり、グラフ化したりするのにこんな短いコードでできるとは、素晴らしいですね。 Pythonはほとんど使ったことがないのですが、使いやすいですね。世界中で流行しているのもうなずけます。 import numpy as np from scipy.integrate import odeint from scipy.optimize import minimize import matplotlib.pyplot as plt # the effective contact rate of the disease BETA = 0.25 # recovery rate GAMMA = 0.1 R_nought = BETA / GAMMA # max time(days) MAX_DAYS = 200 # delta time DT = 0.01 # Number of population NUM_POPULATION = 1000 # Initial infected population I_INIT = 1 # Initial susceptible population S_INIT = NUM_POPULATION - I_INIT # Initial removed population (either by death or recovery) R_INIT = 0 # SIR Differential Equation def diff_eq_func(y, time, NUM_POPULATION, BETA, GAMMA): susceptible = y[0] infectious = y[1] ds_dt = -BETA * susceptible * infectious / NUM_POPULATION di_dt = BETA * susceptible * infectious / NUM_POPULATION - GAMMA * infectious dr_dt = GAMMA * infectious return [ds_dt, di_dt, dr_dt] # Solver SIR model y_init = [S_INIT, I_INIT, R_INIT] times = np.arange(0, MAX_DAYS, DT) result = odeint(diff_eq_func, y_init, times, args=(NUM_POPULATION, BETA, GAMMA)) # plot plt.plot(times, result) plt.title('SIR model. R0: ' + str(R_nought) + '(beta: ' + str(BETA) + ', gamma: ' + str(GAMMA) + ')') plt.legend(['Susceptible', 'Infected', 'Recovered\n(isolated/death/recovery)']) plt.xlabel('Time(days)') plt.ylabel('Population') plt.show() 参考サイト Wikipedia ...

2020-05-05 · 1 分 · mild.investor