読者です 読者をやめる 読者になる 読者になる

はらぺこらいおん

日々、思ったことを。

CentOS7.3にLaravel5.4をインストール

技術 サーバー PHP Laravel

CentOS7.3にLaravel5.4をインストールした際の、記録を残しておきます。
前回の記事でセットアップした、CentOS7.3にLaravel5.4をインストールします。

pictzzz.hatenablog.com

セットアップ方法

基本的には公式ドキュメントに従って作業していきます。

laravel.com

PHPのバージョンは、PHP >= 5.6.4となっていますが、せっかくなのでPHP7をインストールしてみたいと思います。
データベースにはMariaDBを使いたいと思います。

PHPインストール

remi 追加

$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

PHP7 インストール

$ sudo yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-xml php-zip

MariaDBインストール

$ sudo yum install mariadb mariadb-server
$ sudo yum install --enablerepo=remi,remi-php70 php-mysql

$ sudo systemctl enable mariadb.service
$ sudo systemctl start mariadb.service

$ mysql_secure_installation

Composerインストール

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

プロジェクト作成

$ composer create-project --prefer-dist laravel/laravel _project_name_

Firewall設定

$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --reload

開発用サーバー起動

$ cd _project_name_
$ php artisan serve --host=0.0.0.0 --port=80

ConoHaでインスタンスの初期セットアップ(CentOS7.3 64bit)

技術 ConoHa サーバー

ConoHaでインスタンスの初期セットアップ(CentOS7.3 64bit)を行ったので、その記録を残しておきます。

ConoHaコントロールパネル ログイン

ConoHaコントロールパネルへのログインは公式ページより行います。

www.conoha.jp

ログインボタンからID、パスワード、2段階認証コードを入力してログインします。

インスタンス作成

ログインすると以下のような画面が表示されます。

f:id:pictzzz:20170304142344p:plain

コントロールパネルの左側のメニューからサーバーを選択します。 サーバー画面で「+サーバー」をクリックします。

f:id:pictzzz:20170304142826p:plain

接続許可ポート IPv4 / IPv6では、不要なポートはチェックを外します。 今回はリモートメンテナンス用SSHとWebサーバー用Webのみを開けています。

SSHキーは後からでも作成できます。

一般ユーザー作成

サーバー画面から、作成したサーバーを選択します。 画面上部のコンソールボタンをクリックします。

f:id:pictzzz:20170304143641p:plain

以下のようなコンソールが開きます。

f:id:pictzzz:20170304143852p:plain

このコンソールにコマンドを入力することでサーバーを操作することができます。

まずは、ユーザーを作成し、パスワードを設定します。 「username」は作成したいユーザー名になります。 パスワードは入力しても表示されません。

# adduser _username_
# passwd _username_
新しいパスワード:
新しいパスワード(再入力):

次に管理者権限でコマンドを実行できるようにします。 デフォルトでsudoの設定がwheelグループに許可されていました。 許可されるグループやユーザーを指定する場合、visudoコマンドを実行します。

# usermod -G wheel _username_

sudoコマンドが実行できるかを確認します。 viが起動すればOKです。ESCキー + :q + エンターキーで終了します。

# su - _username_
$ sudo vi a.txt
[sudo] password for _username_: 

公開鍵認証設定

リモートでサーバーへ接続するPCでキーペアを作成します。
今回はmacOSで行います。Linuxでは同じコマンドが使えるかと思います。
Windowsではputtyとかをインストールすればキーペアを生成できます。
filenameにはキーファイル名を入力します。(任意の名称)
コマンドを実行後、filenamefilename.pubが生成されているかと思います。

$ ssh-keygen -t rsa -f _filename_
$ 

filename.pubを接続するサーバーへ転送します。 今回はコンソールで入力します。

$ cat _filename_.pub
key-xxxxxxxxx

catコマンドでkeyの中身が表示されるので、コピーしておきます。

Webのコンソールを開きます。rootになっている場合、作成したユーザーに切り替えます。 今ログインしているユーザーはidコマンドで調べることができます。

# su - _username_

