LoginSignup
20
36

More than 5 years have passed since last update.

ディープラーニングを始めたいひとのLinux環境構築【Python×Keras】

Posted at

LinuxでKerasを動かす際の環境構築手順をまとめました。
ディストリビューションはUbuntu 16.04 LTS、GPUで学習を行うことを想定しています。
なお、本投稿によって生じた全ての事象について私は責任を負いかねますので、必ず自己責任で行うようお願いします。
今回はこのような流れで進めていきます。

  • はじめに
  • Google Chromeをインストール
  • Visual Studio Codeをインストール
  • fishをインストール
  • Pythonをインストール
  • CUDAをインストール
  • Tensorflow/Kerasをインストール
  • Kerasでmnistの学習を実行
  • 終わりに

はじめに

まずはじめにターミナルを開き、下記を実行しておきます。

$ sudo apt update
$ sudo apt upgrade

Google Chromeをインストール

普通にChromeをインストールしようとすると「インストール中」でフリーズするので、まず下記のパッケージをインストールする必要があります。

$ sudo apt install libappindicator1

# ここでエラーが発生する場合は現状インストールされているChromeを削除します。
$ sudo apt remove google-chrome-stable

その後下記URLから.devのインストーラをダウンロード、インストールを行います。
https://www.google.co.jp/chrome/browser/desktop/

下記コマンドでChromeが起動します。

$ google-chrome

Visual Studio Codeをインストール

ソースコードを編集する際に必要なエディタをインストールします。
ソースコードエディタは種類が豊富で、PythonにはPyCharmという統合開発環境もありますが、個人的な好みと拡張機能の多さから今回はVisual Studio Code(以下VSCode)をインストールします。
Ubuntuを使っているので下記URLから.debのインストーラをダウンロード、インストールを行います。
https://code.visualstudio.com/download

その後下記コマンドでVSCodeが起動します。

$ code

また下記の基本的な拡張機能をインストールしておくと便利です。

  • Japanese Language Pack for VS Code
  • Python extension for Visual Studio Code

次にUbuntuはデフォルトのフォントが少々見づらいので、フォントをFira Codeに変更します。
下記Githubの指示に沿ってインストールしていけばいいのですが、今回は下部のManual Installation通りにインストールしました。
https://github.com/tonsky/FiraCode/wiki/Linux-instructions#installing-with-a-package-manager

まずシェルスクリプトを作ります。

$ touch download_and_install.sh

上記のファイルを開き、リンク先に書いてあるソースコードをコピペします。

download_and_install.sh
#!/usr/bin/env bash

fonts_dir="${HOME}/.local/share/fonts"
if [ ! -d "${fonts_dir}" ]; then
    echo "mkdir -p $fonts_dir"
    mkdir -p "${fonts_dir}"
else
    echo "Found fonts dir $fonts_dir"
fi

for type in Bold Light Medium Regular Retina; do
    file_path="${HOME}/.local/share/fonts/FiraCode-${type}.ttf"
    file_url="https://github.com/tonsky/FiraCode/blob/master/distr/ttf/FiraCode-${type}.ttf?raw=true"
    if [ ! -e "${file_path}" ]; then
        echo "wget -O $file_path $file_url"
        wget -O "${file_path}" "${file_url}"
    else
    echo "Found existing file $file_path"
    fi;
done

echo "fc-cache -f"
fc-cache -f

download_and_install.shを実行します。

$ sh download_and_install.sh

これでFira Codeをインストールできたので、VSCodeに適用します。
メニューの「Code」→「基本設定」→「設定」を開き、
Editor:Font Family"Fira Code Retina"
Editor: Font Ligatures有効にすればフォントが変更されます。
変更されないときはRetina部分をRegularや、Boldにしたりしてみてください。
あとはメニューの「Code」→「基本設定」→「配色テーマ」から、カラーテーマを好きなものに変更します。

最後に個人的に不便なプレビューモードを解除しておきます。
Workbench › Editor: Enable Previewと、
Workbench › Editor: Enable Preview From Quick Open無効にすればOKです。

fishをインストール

引き続きターミナルを操作していきますが、今回はshellにfishを使用します。
fishはfriendly interactive shellの略称とのことですが、特徴はやはりわかりやすさだと感じます。コマンドを途中まで入力するとその先をわかりやすく補完してくれたり、シンタックスハイライトによってそのコマンドが正しいのか間違っているのかということも示唆してくれます。
Ubuntuのデフォルトシェルはbashですが、一応現在のシェルを確認しておきます。現在のシェルはSHELLという環境変数に設定されているので$SHELLの中身を出力することで確認できます。

$ echo $SHELL
/bin/bash

それではデフォルトシェルをbashからfishに変更していきます。
まずはfishをインストールします。

$ sudo apt install fish

インストールができたら、fishのパスを確認します。

$ which fish
/usr/local/bin/fish

自分のマシン環境で使用可能なシェル一覧を確認します。

$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish

末尾に上記fishのパスが追加されていたらOKですが、なければvimを使って手動で追記します。
下記コマンドでvimエディタを開いたらiでインサートモードに切り替え、テキストを入力します。
入力が終わったらescでノーマルモードに戻り、:wで上書き保存、:qでエディタを閉じます。

$ sudo vim /etc/shells

# vimがインストールされていなかったら下記を実行します。
$ sudo apt install vim

下記コマンドでデフォルトシェルをfishに変更します。

chsh -s /usr/local/bin/fish

