今はまだハローワールド

Just another kindly reminder

Google Colaboratoryとローカル環境(Jupyter Lab)の学習時間の比較

Google Colaboratoryとローカル環境(Jupyter Lab)の機械学習の学習(最適化)時間を比較する。

それぞれCPUとGPUで計測する。

方法

今回の手法にはPyTorchチュートリアル(日本語翻訳版)0.8. クイックスタートをベースとして利用する。後述のア. 時間の計測とイ. CPU/GPU切り替えのコードを加えたら、通常通り上から実行すればよい。

ア. 時間の計測

学習(最適化)の時間の測定には、学習ループのセルの先頭に「%%time」を記述する。

%%time
epochs = 5
for t in range(epochs):
    print(f"Epoch {t+1}\n-------------------------------")
    train(train_dataloader, model, loss_fn, optimizer)
    test(test_dataloader, model)
print("Done!")

moch.hatenablog.com

イ. CPU/GPU切り替え

上記クイックスタートの「モデルの構築」のセルにおいて、CPUまたはGPUを直接指定する記述を追加する。(例)CPUを指定:

// device = "cuda" if torch.cuda.is_available() else "cpu"
device = "cpu"
// device = "cuda"

結果

Google Colaboratory(クラウド

CPU: 1min 18s

GPU: 59.7 s

Jupyter Lab(ローカル)

CPU: 45.6s

GPU: 26s

ColabではGPU指定はできないとはいえ、この結果を見るとローカルで環境を用意すると学習が半分で済む計算になる。

ローカル環境の詳細

今回の測定にはRyzen 3600 + GTX 1060 (6GB)にCUDA 10.2をインストールして次の環境を利用している。

moch.hatenablog.com

 

MAP推定メモ

結論

最尤推定・・・事前確率P(θ)を最大にするθを推定

MAP推定・・・事後確率P(θ|D)を最大にするθを推定

補足

P(θ|D) = P(θ) × P(D|θ) / P(D)

ベイズの定理を参照。

P(θ|D)

= P(θ, D) / P(D)

= P(D|θ) P(θ) / P(D)

= P(θ) × P(D|θ) / P(D)

方法

MAP推定を行うには、

argmax P(θ|D)

= argmax log P(θ|D)

= argmax { log P(θ)+log P(D|θ) }

これより log P(θ)+log P(D|θ) をθに関して偏微分して0になるθを求めればよい

事後確率の例題

「高齢ドライバーが免許返納を検討している」確率を P(θ) とする。

「免許返納を検討している高齢ドライバー」が「交通事故を起こす」確率をP(D|θ)とする。

「交通事故を起こした高齢ドライバー」が「免許返納を検討していた」確率P(θ|D)を求めよ。

答え・・・P(θ|D) = P(θ) × P(D|θ) / P(D)。

さらに

ポワソン分布の最尤推定において、さらにパラメータμの確率分布P(μ)が与えられればMAP推定を行うことができる。

moch.hatenablog.com

 

miniconda+jupyterLab+pytorch環境構築

概要

目まぐるしく変化しているように見える機械学習の開発環境の、とりあえず最先端と思われる一つを抑えておく。

いま興味がある転移学習を使えば、個人レベルでも面白いことができないかと思いチュートリアルから始めてみる。

各種インストール

  1. 事前にminicondaをインストールしておく
  2. Anaconda Promptを起動
  3. conda create -n pytorch python=3.7
    conda activate pytorch
    conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
    conda install -c conda-forge jupyterlab

JupyterLabの起動

  1. Anaconda Promptを起動
  2. conda activate pytorch
    jupyter-lab

参考:

Miniconda — Conda documentation

Start Locally | PyTorch

Project Jupyter | Installing the Jupyter Software

次回

PyTorchのチュートリアルを実行して画像分類する。最終的には転移学習まで予定。

 

P.S. 将棋AIも作りたい。