post Image
Ubuntu16.04 + GTX1080 + CUDA8.0で 機械学習環境を構築する

ubuntu+CUDA8.0で機械学習する際の設定メモ。anaconda(numpy/matplotlib), scikit-learn, chainerを入れます。

PC仕様

  • PC: GTune NEXTGEAR i650PA7-SP3
  • MB: Z170-S01 MSI
  • CPU: Intel Core i7-6700K CPU 4.0GHz x 8
  • GPU: Geforce GTX1080
  • Memory: 32GB
  • SSD: 256GB
  • HDD: 2TB
  • OS: Ubuntu 16.04 64bit + Windows 10 Home 64bit

ubuntuインストール手順

  • ubuntu16.04 LTSをDLしてisoファイルを作成
  • UEFI (BIOS)に入る
    • UEFI menuでsecure bootをことごとく無効化する
    • DVDからubuntuインストール
  • ブート選択画面でinstall ubuntuのラインで「e」を押して以下を変更、その後F10で起動
    • 変更前: quiet splash
    • 変更後:nomodeset
  • install
    • boot: 128 MB(少ないかも), ext4
    • swap: メモリ量の1〜2倍(e.g. 64000 MB), swap
    • /: 残り全て, ext4
    • ブートローダーをインストールするHDD: bootを入れたdev/sdc

ubuntu基本セットアップ

  • 環境を最新にする
terminal
sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt-get install git
sudo apt-get install python-pip
  • ディレクトリを英語表記にする
terminal
LANG=C xdg-user-dirs-gtk-update
  • vimで矢印キーを押すとABDなどが出る問題を解消
terminal
touch ~/.vimrc
vi ~/.vimrc
set nocompatible #vimrcに追記
  • 内蔵HDDを自動マウント
terminal
sudo fdisk -l  # /dev/sda2が当該HDD
sudo blkid /dev/sda2  # UUID確認

# fstabにUUIDを追記
sudo vi /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx       /media/USER/HDD2TB        ext4    defaults        0       0  #fstab
  • USB Wifiドライバをインストール(自分が使っているのはWI-U3-866D)

  • macからSSH接続したいので、ubuntuにopensshを入れる。

terminal
sudo apt-get install openssh-server
OSX_terminal
rm ~/.ssh/known_hosts # Host key verification failed.エラーの回避
ssh IP_ADDRESS # これでつながるはず
  • dropboxインストール。ここからubuntuのdebファイルをDLしてインストール。なおSSDの容量が足りなかったので別の内蔵HDDに同期するようにした。
terminal
sudo dpkg -i dropbox_2015.10.28_amd64.deb
dropbox start -i

CUDAインストール

  • 最初にやること
terminal
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-367
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
  • CUDA 8.0 をDL(deb)し、インストール
terminal
sudo dpkg -i ダウンロードしたファイル名.deb
sudo apt-get update
sudo apt-get install cuda
  • cuDNN 5.1 をDLしてインストール。DLする前に登録が必要。
terminal
tar -zxf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
  • .bashrcにてCUDAとcuDNNへのパスを通す
.bashrc
# CUDA Toolkit
export CUDA_ROOT=/usr/local/cuda
export PATH=/usr/local/cuda/bin:${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CPATH=/usr/local/cuda/include:$CPATH

# cuDNN
export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH
  • bashrc反映
terminal
source .bashrc
  • GPUの動作確認。ちゃんとSamplesのmakeが通ることを確認すること。makeの際にcuda_runtime.hがないとか言われたら sudo -E でmakeするとうまくいくかもしれない。
terminal
nvidia-smi # GTX-1080と表示されるはず
nvcc -V # エラーなしを確認
./NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery/deviceQuery # Result=PASSとなることを確認
cd NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody
make
./nbody -benchmark -numbodies=256000 -device=0

その他開発環境

  • pyenvインストール
terminal
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
  • anacondaインストール
terminal
pyenv install -l | grep ana  # 最新版を確認。anaconda2-4.1.1
pyenv install anaconda2-4.1.1
pyenv rehash
pyenv global anaconda2-4.1.1
echo 'export PATH="$PYENV_ROOT/versions/anaconda2-4.1.1bin/:$PATH"' >> ~/.bashrc
source ~/.bashrc
  • scikit-learnインストール
terminal
sudo apt-get install python-sklearn
  • ffmpegインストール
terminal
sudo add-apt-repository ppa:jonathonf/ffmpeg-3
sudo apt update && sudo apt install ffmpeg libav-tools x264 x265
ffmpeg -version #  ffmpeg 3.1.4.1
  • chainerインストール
terminal
pip install chainer

# MNISTで動作確認
wget https://github.com/pfnet/chainer/archive/v1.16.0.tar.gz
tar xzf v1.16.0.tar.gz
python chainer-1.16.0/examples/mnist/train_mnist.py #CPUモードOK
python chainer-1.16.0/examples/mnist/train_mnist.py -g=0 #GPUモードOK

後日やること

  • Caffe+OpenCVインストール

参考


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。