機械学習

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

2019-05-26

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


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技術ブログ https://www.codelab.jp/blog/?p=2044



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

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

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

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

TensorFlowで共有GPUメモリを使用しますか? - コードログ https://codeday.me/jp/qa/20190416/638545.html



"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を指定する


ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

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

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-機械学習
-, , ,

© 2024 ITips