tenssor flow-gpuバージョンの使用問題と方法のまとめ

2274 ワード

tenssor flow-gpuバージョンの使用問題と方法のまとめ
  • トレーニングメモリオーバーフロー問題
  • 問題説明
  • 解決方法
  • kersasとtenssorflowが混在して使用されるとメモリオーバーフローが発生します.
  • batch_size設定により、tenssor flow-gpuの現存が
  • を超えるようになりました.
  • Tensorflow-GPUの現存エラー
  • 解決方法
  • は、トレーニング中に発生した警告およびデバイス情報を無視する
  • .
    訓練メモリオーバーフロー問題
    問題の説明
    グラフィックカードは1660 ti-6 Gで、システムはUbuntu 16.04で、使用するtenssorflowバージョンは1.14です.ネットワークのトレーニングを行う時、tenssorflowはデフォルトではグラフィックカードの現像がいっぱいになります.その後、トレーニングネットワークには以下のようなエラーが発生することがあります.so try looking to see if a warning logs message was printesd above.
    解決方法
    この問題に対しては、人工的にプログラムに必要な現存を制限する必要があります.以下は2つの現存制限方式(現存適応成長と現存固定制限)に対して実現されるコードです.
    def gpu_memory_config(mode,ratio=1):
    
        '''
        # gpu config function for memory overflow
        '''
        config = tf.ConfigProto()
    
        if(mode == "adaption"):
            config.gpu_options.allow_growth = True 
        if(mode == "ratio"):
            config.gpu_options.peper_process_gpu_memory_fraction = ratio
    
        return config
    
    上記のコードで現存配置方式の選択が完了し、Sessionを起動する時に設定します.
    config = gpu_memory_config(adaption)
    with tf.Session(config = config) as :
    ......
    
    kersasとtenssorflowを混ぜ合わせて使うとメモリが溢れ出す問題が発生します.
    import tensorflow as tf
    from tensorflow import keras
    import keras.backend.tensorflow_backend as KTF
    
    //      (adaption)       (ratio)
    model = *******
    config = gpu_memory_config(mode)
    session = tf.Session(config=config)
    KTF.set_session(session)
    
    tenssor flowのバックエンドによって、kersの現存が問題を超えた設定を行います.
    batchsize設定により、tenssor flow-gpuの表示がオーバーしました.
    Tensorflow-GPUの現存エラー
    Hint:If you want to see a list of allocated tens when OOM happens,add report_tensor_allocations.アップロードoom to RunOptions for current allocation info.
    解決方法
    ネットワークのbatchを減らすsizeの値
    トレーニング中に発生した警告とデバイス情報を無視する
    import os
    import logging
    import warnings
    
    # TF_CPP_MIN_LOG_LEVEL = 1         //    ,                       
    # TF_CPP_MIN_LOG_LEVEL = 2         //   error warining                  
    # TF_CPP_MIN_LOG_LEVEL = 3         //   error  
    
    
    os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
    warnings.filterwarnings("ignore")
    logging.getLogger('tensorflow').setLevel(logging.ERROR)