Webサイトの開設

Webサイトによる情報の発信は大変大切です!

… と私の先生はおっしゃっていました …

Deep Learningとは関係ないですが、Webサイトの開設も同時に行ったので記録しておきます。とは言え、今更Webサイトの作り方なんて、情報があふれていますので、ここではごく簡単に記載します。あまり余計な事を読まずに、とにかく始めたいだけの方にはむしろこちらの方が良いかも。

Webサイトを開設するには下記の3点が必要になります。

1. サーバーの取得、登録
2. ドメインの取得、登録
3. WordPressのインストール

サーバーとドメインはイマイチ違いが分かりづらいですが、

サーバーはモノを置いておく倉庫のようなもの。
ドメインはサーバーを置いてある住所のようなもの。

といったイメージでしょうか。
サーバーにHPに必要なパーツを組み立てて置いておいて、ユーザーはドメインを頼りに、そのパーツにアクセスしにくる感じです。

3のWordPressは別に使わなくてもいいですが、大変簡単にWebサイトが作れますので、多くの人が使っています。以前はHTMLを直接書いてHPを作っていた時代もありましたが、それではなかなかキレイなページは作れないんですよね。センスがないと。


WordPressの利用は初めは斜め上から見ていて躊躇していましたが、今ではスッカリWordPress色に染まっています。

それでは順番に行きましょう。
まずはサーバーを取得しに行きます。

1. サーバーの取得、登録

色々ありますが、私はXserverを使っています。
定番のWebサーバーとの事です。
以前は無料のXdomainを使っていましたが、お引越ししました。
理由は以前の私のHPがどうもモッサリしていたからです。
それがXdomainのせいかは分かりませんが、Xserverに変えてからは劇的に快適になりました。

Xserverへの登録はこちらからできます。

X10プランで、1年間契約だと毎月1,000円かかります。
始めはこれがネックでXdomainの無料サーバーを使っていました。
Web作成初心者はXdomainの無料サーバーでよろしいかと思います。
少し試してみて、続けられそうであれば、より快適なXserverにお引越ししましょう。

他にはLoliPopというサーバーも大変人気です。
LoliPopを使われる方はこちらから。

2. ドメインの取得、登録

倉庫が借りれましたら、次は住所の申請に行きます。 Xserverを登録した時点で、〇〇.xsrv.jpというドメインが無料でいただけます。 HPを作るだけならこれだけで良いです。作成したページに問題なくアクセスできます。

一方で商用ページを作るとか、アクセスしやすいようにHPの名前を反映した名前を付けたいとか、カワイイ名前が付けたいとか、その他もろもろの理由により名前を変更したい場合は、ドメインの方も取得する必要があります。 ドメインの取得において、もっとも有名なのがお名前ドットコムです。


住所の取得にはお金がかかります。以前のXdomainを使っていた時は私もこちらにお世話になっていたのですが、Xserverに移行した時にキャンペーンでドメインが一つもらえたので、必要なくなってしまいました。

3. WordPressのインストール

ここまできたらあともう少し。次はWordPressをインストールします。

Xserverのサーバーパネルにログインすると、WordPress簡単インストールというボタンがあるので、それをクリックし、後は指示通り進めていくだけです。全て完了すると、WordPressのログインページにブラウザから入れるようになり、HPの実際の構築が始まります。

 

実際の登録の仕方などは全て省いて紹介しましたが、ここでは流れを紹介しました。具体的な方法はたくさん情報がありますので、そちらで調べてみてください。

 

MeCabのインストール

MeCabをインストールします。
以前はソースコードからコンパイルする必要があったそうですが、いまはapt-getでお手軽簡単とのことです。

MeCabをapt-getでインストールしてから、Python3で使うためにmecab-python3なるものもインストールしています。

sudo apt-get install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8
pip install mecab-python3

このmecab-python3を入れるときに、swigが入っていないと失敗する事があります。

error: command 'swig' failed with exit status 1
  
  ----------------------------------------
  Failed building wheel for mecab-python3
  Running setup.py clean for mecab-python3
Failed to build mecab-python3
Installing collected packages: mecab-python3
  Running setup.py install for mecab-python3 ... error

swigを入れるとうまく行きます。

sudo apt-get -q -y install swig
pip install mecab-python3

