keras 或 tensorflow 調用GPU報錯:Blas GEMM launch failed

GPU版的tensorflow在模型訓練時遇到Blas GEMM launch failed錯誤,或者keras遇到相同錯誤(keras 一般將tensorflow作爲backend,如果安裝了GPU版本的tensorflow,那麼在使用keras時會優先使用GPU),類似報錯如下:

InternalError (see above for traceback): Blas GEMM launch failed : a.shape=(300, 1), b.shape=(1, 10), m=300, n=10, k=1

這是調用GPU時,顯存分配遇到了問題,有些解釋說當前電腦其他程序佔用顯存(遊戲等),所以發生錯誤,具體討論見帖子。比較保險的方式是在模型訓練之前爲tensorflow或者keras分配顯存空間,tensorflow就用如下語句創建session:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)  
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))  

而keras就在引入keras時進行參數設置:

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.allocator_type = 'BFC' #A "Best-fit with coalescing" algorithm, simplified from a version of dlmalloc.
config.gpu_options.per_process_gpu_memory_fraction = 0.3
config.gpu_options.allow_growth = True
set_session(tf.Session(config=config)) 

如果使用ipython notebook,做完上述設置後可能出現GPU sync failed,重啓一下就應該沒問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章