Skip to content

PyTorch DNNL_aarch64 build manual for FUJITSU Software Compiler Package (PyTorch v1.10.1) JP

Masahiro Doteguchi edited this page Apr 28, 2022 · 4 revisions

富士通 Supercomputer PRIMEHPC FX1000/FX700 上の PyTorch 構築手順

目次

  1. はじめに
  2. 環境と前提条件
  3. インストール手順
  4. トラブルシューティング
  5. ソフトウェア版数一覧

1. はじめに

本書は富士通Supercomputer PRIMEHPC FX1000, FX700 上に PyTorch をインストールするための手順書です。
また、サンプルとしていくつかの重要モデルを FX1000, FX700 用に最適化したものをインストール、実行するための手順も提供します。

PyTorch のビルド手順は、 インターネットに直接 (またはproxy経由で) アクセスできるシステムにも、 インターネットにアクセスできないシステム上にもインストールできるようになっています。

本書では、前者を「オンラインインストール」、後者を「オフラインインストール」と呼びます。

オフラインインストールでは、 予めインターネットに接続されているシステム(以下「ダウンロード用システム」)で必要なファイル一式をダウンロードしておき、 それをインストール対象システム(以下「インストール対象システム」)に転送してビルドします。

1.1. 用語について

本書では以下の用語・略語を使用します。

用語・略語 意味
オンラインインストール インターネットに直接アクセスできるシステムにPyTorchをインストールすること
オフラインインストール インターネットにアクセスできないシステムにPyTorchをインストールすること
インストール対象システム PyTorchをインストールする対象システム
ダウンロード用システム オフラインインストール用に、必要なファイルを予めダウンロードするシステム
TCS FX1000のジョブ実行スケジューラやコンパイラ・ライブラリ環境 (Technical Computing Suite)
CP FX700のコンパイラ・ライブラリ環境 (Compiler Package)

2. 環境と前提条件

2.1. ダウンロード用システム

  • OSはUNIXまたはLinux
  • bash, python, wget, git, unzip, tar, curl が実行可能なこと
  • インストール対象システムへアクセス可能であること
  • ファイルシステムに十分な空容量があること ダウンロードデータ量は35GBです。
    モジュール ダウンロード量
    PyTorch のソース 0.5GB
    PyTorch 本体構築用にダウンロードするファイル 1.5GB
    サンプルモデルOpenNMT 5GB
    サンプルモデルBERT 1GB
    サンプルモデルMask R-CNN 26GB
    合計 35GB

なお、ダウンロード先のディレクトリはPyTorchのソースディレクトリ配下になります。

2.2. インストール対象システム

  • PRIMEHPC FX1000 または FX700
  • FX700 の場合
    • RHEL 8.x または CentOS 8.x がインストールされていること
    • FCC で環境を構築するなら Compiler Package V10L20がインストールされていること
  • 以下のパッケージ、コマンドがインストール済であること
    make gcc cmake libffi-devel gcc-gfortran numactl git patch unzip tk tcsh tcl lsof python3 pciutils
  • 空き容量100GB以上のストレージがあること

なお、NFS上でのビルド、実行はNFSサーバの性能や設定により予期せぬトラブルが起こることがありますのでご注意ください。
ローカルに接続されたストレージか、十分に高速なネットワークストレージを使うことをお薦めします。

2.3. インストール後のディレクトリ構成

インストール後のディレクトリ構成は以下のようになります。

それぞれディレクトリ PREFIX, VENV_PATH, TCSDS_PATH はインストール用の設定ファイル env.src で指定します。