MeCabのバージョンは

mecab -v

で調べられます。私のは、、、version 0.996ですね。

ImportError: No module named ‘_bz2’

Pythonでbz2をインポートして使おうとしたところ、

ImportError: No module named '_bz2'

と言うエラーが出た。bz2は圧縮されたファイルであるという意味の拡張子との事。
Ubuntuでpyenvを用いているの場合は、下記のようにすればよいそうです。

sudo apt-get install libbz2-dev
pyenv install --force 3.6.0

3.6.0の部分は使用しているPythonのバージョンです。
libbz2-devを再インストールすると、Pythonの再インストールも必要なのだとか。

環境の再構築

悲しい事に、OSが立ち上がらなくなってしまいました(2019年2月)。
Cudaのバージョンを上げようとして、色々リンクをいじっていたのが良くなかったのだと思います。
まずは大事なデータの救出から入ります。
その後、せっかくなので初めから入っていたCentOSからUbuntuに乗り換える事にしました。
機械学習ではUbuntuを前提としてライブラリが開発されている事が多く、特別な思い入れが無い場合はUbuntuを選択した方が良いようです。

…しかしこれが嵌まった…

何しろsshも利かないのでデータの救出も一苦労。
OSもバージョン違いなどでうまく入らなかったりして。

苦労したので記録しておきます。
後続の皆様のお役に立てますように。

1. レスキューモード
私の場合は、まったくOSにアクセス出来なくなっているところから始まります。
まずはレスキューモードで起動しましょう。
これにはライブDVDを作ります。

CentOSのページから、DVDイメージをダウンロード。生きているWindows PCを用いて、ISOイメージをDVDに書き込みます。ISOからの書き込みは、以前は別途ソフトが必要でしたが、Windows10であればそのまま書き込む事ができるようです。DVDをPCにセットして、ダウンロードしたファイルを右クリックして、イメージの書き込み、でOK。なんてお手軽な!

DVDドライブを持っていない場合でも、USBメモリを用いても作れます。

次にDVDからOSを起動します。
BIOSに入り、DVDドライブから起動するように設定を行います。
BIOSへの入り方は環境によって違いますが、再起動してBIOS起動中にF2やDelキーを押すのが一般的かと。
Bootの優先順位をHDからDVDへ変更します。
あまり見慣れない画面ですが、触れるところも少ないので大して迷う事もないかと。
もし間違えちゃった場合は、BIOSをExitする項目を選んでセーブしなかったら元に戻ります。
BIOSまで壊れてしまったらもう直せませんので気を付けて。

起動したらTroubleshootingモードを選択します。

このモードでは、通常の場所とは違うところにrootがマウントされています。
システムの復旧を目指すために、boot出来ないところ以外を使うって感じなのでしょうか。

通常のrootをマウントするには、

chroot /mnt/sysimage

との事ですが、ここで嵌まりポイント1。

/bin/bash

が無い、とのエラーが出てうまく行きませんでした。う~ん、、、lsで調べたところあるんですが。。。

しばらくwebを漁ったところ、これはライブDVDとシステムのアーキテクチャが違うと出るエラーの様。
アーキテクチャとは32bitなのか、64bitなのか、という事ですね。
しかしながら私は両方とも64bitを使っているのにこのエラーが出てしまいます。
色々考えて、、、chrootは諦めました。
うまく行けば、Troubleshootingモードから、変更したリンクやドライバの入れ替えを行う事で、システムの復旧ができるのではないかと思っていましたが、rootがマウント出来ないのであれば、ドライバの変更もままならず、無理です。もしかしたら何か方法があるのかもしれませんが、、、しばらく調べてやめました。

2. データの救出
あまり量は多くないのですが、時間をかけて作ったいくつかのコードが、どこにもバックアップされていない状態で眠っています。これを消してしまうのは惜しい。。。なんとかこれだけでも救出したいのです。
しかしながらsshもftpもアクセスできません。仕方ないのでUSBのHDをつなげてみましょう。

レスキューモードで起動した後、

dmesg

と打ちます。続けてUSBのHDを接続し、再度

dmesg