これでデフォルトシェルを変更できました。パソコンを一度ログアウトするとこの変更が適用されます。
再ログインして変更が適用されたかを確認します。ターミナルを起動し、最初のメッセージがbashのときから変わってWelcome to fish, the friendly interactive shellと表示されていたらOKです。一応現在の環境変数も確認しておきます。

$ echo $SHELL
/usr/local/bin/fish

なお、現在使用しているシェルは下記方法でも確認できます。

cat /etc/passwd | grep username

デフォルトシェルはbashのままfishを起動したい場合は.bashrcの末尾にexec fishと記述しておけば同様にfishを使用できます。

Pythonをインストール

pyenvをインストール

pyenvはPythonのバージョン管理ができるコマンドラインツールです。
pyenvを使うことで例えばディレクトリAではPython2系を使う、ディレクトリBではPython3系を使うといったことが可能になります。
公式Github:https://github.com/pyenv/pyenv/wiki
まず上記Githubからpyenvをホームディレクトリにダウンロードします。

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv

# Gitがインストールされておらず、上記でエラーが起こる場合はまずこちらを実行します。
$ apt install git

次にダウンロードしたpyenvのパスを通します。
「パスを通す」とは「コマンド検索パスを追加する」ことだと考えるとわかりやすいです。コマンドライン上に入力したコマンド(例えばlscd)が正しく動作するのと同じように、コマンドライン上でpyenvと入力したらどのファイルを実行してねということを設定します。
現時点ではパスを通していないので下記を実行しても何も表示されません。

$ which pyenv

それではpyenvのパスを通します。今回はシェルスクリプトにfishを使っているので書き込み先は.config/fish/config.fishです。

$ echo 'set -x PATH $HOME/.pyenv/bin $PATH' >> .config/fish/config.fish
$ echo '. (pyenv init - | psub)' >> .config/fish/config.fish

書き込みを適用します。(下記コマンドではなくターミナルを再起動しても適用されます。)

$ source .config/fish/config.fish

これでpyenvのパスが通ったので、再度下記を実行するとパスが表示されます。

$ which pyenv
/home/username/.pyenv/bin

Anacondaをインストール

Anacondaは機械学習やデータサイエンスをするうえで必要になる色々なPythonパッケージをまとめて提供してくれます。
現時点ではどのバージョンもインストールしていないので下記を実行するとsystemというデフォルト項目だけが表示されます。

$ pyenv versions
* system

インストールできるバージョンを確認します。
下記を実行するとpyenvでインストールできるバージョンがリスト表示されます。

$ pyenv install -l

今回はanaconda3-5.2.0をインストールします。anacondaのバージョンが新しすぎるとtensorflowをインストールできないことがあるので注意してください。

$ pyenv install anaconda3-5.2.0

ここで再度下記を実行するとインストールできていることがわかります。
*が現在適用されているバージョンを示します。

$ pyenv versions
* system
  anaconda3-5.2.0 (set by /home/username/.pyenv/version)

pyenvではインストールしたバージョンを現在のアカウント全体で使うか、特定のディレクトリだけで使うかを指定することができます。今回はanaconda3-5.2.0をアカウント全体に適用します。

$ pyenv global anaconda3-5.2.0

下記を実行すると*が移動していることがわかります。

$ pyenv versions
  system
* anaconda3-5.2.0 (set by /home/username/.pyenv/version)

CUDAをインストール

CUDAはGPUを使って学習を行う際に必要になります。
まず公開鍵を取得します。

$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

続いてパッケージをダウンロードします。

$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.2.88-1_amd64.deb

ダウンロードしたパッケージをインストールします。

$ sudo dpkg -i cuda-repo-ubuntu1604_9.2.88-1_amd64.deb

APTをアップデートし、下記をインストールします。

$ sudo apt update
$ sudo apt install cuda cuda-drivers

ここでPCを再起動します。

$ sudo reboot

このあと.config/fish/config.fishに追記します。

$ echo 'set -x PATH /usr/local/cuda/bin $PATH' >> .config/fish/config.fish
$ echo 'set -x LD_LIBRARY_PATH /usr/local/cuda/lib64 $LD_LIBRARY_PATH' >> .config/fish/config.fish

最後にログオフをして再度ログイン後、下記コマンドを実行、接続しているGPUが表示されたらOKです。

$ nvidia-smi

Tensorflow/Kerasをインストール

続いてTensorflow、そのあとにKerasの順でインストールします。
今回はGPUを使用するのでtensor-gpuとしていますが、tensorflowだけでも問題はありません。

$ conda install tensorflow-gpu
$ conda install keras

Kerasを実行

最後にKerasでmnistの学習を実行して動作確認をします。
コードはこちらを使用します。
https://github.com/keras-team/keras/blob/master/examples/mnist_cnn.py

適当なPythonファイルを作成します。

$ touch train.py

作成したtrain.pyに上記URLのコードをコピペして保存、下記を実行します。
エラーなく処理が進めばクリアです!

$ python train.py

終わりに

私なりの手順を書かせていただきましたが、上記の手順のなかで不備や漏れ、お気づきのことがございましたらコメントをいただけますと幸いです。

また本稿作成にあたり下記を参考にさせていただきました。
https://qiita.com/shuntksh/items/1995e87fe5c1ac88296f
https://qiita.com/tkmpypy/items/9bd9692ad44dcd5710da
https://qiita.com/yukoba/items/3692f1cb677b2383c983

20
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
36