PYTORCH_TOP も含めた4ディレクトリは、互いに独立したディレクトリを指定するようにしてください。 (あるディレクトリが、別のディレクトリの下にならないようにしてください)

  PREFIX  (ローカルバイナリ置き場)
    +- bin (Python など)
    +- lib

  VENV_PATH  (PyTorch実行に必要なpythonモジュール置き場)
    +- bin (activate)
    +- lib (pip でインストールするパッケージ類)

  TCSDS_PATH  (富士通コンパイラ、※: 手順実行前にインストール済)
    +- bin (fcc, FCC など)
    +- lib64

  PYTORCH_TOP  (PyTorch ソース一式, ダウンロード用システムから転送、またはhttps://www.github.com/fujitsu/pytorchからダウンロードしたもの)
    +- aten, c10, torch, caffe2 ...
    +- third_party
    +- scripts
        +- fujitsu (PyTorch構築スクリプト)
            +- down
            +- opennmt_build_pack, bert_build_pack, mask_r_cnn_build_pack (サンプルモデル構築スクリプト)

2.4. proxy 設定について

お使いの環境が、外部アクセスにproxyを通す必要がある環境の場合、以下の環境変数を設定してください。
(user, pass, proxy_url, port はお使いの環境に合ったものに置き換えてください。)

$ export http_proxy=http://user:pass@proxy_url:port
$ export https_proxy=https://user:pass@proxy_url:port

注: curl, wget, git, pip3, は上記環境変数を認識するので、rc や .gitconfig の設定は不要です。

2.5. 非正規化数の扱いについて

Intel x86 でも A64FX でも、IEEE-754 非正規化数の演算は、仕様通り演算する方法 (デフォルト) とゼロに丸める方法を選択できます。 この選択れはプロセスごとにできるのですが、OSS 版の PyTorch は非正規化数のゼロ丸めを選択していないため、演算内容や入力データによって学習・推論にかかる時間が通常期待されるものより10~100倍のオーダーで遅くなることがあります。

FX1000/700 用の PyTorch の非正規化数の扱いは OSS 版に準じています。 設定を変更する具体的な方法や注意点は3.3-A4.で説明します。

3. インストール手順

大まかな流れは以下のようになります。

  1. 前準備 (オフラインインストール・オンラインインストール共通)
  2. ダウンロード用システム手順 (オフラインインストールのみ)
  3. インストール手順 (オフラインインストール・オンラインインストール共通)

3.1. 前準備 (詳細)

3.1-A. ソース一式をダウンロードする

$ git clone https://github.com/fujitsu/pytorch.git
$ cd pytorch                     # これ以降このディレクトリを PYTORCH_TOP と呼びます
$ git checkout -b fujitsu_v1.10.1_for_a64fx origin/fujitsu_v1.10.1_for_a64fx
$ cd scripts/fujitsu

以降の例では /home/user/pytorch を PYTORCH_TOP として例示してあります。

3.1-B. env.srcを編集する

env.src は構築方法やディレクトリを指示するための設定ファイルです。 $PYTORCH_TOP/scripts/fujitsu にあります。

設定は大きく2つの部分に分れています。

  • 構築の方法を制御する

    フラグ名 初期設定値 意味 補足
    fjenv_use_venv true true だと VENVを使う 設定なしは動作未検証です
    fjenv_use_fcc true true だと FCCを使う 設定なしは動作未検証です
    fjenv_offline_install false true だとオフラインインストールを行う

    なお、これらのフラグは'env.src'でシェル変数として定義されていますが、 'env.src' 外で環境変数として設定することもできます。 その場合、環境変数の設定が 'env.src' の設定よりも優先されます。

  • 構築ディレクトリを設定する
    ディレクトリ構成図は2.3を参照してください。

    変数名 意味 補足
    PREFIX この構築手順で生成される実行ファイルをインストールするディレクトリ
    VENV_PATH VENVをインストールするディレクトリ名 use_venv=true のとき有効
    TCSDS_PATH TCS, CP のベースディレクトリ名 (ベースディレクトリ: bin, lib などを含むディレクトリ) use_fcc=true のとき有効

これ以外の設定もありますが、変更の必要はありません。

3.2. ダウンロード用システム手順 (詳細)

この節はオフラインインストールする場合の前準備の手順です。

インターネット接続システムにインストールする場合は、この節は飛ばして3.3に進んでください。

3.2-A. PyTorch本体のビルドに必要なファイルをダウンロードする

scripts/fujitsu ディレクトリにある、数字で始まるシェルスクリプトを、数字の小さい方から順番に、引数 download を与えて実行してください。

$ pwd
/home/user/pytorch/scripts/fujitsu        # $PYTORCH_TOP/scripts/fujitsu

$ bash 1_python.sh        download        # Python のダウンロード
$ bash 3_venv.sh          download        # VENV 設定とpythonモジュール更新
$ bash 4_numpy_scipy.sh   download        # NumPy, SciPy のダウンロード
$ bash 5_pytorch.sh       download        # PyTorch ビルドに必要なモジュールダウンロード
$ bash 6_vision.sh        download        # TorchVision ビルドに必要なモジュールダウンロード
$ bash 7_horovod.sh       download        # Horovod のダウンロード
$ bash 8_libtcmalloc.sh   download        # tcmalloc のダウンロード

スクリプトは、すでにダウンロードずみのファイルがある場合はダウンロードを行わないようになっています。
再度ダウンロードを行いたい場合は、まず、各スクリプトの引数に clean を指定して実行した後、download を指定して実行してください。 cleandownload より優先度が高いので、clean download あるいは download clean と指定すると clean が実行されます。

3.2-B. (オプショナル) サンプルモデル構築に必要なファイルをダウンロードする

サンプルモデルは opennmt_build_pack, bert_build_pack, mask_r_cnn_build_pack 配下にあります。そのディレクトリ内にある、 数字で始まるシェルスクリプトを、数字の小さい方から順番に、引数 download を与えて実行してください。

ダウンロード先は、サンプルモデルと学習データは各サンプルモデルディレクトリ、 その他は $PYTORCH_TOP/scripts/fujitsu/down です。

こちらのスクリプトも上と同様、何度実行して再ダウンロードは行いません。
再度ダウンロードを行いたい場合はまず各スクリプトに clean を指定して実行し、その後で download を指定して実行してください。

なお、学習データのダウンロードや作り直しには時間がかかるため、clean でも削除しないようにしてあります。 削除したい場合は、サンプルモデルディレクトリ配下の以下のデータディレクトリを手動で削除してください。

  • $PYTORCH_TOP/scripts/fujitsu/opennmt_build_pack/dataset
  • $PYTORCH_TOP/scripts/fujitsu/bert_build_pack/hostdata
  • $PYTORCH_TOP/scripts/fujitsu/mask_r_cnn_build_pack/dataset
  • $PYTORCH_TOP/scripts/fujitsu/mask_r_cnn_build_pack/weights

3.2-C. インストール対象システムに転送する (オフラインインストールのみ)

$PYTORCH_TOP 以下すべてのファイルを転送します。

具体的な方法は各システム構成により異なるので記載しません。
scp, ftp, 共有ディレクトリ使用、など、システムに応じた方法で転送してください。

3.3. インストール手順 (詳細)

3.3-A. PyTorch本体をビルドする

数字で始まるスクリプトを順次実行していきます。 以下の例は対話型シェルでインストールする場合の例です。

ジョブ制御システムを使用する場合は、たとえば一連のビルドスクリプトを実行するバッチスクリプトを作成して投入してください。 その際のバッチスクリプトは、構築スクリプトがエラーした時点で終了するようにしておくことをお勧めします (bashスクリプトなら一連のスクリプト走行の前にset -e を実行する)。

[option] はスクリプトに渡すオプションです。省略した場合はビルドを実行します。

スクリプトは、すでにビルド済みの場合は再ビルドしないようになっているので、 再ビルドしたい場合は rebuild を指定してください。

clean と間違えないようにしてください。clean を指定するとダウンロード済みのファイルを消去するので、オフラインインストールにおいてインストール対象システムで指定すると、再度転送が必要になります。

$ pwd
/home/user/pytorch/scripts/fujitsu        # $PYTORCH_TOP/scripts/fujitsu

$ bash 1_python.sh        [option]        # Python のビルドとインストール (5分)
$ bash 3_venv.sh          [option]        # VENV 作成 (1分)
$ bash 4_numpy_scipy.sh   [option]        # NumPy, SciPy のビルドとインストール (90分)
$ bash 5_pytorch.sh       [option]        # PyTorch ビルドに必要なモジュールビルドとインストール (45分)
$ bash 6_vision.sh        [option]        # TorchVision ビルドに必要なモジュールビルドとインストール (15分)
$ bash 7_horovod.sh       [option]        # Horovod のビルドとインストール (10分)
$ bash 8_libtcmalloc.sh   [option]        # tcmalloc のビルドとインストール (<1分)

PyTorchの非正規化数処理のデフォルトをゼロ丸めにするには: 5_pytorch.sh の141行目を以下のように変更します。
注意:非正規化数の処理方法変更の影響は import pytorch から、そのプロセスが終了するまで持続します。pytorch 以外の python モジュール (NumPyなど) にも影響します。

  139 # 'setup.py' in PyTorch ensures that CFLAGS is used for both C and C++ compiler,
  140 # but just in case...
  141 CFLAGS=-O3 CXXFLAGS=-O3 python3 setup.py build -j $MAX_JOBS install
	   ↓
  141 CFLAGS=-Kfast python3 setup.py build -j $MAX_JOBS install

正しくビルドできたかどうかの確認に resnet50 を実行してください。

以下に実行確認方法を示します。
実行確認は学習1ステップの実行速度で行いますが、 深層学習モデルの実行速度は10~20%のくらいの変動があるため、 本書に記載した実行速度を目安に、おおよそその範囲にあれば正しく構築できていると判断できます。
また、サンプルモデルの設定は必ずしも最速になっているわけではないことに留意してください。

$ pwd
/home/user/pytorch/scripts/fujitsu      # $PYTORCH_TOP/scripts/fujitsu

$ bash run1proc.sh                      # 動作確認 (1ノード, 1プロセス、48コア, ダミーデータ)
$ bash run1node.sh                      # 動作確認 (1ノード, 1プロセス、12コア/プロセス, ダミーデータ)

run1proc.sh では1ステップの実行時間(それぞれ学習と推論)が出力されます。 以下は FX700 (2.0GHz) の run1proc.sh の出力例です。1ステップ2.5秒前後なら正常です。

$ bash run1proc.sh
>> script option: Namespace(batch=256, itr=20, lr=0.001, momentum=0.9, trace=False, type='cpu_mkltensor', weight_decay=0.0)
  (中略)
[    1] loss: 7.326 time: 2.982 s
[    2] loss: 5.110 time: 2.547 s
[    3] loss: 1.274 time: 2.546 s
[    4] loss: 0.013 time: 2.556 s
[    5] loss: 0.000 time: 2.538 s         # ダミーデータで学習させているので
[    6] loss: 0.000 time: 2.563 s         # loss 値はすぐにゼロになります
[    7] loss: 0.000 time: 2.535 s
[    8] loss: 0.000 time: 2.555 s
[    9] loss: 0.000 time: 2.545 s
  (省略)

run1node.sh は4プロセスでデータ並列学習と推論を実行します。 1プロセスのテストで使用しているモデルとは別のモデルを、異なるパラメータで実行しています。 以下は FX700 (2.0GHz) の run1node.sh の出力例です。 4プロセス合計で100img/sec以上の値が出ていれば正しく構築できています。

  (省略)
Running benchmark...
Iter #0: 26.8 img/sec per CPU             # この値は、rank0 プロセスの値
Iter #1: 26.8 img/sec per CPU
Iter #2: 26.9 img/sec per CPU
Iter #3: 26.9 img/sec per CPU
Iter #4: 26.9 img/sec per CPU
Img/sec per CPU: 26.9 +-0.1
Total img/sec on 4 CPU(s): 107.4 +-0.2    # この値は4プロセスの合計値

**注意: run1node.sh は終了前に、非正規化数の処理方法が OSS 版同様であることを確認し、異なる場合はエラーを表示します。**デフォルトの処理方法を変更した場合はこのエラーは無視してください。

3.3-B. (オプショナル) サンプルモデルを構築する

サンプルモデルは opennmt_build_pack, bert_build_pack, mask_r_cnn_build_pack配下にあります。 そのディレクトリ内にある、数字で始まるシェルスクリプトを、 数字の小さい方から順番に実行してください。

以下に構築方法と実行確認方法を示します。 実行確認は学習1ステップの実行速度で行いますが、 深層学習モデルの実行速度は10~20%のくらいの変動があるため、 本書に記載した実行速度を目安に、おおよそその範囲にあれば正しく構築できていると判断できます。

注意: ここで提供したサンプルモデルは、動作確認や性能分析用途に、オリジナルを若干変更してあります。 プロファイル採取のために乱数シードを固定してあったり、一定回数の実行で中断するように設定していることもあるので、 実際の学習にはそのまま使わないようにしてください。

OpenNMT

opennmt_build_pack 配下にあります。

https://github.com/OpenNMT/OpenNMT-py/tree/1.1.1
Tag: v1.1.1 (2020/3/20)

$ pwd
/home/user/pytorch/scripts/fujitsu/opennmt_build_pack     # $PYTORCH_TOP/scripts/fujitsu

$ bash 4_sentencepiece.sh  [option]                       # sentencepiece のインストール (<1分)
$ bash 8_opennmt.sh        [option]                       # opennmt のビルドとインストール (1分)
$ bash 9_dataset.sh        [option]                       # 学習データ作成 (100分)
$ bash run1proc.sh                                        # 実行 (1ノード, 1プロセス, 24コア)
$ bash run1node.sh                                        # 実行 (1ノード, 2プロセス, 24コア/プロセス)

2ノード以上を使用するスクリプトは提供していないので、run1node.sh の内容を参考に作成してください。

実行結果確認方法は以下の通りです。(矢印の部分)

なお、平均の表示はサンプルモデル用に追加したものです。

    [2022-03-28 09:12:48,692 INFO] number of examples: 493128
    [2022-03-28 09:12:58,673 INFO] Step    1/   20; acc:   0.00; ppl: 8242.63; xent: 9.02; lr: 0.00000; 1614/2713 tok/s;      1 sec
    [2022-03-28 09:13:00,031 INFO] Step    2/   20; acc:   0.00; ppl: 8214.91; xent: 9.01; lr: 0.00000; 1730/2745 tok/s;      3 sec
        (中略)
    [2022-03-28 09:13:24,678 INFO] Step   19/   20; acc:   0.00; ppl: 8092.40; xent: 9.00; lr: 0.00000; 2165/2586 tok/s;     27 sec
    [2022-03-28 09:13:26,091 INFO] Step   20/   20; acc:   0.00; ppl: 8077.04; xent: 9.00; lr: 0.00000; 2150/2591 tok/s;     29 sec
    [2022-03-28 09:13:26,804 INFO] Saving checkpoint /home/users/pytorch/scripts/fujitsu/opennmt_build_pack/save_model_step_20.pt
    [2022-03-28 09:13:29,058 INFO] Total Data loading time (ignore first step): 201.89452 ms
--> [2022-03-28 09:13:29,058 INFO] Average : 1.4404 [sec/3850batch], 2591.1961 [tok/s]
    [2022-03-28 09:13:29,059 INFO] Write to aarch64/run_log.csv

FX700(2.0GHz)の場合、 run1proc.sh だと2600 tok/s程度、 run1node.sh だと4400 tok/s程度なら正しく動作しています。

BERT

bert_build_pack 配下にあります。

https://github.com/huggingface/transformers/tree/v3.4.0
Tag: v3.4.0 (2020/10/20)

※: 以前は事前学習とファインチューニング2つのタスクを用意していましたが、 演算処理内容は両者はほぼ同じなので、より重たい事前学習の方だけにしました。

$ pwd
/home/user/pytorch/scripts/fujitsu/bert_build_pack        # $PYTORCH_TOP/scripts/fujitsu

$ bash 3_rust.sh           [option]                       # rust のインストール (<1分)
$ bash 4_sentencepiece.sh  [option]                       # sentencepiece のインストール (<1分)
$ bash 5_tokenizers.sh     [option]                       # tokenizer のインストール (<1分)
$ bash 7_transformers.sh   [option]                       # BERT のビルドとインストール (<1分)
$ bash 8_dataset.sh        [option]                       # 学習データ作成 (<1分)
$ bash run1proc.sh                                        # 実行 (1ノード, 1プロセス, 24コア)
$ bash run1node.sh                                        # 実行 (1ノード, 2プロセス, 24コア/プロセス)

2ノード以上を使用するスクリプトは提供していないので、run1node.sh の内容を参考に作成してください。

実行結果確認方法は以下の通りです。(矢印の部分)

なお、毎イタレーションの表示は、サンプルモデルの動作確認用に追加したものです。 表示されるloss値は、各イタレーションのloss値を積算したものなので、単調に増加します。 また、平均速度は、プロファイル区間のものです。(デフォルトだと10回目から18回目まで)

    03/28/2022 09:04:52 - INFO - __main__ -   ***** Running training *****
    03/28/2022 09:04:52 - INFO - __main__ -     Num examples = 4800
    03/28/2022 09:04:52 - INFO - __main__ -     Num Epochs = 1
    03/28/2022 09:04:52 - INFO - __main__ -     Instantaneous batch size per device = 2
    03/28/2022 09:04:52 - INFO - __main__ -     Total train batch size (w. parallel, distributed & accumulation) = 2
    03/28/2022 09:04:52 - INFO - __main__ -     Gradient Accumulation steps = 1
    03/28/2022 09:04:52 - INFO - __main__ -     Total optimization steps = 20
    03/28/2022 09:04:53 - INFO - __main__ -   step =    0, time = 0.73 loss = 3.12283
    03/28/2022 09:04:54 - INFO - __main__ -   step =    1, time = 0.72 loss = 6.41185  # 積算値を表示
        (中略)
    03/28/2022 09:05:09 - INFO - __main__ -   step =   18, time = 0.68 loss = 59.91796
    03/28/2022 09:05:09 - INFO - __main__ -   step =   19, time = 0.68 loss = 62.79689
--> 03/28/2022 09:05:09 - INFO - __main__ -   Averages: 0.7650 s/iter 2.6142 batch/s
    03/28/2022 09:05:09 - INFO - __main__ -   Epoch Overhead: 0.0001 s

FX700(2.0GHz)の場合、 run1proc.sh だと2.6 batch/s程度、 run1node.sh だと4.5 batch/s程度なら正しく動作しています。

Mask R-CNN

mask_r_cnn_build_pack 配下にあります。

https://github.com/facebookresearch/detectron2/tree/v0.2.1
Tag: v0.2.1 (2020/7/30)

$ pwd
/home/user/pytorch/scripts/fujitsu/mask_r_cnn_build_pack  # $PYTORCH_TOP/scripts/fujitsu

$ bash 5_detectron2.sh     [option]                       # Mask R-CNN のビルドとインストール (5分)
$ bash 9_dataset.sh        [option]                       # 学習データ作成 (60分)
$ bash run1proc.sh                                        # 実行 (1ノード, 1プロセス, 24コア)
$ bash run1node.sh                                        # 実行 (1ノード, 2プロセス, 24コア/プロセス)

2ノード以上を使用するスクリプトは提供していないので、run1node.sh の内容を参考に作成してください。

実行結果確認方法は以下の通りです。(矢印の部分)

なお、平均の表示はサンプルモデル用に追加したものです。 また、平均速度はプロファイル区間のものです (デフォルトだと10回目から19回目まで)

    [03/28 09:07:57 d2.engine.train_loop]: Starting training from iteration 0
        (省略)
    [03/28 09:08:44 d2.utils.events]:  eta: 0:00:04  iter: 18  total_loss: 2.723  loss_cls: 0.836  loss_box_reg: 0.012  loss_mask: 0.699  loss_rpn_cls: 0.695  loss_rpn_loc: 0.543  time: 2.4343  data_time: 0.2602  lr: 0.000047
    [03/28 09:08:47 d2.utils.events]:  eta: 0:00:02  iter: 19  total_loss: 2.798  loss_cls: 0.915  loss_box_reg: 0.013  loss_mask: 0.698  loss_rpn_cls: 0.661  loss_rpn_loc: 0.636  time: 2.4753  data_time: 0.2663  lr: 0.000050
--> [03/28 09:08:47 d2.engine.train_loop]: Averages: 2.4730 s/iter 0.8087 image/s
    [03/28 09:08:47 d2.engine.hooks]: Overall training speed: 18 iterations in 0:00:44 (2.4753 s / it)  

FX700(2.0GHz)の場合、 run1proc.sh だと0.8 image/s 程度、 run1node.sh だと1.2 image/s程度なら正しく動作しています。

4. トラブルシューティング

python3 が実行できない

以下の条件に当てはまる場合 'cannot execute binary file: Exec format error' というエラーメッセージが出て実行できません。

  • オフラインインストールを実施している
  • ダウンロード用システムがFX1000,FX700以外である (例:PRIMERGYなどx86サーバ)
  • ダウンロード用システムとインストール対象システムで共通のネットワークストレージを使っており、 そのネットワークストレージにインストールしようとしている
  • PyTorchは構築済みで、後からサンプルモデルをビルドしようとしている

この場合は、次の1,2いずれかの方法を取ってください。

  1. 最初に全部ダウンロードしてからビルドする
  2. ダウンロードするディレクトリとビルドするディレクトリを分ける

学習1ステップにかかる時間が長い、または、入力により学習時間が変動する

非正規化数を含む演算が発生している可能性があります。

非正規化数の処理方法は 'torch.set_flush_denormal(True)' で変更できます。

処理方法の変更はそのPythonプロセス全体に影響し、プロセス終了まで持続します。 PyTorch以外のモジュール(NumPyなど)の非正規化数処理方法も変わるので注意してください。

元に戻すには 'torch.set_flush_denormal(False)' を実行してください。

5. ソフトウェア版数一覧

主要なソフトウェアの版数は以下の通りです。

ソフトウェア名 版数)リリース日) ライセンス 備考
Python 3.9.x (2021/10/4またはそれ以降) GPL 'x'はインストール時点により異なる (3.9ブランチの最新を使用)
PyTorch 1.10.1 (2021/12/9) BSD-3
oneDNN v2.4.0 (2021/10/5) Apache 2.0 TensorFlowに合わせた (PyTorch v1.10.1はoneDNN v2.4.4を指定している)
Horovod 0.23.0 (2021/10/6) Apache 2.0
NumPy 1.22.x (2021/12/30 またはそれ以降) BSD-3 'x'はインストール時点により異なる (1.22ブランチの最新を使用)
SciPy 1.7.x (2021/6/19 またはそれ以降) BSD-3 'x'はインストール時点により異なる (1.7ブランチの最新を使用)

