Changes between Version 3 and Version 4 of misc/setup_for_ML


Ignore:
Timestamp:
05/10/23 11:31:04 (14 months ago)
Author:
obina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/setup_for_ML

    v3 v4  
    136136 
    137137== python3インストール == 
     138今回はpython公式サイトから、現時点(2023/05)の最新版であるPython3.11.3を入れる。 
     139機械学習環境を構築する目的からは必ずしも最新版が良いとは限らない(ときどき最新バージョンに対応できていないことがある)が、今回はこれで問題なさそう。 
     140 
     141 
     142あらかじめインストール先として /opt/python/3.11.3 を作成しておく。 
     143ownerを自分に設定することで、後の作業は一般ユーザー権限で行う。 
     144{{{ 
     145obina@notepc:~$ cd /opt 
     146obina@notepc:/opt$ ls 
     147obina@notepc:/opt$ sudo mkdir python 
     148obina@notepc:/opt$ sudo chown obina:obina python 
     149obina@notepc:/opt$ cd python 
     150obina@notepc:/opt/python$ mkdir 3.11.3 
     151obina@notepc:/opt/python$ ls 
     1523.11.3 
     153}}} 
     154 
     155ホームディレクトリに戻って、作業用のディレクトリ作成。ソースをダウンロード。URLは上の公式サイトから最新のモノを探す。今回の場合は以下の通りとなった。 
     156{{{ 
     157obina@notepc:~$ mkdir work 
     158obina@notepc:~$ cd work 
     159obina@notepc:~/work$ wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz 
     160--2023-05-09 20:11:15--  https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz 
     161Resolving www.python.org (www.python.org)... 151.101.108.223, 2a04:4e42:1a::223 
     162Connecting to www.python.org (www.python.org)|151.101.108.223|:443... connected. 
     163HTTP request sent, awaiting response... 200 OK 
     164Length: 26455738 (25M) [application/octet-stream] 
     165Saving to: ‘Python-3.11.3.tgz’ 
     166 
     167Python-3.11.3.tgz             100%[=================================================>]  25.23M  19.5MB/s    in 1.3s 
     168 
     1692023-05-09 20:11:17 (19.5 MB/s) - ‘Python-3.11.3.tgz’ saved [26455738/26455738] 
     170}}} 
     171 
     172configureでインストール先として /opt/python/3.11.3 を指定する。 
     173{{{ 
     174obina@notepc:~/work$ tar xvfz Python-3.11.3.tgz 
     175obina@notepc:~/work$ cd Python-3.11.3/ 
     176obina@notepc:~/work/Python-3.11.3$ ls 
     177Doc      LICENSE  Makefile.pre.in  Objects  Parser    README.rst  config.guess  configure.ac   setup.py 
     178Grammar  Lib      Misc             PC       Programs  Tools       config.sub    install-sh 
     179Include  Mac      Modules          PCbuild  Python    aclocal.m4  configure     pyconfig.h.in 
     180 
     181obina@notepc:~/work/Python-3.11.3$ ./configure --prefix=/opt/python/3.11.3 --enable-optimizations --with-lto 
     182 
     183# lto (Link time optimization) はリンク時間が長くなる替わりに実行速度が上がる...らしい。(自分では未検証) 
     184obina@notepc:~/work/Python-3.11.3$ make -j8 # 並列化の数はCPU数に応じて適当に 
     185.... 
     186obina@notepc:~/work/Python-3.11.3$ make install 
     187.... 
     188}}} 
     189 
     190環境設定用のスクリプトを作成。WSLの場合はユーザーが自分だけなので~/.bashrcに直接書いても良いのだが、今後pythonのバージョンによって切り分けたいこともあると思うので/opt/python以下につくっておく 
     191{{{ 
     192$ vi /opt/python/setup_py3.11.3.sh 
     193export PATH=/opt/python/3.11.3/bin:$PATH 
     194}}} 
     195 
     196念のため確認. 上のスクリプトを source する前後で使うpythonをチェック。 
     197{{{ 
     198obina@notepc:~$ which python3 
     199/usr/bin/python3 
     200obina@notepc:~$ source /opt/python/3.11.3/setup_py3.11.3.sh 
     201obina@notepc:~$ which python3 
     202/opt/python/3.11.3/bin/python3 
     203}}} 
     204 
     205問題ない。 
     206{{{ 
     207obina@notepc:~$ which pip3 
     208/opt/python/3.11.3/bin/pip3 
     209obina@notepc:~$ 
     210obina@notepc:~$ pip3 list 
     211Package    Version 
     212---------- ------- 
     213pip        22.3.1 
     214setuptools 65.5.0 
     215 
     216[notice] A new release of pip available: 22.3.1 -> 23.1.2 
     217[notice] To update, run: pip3 install --upgrade pip 
     218}}} 
     219 
     220pip3を確認して、アップデートする 
     221{{{ 
     222obina@notepc:~$ pip3 install --upgrade pip 
     223Requirement already satisfied: pip in /opt/python/3.11.3/lib/python3.11/site-packages (22.3.1) 
     224Collecting pip 
     225  Downloading pip-23.1.2-py3-none-any.whl (2.1 MB) 
     226     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 1.8 MB/s eta 0:00:00 
     227Installing collected packages: pip 
     228  Attempting uninstall: pip 
     229    Found existing installation: pip 22.3.1 
     230    Uninstalling pip-22.3.1: 
     231      Successfully uninstalled pip-22.3.1 
     232Successfully installed pip-23.1.2 
     233}}} 
     234これで基本環境はOK。次はvenvを使って個別のパッケージを入れていく。 
     235 
     236 
    138237== venv 設定 == 
    139 == !TensorFlow インストール == 
     238次にTensorFlowやPyTorchを入れていく。それぞれでnumpyのバージョンなど、要求されるものが異なることが多いため別の仮想環境を作る方が良い。 
     239 
     240ここではvenvを使うのでその設定を行う 
     241 
     242基本方針: ホームディレクトリ直下に ".venv" というディレクトリを作成。 ~/.venv/以下に個別の仮想環境用のディレクトリを作成していく。 
     243例えば 
     244 - TensorFlow用は ~/.venv/tf2.12 
     245 - PyTorch用は ~/.venv/torch2.0 
     246のような感じでディレクトリを作っていく 
     247仮にあとで仮想環境を消したいときにはディレクトリ(上の例ではtf2.12とかtorch2.0とか)を削除すれば良いだけ。実際には.venvの下に作る必要はなく、どのディレクトリでも良いし隠しディレクトリである必然性も無いが、慣例に従う。 
     248python.jpサイトの仮想環境構築ガイド 
     249 - [windows](https://www.python.jp/install/windows/venv.html) 
     250 - [ubuntu](https://www.python.jp/install/ubuntu/virtualenv.html) 
     251 
     252 
     253=== !TensorFlow 用のvenv環境準備 === 
     254 
     255まずはTensorFlowのバージョンを確認 
     256[tensorflow・PyPI](https://pypi.org/project/tensorflow/) 
     257をみると、python3.11に対応したTF2.12.0があることがわかる → venv名称をtf2.12とする方針とする 
     258 
     259 
     260ファイル名を確認する 
     261https://pypi.org/project/tensorflow/#files 
     262をみると、 
     263tensorflow-2.12.0-cp311-cp311-manylinux_2_17_x86_64....whl 
     264というファイルがあるのでCPython3.11に対応しているようだ。 
     265 
     266 
     267使用するpythonの場所が/opt以下であることを確認してから、venvを構築。このときに指定する名前がプロンプトの先頭に付くので、あまり長い名前を付けると面倒かもしれない(jupyter notebookを使うことが前提ならあまり気にならないが) 
     268{{{ 
     269obina@notepc:~$ which python3 
     270/opt/python/3.11.3/bin/python3 
     271obina@notepc:~$ python3 -m venv ~/.venv/tf2.12 
     272}}} 
     273 
     274念のためディレクトリを確認 
     275{{{ 
     276obina@notepc:~$ ls ~/.venv/tf2.12/ 
     277bin  include  lib  lib64  pyvenv.cfg 
     278obina@notepc:~$ ls ~/.venv/tf2.12/bin/ 
     279Activate.ps1  activate  activate.csh  activate.fish  pip  pip3  pip3.11  python  python3  python3.11 
     280}}} 
     281 
     282仮想環境を起動; これ以降はプロンプトの先頭に (tf2.12)が付く 
     283{{{ 
     284obina@notepc:~$ source ~/.venv/tf2.12/bin/activate 
     285(tf2.12) obina@notepc:~$ 
     286}}} 
     287 
     288終了するのは"deactivate"コマンドで良い 
     289{{{ 
     290(tf2.12) obina@notepc:~$ which python3 
     291/home/obina/.venv/tf2.12/bin/python3 
     292(tf2.12) obina@notepc:~$ which pip 
     293/home/obina/.venv/tf2.12/bin/pip 
     294(tf2.12) obina@notepc:~$ deactivate 
     295obina@notepc:~$ 
     296obina@notepc:~$ which python3 
     297/opt/python/3.11.3/bin/python3 
     298}}} 
     299 
     300== TensorFlow インストール == 
     301例によって確認しておく 
     302{{{ 
     303(tf2.12) obina@notepc:~$ which pip3 
     304/home/obina/.venv/tf2.12/bin/pip3 
     305(tf2.12) obina@notepc:~$ pip3 install --upgrade pip 
     306..... 
     307Successfully installed pip-23.1.2 
     308(tf2.12) obina@notepc:~$ pip3 list 
     309Package    Version 
     310---------- ------- 
     311pip        23.1.2 
     312setuptools 65.5.0 
     313 
     314(tf2.12) obina@notepc:~$ pip3 install tensorflow 
     315..... 
     316Successfully installed MarkupSafe-2.1.2 absl-py-1.4.0 astunparse-1.6.3 cachetools-5.3.0 certifi-2023.5.7 charset-normalizer-3.1.0 flatbuffers-23.3.3 gast-0.4.0 google-auth-2.17.3 google-auth-oauthlib-1.0.0 google-pasta-0.2.0 grpcio-1.54.0 h5py-3.8.0 idna-3.4 jax-0.4.8 keras-2.12.0 libclang-16.0.0 markdown-3.4.3 ml-dtypes-0.1.0 numpy-1.23.5 oauthlib-3.2.2 opt-einsum-3.3.0 packaging-23.1 protobuf-4.23.0 pyasn1-0.5.0 pyasn1-modules-0.3.0 requests-2.30.0 requests-oauthlib-1.3.1 rsa-4.9 scipy-1.10.1 six-1.16.0 tensorboard-2.12.3 tensorboard-data-server-0.7.0 tensorflow-2.12.0 tensorflow-estimator-2.12.0 tensorflow-io-gcs-filesystem-0.32.0 termcolor-2.3.0 typing-extensions-4.5.0 urllib3-2.0.2 werkzeug-2.3.4 wheel-0.40.0 wrapt-1.14.1 
     317(tf2.12) obina@notepc:~$ 
     318}}} 
     319 
     320ここで動作確認。公式サイトにあるコマンドで。 
     321{{{ 
     322(tf2.12) obina@notepc:~$ python3 
     323Python 3.11.3 (main, May  9 2023, 20:29:30) [GCC 11.3.0] on linux 
     324Type "help", "copyright", "credits" or "license" for more information. 
     325>>> 
     326>>> import tensorflow as tf 
     327....(((いろいろとwarning))).... 
     328>>> 
     329>>> print(tf.reduce_sum(tf.random.normal([1000, 1000]))) 
     330tf.Tensor(-182.7671, shape=(), dtype=float32) 
     331>>> print(tf.reduce_sum(tf.random.normal([1000, 1000]))) 
     332tf.Tensor(-268.51474, shape=(), dtype=float32) 
     333}}} 
     334とりあえず動く。 
     335 
     336もう1つ、kereasを使ったサンプル。 
     337https://www.tensorflow.org/tutorials/quickstart/beginner 
     338をそのまま実行 
     339{{{ 
     340import tensorflow as tf 
     341mnist = tf.keras.datasets.mnist 
     342 
     343(x_train, y_train),(x_test, y_test) = mnist.load_data() 
     344x_train, x_test = x_train / 255.0, x_test / 255.0 
     345 
     346model = tf.keras.models.Sequential([ 
     347  tf.keras.layers.Flatten(input_shape=(28, 28)), 
     348  tf.keras.layers.Dense(128, activation='relu'), 
     349  tf.keras.layers.Dropout(0.2), 
     350  tf.keras.layers.Dense(10, activation='softmax') 
     351]) 
     352 
     353model.compile(optimizer='adam', 
     354              loss='sparse_categorical_crossentropy', 
     355              metrics=['accuracy']) 
     356 
     357model.fit(x_train, y_train, epochs=5) 
     358model.evaluate(x_test, y_test) 
     359}}} 
     360 
     361評価結果をみる 
     362{{{ 
     363>>> model.evaluate(x_test, y_test) 
     364313/313 [==============================] - 0s 778us/step - loss: 0.0758 - accuracy: 0.9757 
     365[0.07577536255121231, 0.9757000207901001] 
     366}}} 
     367ちゃんと学習出来ているので、インストール自体は問題なさそう。 
     368 
     369=== Jupyter Notebook, ipython のセットアップ === 
     370次に、利便性のためにipythonやjupyter notebookを入れておく; 依存関係もあるがまとめてnotebookを入れるのが簡単。詳しくは 
     371https://jupyter.org/install 
     372を参照。 
     373{{{ 
     374(tf2.12) obina@notepc:~$ pip3 install notebook 
     375.... 
     376(tf2.12) obina@notepc:~$ which ipython3 
     377/home/obina/.venv/tf2.12/bin/ipython3 
     378(tf2.12) obina@notepc:~$  
     379(tf2.12) obina@notepc:~$ ipython3 --nosep 
     380Python 3.11.3 (main, May  9 2023, 20:29:30) [GCC 11.3.0] 
     381Type 'copyright', 'credits' or 'license' for more information 
     382IPython 8.13.2 -- An enhanced Interactive Python. Type '?' for help. 
     383In [1]: 
     384}}} 
     385問題なし。 
     386 
     387ノートブックの起動。デフォルトではOS内のブラウザを立ち上がようとしてしまうので、--no-browserオプションを付けて起動し、Windows側のブラウザで接続する。 
     388``` 
     389(tf2.12) obina@notepc:~$ jupyter notebook --no-browser 
     390[I 21:30:41.014 NotebookApp] Writing notebook server cookie secret to /home/obina/.local/share/jupyter/runtime/notebook_cookie_secret 
     391 
     392  _   _          _      _ 
     393 | | | |_ __  __| |__ _| |_ ___ 
     394 | |_| | '_ \/ _` / _` |  _/ -_) 
     395  \___/| .__/\__,_\__,_|\__\___| 
     396       |_| 
     397 
     398Read the migration plan to Notebook 7 to learn about the new features and the actions to take if you are using extensions. 
     399 
     400https://jupyter-notebook.readthedocs.io/en/latest/migrate_to_notebook7.html 
     401 
     402Please note that updating to Notebook 7 might break some of your extensions. 
     403 
     404[I 21:30:41.133 NotebookApp] Serving notebooks from local directory: /home/obina 
     405[I 21:30:41.133 NotebookApp] Jupyter Notebook 6.5.4 is running at: 
     406[I 21:30:41.133 NotebookApp] http://localhost:8888/?token=50b97522fe665b6862193efe85be7fe5c703dcbe13116e45 
     407[I 21:30:41.133 NotebookApp]  or http://127.0.0.1:8888/?token=50b97522fe665b6862193efe85be7fe5c703dcbe13116e45 
     408[I 21:30:41.133 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). 
     409[C 21:30:41.135 NotebookApp] 
     410 
     411    To access the notebook, open this file in a browser: 
     412        file:///home/obina/.local/share/jupyter/runtime/nbserver-19189-open.html 
     413    Or copy and paste one of these URLs: 
     414        http://localhost:8888/?token=50b97522fe665b6862193efe85be7fe5c703dcbe13116e45 
     415     or http://127.0.0.1:8888/?token=50b97522fe665b6862193efe85be7fe5c703dcbe13116e45 
     416``` 
     417 
     418と出るので、ブラウザに上のURLを貼り付ける。ブラウザで動くことを確認。 
     419 
     420※ Notebook 7 なるものがあるとは知らなかった.... 
     421 
     422上のコマンドではmatplotlibが入らなかったので、手動で入れた。plotlyやseabornはお好みで。 
     423{{{ 
     424(tf2.12) obina@notepc:~$ pip install matplotlib 
     425}}} 
     426 
     427参考のため、pip list 確認(pip freeze 結果ファイルはこちら) 
     428{{{ 
     429(tf2.12) obina@notepc:~$ pip list 
     430Package                      Version 
     431---------------------------- -------- 
     432absl-py                      1.4.0 
     433anyio                        3.6.2 
     434argon2-cffi                  21.3.0 
     435argon2-cffi-bindings         21.2.0 
     436arrow                        1.2.3 
     437asttokens                    2.2.1 
     438astunparse                   1.6.3 
     439attrs                        23.1.0 
     440backcall                     0.2.0 
     441beautifulsoup4               4.12.2 
     442bleach                       6.0.0 
     443cachetools                   5.3.0 
     444certifi                      2023.5.7 
     445cffi                         1.15.1 
     446charset-normalizer           3.1.0 
     447comm                         0.1.3 
     448contourpy                    1.0.7 
     449cycler                       0.11.0 
     450debugpy                      1.6.7 
     451decorator                    5.1.1 
     452defusedxml                   0.7.1 
     453executing                    1.2.0 
     454fastjsonschema               2.16.3 
     455flatbuffers                  23.3.3 
     456fonttools                    4.39.3 
     457fqdn                         1.5.1 
     458gast                         0.4.0 
     459google-auth                  2.17.3 
     460google-auth-oauthlib         1.0.0 
     461google-pasta                 0.2.0 
     462grpcio                       1.54.0 
     463h5py                         3.8.0 
     464idna                         3.4 
     465ipykernel                    6.23.0 
     466ipython                      8.13.2 
     467ipython-genutils             0.2.0 
     468isoduration                  20.11.0 
     469jax                          0.4.8 
     470jedi                         0.18.2 
     471Jinja2                       3.1.2 
     472jsonpointer                  2.3 
     473jsonschema                   4.17.3 
     474jupyter_client               8.2.0 
     475jupyter_core                 5.3.0 
     476jupyter-events               0.6.3 
     477jupyter_server               2.5.0 
     478jupyter_server_terminals     0.4.4 
     479jupyterlab-pygments          0.2.2 
     480keras                        2.12.0 
     481kiwisolver                   1.4.4 
     482libclang                     16.0.0 
     483Markdown                     3.4.3 
     484MarkupSafe                   2.1.2 
     485matplotlib                   3.7.1 
     486matplotlib-inline            0.1.6 
     487mistune                      2.0.5 
     488ml-dtypes                    0.1.0 
     489nbclassic                    1.0.0 
     490nbclient                     0.7.4 
     491nbconvert                    7.4.0 
     492nbformat                     5.8.0 
     493nest-asyncio                 1.5.6 
     494notebook                     6.5.4 
     495notebook_shim                0.2.3 
     496numpy                        1.23.5 
     497oauthlib                     3.2.2 
     498opt-einsum                   3.3.0 
     499packaging                    23.1 
     500pandocfilters                1.5.0 
     501parso                        0.8.3 
     502pexpect                      4.8.0 
     503pickleshare                  0.7.5 
     504Pillow                       9.5.0 
     505pip                          23.1.2 
     506platformdirs                 3.5.0 
     507prometheus-client            0.16.0 
     508prompt-toolkit               3.0.38 
     509protobuf                     4.23.0 
     510psutil                       5.9.5 
     511ptyprocess                   0.7.0 
     512pure-eval                    0.2.2 
     513pyasn1                       0.5.0 
     514pyasn1-modules               0.3.0 
     515pycparser                    2.21 
     516Pygments                     2.15.1 
     517pyparsing                    3.0.9 
     518pyrsistent                   0.19.3 
     519python-dateutil              2.8.2 
     520python-json-logger           2.0.7 
     521PyYAML                       6.0 
     522pyzmq                        25.0.2 
     523requests                     2.30.0 
     524requests-oauthlib            1.3.1 
     525rfc3339-validator            0.1.4 
     526rfc3986-validator            0.1.1 
     527rsa                          4.9 
     528scipy                        1.10.1 
     529Send2Trash                   1.8.2 
     530setuptools                   65.5.0 
     531six                          1.16.0 
     532sniffio                      1.3.0 
     533soupsieve                    2.4.1 
     534stack-data                   0.6.2 
     535tensorboard                  2.12.3 
     536tensorboard-data-server      0.7.0 
     537tensorflow                   2.12.0 
     538tensorflow-estimator         2.12.0 
     539tensorflow-io-gcs-filesystem 0.32.0 
     540termcolor                    2.3.0 
     541terminado                    0.17.1 
     542tinycss2                     1.2.1 
     543tornado                      6.3.1 
     544traitlets                    5.9.0 
     545typing_extensions            4.5.0 
     546uri-template                 1.2.0 
     547urllib3                      2.0.2 
     548wcwidth                      0.2.6 
     549webcolors                    1.13 
     550webencodings                 0.5.1 
     551websocket-client             1.5.1 
     552Werkzeug                     2.3.4 
     553wheel                        0.40.0 
     554wrapt                        1.14.1 
     555}}} 
     556 
     557再掲:venv環境を抜けるのはdeactivate コマンドで終了するか、システムから抜ける。 
     558 
     559 
    140560== !PyTorch インストール == 
    141561 
     562次にPyTorchを入れていく。やはり公式サイトからスタート 
     563https://pytorch.org/get-started/locally/ 
     564PyTorchのOSやバージョン、GPUの有無などを選択。 
     565ここではGPUが無い環境なので 
     566{{{ 
     567PyTorch Build: Stable(2.0.1) 
     568Your OS: Linux 
     569Package: Pip 
     570Language: Python 
     571Compute Platform: CPU 
     572}}} 
     573を選択する。コマンドは 
     574{{{ 
     575pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu 
     576}}} 
     577となったので、これをいれる。 
     578 
     579まずは venv として設定するときのバージョンは2.0.1とする。 
     580最初にどのpythonを使っているのかを確認してから。 
     581{{{ 
     582obina@notepc:~$ which python3 
     583/opt/python/3.11.3/bin/python3 
     584obina@notepc:~$ python3 -m venv ~/.venv/torch2.0 
     585obina@notepc:~$ source ~/.venv/torch2.0/bin/activate 
     586(torch2.0) obina@notepc:~$ 
     587}}} 
     588 
     589ここからは先ほどと同様にpipの更新を行った後で、torch入れる。 
     590{{{ 
     591(torch2.0) obina@notepc:~$ which pip 
     592/home/obina/.venv/torch2.0/bin/pip 
     593(torch2.0) obina@notepc:~$ pip install --upgrade pip 
     594.... 
     595Successfully installed pip-23.1.2 
     596(torch2.0) obina@notepc:~$  
     597(torch2.0) obina@notepc:~$ pip list 
     598Package    Version 
     599---------- ------- 
     600pip        23.1.2 
     601setuptools 65.5.0 
     602 
     603 
     604(torch2.0) obina@notepc:~$ pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu 
     605.... 
     606Installing collected packages: mpmath, urllib3, typing-extensions, sympy, pillow, numpy, networkx, MarkupSafe, idna, filelock, charset-normalizer, certifi, requests, jinja2, torch, torchvision, torchaudio 
     607Successfully installed MarkupSafe-2.1.2 certifi-2022.12.7 charset-normalizer-2.1.1 filelock-3.9.0 idna-3.4 jinja2-3.1.2 mpmath-1.2.1 networkx-3.0 numpy-1.24.1 pillow-9.3.0 requests-2.28.1 sympy-1.11.1 torch-2.0.1+cpu torchaudio-2.0.2+cpu torchvision-0.15.2+cpu typing-extensions-4.4.0 urllib3-1.26.13 
     608}}} 
     609 
     610動作確認 
     611{{{ 
     612(torch2.0) obina@notepc:~$ python 
     613Python 3.11.3 (main, May  9 2023, 20:29:30) [GCC 11.3.0] on linux 
     614Type "help", "copyright", "credits" or "license" for more information. 
     615>>> 
     616>>> 
     617>>> import torch 
     618>>> x = torch.rand(5,3) 
     619>>> print(x) 
     620tensor([[0.1193, 0.9816, 0.3111], 
     621        [0.8966, 0.0651, 0.5655], 
     622        [0.5590, 0.1083, 0.6464], 
     623        [0.7477, 0.3680, 0.5885], 
     624        [0.8389, 0.1438, 0.8069]]) 
     625>>>  
     626}}} 
     627 
     628問題無さそう。あとはチュートリアルから適当に選んで動作確認すれば良い。 
     629 
     630https://pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html 
     631この段階でのパッケージ一覧 
     632{{{ 
     633(torch2.0) obina@notepc:~$ pip3 list 
     634Package            Version 
     635------------------ ---------- 
     636certifi            2022.12.7 
     637charset-normalizer 2.1.1 
     638filelock           3.9.0 
     639idna               3.4 
     640Jinja2             3.1.2 
     641MarkupSafe         2.1.2 
     642mpmath             1.2.1 
     643networkx           3.0 
     644numpy              1.24.1 
     645Pillow             9.3.0 
     646pip                23.1.2 
     647requests           2.28.1 
     648setuptools         65.5.0 
     649sympy              1.11.1 
     650torch              2.0.1+cpu 
     651torchaudio         2.0.2+cpu 
     652torchvision        0.15.2+cpu 
     653typing_extensions  4.4.0 
     654urllib3            1.26.13 
     655}}} 
     656あとはjupyter notebook, matplotlib, plotly, seabornなど、お好みで。 
     657お手軽に使うには ax-platformを入れるのも楽。 
     658 
     659※ PyTorchでは numpy  1.24.1, TensorFlowでは  1.23.5 を使用している 
     660 
     661ここでは、BoTorch, Ax を入れる。notebook, matplotlibも。 
     662{{{ 
     663(torch2.0) obina@notepc:~$ pip install botorch ax-platform 
     664(torch2.0) obina@notepc:~$ pip install notebook matplotlib 
     665}}} 
     666 
     667BoTorchのgetting startedを実行 
     668https://botorch.org/docs/getting_started 
     669 
     670乱数でデータを作成 
     671{{{ 
     672import torch 
     673from botorch.models import SingleTaskGP 
     674from botorch.fit import fit_gpytorch_mll 
     675from gpytorch.mlls import ExactMarginalLogLikelihood 
     676 
     677train_X = torch.rand(10, 2) 
     678Y = 1 - (train_X - 0.5).norm(dim=-1, keepdim=True)  # explicit output dimension 
     679Y += 0.1 * torch.rand_like(Y) 
     680train_Y = (Y - Y.mean()) / Y.std() 
     681}}} 
     682 
     683続いてガウス過程モデル(SingleTaskGP)を定義し、周辺尤度最大化(ExactMarginalLongLikelihood) によってカーネルパラメータを推定します。 
     684{{{ 
     685gp = SingleTaskGP(train_X, train_Y) 
     686mll = ExactMarginalLogLikelihood(gp.likelihood, gp) 
     687fit_gpytorch_mll(mll); 
     688}}} 
     689獲得関数としてUCBを使う 
     690{{{ 
     691from botorch.acquisition import UpperConfidenceBound 
     692UCB = UpperConfidenceBound(gp, beta=0.1) 
     693}}} 
     694最適化 
     695{{{ 
     696from botorch.optim import optimize_acqf 
     697 
     698bounds = torch.stack([torch.zeros(2), torch.ones(2)]) 
     699candidate, acq_value = optimize_acqf( 
     700    UCB, bounds=bounds, q=1, num_restarts=5, raw_samples=20, 
     701) 
     702}}} 
     703結果表示 
     704{{{ 
     705print(candidate) 
     706}}} 
     707 
     708そのほか、簡単に確認するにはAxのサンプルを実行するのも良いだろう 
     709[Ax ・ Adaptive Experimentation Platform](https://ax.dev/) 
     710