と打つと、先ほどのコメントにいくつか足されます。
その際、[sdb: sdb1]のような文字が現れるかと思われます。
その場合、つなげたHDはsdb1という名前で認識してますよ、と言う意味になるそうです。

次にHDをLinux用にフォーマットします。
この作業により、HDの中身は全て消されますので注意してください。

fdisk /dev/sdb1

で、pを押すと現在のパーテーションが表示されます。
一度全部消すので、dを押してください。
パーテーションが一つだけの場合はこれだけ。
複数ある場合は選択肢がでるので、全部のパーテーション削除を繰り返します。
終わったらwで書き込みます。
その後もう一度

fdisk /dev/sdb1

で起動し、今度はnでパーテーションを作ります。
救出用ですので、パーテーションは1個だけでいいですかね。
終わったらwで書き込みます。

次にHDのフォーマットを行います。

mkfs.ext3 /dev/sdb1

ここで嵌まりポイント2。
現在Linuxで主流なファイルシステムはext4です。
レスキューしたファイルをそのまま復旧したLinuxに入れるのであれば、ここはext4で良いのではと思うのですが、私は他にLinuxマシンを持っていないので、一度Windowsに退避させたいと思ったわけです。
一方Windowsの方での主流システムはntfsです。Linux用フォーマットをWindowsに読み込ませるには、後述するExt2Fsdというソフトを用いるわけですが、これが何故かExt4には反応しませんでした。(いや、Ext4に反応しない問題はWeb上でも指摘されていて、解決策も提示されているのですが、現在の私の非常時環境では実行できなかったのです。色々試して、仕方なくExt3を使う事にしました。)

続いてHDをLinux上にマウントします。

mkdir /mnt/usbhd
mount /dev/sdb1 /mnt/usbhd

一つ目の行は始めに一度実行するだけで良いです。
mntにusbhdというフォルダを作成しています。
次の行ではここにsdb1をマウントします。
これで/mnt/usbhdにデータをコピーする事ができるようになりました。
これまで作っていたファイルは/mnt/sysimage/homeの下にありますので、これをcpコマンドでひたすらコピーします。
コピーし終わって、HDを外すときはアンマウントを忘れずに。

unmount /mnt/usbhd

最後に救出したファイルをWindows上で保管します。
他にLinuxマシンがあるなど、HDにデータを入れっぱで構わない場合はこのステップは必要ありません。
Windowsマシンに、上述したExt2Fsdをインストールします。
ダウンロードはこちらから。

先ほど述べた通り、HDのフォーマットがExt4では反応しませんでしたので気を付けて。
今回はバックアップが目的なので、もう余計な事はせずにExt3にしています。
なんとか無事に大事なデータを救出する事ができました。助かった・・・

3. OSのインストール
はあ、はあ、はあ、、、もう大変。でもあと一息です。
データはレスキュー出来ましたが、やはりOSはブートしません。
色々考えましたが、ここまでで結構時間を使ってしまっているし、ここは思い切ってOSを入れ替える事にしました。
しかも、CentOSからUbuntuに乗り換えます。
ドライバなどの問題で何か不具合が起きないか不安。。。

まずはUbuntuのDVDを作成します。これはCentOSの時と同じステップですね。

と、、、ここで嵌まりポイント3。
UbuntuのHPに行くと、最新の18.10がダウンロードできるようになっています(2019年2月)。
始めは、やはり新しい方がいいだろうと18.10を入れた訳ですが、後々になって、Cuda-9.0が入れられない事が判明しました。
こういう事があるから、素人さんは手を出さない方が良い訳ですね。そうですね。

Cuda-9.0が問題なく入れられるUbuntu 16.04.6 LTSを入れます。
ダウンロードはこちらから。
日本語版ありますが、またなにか変な事が起きたらイヤなので、通常版にしました。
日本語版のダウンロードはこちらから。

結構時間がかかりますが、なんとかOSをインストールできました。

4. 環境の構築
続いてドライバを入れたりCudaを入れたりしていきます。
まずはGPUのドライバから。
手持ちのGPUにあったドライバを下記から手に入れます。
ダウンロードはこちらから。

今回はクリーンインストールからなので必要ないのですが、ドライバの入れ替えの場合は既存のものを消す必要があるそうです。
ただでさえやっかいなドライバのインストール。削除なんて極力やりたくないですね。

