昨日の第34回「富岳」ユーザブリーフィングで「PythonはSpackでのご使用をお願いします」との注意喚起がおこなわれた。まあ、そうすべきだとは私(安岡孝一)も思うのだが、「富岳のPyTorch-1.7.0でtransformersを動かすには」のプログラムを読めばわかる通り、私自身は富岳のspack0.19版python3.10を使っておらず、別のやり方でpython3.8を動かしている。と言うのも、富岳のspack0.19版python3.10にはtransformersが乗らなかったのだ。富岳のspack0.19の現状を、ちょっと見てみよう。
fugaku$ spack --version
0.19.0 (13392e7ea0c26eeca98529cc7633fbee8980df00)
富岳のspack0.19には、python3.10上にpy-pip23.0やpy-torch1.13.0が、インストールされている。
fugaku$ spack find python py-pip py-torch
-- linux-rhel8-a64fx / fj@4.8.1 ---------------------------------
py-pip@22.2.2 py-pip@23.0 py-torch@1.13.0 python@3.10.8
py-pip@22.2.2 py-torch@1.13.0 python@3.10.0 python@3.10.8
py-pip@23.0 py-torch@1.13.0 python@3.10.8 python@3.10.8
-- linux-rhel8-a64fx / gcc@12.2.0 -------------------------------
python@3.10.8
-- linux-rhel8-cascadelake / gcc@12.2.0 -------------------------
py-pip@22.2.2 py-pip@23.0 python@3.10.8 python@3.10.8 python@3.10.8
-- linux-rhel8-skylake_avx512 / gcc@8.4.1 -----------------------
py-pip@22.2.2 python@3.10.8
==> 20 installed packages
PyTorch-1.13.0が乗っているのは確かにうれしいのだが、どうも富士通改造版ではないようだ。一方で、py-transformersやpy-tokenizersはインストールされていない。
fugaku$ spack find py-transformers py-tokenizers
==> No package matches the query: py-transformers py-tokenizers
transformersにはtokenizersが必要なのだが、どちらも富岳には乗っていないわけだ。それならば、spack install
でpy-transformersとpy-tokenizersを乗せれば良さそうだが、それに必要なpy-maturinもインストールされていない。
fugaku$ spack find py-maturin
==> No package matches the query: py-maturin
とすると、cargo
とrustc
が必要になるのだが、富岳に乗っているrustは、バージョンが1.60.0とあまりに古い。これだと、tokenizersの0.12.1あたりまでしかコンパイルできない。
fugaku$ spack find rust
-- linux-rhel8-a64fx / fj@4.8.1 ---------------------------------
rust@1.60.0 rust@1.60.0 rust@1.60.0
==> 3 installed packages
ならば、rustの公式サイトから、最新のrustコンパイラをダウンロードしてくることになるのだが、富岳用のrustコンパイラが公開されているわけでは無い。aarch64-unknown-linux-gnuあたりのrustコンパイラを改造して、fcc
(富岳のgcc
もどき)に繋いでやる必要がある。しかし、私の力不足で、当時最新だったrustコンパイラ1.74.1を、富岳上でちゃんと動かすことが出来なかった。
そういうわけで、私が先月・今月に書いた記事(これとこれとこれとこれとこれ)では、富岳のPyTorch-1.7.0に付随のpython3.8を使っているわけである。富岳における「PythonはSpackでのご使用をお願いします」というのは、確かにそれはその通りだと思うのだが、それだとtransformersを動かすのすら現時点では難行となる。私では力不足なので、誰か代わりにやってくれないかなあ。