この記事はN高等学校 Advent Calendar 2018の21日目の記事です
こんにちは、N高等学校2年の上原(uehr)です。
在学しながらプログラマを目指して活動しています。
今回の記事では、物体検知ツールの一つである**Darkflow(TensorFlow版YOLO)**のGPUメモリ使用量を抑える方法について書きます。
SageMakerについて書く予定でしたが、公開日まであまり時間が無いので短めの記事にしました...
概要
Darkflowを使う場合、内部で動いているTensorFlowの仕様上、デフォルトではGPUメモリを全て確保してしまいます。
そのままだと複数個のプロセスを動かすことが難しくなってしまうので、今回は、必要な分のGPUメモリを随時確保していく設定を有効にする方法について書いていきます。
手順
1. Darkflowのソースコードを修正
darkflow/darkflow/net/build.py
の133〜134行目を修正します。
修正前
cfg['gpu_options'] = tf.GPUOptions(
per_process_gpu_memory_fraction = utility)
修正後
cfg['gpu_options'] = tf.GPUOptions(
per_process_gpu_memory_fraction = utility, allow_growth = True)
allow_growthオプションを追加しました。
2. 設定を適用
設定を適用するためにpipを使ってDarkflowをアップデートします。
$ sudo pip install ./darkflow --upgrade
アップデートが完了すると、設定が有効になっています。
3. 動作確認
Darkflowを実行しながら、 nvidia-smi
コマンドでGPU使用率の違いを確認しましょう。
終わりに
私の観測範囲では、この手順についての日本語の記事が見つからなかったので、備忘録も兼ねて書きました。少しでもお役に立てれば幸いです。
N高等学校では、競技プログラミング大会への参加や、一ヶ月間のドワンゴ社インターン、プログラミングコミュニティ内での情報交換など、色々貴重な体験をさせて頂いて、プログラマとしてのスキルアップに繋がりました。
特にお世話になったプログラミング講師のsifue先生には、この場で改めて感謝を述べたいと思います。
自分の得意分野をとことん伸ばしたい方にはこの学校はベストな選択肢だと思います、ぜひ入学を考えてみては如何でしょうか。