Changes between Version 10 and Version 11 of misc/setup_for_ML


Ignore:
Timestamp:
05/11/23 16:02:56 (2 years ago)
Author:
Takashi Obina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/setup_for_ML

    v10 v11  
    1515 * !TensorFlow インストール、動作確認
    1616 * !PyTorch インストール、動作確認
    17 
    18 
    19 ※ 【注】以下の手順で!TensorFlow/PyTorchの共存は可能ですが、GPyOpt のコンパイル時に不具合が出ることが分かりました。もしGPyOptを使う予定があるのならば、以下の手順のうち Python 3.11 → 3.10 に変更してください。それだけで問題無く動作します。あとで本記事全体を書き直しますが取り急ぎ連絡まで(2023/05/11; T.Obina)
     17 * GPyOpt インストール、動作確認
     18
    2019
    2120== WSL2のインストール ==
     
    137136
    138137== python3インストール ==
    139 Ubuntu22.04にデフォルトでインストールされているpythonは/usr/bin/pythonに存在。バージョンは 3.10.6なので古くは無いが、システムで使われることも多いのでこれとは別にインストールする方針とする。
     138Ubuntu22.04にデフォルトでインストールされているpythonは/usr/bin/pythonに存在。バージョンは 3.10.6なので古くは無いが、システムで使われることも多いのでこれとは別にインストールする方針とする。venvを使うだけならばシステム標準のpythonをそのまま使っても問題無いので、ここは好みの問題です。
    140139
    141140/usr/localに入れると他のプログラムと干渉する可能性もあるので、 /opt/python/... 以下にインストールしていく方針としている。ここはお好みで。(EPICSを入れるときに、 /opt/epics に入れているので似たような方針とした)
     
    152151}}}
    153152
    154 今回はpython公式サイトから、現時点(2023/05)の最新版であるPython3.11.3を入れる。
    155 機械学習環境を構築する目的からは必ずしも最新版が良いとは限らない(ときどき最新バージョンに対応できていないことがある)が、今回はこれで問題なさそう。
    156 
    157 
    158 あらかじめインストール先として /opt/python/3.11.3 を作成しておく。
     153今回はpython公式サイトから、Python3.10.11を入れる。(現時点(2023/05)の最新版はPython3.11.3ですが、これだとGPyOptがインストールできないという問題があったので少し古いバージョンを選んでいます)。
     154
     155
     156あらかじめインストール先として /opt/python/3.10.11 を作成しておく。
    159157ownerを自分に設定することで、後の作業は一般ユーザー権限で行う。
    160158{{{
     
    164162obina@notepc:/opt$ sudo chown obina:obina python
    165163obina@notepc:/opt$ cd python
    166 obina@notepc:/opt/python$ mkdir 3.11.3
     164obina@notepc:/opt/python$ mkdir 3.10.11
    167165obina@notepc:/opt/python$ ls
    168 3.11.3
     1663.10.11
    169167}}}
    170168
     
    173171obina@notepc:~$ mkdir work
    174172obina@notepc:~$ cd work
    175 obina@notepc:~/work$ wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz
    176 --2023-05-09 20:11:15--  https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz
    177 Resolving www.python.org (www.python.org)... 151.101.108.223, 2a04:4e42:1a::223
    178 Connecting to www.python.org (www.python.org)|151.101.108.223|:443... connected.
    179 HTTP request sent, awaiting response... 200 OK
    180 Length: 26455738 (25M) [application/octet-stream]
    181 Saving to: ‘Python-3.11.3.tgz’
    182 
    183 Python-3.11.3.tgz             100%[=================================================>]  25.23M  19.5MB/s    in 1.3s
    184 
    185 2023-05-09 20:11:17 (19.5 MB/s) - ‘Python-3.11.3.tgz’ saved [26455738/26455738]
    186 }}}
    187 
    188 configureでインストール先として /opt/python/3.11.3 を指定する。
     173obina@notepc:~/work$ wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz
     174....
     175}}}
     176
     177configureでインストール先として /opt/python/3.10.11 を指定する。
    189178
    190179lto (Link time optimization) はリンク時間が長くなる替わりに実行速度が上がる...らしい。(自分では未検証)
    191180
    192181{{{
    193 obina@notepc:~/work$ tar xvfz Python-3.11.3.tgz
    194 obina@notepc:~/work$ cd Python-3.11.3/
    195 obina@notepc:~/work/Python-3.11.3$ ls
     182obina@notepc:~/work$ tar xzvf Python-3.10.11.tgz
     183obina@notepc:~/work$ cd Python-3.10.11/
     184obina@notepc:~/work/Python-3.10.11$ ls
    196185Doc      LICENSE  Makefile.pre.in  Objects  Parser    README.rst  config.guess  configure.ac   setup.py
    197186Grammar  Lib      Misc             PC       Programs  Tools       config.sub    install-sh
    198187Include  Mac      Modules          PCbuild  Python    aclocal.m4  configure     pyconfig.h.in
    199188
    200 obina@notepc:~/work/Python-3.11.3$ ./configure --prefix=/opt/python/3.11.3 --enable-optimizations --with-lto
    201 
    202 obina@notepc:~/work/Python-3.11.3$ make -j8 # 並列化の数はCPU数に応じて適当に
     189obina@notepc:~/work/Python-3.10.11$ ./configure --prefix=/opt/python/3.10.11 --enable-optimizations --with-lto
     190
     191obina@notepc:~/work/Python-3.10.11$ make -j8 # 並列化の数はCPU数に応じて適当に
    203192....
    204 obina@notepc:~/work/Python-3.11.3$ make install
     193obina@notepc:~/work/Python-3.10.11$ make install
    205194....
    206195}}}
     
    208197環境設定用のスクリプトを作成。WSLの場合はユーザーが自分だけなので~/.bashrcに直接書いても良いのだが、今後pythonのバージョンによって切り分けたいこともあると思うので/opt/python以下につくっておく
    209198{{{
    210 $ vi /opt/python/setup_py3.11.3.sh
    211 export PATH=/opt/python/3.11.3/bin:$PATH
     199$ vi /opt/python/setup_py3.10.11.sh
     200export PATH=/opt/python/3.10.11/bin:$PATH
    212201}}}
    213202
     
    216205obina@notepc:~$ which python3
    217206/usr/bin/python3
    218 obina@notepc:~$ source /opt/python/3.11.3/setup_py3.11.3.sh
     207obina@notepc:~$ source /opt/python/3.10.11/setup_py3.10.11.sh
    219208obina@notepc:~$ which python3
    220 /opt/python/3.11.3/bin/python3
     209/opt/python/3.10.11/bin/python3
    221210}}}
    222211
     
    224213{{{
    225214obina@notepc:~$ which pip3
    226 /opt/python/3.11.3/bin/pip3
     215/opt/python/3.10.11/bin/pip3
    227216obina@notepc:~$
    228217obina@notepc:~$ pip3 list
     
    239228{{{
    240229obina@notepc:~$ pip3 install --upgrade pip
    241 Requirement already satisfied: pip in /opt/python/3.11.3/lib/python3.11/site-packages (22.3.1)
     230Requirement already satisfied: pip in /opt/python/3.10.11/lib/python3.10.11/site-packages (22.3.1)
    242231Collecting pip
    243232  Downloading pip-23.1.2-py3-none-any.whl (2.1 MB)
     
    286275{{{
    287276obina@notepc:~$ which python3
    288 /opt/python/3.11.3/bin/python3
     277/opt/python/3.10.11/bin/python3
    289278obina@notepc:~$ python3 -m venv ~/.venv/tf2.12
    290279}}}
     
    295284bin  include  lib  lib64  pyvenv.cfg
    296285obina@notepc:~$ ls ~/.venv/tf2.12/bin/
    297 Activate.ps1  activate  activate.csh  activate.fish  pip  pip3  pip3.11  python  python3  python3.11
     286Activate.ps1  activate  activate.csh  activate.fish  pip  pip3  pip3.10  python  python3  python3.10
    298287}}}
    299288
     
    313302obina@notepc:~$
    314303obina@notepc:~$ which python3
    315 /opt/python/3.11.3/bin/python3
     304/opt/python/3.10.11/bin/python3
    316305}}}
    317306
     
    341330{{{
    342331(tf2.12) obina@notepc:~$ python3
    343 Python 3.11.3 (main, May  9 2023, 20:29:30) [GCC 11.3.0] on linux
    344 Type "help", "copyright", "credits" or "license" for more information.
    345332>>>
    346333>>> import tensorflow as tf
     
    398385(tf2.12) obina@notepc:~$
    399386(tf2.12) obina@notepc:~$ ipython3 --nosep
    400 Python 3.11.3 (main, May  9 2023, 20:29:30) [GCC 11.3.0]
    401 Type 'copyright', 'credits' or 'license' for more information
    402387IPython 8.13.2 -- An enhanced Interactive Python. Type '?' for help.
    403388In [1]:
     
    608593{{{
    609594obina@notepc:~$ which python3
    610 /opt/python/3.11.3/bin/python3
     595/opt/python/3.10.11/bin/python3
    611596obina@notepc:~$ python3 -m venv ~/.venv/torch2.0
    612597obina@notepc:~$ source ~/.venv/torch2.0/bin/activate
     
    638623{{{
    639624(torch2.0) obina@notepc:~$ python
    640 Python 3.11.3 (main, May  9 2023, 20:29:30) [GCC 11.3.0] on linux
    641 Type "help", "copyright", "credits" or "license" for more information.
    642 >>>
    643625>>>
    644626>>> import torch
     
    656638
    657639https://pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html
    658 この段階でのパッケージ一覧
    659 {{{
    660 (torch2.0) obina@notepc:~$ pip3 list
    661 Package            Version
    662 ------------------ ----------
    663 certifi            2022.12.7
    664 charset-normalizer 2.1.1
    665 filelock           3.9.0
    666 idna               3.4
    667 Jinja2             3.1.2
    668 MarkupSafe         2.1.2
    669 mpmath             1.2.1
    670 networkx           3.0
    671 numpy              1.24.1
    672 Pillow             9.3.0
    673 pip                23.1.2
    674 requests           2.28.1
    675 setuptools         65.5.0
    676 sympy              1.11.1
    677 torch              2.0.1+cpu
    678 torchaudio         2.0.2+cpu
    679 torchvision        0.15.2+cpu
    680 typing_extensions  4.4.0
    681 urllib3            1.26.13
    682 }}}
     640
    683641あとはjupyter notebook, matplotlib, plotly, seabornなど、お好みで。
    684642お手軽に使うには ax-platformを入れるのも楽。
    685643
    686 ※ PyTorchでは numpy  1.24.1, TensorFlowでは  1.23.5 を使用している
     644※ PyTorchでは numpy 1.24.1, TensorFlowでは  1.23.5 を使用している
    687645
    688646ここでは、!BoTorch, Ax を入れる。notebook, matplotlibも。
     
    737695
    738696== GPyOpt ==
    739 いくつかの注意点のみ
    740  - python3.11ではコンパイルできないので python3.10を使用する
     697いくつかの注意点のみ記載
     698 - python3.11ではコンパイルできないので python3.10を使用する(3.10->3.11でlongintrepr.hが無くなったことに起因)
    741699 - numpy, matplotlibのバージョン指定が必要
    742700 - venv でGPyOpt用の環境を作成して !TensorFlow/PyTorchと分離するのが簡単