nvidia-uninstall

うわぁ、気を付けて。
ドライバを入れなおします。

sudo sh ./NVIDIA[のドライバ]

うまく行きましたでしょうか?

うまく行ったとして、どんどん行きます。次はCuda。NVIDIAのページからダウンロードして、ダウンロードしたフォルダで下記のコマンドを実行します。

sudo dpkg -i cuda-repo-ubuntu1604_9.0.*_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt update
sudo apt install cuda-9-0

次にパスを設定します。設定ファイルは.bashrcです。
ちなみに初めに.(ドット)が付いているファイルは隠しファイルです。ls -aコマンドで見られます。

export PATH=/usr/local/cuda-9.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:${LD_LIBRARY_PATH}

を追記して、ターミナルを一度閉じ、再度開けると設定完了です。
nvidia-smiと打って、GPUの情報が出れば良し。

どんどん行きます。お次はcuDNN。こちらのダウンロードには会員登録が必要ですが、無料です。
ダウンロードはこちらから。
cudaのバージョンにあったcuDNNをダウンロードすればよろしいかと。

ダウンロードしたフォルダに移動して下記を実行します。

sudo dpkg -i libcudnn7_7.0*+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0*+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0*+cuda9.0_amd64.deb 

うまくいきましたでしょうか?

5. Tensorflowのインストール
最後にTensorflowを入れます。
その前にpyenvを入れます。
その前に必要なパッケージをいくつか入れます。

sudo apt-get install -y git build-essential libssl-dev language-pack-id

そしてpyenvをgithubからクローンします。なんですかこれは。
実はイマイチありがたみが分かっていないのですが、複数のpythonのバージョンを管理できる、仮想環境だそうです。
バージョン違いによって使っているライブラリが動いたり動かなかったりするらしいので、なるべく環境を揃えておきたい人向けなのかな。

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

また、パスを編集します。.bashrcなどに下記を追記。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH

本当に最後にTensorflowをインストール。

pip install tensorflow

GPU版の場合はこちら。

pip install tensorflow-gpu

長かったですね。大変でした。
クリーンインストール自体は一度やってみたかったので良しとしますか。
今後不具合が起きなければいいな。

環境構築 : ターミナル選び

MACなら迷わないんですよね。
標準のターミナルで全て事足ります。
今時(?)メインPCはLinuxですって猛者はなかなかいないだろうし、
LinuxマシンにWindowsからリモートアクセスしようと思ったら、やはりターミナルは必要になります。

みなさんはどんなターミナルをお使いですか?

私がやりたい事は下記の通り。

・ sshでLinuxマシンにログイン
・ X11をフォワードして、GUI環境もリモートで使えるようにする

これだけです。
なので大げさなものは必要ありません。

今まではTera Termを主に使っていました。
Cygwinも一時期使っていました。
VMWareにLinux乗っけて、そのターミナルを使うなんてこともしてました。

しかしどれもイマイチなんですよね。
Cygwinは使えない機能が結構あるし、仮想マシンは重いし、Tera Termはださい。
我慢してTera Termを使っていましたが、もっとステキなターミナルはないかと探して、見つけました。
RLoginです。

それでは早速インストールしてみましょう。
作者様のページはこちら

実行プログラムを解凍すると、中にRLogin.exeがありますので、これを起動するだけです。
お手軽です。

次に接続先を設定します。
ファイル -> サーバーに接続 -> 新規
でこちらの画面が現れます。

IPアドレスとログインユーザー名とパスワードを入れてOKを押すと保存されます。
次回からは入力いらずです。

これだけでつながりますが、X11を飛ばす場合はポートフォワードを設定しましょう。

ファイル -> サーバーに接続 -> 編集
サーバー -> プロトコル -> ポートフォワード -> 新規

ListenedのHost Nameに”localhost”、ポートに22を入れます
ConnectのHost Nameに接続先のIPアドレス、ポートに22を入れてOK

X11転送のX11ポートフォワードを使用するにチェックを入れて、
X11 Local DISPLAYに:0と入れます

できましたでしょうか?私は苦労しました。

最後にX Windowサーバーを入れます
これをいれないとXは飛んでこないと思います

Windows用のXサーバーはXmingというソフトが良く使われているそうです
ダウンロードはこちらから

