Changes between Version 14 and Version 15 of misc/setup_for_ML


Ignore:
Timestamp:
05/11/23 17:28:35 (22 months ago)
Author:
Takashi Obina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/setup_for_ML

    v14 v15  
    465465== !PyTorch インストール ==
    466466
    467 次にPyTorchを入れていく。やはり公式サイトからスタート
     467最初に venv 環境を設定する。上の作業と続けるには deactivate してからおこなうこと。
     468
     469どのpythonを使っているのかを確認してから。ベースとなるpythonは /opt/python 以下のものであること確認してから venv を作成する。
     470{{{
     471obina@notepc:~$ which python3
     472/opt/python/3.10.11/bin/python3
     473obina@notepc:~$ python3 -m venv ~/.venv/torch2.0
     474obina@notepc:~$ source ~/.venv/torch2.0/bin/activate
     475(torch2.0) obina@notepc:~$
     476}}}
     477
     478次に、venv環境内にPyTorchをインストールする。やはり公式サイトからスタート
    468479https://pytorch.org/get-started/locally/
    469480PyTorchのOSやバージョン、GPUの有無などを選択。
     
    485496}}}
    486497となったので、これをいれる。
    487 
    488 
    489 まずは venv として設定するときのバージョンは2.0.1とする。
    490 最初にどのpythonを使っているのかを確認してから。
    491 {{{
    492 obina@notepc:~$ which python3
    493 /opt/python/3.10.11/bin/python3
    494 obina@notepc:~$ python3 -m venv ~/.venv/torch2.0
    495 obina@notepc:~$ source ~/.venv/torch2.0/bin/activate
    496 (torch2.0) obina@notepc:~$
    497 }}}
    498498
    499499ここからは先ほどと同様にpipの更新を行った後で、torch入れる。
     
    542542※ PyTorchでは numpy 1.24.1, TensorFlowでは  1.23.5 を使用している
    543543
    544 ここでは、!BoTorch, Ax を入れる。notebook, matplotlibも。
    545 {{{
    546 (torch2.0) obina@notepc:~$ pip install botorch ax-platform
    547 (torch2.0) obina@notepc:~$ pip install notebook matplotlib
     544ここではサンプルとして、!BoTorch, Ax を入れる。notebook, matplotlibもまとめて入れてしまう。
     545{{{
     546(torch2.0) obina@notepc:~$ pip install botorch ax-platform notebook matplotlib
    548547}}}
    549548
     
    592591[Ax ・ Adaptive Experimentation Platform](https://ax.dev/)
    593592
    594 == GPyOpt ==
    595 いくつかの注意点のみ記載
     593== GPyOptインストール ==
     594先にいくつかの注意点のみ記載しておく。
    596595 - python3.11ではコンパイルできないので python3.10を使用する(3.10->3.11でlongintrepr.hが無くなったことに起因)
    597596 - numpy, matplotlibのバージョン指定が必要
     
    600599
    601600
     601先ほどと同様に、~/.venv/gpyopt を作成してく方針とする。
     602{{{
     603obina@notepc:~$ which python3
     604/opt/python/3.10.11/bin/python3
     605obina@notepc:~$ python3 -m venv ~/.venv/gpyopt
     606obina@notepc:~$ source ~/.venv/gpyopt/bin/activate
     607(gpyopt) obina@npc:~$
     608}}}
     609pipをupdateした後で、GPyOptを入れる
     610{{{
     611(gpyopt) obina@notepc:~$ pip install --upgrade pip
     612...
     613(gpyopt) obina@notepc:~$ pip install GPyOpt numpy==1.23.1 notebook matplotlib==3.1.3
     614...
     615}}}
     616
     617notebookのエンジンをブラウザ無しで起動する
     618{{{
     619(gpyopt) obina@npc:~$ jupyter notebook --no-browser
     620....
     621    Or copy and paste one of these URLs:
     622        http://localhost:8888/?token=91bde12e208d9c0fc57a9e23ee78264f5da132cee93f0d09
     623}}}
     624最後に出てくる{{{ http://... }}} URLをPCのブラウザで開く。
     625
     626ここではサンプルとして、加速器学会の例 https://www.pasj.jp/web_publish/pasj2021/proceedings/PDF/WEOB/WEOB03_oral.pdf をそのまま実行する。
     627
     628{{{
     629import numpy as np
     630import GPy
     631import GPyOpt
     632
     633def targ_func(x):
     634    val = np.cos(2.3*x) + 0.5*x
     635    return val
     636
     637#__main__
     638bounds = [{'name': 'x', 'type': 'continuous', 'domain': (0,10)}]
     639
     640# ベイズ推定用のオブジェクト作成
     641myBopt = GPyOpt.methods.BayesianOptimization(f=targ_func,
     642                                             domain=bounds,
     643                                             initial_design_numdata=5,
     644                                             acquisition_type='LCB')
     645
     646# 最適化実行
     647myBopt.run_optimization(max_iter=15)
     648
     649# 結果表示
     650print(myBopt.x_opt, myBopt.fx_opt)
     651
     652# プロット
     653myBopt.plot_acquisition()
     654myBopt.plot_convergence()
     655}}}
     656
     657
     658Notebookの様子はこんな感じ
     659
     660[[Image(GPyOpt_LCB3.png, 50%)]]
     661
     662
     663LCBを使った場合の結果
     664
     665[[Image(GPyOpt_LCB1.png, 30%)]]
     666[[Image(GPyOpt_LCB2.png, 30%)]]
     667
     668
     669EIを使った場合の結果
     670
     671[[Image(GPyOpt_EI1.png, 30%)]]
     672[[Image(GPyOpt_EI2.png, 30%)]]
     673
     674
    602675== 今後 ==
    603676ここから先はまだ書いていない
    604677 * GPU環境 (CUDA)でのセットアップ例
    605  * GPyOptの使用例
    606  * BOTorch, Axの使用例
    607678 * EPICS連携