ホームディレクトリー下に.sshディレクトリーを作成します。ディレクトリーのパーミッションを700に変更します。 作成した.sshディレクトリー下にauthorized_keysを作成します。authorized_keysには、先ほどコピーしたキーを貼り付けます。
authorized_keysはパーミッションを600に変更します。

$ mkdir .ssh
$ chmod 700 .ssh
$ vi .ssh/authorized_keys
$ chmod 600 .ssh

sshd設定

sshdの設定を変更して、rootでログインできないようにしておきます。

$ sudo vi /etc/ssh/sshd_config
#Port 22
↓
Port 22

#Protocol 2
↓
Protocol 2

#RSAAuthentication yes
#PubkeyAuthentication yes
↓
RSAAuthentication yes
PubkeyAuthentication yes

#Banner none
↓
Banner none

PermitRootLogin yes
↓
PermitRootLogin no

変更したらsshdを再起動します。

$ sudo systemctl restart sshd

PCから接続

今回はmacOSからの接続の場合、ターミナルを開いて、sshコマンドを実行します。 ip_addressにはサーバーのIPアドレスを指定します。ConoHaのコントロールパネルに表示されています。 key_pathには今回生成したキーペアの.pubが付いていない方を指定します。

初回接続時には警告が出ますが、yesで進めます。

$ ssh _username_@_ip_address_ -i _key_path_

以上で、セットアップは完了です。

3月おすすめ株主優待

株式 投資

pictzzz.hatenablog.com

2月を書いたので、3月も書きたいと思います。

権利確定日

3月末となっていた場合、2017/3/28(火)となります。 この日までに株を購入して保有しておく必要があります。

この日を過ぎた後、2017/3/29(水)以降であれば、 売ってしまって大丈夫です。

おすすめ銘柄

ANAホールディングス(9202)

まずはじめは、ANAです。ANAでは半額で飛行機のチケットが買える株主優待券がもらえます。

株主優待券がもらえる最小株式数は1,000株です。 2/24 15:00時点の株価は338.1円でしたので、 338,100円+手数料が必要となります。

ANAホールディングス (9202) : 株主優待・優待利回り [ANAHOLDINGS] - みんなの株式 (みんかぶ)

日本航空(9201)

ANAではなく、JALもあります。ライバルだけあって、内容はほぼ同じになり、こちらも半額で飛行機のチケットが買える株主優待券がもらえます。

株主優待券がもらえる最小株式数は100株です。 2/24 15:00時点の株価は3,698円でしたので、 369,800円+手数料が必要となります。

日本航空 (9201) : 株主優待・優待利回り [JapanAirlines] - みんなの株式 (みんかぶ)

アドアーズ(4712)

続いて、アドアーズです。よく駅の近くにあるゲームセンターなどを運営している会社になります。 アドアーズでは、OLIVE SPAで使える20,000円分のエステ券を2枚もらえます。

株主優待券がもらえる最小株式数は2,000株です。 2/24 15:00時点の株価は157.0円でしたので、314,000円+手数料が必要となります。

アドアーズ (4712) : 株主優待・優待利回り [ADORES] - みんなの株式 (みんかぶ)

リコーリース(8566)

最後は、リコーリースです。リコー系のリース会社になります。 リコーリースでは、QUOカード3,000円分がもらえます。 また、3年以上保有している場合は、5,000円になります。

株主優待券がもらえる最小株式数は100株です。 2/24 15:00時点の株価は3,740円でしたので、374,000円+手数料が必要となります。

リコーリース (8566) : 株主優待・優待利回り [RICOHLEASINGCOMPANY] - みんなの株式 (みんかぶ)

オリエンタルランド(4661)

ディズニー好きの方にオススメなのが、オリエンタルランドです。 ディズニーランド、ディズニーシーで使える1デーパスポートが1枚もらえます。

株主優待券がもらえる最小株式数は100株です。 2/24 15:00時点の株価は6,358円でしたので、635,800円+手数料が必要となります。

オリエンタルランド (4661) : 株主優待・優待利回り [ORIENTALLAND] - みんなの株式 (みんかぶ)

