Tensorflow関係のメモ

VLOGの出し方

tenosorflowでうまく動かないときに、cppソースとかを見たらVLOG(2)とかに有用なログが出てそうな時があります。 通常のLOGではなく、VLOGはデフォルトでオフなので、出力するには環境変数 TF_CPP_MAX_VLOG_LEVEL をセットします。

    import os
    os.environ['TF_CPP_MAX_VLOG_LEVEL'] = '2'    

なお大量にログが出るので、すごく遅くなります。ファイルに出すときには標準エラーをリダイレクトするのを忘れずに。

error: Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice

学習しようとした際に、以下のエラーが出る場合
error: Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice

あちこちに答えがありますが、コンパイル時のcudaフォルダの場所と違うところに現在のcudaがある場合に、 このエラーが出ます。 基本的に、以下のコードで直ります。

    import os
    os.environ["XLA_FLAGS"]='--xla_gpu_cuda_data_dir=/path/to/cuda'

windowsの場合は、この方法でうまくいくのですが、空白パスとパス区切りでさらに失敗しますので、 次のようにします。

    import os
    os.environ["XLA_FLAGS"]='--xla_gpu_cuda_data_dir="%s"'%os.environ["CUDA_PATH"].replace('\\','/')

model.fit()で、CPUメモリ消費量が増大する件(メモリリーク?)

tf.keras.Modelで、fit()を使って学習していると、ちょっとずつCPUメモリ消費量が増大して、 長時間の学習ができない現象が発生しました。tensorflow 2.10.0

いろいろ解決法が提示されていますが、どうも実装のC++ルーチン内でのmalloc周りに変なことがあるようで、 tcmallocに差し替えるとリークしなくなりました。

    sudo apt install libgoogle-perftools-dev
    LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 python3 train.py

apt install cuda で依存関係が壊れてどうしようもなくなったとき

なんかバージョン上がったときに、パッケージがおかしくなってインストールが止まるやつ

    sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite"

ref: https://askubuntu.com/questions/1238715/unable-to-fix-broken-packages-when-installing-cuda