上記以外のモジュールも、基本的にインストール時の最新版を使用します。

pip3 list

インストールスクリプトを実行すると、pip3_list.txt というファイルが生成されます。 以下はPyTorch本体とすべてのサンプルモデルをインストールし終えた時点の内容です (2022/3/26時点)。 モジュール版数はインストール日時によって変わることがあるのでご注意ください。

Package                 Version
----------------------- --------------------
absl-py                 1.0.0
astunparse              1.6.3
beniget                 0.4.1
cachetools              5.0.0
certifi                 2021.10.8
cffi                    1.15.0
charset-normalizer      2.0.12
click                   8.0.4
cloudpickle             2.0.0
ConfigArgParse          1.5.3
cycler                  0.11.0
Cython                  0.29.28
detectron2              0.2
expecttest              0.1.3
filelock                3.6.0
Flask                   2.0.3
fonttools               4.30.0
future                  0.18.2
fvcore                  0.1.5.post20220305
gast                    0.5.3
google-auth             2.6.0
google-auth-oauthlib    0.4.6
grpcio                  1.44.0
horovod                 0.23.0
idna                    3.3
importlib-metadata      4.11.3
iopath                  0.1.9
itsdangerous            2.1.1
Jinja2                  3.0.3
joblib                  1.1.0
kiwisolver              1.4.0
Markdown                3.3.6
MarkupSafe              2.1.0
matplotlib              3.5.1
mock                    4.0.3
numpy                   1.22.3+8.g2f1410d
oauthlib                3.2.0
OpenNMT-py              1.1.1
packaging               21.3
Pillow                  7.2.0
pip                     22.0.4
ply                     3.11
portalocker             2.4.0
protobuf                4.0.0rc2
psutil                  5.9.0
pyasn1                  0.4.8
pyasn1-modules          0.2.8
pybind11                2.9.1
pycocotools             2.0.4
pycparser               2.21
pydot                   1.4.2
pyonmttok               1.31.0
pyparsing               3.0.7
python-dateutil         2.8.2
pythran                 0.11.0
PyYAML                  6.0
regex                   2022.3.2
requests                2.27.1
requests-oauthlib       1.3.1
rsa                     4.8
sacremoses              0.0.47
scipy                   1.7.4.dev0+0.38cd478
semantic-version        2.9.0
sentencepiece           0.1.96
setuptools              58.1.0
setuptools-rust         1.1.2
six                     1.16.0
tabulate                0.8.9
tensorboard             2.8.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit  1.8.1
termcolor               1.1.0
tokenizers              0.9.2
torch                   1.10.0a0+git1341343
torchtext               0.4.0
torchvision             0.11.0a0+fa347eb
tqdm                    4.30.0
transformers            3.4.0
types-dataclasses       0.6.4
typing_extensions       4.1.1
urllib3                 1.26.8
waitress                2.1.0
Werkzeug                2.0.3
wheel                   0.37.1
yacs                    0.1.8
zipp                    3.7.0

Copyright

Copyright RIKEN, Japan 2021-2022
Copyright FUJITSU LIMITED 2021-2022

Clone this wiki locally