※実際に投資を行う場合は自己責任でお願いします。

2月おすすめ株主優待

投資 株式

株を選ぶ基準はたくさんありますが、株主優待で選ぶのもその1つです。

個人的に買った2月に株主優待権利が確定する株をご紹介します。

基本的には2月末となっているものが多いですが、中には違っているものもありますので、 購入する際には気をつけてください。

権利確定日

2月末となっていた場合、2017/2/23(木)となります。 この日までに株を購入して保有しておく必要があります。

この日を過ぎた後、2017/2/24(金)以降であれば、 売ってしまって大丈夫です。

おすすめ銘柄

ビックカメラ(3048)

まずはじめはビックカメラです。 ビックカメラの2月優待はビックカメラで使える株主優待券が2,000円分もらえます。

株主優待券がもらえる最小株式数は100株です。 2/23の確定日の始値(9:00の価格)は1,079円でしたので、 107,900円+手数料が必要となります。

ちなみに権利確定後の2/24の始値は1,080円でした。

ビックカメラ (3048) : 株主優待・優待利回り [BICCAMERA] - みんなの株式 (みんかぶ)

吉野家ホールディングス(9861)

続いて、吉野家です。 吉野家の2月優待は吉野家で使える株主優待券が3,000円分もらえます。

株主優待券がもらえる最小株式数は100株です。 2/23の権利確定日の始値は1,654円でしたので、 165,400円+手数料が必要となります。

ちなみに権利確定後の2/24の始値は1,629円でした。

吉野家ホールディングス (9861) : 株主優待・優待利回り [YOSHINOYAHOLDINGS] - みんなの株式 (みんかぶ)

イオン(8267)

最後が、イオンです。 イオンやマックスバリューで使えるオーナーズカードがもらえます。 会計時にこのカードを提示すると3%のキャッシュバックを受けることができます。(購入金額100万円まで) 年間100万円の買い物をしている方だと、3万円の価値があります。

株主優待券がもらえる最小株式数は100株です。 2/23の権利確定日の始値は1,708円でしたので、 170,800円+手数料が必要となります。

ちなみに権利確定後の2/24の始値は1,650.5円でした。

イオン (8267) : 株主優待・優待利回り [AEON] - みんなの株式 (みんかぶ)

※手数料は数十円から数百円です。

まとめ

2月は他にも便利な優待が用意されている株式がありますので、 いろいろと調べて見ると面白いです。 優待を調べるにはSBI証券の優待検索機能が便利です。

あと、調べてわかったのですが、権利確定後に一気に優待の価値以上に値下がりして 結局は損するのではないかと思っていました。 でも、実際にはそんなに下落するわけではないようです。

※実際に投資を行う場合は自己責任でお願いします。

AWSのEBS(ストレージ)を追加する方法

AWS ディープラーニング 技術 機械学習

スポットインスタンス機械学習を行っていると、 学習を行っている間はインスタンスを起動しておき、学習を完了した際には、 インスタンスを終了するということを行います。

そうすると学習データや学習したモデルを毎回学習を行うたびにアップロードする必要があります。 AWSではインバウンドトラフィックAWSへの通信)にコストはかかりませんが、 大量の画像データをアップロードするには時間がかかってしまい、 時間とインスタンス料金がもったいないので、 先にデータを保存しておくEBSを別に作っておきます。

そしてインスタンスを起動したら、そのEBSを接続することで、 データを再アップロードせずに済むようにしておきます。

EBS作成

EBSでディスクを作成するのは簡単です。

メニューのボリュームをクリックします。 EBSの画面に表示される、ボリュームの作成をクリックします。

f:id:pictzzz:20170209230628p:plain

わかりやすい名前をつけて、必要なディスクサイズを入力します。

f:id:pictzzz:20170209230727p:plain

接続したいディスクを選択し、アクション>ボリュームのアタッチをクリックします。

f:id:pictzzz:20170209230810p:plain

