機械学習

TensorFlowで"Blas GEMM launch failed"が出た場合の対処法

TensorFlowで

TensorFlowで Blas GEMM launch failed のエラーが出てしまう。
今回は Blas GEMM launch failed エラーの原因と、その対処法について紹介する。



TensorFlowとは?

TensorFlowとはGoogle製の超有名な機械学習ライブラリ。
機械学習エンジニアならばまずTensorFlowを知らない人間はいないと思われる。
ニューラルネットワークの処理だけでなく、内部の隠れ層の処理や活性化関数など調整ができる便利なライブラリ。

TensorFlow(テンサーフロー)とは、Googleが開発しオープンソースで公開している、機械学習に用いるためのソフトウェアライブラリである。
TensorFlow - Wikipedia


"Blas GEMM launch failed" の原因

PythonからTensorFlowの処理を実行した際に以下のエラーが発生することがある。

InternalError: Blas GEMM launch failed

原因はGPUメモリのオーバーフロー。
GPUメモリの限界以上のメモリを使おうとしたためエラーが起こっている。

確認方法としてはGPUメモリの使用率を確認するのが簡単。
Windows10であれば taskmgr コマンドでタスクマネージャを起動して、 GPU0GPU1 からGPUメモリ使用率を確認できる。
その際、タスクマネージャを見ながらTensorFlowの処理を実行して、エラー発生直前にメモリ使用率が100%近くなっていればオーバーフローである。

GPUメモリの使用状況を見てみましょう。Windows10であればタスクマネージャから確認できます。
[Tensorflow]InternalError: Blas SGEMM launch failed が発生する場合 | CodeLab技術ブログ


共有GPUメモリは使えないのか

タスクマネージャ上には 専用GPUメモリ共有GPUメモリ が表示されているので、共有GPUメモリを使いたくなると思う。
しかし 共有GPUメモリ をTensorFlowから使う事はできない。

何故なら共有GPUメモリはGPU上のメモリではなく、PCのメモリをGPU用に貸し出してるものだから。
CUDAはGPUに搭載されたメモリしか使えないので、GPU上のメモリではない 共有GPUメモリ は使えないのである。

共有メモリは、グラフィック用に予約されているメインシステムRAMの領域です。
これはあなたのNVIDIA GPUにはありません、そしてCUDAはそれを使うことができません。
TensorFlowで共有GPUメモリを使用しますか? - コードログ


"Blas GEMM launch failed" の回避方法

回避方法はいくつかある。

  • 大きいGPUメモリを搭載したGPUを購入する
  • TensorFlowプログラムのメモリ使用量を下げるようにコードを修正する
  • GPUを2つ搭載している場合は、GPU1を使ってみる

この中で2枚目のGPU(GPU1)を使う方法を紹介する。


2枚目のGPU(GPU1)を使う方法

GPUを2つ搭載している場合は、2枚目のGPU(GPU1)がメモリを多く搭載していれば、2枚目のGPU(GPU1)を使ってエラーを回避できる。
PythonからGPUを指定するには、TensorFlowを実行する際に config を設定して利用GPUを指定する。

import keras
import tensorflow as tf
tf.Session(config=tf.ConfigProto(device_count = {'GPU': 1}))

参考:Jupyter上で使用するGPUを指定する最適解 - Qiita


まとめ

  • Blas GEMM launch failed の原因はGPUメモリのオーバーフロー
  • 共有GPUメモリはGPU上のメモリではないので使えない
  • エラーを回避する方法の1つは config から別のGPUを指定する


コチラもオススメ

KRSW

駆け出し機械学習エンジニア。機械学習、DB、WEBと浅く広い感じ。 Junior machine learning engineer. Not a specialist but a generalist who knows DB, WEB too.

役に立ったらシェアしてくれると励みになります。

にほんブログ村 IT技術ブログへ

-機械学習
-, , ,

Translate »

Copyright© ITips , 2020 All Rights Reserved.