ゼロからのディープラーニング最速入門【TensorFlow編】
TensorFlow環境の構築
―― TensorFlow入門(2) ――
本連載のゴールは「エンジニア向けに、とりあえずTensorFlow使ってみて、ディープラーニングを体感してみる」こと。実際にTensorFlowを使っていくために、まずは環境構築を行おう。
本稿のゴール
TensorFlowはPythonパッケージとして提供されるため、基本的にはPythonが動作する環境であればインストールして利用可能である。機械学習では試行の繰り返しが必要不可欠であることから、データサイエンティストはJupyter Notebookを好んで利用するようだ。本稿では、TensorFlowをJupyter Notebookで利用できることをゴールとして説明する*1。
- *1 Jupyter Notebookの機能を含むJupyterLabという統合開発環境(IDE)も存在する。
プラットフォームの選択
OS
本稿では、以下のOSについて動作確認を行っている。
- Windows 10 Home
- macOS High Sierra
- Ubuntu 16.04 LTS
CPU vs GPU
TensorFlowを利用する際に、CPUのみで実行するか、GPUも利用するかを検討する必要がある。TensorFlowはCPUのみを利用するバージョン(CPU版)と、GPUを利用するバージョン(GPU版)が用意されている。多くの場合、GPUを利用したほうが高いパフォーマンスを得られるため、GPUが利用できる環境であれば、GPU版を選択するとよいだろう。なお、TensorFlowのGPU版はmacOSをサポートしない。
GPUを有効化するためには、事前にCUDA ToolkitやcuDNNなどGPU関連のソフトウェアのインストールや環境変数の設定が必要になる。本稿ではGPUの詳細な設定は割愛するため、GPU版の事前設定は「UbuntuでのGPUディープラーニング環境の構築【Ubuntu 16.04 LTS対応】」および公式ドキュメントを参考にしてほしい。
Python環境
最初に述べたように、TensorFlowはPythonのパッケージとして提供される。本稿執筆時点の最新版であるTensorFlow 1.5がサポートするPythonのバージョンは、Python 2.7およびPython 3.4以降だ。
Pythonにおけるパッケージのインストールや設定に関しては、OSによる多少の違いはあるかもしれないが、基本的にはpip
コマンドを利用すれば導入できる。
PythonユーザーにはCondaを好んで利用する方も多いだろう。Condaの場合はパッケージ管理にconda
コマンドを使う場合もあるが、TensorFlowの公式サイトではConda環境下でもpip
コマンドの利用を推奨している。
本連載では、軽量なCondaであるMinicondaを利用して仮想環境を作成し、pip
コマンドでTensorFlowをインストールするというフローで説明する。本稿で構築する環境は次の通り。
ソフトウェア | バージョン |
---|---|
Python | 3.6(Miniconda) |
TensorFlow | 1.5 |
その他の選択肢
TensorFlowをローカルのPython環境にインストールする以外の選択肢として、以下を簡単に紹介しておく。
Docker
TensorFlowを実行する環境として、Dockerイメージを利用するという方法もある。Dockerとは、軽量なコンテナー型のアプリケーションの仮想実行環境である。なお、Windowsの場合はDockerを利用するためにHyper-Vの有効化が必要になるため、エディションによっては利用できないことに注意が必要だ。
TensorFlowはCPU版とGPU版それぞれでDockerイメージを公式に公開している(gcr.io/tensorflow/tensorflow
のタグを参照)。このイメージにはあらかじめTensorFlowに加えてJupyter Notebookもインストールされているため、Dockerが利用できる環境であれば、これを利用することで容易にTensorFlowの実行環境が手に入る。なお、GPU版についてはnvidia-dockerと呼ばれるGPUを有効にするためのDockerのランタイムを利用する必要がある。詳細は、TensorFlowの公式ドキュメントを参照してほしい。
パブリッククラウドのサービス
Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure(Azure)といった著名なパブリッククラウドでも機械学習を実施しやすいようなクラウドサービスが提供されている。次の表に示したサービスを用いることで、Jupyter Notebookを利用して実験を行い、作成したモデルを公開できる。
クラウド | サービス | Jupyter Note | Tensor | モデルの 公開 | 備考 |
---|---|---|---|---|---|
AWS | Amazon SageMaker | ○ | ○ | ○ | |
GCP | Google Cloud Datalab | ○ | ○ | - | |
GCP | Google Cloud ML Engine | - | ○ | ○ | |
Azure | Azure Machine Learning Services | ○ | ○ | ○ | Jupyter NotebookはAzure Machine Learning Workbenchという開発環境でも提供される。データサイエンス仮想マシン(DSVM)にTensorFlowが導入済みですぐに利用できる |
Azure | Azure Machine Learning Studio | ○ | △ | ○ | TensorFlowの導入は自身で行う必要があるが容易ではない。Azure環境で自由に機械学習の開発を行いたい場合は、上記のAzure Machine Learning Servicesを選択する方がよい |
TensorFlow環境の準備
Minicondaのインストール
下記URLより、OSごとにMinicondaのインストーラーを入手する。本稿ではPython 3.6を選択している。
Windowsの場合は、ダウンロードしたインストーラーの実行ファイルを起動し、それに従ってインストールする。自分のみ利用する場合は管理者権限なしでインストールでき、これを推奨する。インストールすると[Anaconda Prompt]というソフトウェアがスタートメニューに登録される。Anaconda Promptは環境設定済みのコマンドプロンプトだと思ってもらえばよい。従って、Conda利用時の操作はAnaconda Promptを利用すればよい。本稿において、次節以降のコマンド操作はAnaconda Prompt上で行うことを想定している。
macOSやLinuxの場合は、インストーラーはBashスクリプトになっているため、次のようにダウンロードしたスクリプトをbash
上で実行すればよい。インストール先はホームディレクトリー以下を選択することで管理者権限が不要になり、これを推奨する。インストール時に対話的にパスの設定を行ってくれる。次節以降のコマンド操作では、この設定を反映するためにBashを再起動するか.bashrc
ファイルを再読込しておこう。
$ bash ./Miniconda3-latest-Linux-x86_64.sh
|
仮想環境の作成
Condaではconda create
コマンドにより仮想環境を作成できる。ローカル環境で開発を行う場合、さまざまなパッケージの導入によって依存関係が容易に崩れてしまう。これを防ぐために、ローカル環境内でも独立したパッケージ依存関係を保つことができる仮想環境の作成を強く推奨する。
仮想環境を作成するため、次のコマンドを実行する。ここでは例として仮想環境の名前を「introtensorflow」とする。-n
オプションにより仮想環境の名前を示す。
$ conda create -n introtensorflow
|
なお、作成した仮想環境の一覧は、次のコマンドで確認できる。
$ conda info -e
|
作成した仮想環境下で作業を行える状態にすることをアクティベーションという。作成した「introtensorflow」仮想環境をアクティベーションする(リスト4、リスト5)。
(base) > conda activate introtensorflow
|
$ source activate introtensorflow
|
アクティベーションに成功すると、次のようにプロンプトの前に仮想環境名が表示されるようになる。
(introtensorflow) $
|
仮想環境を終了(ディアクティベーション)する場合には、リスト7/リスト8のコマンドを実行する。ディアクティベーションが成功すれば、プロンプトの前の仮想環境名が表示されなくなる。
(introtensorflow) > conda deactivate
|
(introtensorflow) $ source deactivate
|
次節以降は仮想環境上で行うので、ディアクティベーションした仮想環境は、再度、アクティベーションしておくこと。
Jupyter Notebookのインストール
仮想環境にJupyter Notebookをインストールするには、conda install
コマンドを用いる。
(introtensorflow) $ conda install jupyter
|
TensorFlowのインストール
前述の通り、TensorFlowのインストールはconda install
ではなくpip install
が公式に推奨されている。これに従い、pip install
コマンドを用いる。CPU版とGPU版でパッケージ名が異なるため、おのおのの環境に合わせて必要なパッケージをインストールする。GPU版は事前設定が必要であることは前述の通りだ。
(introtensorflow) $ pip --no-cache-dir install -I -U tensorflow
|
(introtensorflow) $ pip --no-cache-dir install -I -U tensorflow-gpu
|
TensorFlowの動作確認
インタープリターでの確認
まずはTensorFlowが使えることを確認しよう。Pythonのインタープリターを対話モードで起動する。
(introtensorflow) $ python
Python 3.6.4 |Anaconda Inc.| (default, Jan 16 2018, 18:10:19)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
|
macOSやLinuxではPythonがあらかじめインストールされているため、PythonがMinicondaで導入したPython 3.6であることを確認してほしい。|Anaconda Inc.|
という文言が含まれていれば問題ない。もしMinicondaで導入したPythonでない場合は、パスの設定(PATH
環境変数)を確認してほしい。
次のコードを入力してエラーが起こらないことを確認する。なお、環境によっては警告などのログが表示されるかもしれないが、内容を読んで問題がなければ先に進めてほしい。最後のコードまで実行できたら対話モードを終了(exit()
)してよい。
>>> import tensorflow as tf
>>> sess = tf.InteractiveSession()
>>> message = tf.constant('Hello, Tensorflow!')
>>> message.eval()
b'Hello, Tensorflow!'
>>> sess.close()
|
Jupyter Notebookの起動
Jupyter Notebookの起動は次のコマンドを実行する。
(introtensorflow) $ jupyter notebook
|
実行すると、しばらくしてブラウザーが起動して、カレントディレクトリのファイル一覧が表示される(図1)。ファイルが存在しない場合は「The notebook list is empty.」と表示される。
もしエラーでもなくブラウザーが起動しない場合や、誤ってタブを閉じてしまった場合は、コンソール上に次のようなログが表示されているので、このURLにアクセスすればよい。
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=<ハッシュ値>
|
Jupyter Notebookページ右上の[New]メニュー(図1参照)から「Python 3」を選択すると新規ノートを作成できる。作成すると、以下のように空のノートが表示される。
Jupyter Notebookでは、入力セル(In[n]
の形式のラベルが付与される)にコードを記述し、[Run]ボタンをクリック(またはShift+Enterキーを入力)すると、その入力セルに記述したコードを実行できる。コードが標準入出力を利用する場合は、入力セルの直下に入力フォームや出力結果が表示される。入力セルのコードの最後の式が評価された結果は、出力セル(Out[n]
の形式のラベルが付与される)に出力される*2。
- *2 n番目の出力セルの値は
_n
という変数で参照できる。時間がかかる処理をうっかり変数に代入し忘れた場合などに利用するとよいだろう。
入力セルには、Pythonコード以外にも、Markdown形式の文章も挿入できたりする(ノート表示中の[Cell]メニューの[Cell Type]で変更する)。また、各セルは順番を入れ替えたり、修正して再実行できたりするため、まさに試行錯誤を行うのに適した環境であるといえる*3。
- *3 試行錯誤を行った結果、変数定義の順番が入れ替わって結果がおかしくなる場合がある。他人にノートを配布したり、コードを再利用したりするような場合は、[Kernel]メニューから[Restart & Run All]を選択して、上から順に再実行するとよいだろう。
図3はJupyter Notebookを用いて先ほどのコードを実行した例だ。
Jupyter Notebookのノートの実体は、拡張子が.ipynb
のJSON形式のファイルである。
この形式のファイルに対応したサービスやソフトウェアを用いれば、ユーザーはJupyter Notebookの導入なしにノートをレンダリングして閲覧できる。例えばGitHubはJupyter Notebook形式に対応しているので、ノートファイルをpush
することでユーザーに見やすい形式で公開できる。
また、ノート表示中の[File]メニューの[Download As]を選択するか、コマンドラインでjupyter nbconvert
コマンドを実行することにより、Pythonコードに変換したり、HTMLに変換したりできる。
■
次回からは、今回準備したTensorFlow環境を利用して深層学習を実践していく予定である。前置きが長くなるが、次回はその必須知識として、TensorFlowの基本的な構成要素であるテンソルとセッションについて説明しておく。
【TL;DR】TensorFlow環境の構築
- TensorFlowを利用するための環境: Pythonが動作する環境は必須。機械学習ではJupyter Notebookもインストールすると便利
- OSとGPU: Windows/macOS/Ubuntuで利用可能。CPU版/GPU版を選択可能。ただしmacOSではGPU版はサポートされない
- ローカルのPython環境: TensorFlow 1.5はPython 2.7と3.4以降に対応。本連載では、Minicondaで仮想環境を作成し、
pip
コマンドでTensorFlowをインストールする - 上記以外の環境: Dockerを利用する方法や、AWS/GCP/Azureといったパブリッククラウドを利用する方法もある
- Minicondaのインストール: https://conda.io/miniconda.html
- Condaで仮想環境の作成:
conda create -n introtensorflow
、conda activate introtensorflow
(Windows)/source activate introtensorflow
(macOS/Linux) - Jupyter Notebookのインストール:
conda install jupyter
- TensorFlowのインストール:
pip --no-cache-dir install -I -U tensorflow
(CPU版) - 準備した環境の動作チェック:
python
、import tensorflow as tf
……(※コードなので続きは本文を確認、jupyter notebook
- Jupyter Notebookの機能: 作成したノート上の各
In[n]
セルでPythonコードが実行でき、直下に表示されるOut[n]
セルに結果が出力される。Markdown文書を入力したり、Pythonコードをエクスポートしたりできる
安部 晃生(あべ こうせい)
DATUM STUDIO株式会社(https://datumstudio.jp/)でデータ分析と IT 技術で企業のビジネスを加速させるお手伝いをしています。最近は世の中のデータ活用ビジネスを加速させるための新規ビジネスの企画・設計・実装を進めています。
1. TensorFlowとは? 入門連載始動! データフローグラフ、事例、学び方
TensorFlowの概要と適用範囲を説明。最重要な基本概念であるデータフローグラフについて解説する。また、深層学習との関係や、事例、学び方についても紹介する。
2. 【現在、表示中】≫ TensorFlow環境の構築
本連載のゴールは「エンジニア向けに、とりあえずTensorFlow使ってみて、ディープラーニングを体感してみる」こと。実際にTensorFlowを使っていくために、まずは環境構築を行おう。
3. TensorFlowの基本構成要素:「テンソル」と「セッション」
TensorFlowによる深層学習を始める前に、TensorFlowの基本的な構成要素であるテンソルとセッションを理解しておこう。TensorFlowのコード例を示しながら、できるだけコンパクトにまとめる。
4. CNN(Convolutional Neural Network)を理解しよう(TensorFlow編)
画像認識でよく使われるディープラーニングの代表的手法「CNN」を解説。「畳み込み」「プーリング」「活性化関数」「CNNのネットワーク構成」「ソフトマックス関数」といった基礎と、注意点を押さえよう。
5. 画像認識を行う深層学習(CNN)を作成してみよう(TensorFlow編)
ディープラーニングの代表的手法「CNN」により画像認識を行う機械学習モデルを構築してみる。CNNによる深層学習がどのようなものか体験しよう。