ボリュームのアタッチを行うウィンドウが表示されます。 アタッチするインスタンスインスタンスにアタッチした際のデバイスを入力します。 フォームをクリックすると、選択肢が表示されるので、そこから選ぶことができます。 入力後、アタッチをクリックするとインスタンスにボリュームが接続されます。

f:id:pictzzz:20170209230853p:plain

マウント

インスタンスに接続します。 マウントするためにはrootになる必要があります。

$ sudo su -

まずは、デバイス名を調べます。デバイス名を調べるのにはlsblkコマンドを使います。

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk 
└─xvda1 202:1    0  20G  0 part /
xvdf    202:80   0  30G  0 disk 

マウントされてないのはxvdfとわかったので、/dev/xvdfをマウントします。 マウントポイントは任意ですが、今回はルートディレクトリー直下にdataディレクトリーを作って、マウントしたいと思います。

# mkdir /data
# mount /dev/xvdf /data

これで/dataに作成したEBSボリュームが接続され、使用できるようになります。

初めてのマウントの場合(フォーマット)

初めてのマウントの場合、マウントの前にフォーマットを行います。

# mkfs -t ext4 /dev/xvdf

これでext4でフォーマットされます。

AWS CUDA8.0セットアップ済みAMI作成

ディープラーニング 技術 機械学習 AWS

pictzzz.hatenablog.com

前回の記事ではAWSのP2インスタンスをスポットで利用する方法をまとめました。 これで安くEC2を使うことができるようになりましたが、毎回毎回OSからCUDA、プログラミング環境をセットアップするのは大変手間です。

そこでAMIという仕組みを使い、この問題を解決したいと思います。

AMIとは

AMIとは、スナップショットとインスタンスの管理情報が入っており、 これを使ってOS、CUDA、プログラミング環境のセットアップ済みのインスタンスを直接起動できるようになります。

docs.aws.amazon.com

AMI作成

AMIの作成は簡単です。AMIを作成したいインスタンスを選択し、「アクション」>「イメージ」>「イメージの作成」の順にクリックします。

f:id:pictzzz:20170208223141p:plain

イメージの作成をクリックするとダイアログが表示されるので、名称をつけて保存します。

f:id:pictzzz:20170209222343p:plain

ここでの注意点は以下のものがあります。

  • 再起動しないにチェックを入れないと、インスタンスが再起動されてしまいます。
  • 再起動をしないでも通常は正常にAMIを作ることができます。
  • スポットインスタンスを使っている場合でも、再起動は可能です。
  • AWSではデータの整合性のため、再起動してAMIを作成することを推奨しています。

AMIからスポットインスタンス作成

作成したAMIからスポットインスタンスを作成して見たいと思います。

通常のスポットインスタンスのリクエストページへ移動します。 (EC2 -> スポットインスタンス -> スポットインスタンスのリクエスト)

画面の中ほどにAMIを選択する部分があるのでクリックします。

f:id:pictzzz:20170208224728p:plain

カスタムAMIを使うという選択肢が表示されるので選択します。

f:id:pictzzz:20170208224820p:plain

すると作成したAMIが表示されるので、使用するAMIを選びます。

f:id:pictzzz:20170209221002p:plain

これの状態で通常通りスポットインスタンスのリクエストを行うと、AMIが使用されてインスタンスが作成されます。

f:id:pictzzz:20170208225419p:plain

このようにして作成したインスタンスは、AMI作成時のインスタンスの状態が復元されます。
ただし、グローバルIP(EIP)は付け直す必要があります。

以上で、AMIを使ったスポットインスタンスの作成方法の説明は終了となります。

AWSのEC2 P2スポットインスタンスにCUDA8.0とChainerをセットアップ

Chainer ディープラーニング 技術 機械学習 AWS

AWSでP2インスタンスがリリースされました!(結構前になりますが。。。)

Amazon EC2 P2 インスタンス| AWS

今までのG2インスタンスやElasticGPU(インスタンスにアタッチできるGPU)より、汎用的な計算に向いており、Tesla K80を搭載しているようです。

