##概要
「ディープラーニングの力で結月ゆかりの声になる」ためのLinux環境構築という素晴らしい記事が既にあるのですが、
ubuntu serverの17.10が手に入らなくなってしまったので同様の環境構築に変更点が出ました。
なので、上記の記事に沿って現状手に入る18.10での実装を行った際の問題点と補足説明について記載していきます。
もう一つ、現在(2019年1月10日)の結月ゆかりの声になるリポジトリ(become-yukarin)で動作するように構築します。
変換コマンドについては大差が無いので今のところ書く予定はないですがコメントで難民が多いようでしたら書きます。
####「ディープラーニングの力で結月ゆかりの声になる」ためのLinux環境構築 ←先駆者様
基本はこちらと同じ流れに沿って記載していきます。
####ディープラーニングの力で結月ゆかりの声になってみた ←本家様
##使用ハード
- OS : Ubuntu Server 18.10
- CPU : Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
- GPU : GeForce GTX 980 Ti
- ストレージ: 20GB
####補足
グラフィックボードはメモリが3.7GB以上の物しか使用できません。※1
3.7GB以上の物を用意できない場合は素直にEC2を使用しましょう。
この記述ではNvidia製のGPUを使用する前提で記載しております。※2
##1. エディタ・sshのインストール
sudo apt-get install emacs vim
####エディタのインストール
####SSHのインストール
sshは最初からインストールされているため、起動するのみで問題ありません。
sudo /etc/init.d/ssh start
##2. GPUドライバ インストール
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-387
使用するマザーボードによっては署名の無いドライバはダメだよと言われるかもしれません。
その場合はBIOSからセキュアブートを切ってからインストールしてあげてください。
##3. 開発系全般のインストール
sudo apt-get install build-essential
##4. gcc6系のインストール & コマンド置き換え & 確認
sudo apt-get install gcc-6 g++-6
sudo rm /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/gcc-6 /usr/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/bin/g++
gcc --version
g++ --version
##5. Nvidia ToolKit 9.1 のインストールで必要なライブラリをインストール
sudo apt-get install libglu1-mesa libxi-dev libxmu-dev libglu1-mesa-dev
##6. Nvidia ToolKit 9.1 をダウンロード
###6.1 ファイルダウンロード
下記サイトから、
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=runfilelocal
パッチを含めた4ファイルをダウンロードしサーバーに配置する。
- cuda_9.1.85_387.26_linux.run
- cuda_9.1.85.1_linux.run
- cuda_9.1.85.2_linux.run
- cuda_9.1.85.3_linux.run
###6.2 インストール実行
Nvidiaドライバのインストールはスキップしてください。
それ以外のToolkitとサンプルはインストールしてください。
インストールパスなどはデフォルトで大丈夫です。
sudo sh cuda_9.1.85_387.26_linux.run
sudo sh cuda_9.1.85.1_linux.run
sudo sh cuda_9.1.85.2_linux.run
sudo sh cuda_9.1.85.3_linux.run
##7. Nvidia cuDNN
###7.1 ダウンロード
下記サイトから
https://developer.nvidia.com/cudnn
"Download cuDNN v7.1.3 (April 17, 2018), for CUDA 9.1"を選んで、
下記の3つのファイルをダウンロードしてください
- cuDNN v7.1.3 Library for Linux
- cuDNN v7.1.3 Runtime Library for Ubuntu16.04 (Deb)
- cuDNN v7.1.3 Developer Library for Ubuntu16.04 (Deb)
ダウンロードできたファイルはそれぞれ
- cudnn-9.1-linux-x64-v7.1.tgz ※3
- libcudnn7_7.1.3.16-1+cuda9.1_amd64.deb
- libcudnn7-dev_7.1.3.16-1+cuda9.1_amd64.deb
となります。
###7.2 インストール
cuDNN v7.1.3 Library for Linux を解凍してファイルコピー
tar xvf cudnn-9.1-linux-x64-v7.1.tgz
.bashrc に下記を追加して source .bashrcする
export CUDA_PATH=/usr/local/cuda
export PATH=$CUDA_PATH/bin:$PATH
export CFLAGS=-I/usr/local/cuda/include
export LDFLAGS=-L/usr/local/cuda/lib64
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
インクルードファイルとライブラリファイルをコピーする
sudo cp cuda/include/* $CUDA_PATH/include
sudo cp cuda/lib64/* $CUDA_PATH/lib64
libcudnnの2ファイルをインストール
sudo dpkg -i libcudnn7_7.1.3.16-1+cuda9.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.1.3.16-1+cuda9.1_amd64.deb
##NVIDIA 9.1 のサンプル実行
下記コマンドで動作確認を行います。
cd NVIDIA_CUDA-9.1_Samples/1_Utilities/deviceQuery
make
./deviceQuery
実行結果のログの最後の辺りに以下のログが出力されれば取り敢えず成功です。
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.1, CUDA Runtime Version = 9.1, NumDevs = 1
Result = PASS
※Nvidiaのドライバをインストールしてから一度も再起動していない場合、エラーになります。
##8. pythonで使用予定のOS経由のライブラリインストール
pythonからOS経由でライブラリを読んでいる箇所があり、pipで入れられないものを入れます。
sudo apt-get install libsqlite3-dev libbz2-dev libncurses5-dev libgdbm-dev liblzma-dev libssl-dev tcl-dev tk-dev libreadline-dev zlib1g-dev libssl-dev
##9. pyenv & Pythonのインストール
pythonのバージョンが3.6.3推奨とのことなので、pyenvでインストールを行います。
###9.1 pyenvインストール
pyenvのリポジトリ取得
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
パス設定記述と実行
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.profile
source ~/.profile
pyenvのインストール確認
which pyenv
を入力した後、
/home/[username]/.pyenv/bin/pyenv
みたいなログが出てればパスは通ってます。
###pyrhon 3.6.3取得と適用
pyenv install 3.6.3
pyenv global 3.6.3
pipも更新しておきます
pip install --upgrade pip
####バージョン確認
python -V
3.6.3になっていればpythonのインストールは完了です。
##10. 結月ゆかりになるリポジトリで使用するライブラリ関連の取得
後でヒホ氏のリポジトリにあるrequirements.txtを使用して必要なライブラリ一括インストールを行うのですが
cudaのバージョンの都合上、cupyだけは手動でインストールしなければなりません。
####結月ゆかりになるリポジトリ取得
requirements.txtがあるのでリポジトリの取得をします。
git clone https://github.com/Hiroshiba/become-yukarin.git
####requirements.txtの編集
エディタなどで取得したリポジトリ直下にあるrequirements.txtを開きます。
vi become-yukarin/requirements.txt
cupyと記載されている行を削除します。
numpy
cupy ←この行を削除
chainer
librosa
pysptk
pyworld
fastdtw
matplotlib
chainerui
####pyrhonで利用する各種ライブラリをインストール
pip install cupy-cuda91
pip install -r become-yukarin/requirements.txt
pip install tqdm
pip install chainerui==0.3
git clone https://github.com/yamachu/WORLD4py
cd WORLD4py
python setup.py install
##11. pythonで動作確認
pythonを対話モードで実行して下記のコマンドを実行してください。
import chainer
import cupy as cp
a = cp.array([1,2,3])
b = cp.array([2,3,5])
a + b
結果が下記のようになれば問題ないと思います。
array([3, 5, 8])
お疲れ様です。以上で、コマンド実行できるようになっているはずです。
##補足
※1 numpyが非常にメモリを散らかし容量オーバーした時点で処理が中断します。
約3.6GBほど使用していました。計算処理内容については難しすぎて省メモリ化の目途は立っておりません。
※2 AMD製のグラボなどはCUDAが動きません。ROCmという物を使用すればイケるらしいですが未検証です。
※3ダウンロードするブラウザによっては拡張子が.solitairetheme8となることがあるらしいです。
ただ、通常通りのtarで解凍できるそうなので、コマンドの拡張子を合わせてやれば良い感じです。