10

4 GPU マシンで theano と lasagne を使用してニューラル ネットワークをトレーニングしています。My.theanorcには次の行が含まれています。

[global]
device = gpu0

だから、Pythonで私が実行する import theanoと、私は得るUsing gpu device 0: GRID K520

theano をインポートした後、たとえば gpu1 を使用することを選択した場合はどうなりますか? これを動的に行いたいのですが、編集しなく.theanorcても可能ですか? それとも、実行時に選択するのですか?

4

2 に答える 2

11

残念ながら、Theano をインポートした後に実行デバイスを変更することはできません。ドキュメントから:

config.device

文字列値: 「cpu」、「gpu」、「gpu0」、「gpu1」、「gpu2」、「gpu3」のいずれか

[...]

このフラグの値は、プログラムの実行中に変更できません。

ボーナス: ただし、2 つの Python プロセスをそれぞれ別の GPU で実行したいとします (それが必要ですか?)。次のようにすることができます。

import os
os.system("THEANO_FLAGS='device=gpu0' python myscript.py")
os.system("THEANO_FLAGS='device=gpu1' python myscript.py")

または、子プロセスが生成される前にフラグが設定されるように、 Python のmultiprocessingモジュール (サブプロセスを生成することによって機能します) をハック/拡張します。

于 2015-08-13T09:07:18.683 に答える
5

編集: Theano は現在、GPU 配列バックエンドに基づいており、次の API は使用できなくなりました。

@EelkeSpaak が述べたように、theano のインポート後に GPU デバイスを変更することはできません。ただし、環境変数を変更せずにそれが可能になる前に、プログラムで選択したい場合。

  1. .theanorc ファイルでデバイスを選択していないことを確認してください。したがって、次のようなものはありません:

    device=gpu

  2. 呼び出す前にimport theano、次のように GPU デバイスを選択します。

    import theano.sandbox.cuda
    theano.sandbox.cuda.use('gpu1')
    
    #Results in Using gpu device 1: Tesla K80
    
于 2016-04-24T21:27:28.603 に答える