今回はp2.xlargeのスポットインスタンスを使ってみたいと思います。簡単に行いたい場合はオンデマンドインスタンスの方が良いです。オンデマンドインスタンスの場合、NVIDIA公式からドライバー等がセットアップされたAMI(OSのテンプレートみたいなもの)が提供されているためです。

それでもなぜスポットインスタンスを使うのかというと、価格が安いからです。以下に料金がありますが、P2インスタンスの中で一番小さいp2.xlargeで$0.9/1 時間(約100円/1時間)となります。バージニア北部リージョンの場合。ちなみに東京リージョンにはP2インスタンスはまだありません。(2017/1/31現在)

EC2 インスタンスの料金 – アマゾン ウェブ サービス (AWS)

対してスポットインスタンスはだいたい$0.1〜0.2/1時間(約10〜25円/1時間)となってます。たまに高くなっている時もありますが、安い時に使って、終了したら消してしまう機械学習には丁度いい感じがします。

f:id:pictzzz:20170131222806p:plain

今回はUbuntu14.04をOSとして選択しました。なので、以前ブログに載せた記事とほぼ同じ手順になります。

pictzzz.hatenablog.com

AWSセットアップ

P2インスタンスを使うためにはVPCを用意しておく必要があります。スポットインスタンス作成を行う道すがら必要な環境のセットアップ用リンクが用意されているのでそれを使って設定していきます。

まずAWSにログインすると以下のような画面が出るかと思います。

f:id:pictzzz:20170131225215p:plain

まずは右上のリージョンを確認します。P2インスタンスは一部リージョンにしかないため、P2インスタンスの起動できるリージョンを選択します。今回はバージニア北部を選択しました。

次にEC2のメニューへと進みます。画面のEC2か、左上のサービスからEC2を選択します。

f:id:pictzzz:20170131232004p:plain

EC2の画面の左側のメニューからスポットリクエストを選択します。

f:id:pictzzz:20170131232057p:plain

青いボタンのスポットインスタンスのリクエストを選択します。

f:id:pictzzz:20170131232215p:plain

そうするとスポットインスタンスの作成ウィザードが起動します。 ここで今回はAMIをUbuntu14.04に変更し、インスタンスタイプをp2.xlargeを選択します。

f:id:pictzzz:20170131232346p:plain

インスタンスタイプを選択する際に表示されるウィンドウの右上の価格設定履歴から過去のスポットインスタンスの価格が見れます。

f:id:pictzzz:20170131232444p:plain

ネットワークの選択でP2インスタンスは最初からあるEC2-Classicが選択できません。そのため、VPCを新しく作る必要があります。 ネットワークの右側にある新しいVPCの作成をクリックします。

f:id:pictzzz:20170131232833p:plain

クリックするとVPCの作成画面に移動します。VPCの作成をクリックします。

f:id:pictzzz:20170131232903p:plain

VPCは以下のように作りました。インスタンスを1つだけ作る場合、特にどのような設定でもOKだと思います。今回は10.0.0.0/24のネットワークにIPv6はなしとしました。

f:id:pictzzz:20170131233055p:plain

次にサブネットを作成します。VPCの画面の左側にサブネットのメニューがあるのでクリックします。

f:id:pictzzz:20170131233346p:plain

サブネットは以下のように作りました。先ほど作成したVPCに紐付けて10.0.0.0/28のネットワークに、アベイラビリティゾーン(AZ)はaとしました。どのAZを選択しても問題ありません。ただし、AZごとに需要に応じてスポットインスタンスの価格が違うので注意です。

f:id:pictzzz:20170131233440p:plain

AWSからインターネットに抜けるためにインターネットゲートウェイを作成します。サブネットの画面の左側にインターネットゲートウェイのメニューがあるのでクリックします。インターネットゲートウェイの作成をクリックします。

f:id:pictzzz:20170131234049p:plain

名前を適当に入力します。

f:id:pictzzz:20170131234120p:plain

作ったインターネットゲートウェイVPCを紐付けします。VPCにアタッチをクリックします。

f:id:pictzzz:20170131234156p:plain

紐付けるVPCを選択します。

f:id:pictzzz:20170131234210p:plain

