TensorFlowとKerasによるディープラーニング①【第2回:GPUコンテナで画像解析〜準備編〜】

TensorFlowとKerasによるディープラーニング①【第2回:GPUコンテナで画像解析〜準備編〜】

AI初学者にとってハードルのひとつになっているGPU環境構築をできるだけ効率的に行うために、コンテナを有効活用することを目的に連載をスタートしました。今回はディープラーニングのフレームワークとしてメジャーなTensorFlowを取り上げます。

この連載について

本連載は、全6回のシリーズを通してできるだけ効率的に、GPUの環境構築を行うためにコンテナの活用を行っていきます。「機械学習やディープラーニングをGPUで実行してみたいけど難しそう…」など導入にハードルを感じられている方に、コンテナを活用することで、環境構築に要する工数を圧倒的に削減し、即座に課題に取り組むことができるメリットを感じていただきます。そのために必要な知識や操作方法を、当社のGPUサーバーを使い解説していきます。
連載を読み終えるころには、TensorFlowやPyTorchなどのメジャーなフレームワークを使った演習ができるようになっているはずです。

本連載は、こちらの手順で進めています

・GPUコンテナとは何か?何が便利なのか?(第1回)

AI初学者がGPUを使って機械学習やディープラーニングに取り組みたい場合、環境構築に想像以上の工数が発生することがあります。セットアップ作業に要する時間を極力削減するためにコンテナ技術を適用し、コンテナ内からGPUを利用するための準備と手順について紹介します。

●GPUコンテナとは何か?何が便利なのか?(第1回)
https://www.kagoya.jp/howto/cloud/gpu-container1/

・TensorFlowとKerasによるディープラーニング①(第2回)今回の記事

OSS(オープンソースソフトウエア)の機械学習ライブラリの中からTensorFlow(テンソルフロー)、Keras(ケラス)を取り上げ、これらが稼働するコンテナを作成し、コンテナ内からGPUを指定する方法について紹介します。TensorFlowはKerasを取り込む形で公開されていて、ディープラーニングをする際の使い勝手の良さから、多くのユーザーに利用されています。この回ではコンテナ内のTensorFlowでGPUを利用できる状態まで確認します。

・TensorFlowとKerasによるディープラーニング②(第3回)

TensorFlow(テンソルフロー)やTheano(テアノ)/CNTK(Cognitive Toolkit)の複数のバックエンドとして利用可能なKeras(ケラス)を取り上げ、TensorFlowとKerasを使ったディープラーニングを行います。

・Chainerを使ったディープラーニング(第4回)

ディープラーニングのフレームワークとして有名なChainer(チェイナー)の利用方法を紹介します。コンテナからGPUを利用する手順と、GPUによってどれだけ高速化に寄与できたかについて、Pythonのプログラム実行結果を通して確認します。C言語に比べて処理時間がかかると言われているPythonですが、数値計算を効率的に行うための拡張モジュールであるNumPy(ナムパイ)についても取り上げます。

・Pytorchでニューラルネットワーク(第5回)

Pythonの機械学習用フレームワークであるPytorch(パイトーチ)を取り上げます。PyTorchではTensor(テンソル)という型で行列を表現します。Tensorは多次元配列を扱うためのデータ構造であり、GPUをサポートしていることから、Pytorchが稼働するコンテナを利用し、GPUによる高速処理を行う手順について紹介します。

・OpenPoseによる関節点抽出・姿勢推定(第6回)

カメラ画像のAI画像認識と言えば「顔認証」を思い浮かべる人が多いと思いますが、最近は一歩進み、人が映った静止画や動画から関節点抽出・姿勢推定に取り組むケースが増えています。人体、顔、手足などのキーポイントを画像から検出する技術がディープラーニングにより、実用レベルまで向上しているからです。この回ではOpenPose(オープンポーズ)というライブラリをGPU上で動かすコンテナを使い、動画ファイルの関節点抽出手順を紹介します。

前回(第1回)の振り返り

前回は、Dockerを使ってGPUをコンテナ化する作業を行い、下記の環境を構築しました。
【環境】
OS:Ubuntu 16.04 LTS
GPU:NVIDIA Tesla P40
CUDA version:10.2
Docker version:19.03.2

上記の環境について確認してみましょう。

上記の環境について確認します。

・pciデバイスの確認

lspciコマンドでpciデバイスの情報を確認します。ここでは、grepでnvidiaの文字列に該当するものを検索することで表示する情報を絞り込んでいます。

Tesla P40を実装したグラフィックボードに関する情報が表示されています。

・NVIDIA Container Toolkitの確認

nvidia-container-cli info コマンドを使って NVIDIA Container Toolkit がインストールされていることを確認します。

CUDAのバージョンやGPUのモデル情報が表示されています。

・Dockerのバージョンの確認

docker versionコマンドを実行し、バージョンを確認します。

Docker クライアント、サーバーの各々についてDockerのバージョン、ビルドされた日時、OSやアーキテクチャに関連する情報が確認できました。

・DockerコンテナからGPUの確認

Docker コンテナ内でnvidia-smiコマンドを実行し、GPUを認識しているか確認します。

Docker コンテナ内からGPU(Tesla P40)を認識できていることが確認できました。

コンテナからTensorFlowを稼働させる

GPUに対応しているTensorFlowのDockerイメージをダウンロード

Docker Hub リポジトリにあるTensorFlow の公式の Docker イメージ(GPU対応)をダウンロードし、実行します。

確認のため、REPOSITORYがtensorflow/tensorflowのコンテナイメージを表示します。

コンテナイメージができていることが確認できました。

最新の TensorFlow GPU イメージを使用して、コンテナ内で bash シェル セッションを開始します。

pythonからGPUを確認します

以下のように表示され、最後にdevice:GPU:0と表示されました。

最後のdevice:GPU:0という表示はGPUが正しくアサインされていることを示しており、コンテナのPythonシェル内からGPUを利用できる状態になっていることを示しています。
(TensorFlowがGPUを利用できる状態です)

次回予告 第3回:TensorFlowとKerasによるディープラーニング②(第3回)

TensorFlowのラッパーとして親和性の高いKerasを使ったディープラーニングに取り組みたいと思います。


他の連載記事を読む

???e?E?A?Z?L??c?A?E?A??a?A?n^?p?A??a?eWordpress??o?[?U?[?u??P?E?gA?n?a??E??WordPress?e?p?T?[?o?[

人気記事ランキングトップ10

コンテナサービス

様々なビジネスニーズに応える柔軟なスペックと自由な構成 KAGOYA CLOUD IaaS

カテゴリ一覧

新着記事Pick Up!