Xming-6-9-0-31-setup.exeと言うファイルをダウンロード、実行するとインストールできます
ターミナルの前にXmingを起動させ、タスクバーに常駐させておきましょう

では試してみます
サーバーにログインして、xeyesとかxclockとかを試します

できました!素直に画面が出てきてくれましたよ!
私はMatlabもLinuxマシンに入れているんですが、これもGUI環境で使えるようになりました

TeraTermよりは数段かっこいいですかね、フォントとか
しばらくはこのセットで作業しようと思います

環境を整える

ディープラーニングの開発には歴史的にPythonが使われており、手に入る情報やライブラリも圧倒的にPythonが多いのだそうです。
Pythonの統合環境としてAnacondaが有名とのことで、下記のサイトから無料でダウンロードできます。早速入れてみましょう。

https://www.anaconda.com/download/

結構重いですね。ダウンロードしたファイルを指示されるとおりに進めていけば、無事にインストールできると思います。
バージョンは3.6と2.7がありますが、まあ今から始めるなら新しい方を入れておいて問題ないですね。
Windows版もMac版もLinux版もあります。全部無料で。不思議な世の中ですね。

Windows版をインストールすると、スタートメニューにAnacondaが現れます。
いくつかのソフトの内、Spyderが開発環境という事になり、コーディングや実行、デバッグを行うところになります。

これがタダで使えるとはすごい世の中ですね。
その他、Notebookも便利です。
起動するとwebブラウザが立ち上がりますが、中身はファイルのエクスプローラーのようです。

適当なフォルダに移動して、右上のnew -> Python3と押すと、見慣れない画面が出てきます。
が、なんとここでコーディングや実行が出来てしまうのです。
これは見やすくて便利。

まあ、viで開いて編集して、ターミナルから./で実行するのと変わりないですが、他人とやり取りする時もすごくスマートなのではないでしょうか。
世の中、賢い人は道具もスマートなんですね。
これがお金いらないとは、いい世の中ですね(しつこい)。

ところで、私はそのうちLinuxを使ってプログラミングしていきたいので、Anacondaを同様にLinuxにも入れます。
試しにWindowsからsshでLinux PCにログインしてSpyderを立ち上げてみたのですが、これはなぜか出来ませんでした。
X-Window Systemは入れていて、xclockは来るので、Xの問題ではないようです。
同様にnotebookもダメでした。何が悪かったのかな。。。

この辺りはちょっと嵌まりそうなので、今は考えない事にしたいと思います。

PCの選定

Deep Learningを学ぶにあたりまして、PCの選定を行いましょう。
CPUだけで行うなら、普通のラップトップ(ノート)PCで十分です。
研究用や、野望用には、やはりGPUが必要になってくるでしょうね。
ではどのくらいのスペックなら、そこそこのDeep Learningに耐えれるのか。

私はGDEP社のGU-1100を選びました。
ホントはDeeplearningBoxが欲しかったんですが、お金が足りませんでした。

Deeplearning BOXのサイトはこちら

GPUとしてはGeForce GTX 1080Ti 11GBが入っています。
NVIDIAのGPUはGeForceの他にQuadroやTeslaというシリーズがあって、GeForceは主にゲーム用との事なので、ちょっと気になったんですが、お金の関係でGeForceを使います。
OSはLinuxが基本との事で、CentOSがデフォルトで入っているようですが、Ubuntuの方が良かったなぁ。(自分で入れ替えて動かなくなったら困るから、このまま行くけど。)

今見たらもうGU-1100は古い型番になっていて、売っていませんでした。
本当に変化の早い業界だこと。
GTX 1080Tiは色々なところで使われている実績あるGPUだから、
まだまだ現役だと思うんですがねぇ。

CudaはGPUプログラミング開発環境との事です。NVIDIAのGPUを並列計算に用いる場合はCudaを使います。

…これらの環境が整っているからGU-1100を選びましたが…素人には贅沢スペックで、本格使いにはそこそこ…といったスペックなのでしょうか?

たまごが先か、にわとりが先か。
アルゴリズムを学ぶのが先か、PCを買うのが先か。

明らかにまずは勉強しろよ、となりますが、、、道具がなければ始まらないのでね。