状態がattachedになればOKです。

f:id:pictzzz:20170131234246p:plain

さらにルートテーブルも作っておきます。インターネットゲートウェイの画面の左側にルートテーブルのメニューがあるのでクリックします。先ほど作成したVPCに紐付いたルートテーブルがあるためこれにインターネット向きのルートを追加します。

f:id:pictzzz:20170131233713p:plain

ルートテーブルを選択し、下に表示される詳細のルートを選択します。その画面に表示される編集をクリックします。

f:id:pictzzz:20170131233828p:plain

送信先:0.0.0.0/0、ターゲット:先ほど作成したインターネットゲートウェイとして保存します。

f:id:pictzzz:20170131234332p:plain

ここまででEC2インスタンスを作成する環境の構築が完了です。スポットインスタンスの作成ウィザードへ戻ります。(別のウィンドウかタブで開いているはずです。

作成したVPCとサブネットを選択します。最後の最高価格はスポットインスタンスの価格が上昇しても払えると思える最大の金額になります。この金額はあくまで払おうと思っている最大値であって、この金額が請求されるわけではありません。が、スポットインスタンスの価格がこの価格を超えると、2分後にインスタンスが強制終了されます。

f:id:pictzzz:20170131234650p:plain

インスタンスにつけるボリュームを作成します。NVIDIAのドライバーやCUDAのインストールファイルが大きいので15GB以上はあった方がいいと思います。デフォルトの8GBだと確実に足りません。画像や動画の学習を行う場合、もっと容量はいると思います。もちろん、別途EBS(ディスク)を接続することもできます。

f:id:pictzzz:20170131234939p:plain

画面下部ではキーペアを選択します。ここで作成したキーを使ってインスタンスSSH接続します。キーペアを新しく作る場合は、右側の新しいキーペアの作成をクリックします。

f:id:pictzzz:20170131235854p:plain

キーペアの作成をクリックします。

f:id:pictzzz:20170201001733p:plain

キーペアの名前を適当に入力します。

f:id:pictzzz:20170201001800p:plain

作成が完了するとダウンロードされます。

f:id:pictzzz:20170201001910p:plain

スポットインスタンスの作成ウィザードへ戻ります。
一番下まで行き、確認をクリックします。その後、確認画面が出ますので、作成をクリックすると、スポットインスタンスのリクエストが作成されます。入力した金額をスポットインスタンスの価格が下回った場合、実際にインスタンスが作成されます。

画面左側のメニューからインスタンスの画面に移動します。作成されたスポットインスタンスはこの画面に表示されます。ステータスが2/2になったらアクセス可能です。

f:id:pictzzz:20170201000158p:plain

起動するまでに数分かかりますので、その間にEIP(グローバルIP)とセキュリティグループ(FWのようなもの)を作成しておきます。左側のメニューからElastic IPをクリックします。新しいアドレスの割り当てをクリックします。

f:id:pictzzz:20170201000344p:plain

スコープはVPCを選択します。

f:id:pictzzz:20170201000441p:plain

グローバルIPが割り当てられます。アクションのアドレスの関連付けをクリックします。

f:id:pictzzz:20170201000724p:plain

先ほど作成したインスタンスに紐付けます。

f:id:pictzzz:20170201001105p:plain

画面左側のメニューからセキュリティグループを選択します。作成したVPCに紐付いているセキュリティグループを選びます。下に詳細が出てくるので、インバウンドをクリックします。編集をクリックします。

f:id:pictzzz:20170201001223p:plain

SSH(22ポート)を送信元0.0.0.0(全て)で許可します。送信元が特定される場合は、ここでIPアドレスを入力して制限することをお勧めします。

f:id:pictzzz:20170201001403p:plain

ダウンロードしたキーを使ってSSH接続します。キーはホームディレクトリーの下のkeysディレクトリーに置いてあることを想定してます。

$ cd ~/keys
$ chmod 600 dnn-key.pem
$ ssh -i dnn-key.pem ubuntu@xxx.xxx.xxx.xxx

CUDAセットアップ

ここから作成したインスタンスにCUDAをセットアップします。
以下のURLからCUDAのセットアップファイルをダウンロードし、インストールします。

CUDA 8.0 Downloads | NVIDIA Developer

f:id:pictzzz:20170201002718p:plain

このファイルをダウンロードしました。

f:id:pictzzz:20170201003321p:plain

コマンドは最新のダウンロードURLを確かめてください。

wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run
mv cuda_8.0.44_linux-run cuda_8.0.44_linux.run
chmod +x cuda_8.0.44_linux.run

OSのアップデートとnouveau無効化を行います。

  • OSアップデート
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential git python-pip python-dev libxml2-dev libxslt1-dev zlib1g-dev libcurl4-openssl-dev libatlas-base-dev linux-image-extra-virtual libopencv-dev python-numpy
sudo apt-get autoremove
  • nouveau無効化
# sudo vi /etc/modprobe.d/blacklist-nouveau.conf

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
# sudo vi /etc/modprobe.d/nouveau-kms.conf

options nouveau modeset=0
$ sudo update-initramfs -u
# sudo vi /etc/default/grub

# GRUB_CMDLINE_LINUX_DEFAULT=""  # ""の部分にtextを追加
GRUB_CMDLINE_LINUX_DEFAULT="text"
sudo reboot
$ sudo apt-get install linux-headers-`uname -r`

インストールしておかないと以下のようなエラーが出て、CUDAのインストールに失敗したのでインストールしておきます。

The driver installation is unable to locate the kernel source. Please make sure that the kernel source packages are installed and set up correctly.
If you know that the kernel source packages are installed and set up correctly, you may pass the location of the kernel source with the '--kernel-source-path' flag.

デフォルトでインストールします。ドライバーもインストールします。

./cuda_8.0.44_linux.run 

Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
(y)es/(n)o/(q)uit: y

Do you want to install the OpenGL libraries?
(y)es/(n)o/(q)uit [ default is yes ]: 

Do you want to run nvidia-xconfig?
This will update the system X configuration file so that the NVIDIA X driver
is used. The pre-existing X configuration file will be backed up.
This option should not be used on systems that require a custom
X configuration, such as systems with multiple GPU vendors.
(y)es/(n)o/(q)uit [ default is no ]: 

Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-8.0 ]: 

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y

Enter CUDA Samples Location
 [ default is /home/ubuntu ]: 

以下のパスを環境変数に追加しておきます。

# vi .bashrc

export CUDA_PATH=/usr/local/cuda-8.0
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64
export PATH=$PATH:$CUDA_PATH/bin

export CFLAGS=-I$CUDA_PATH/include
export LDFLAGS=-L$CUDA_PATH/lib64

環境変数を追加後、以下のコマンドでGPUの情報が取得できるようになります。

$ source .bashrc
$ nvidia-smi
Tue Jan 31 13:10:52 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48                 Driver Version: 367.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 0000:00:1E.0     Off |                    0 |
| N/A   34C    P0    71W / 149W |      0MiB / 11439MiB |     99%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

f:id:pictzzz:20170201003418p:plain

こちらのURLから登録を行ってダウンロードしました。

NVIDIA cuDNN | NVIDIA Developer

ダウンロードしたファイルは以下のcuDNN v5.1 Library for Linuxです。ファイルはダウンロード後、scpでインスタンスにアップロードします。

f:id:pictzzz:20170201003547p:plain

ライブラリーディレクトリーにコピーします。

$ tar xfz cudnn-8.0-linux-x64-v5.1.tgz 
$ sudo cp cuda/include/cudnn.h $CUDA_PATH/include/
$ sudo cp cuda/lib64/* $CUDA_PATH/lib64/

Chainerセットアップ

最後にChainerをインストールします。Chainerはpipでインストールできます。今回はユーザーランドにインストールします。

pip install --user chainer -vvvv
$ pip freeze | grep chainer
chainer==1.20.0.1

最新バージョンがインストールされていることが確認できました!

セットアップは以上となります。お疲れさまでした!

Let’s enjoy deep learning life on AWS!