14 Jan 2018, 05:38

x2goを使ってUbuntuでリモートデスクトップする

はじめに

この前から、Pythonのコードを書く際に、Jupyter NotebookではなくてPycharmを使おうかと思い、調べていた。どうも、PyCharmのProfessional Editionには、リモートデバッグ機能があって、サーバ上にあるインタプリタを実行できるようだ。これは便利。たとえば、例としてAWS上で動いているPythonと通信して、ローカルでデバックできたりする。

このリモートデバッグ機能と前回紹介した、Scientific Modeで 心は Professional Editionに課金しようとしていたのだけれども、もう少し調べてやめた。それは、どうもProfessional EditionでなくCommunity Editionでも 自分がやりたいデバッグができそうだからだ。

それは、サーバ上にリモートデスクトップして、サーバ上でPyCharmを動かすということ。というわけで、Ubuntuでリモートデスクトップをするためのメモ。

環境

  • サーバ、クライアイトともに Ubuntu 16.04 LTS

x2goをつかう

Ubuntu用のリモートデスクトップ用アプリ、X2Goをつかう。

いろいろと、ツールを試してみたのだけれども、x2goが最も安定していたので、これに決めた。

サーバ側にツールをインストール

$ sudo apt-add-repository -y ppa:x2go/stable
$ sudo apt update
$ sudo apt -y install x2goserver x2goserver-xsession

クライアント側にツールをインストール

apt-get install x2goclient

メニューバーから[Session]-[New Session]を選択。以下のように、設定をする。

ポイントは、 Session Type. Ubuntuでは、KDE 、LXDE、XFCEを選択すること。それしか使えないらしい。ジブは、xfceを選択。

以下で、XFCEをインストール。

sudo apt-get install xfce4

これで、X2Goクライアント上でセッションを選択して、ログインするユーザー名とパスワードを入力して[OK]ボタンをクリックすれば、リモートデスクトップ接続ができる。

これで、PyCharmを起動して開発すれば、リモートデバッグをせずとも、サーバ上のリソースが利用できるので、便利。しかし、なぜだかたまにハングするのだけれども。。。

 

追記

LXDEを使ったほうが、xfceよりも圧倒的にさくさく動きました。

sudo apt install -y lubuntu-desktop

13 Jan 2018, 16:51

PyCharmの scientific modeがスゴい!Jupyter Notebookいらないかもよ

はじめに

Kaggleで、scriptを書く人と、Jupyter Notebookを書く人がいるのだけれども、どっちが生産性がいいのかなというのが、ふと自分のなかに疑問として湧き上がった。自分は、Jupyter Notebook派だ。しかし、別の方法も試してみるのも、気分転換になるかもとおもい、しばらくぶりにPyCharmを使おうとした。

すると、2017/11に出た最新版 2017.3 で Professional Editionに追加された機能、Scientifc modeがなんだかスゴそうだったので、今回紹介する。

Scientific Mode

まずは、公式サイトからの紹介を翻訳。

[https://www.youtube.com/embed/OHwh0c8UsW4?start=66]

特徴

  • iPyrhon Notebook(Jupyter Notebook)がPyChamに結合。
  • IDEの恩恵を十分に受けて開発できる。自動補完、ナビゲーション、エラーチェックなど。
  • 対話的Python コンソールで REPL駆動開発ができる。
  • NumpyやPandasのデータ構造を見るViewerがある。
  • MatplotlibをインタラクティブにみるViewerがある。
  • Anaconda連携

有効方法

ツールバーの 表示 > Scientifc モードを選択。すると、

  • プロジェクトView
  • Python コンソール
  • ドキュメントView
  • SciView(これがデータビューとグラフビューを兼ね備えている)
  • 実行したオブジェクトリストView

が現れ、まるで RStudio みたいなView配置になる。RでデータサイエンスをするならRStudio一択だけれども、PyCharmはPythonにおけるデータサイエンスのためのIDEになりえるのではないか?

ここがスゴい

例えば、Jupyter Notebookユーザならば、セルごとに処理を実行することができることに魅力を感じるかもしれない。それはPyCharmでもできる。カーソルで選択して、選択範囲を実行すると、選択した部分がPythonコンソールに送られて実行できるのだ。

そうして評価した、numpyやpandasオブジェクトはクリックすると、SciVIewに現れるのだ。なので、いちいちJupyter Notebook上で、 head()関数でデータフレームの中身を確認する必要がない。

少しコードを修正したら、再度範囲を選択して、実行すると式が再評価される。

That’s REPL駆動開発!!

何より嬉しいのは、IDEの恩恵を存分に利用してPyhtonのコードがかけることだ。IDEに必要な条件としては、以下のようなものがある。 PyCharmはすべて兼ね備えている。

  • シンタックスハイライト/ インデント
  • 検索・置換
  • タグジャンプ
  • コード補間
  • エラーチェック
  • リファクタリング
  • インタープリタ・デバッカ
  • プロジェクト管理
  • ドキュメント参照

所感

ここがスゴイでも書いたけれども、コードを部分実行して、そのデータフレームがすぐに見れるViewがあるところがとても気に入った。

Jupyter Notebookを今までずっと使っていたけれども、Jupyter Notebookの代わりとなるかもしれない可能性を感じた。とはいえ、EDAをしたり、他人に見やすくコードを公開するには、まだまだJupyter Notebookが必要だろう。それ以外の部分は、PyCharmでいいんじゃないか?

おわりに

一番気になるのは、お値段。Professional Editionは有料で1年間 89ドル = 1万円くらい。

しかし、日本の代理店?から購入するとちょっと安くなる。

まずは、試用を1ヶ月してみてから判断してみるのもよいのでは?

 

追記

Community Editionでも、選択範囲のみを実行したり、numpyやpandasの中身を見ることができた。なんだ、Professional版いらないかも。

12 Jan 2018, 12:09

ASUS ZenScreen MB16ACで快適楽々デュアルディスプレイ

はじめに

新パソコンを買ったのだが、せっかくなのでデュアルディスプレイにしたくなってきた。新パソコンは自宅サーバとして稼働させて普段は、有料自習室で作業することが多いので、モバイルで持ち運べるものを新調したくなった。いろいろ調べたところ、ASUSが一番スペックがよかったので購入した。

縦型に対応していなかった・・・

このASUSを選んだ一番の理由は、縦にサブディスプレイを使いたかったから。自宅も外出先もUbuntuを利用しているので、対応するドライバを入れて利用する必要があるのだけれども、残念ながらドライバが対応していなかった(T_T)。

Rotation is not supported due to missing functionality in the generic modesetting driver

Ubuntu用ドライバ DisplayLinkをインストール

Ubuntuで利用するには、DisplayLinkというドライバをインストールする必要がかある。

これをお手軽に実施するツールがある。

ダウンロードしたスクリプトを実行すると、よしなに関連ライブラリのインストールと設定をしてくれる。

xrandrで設定

デュアルディスプレイ用の設定をしていく。 まずはモニタが認識されているか確認。

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x47 cap: 0x9, Source Output, Sink Offload crtcs: 4 outputs: 4 associated providers: 1 name:Intel
Provider 1: id: 0x106 cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 1 name:modesetting

sourceの設定。

xrandr --setprovideroutputsource 1 0

xrandrでモニタ名を調べる。

$ xrandr
eDP1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
DVI-I-1-1 connected (normal left inverted right x axis y axis)

そしていよいよデュアルディスプレイのコマンド投入。

xrandr --output DVI-I-1-1 --auto --right-of eDP1

元に戻すには、

xrandr --output DVI-I-1-1 --off

06 Jan 2018, 12:21

Ubuntu16.04にCUDAとcuDNN入れるまでの設定メモ ~ GPU版xgboost導入まで

はじめに

NVIDIAのGPUつきのパソコンを購入したので、セットアップメモです。

xgboostをGPUで動かすところを最終目標とします。

環境

  • Ubuntu 16.04 LTS
  • CUDA 9.1
  • cuDNN 7.0.5
  • Python 3.6
  • Anaconda 3.5
  • xgboost

NVIDIA GPU環境に必要なツール

なにしろGPUを購入してみたものの、無知なもので、まずはどういう仕組みで動かせるのか調べることにした。NVIDIA GPUを動かすためには以下の2つが必要らしい。

  • NVIDIA CUDA Toolkit ・・・ NVIDIA ドライバーと開発環境
  • cuDNN・・・ディープ・ニューラル・ネットワーク(DNN)ライブラリ

いきなりDockerという手もあるが

いろいろ調べると、サクッとまるっとこれらをインストールする簡単な方法があった。それが、Dockerだ。

nvidia-dockerという Dockerのラッパーツールがある。これを利用すると、以下の引用図のようなアーキテクチャでコンテナを動作させることができる。

dockerをつかうことのいいところは、ディープラーニング用ライブラリごとに環境を用意できるところ。たとえば、Tensorflow, keras, pytorchの3つを使いたい場合、各ツールでサポートしているcuda/cudnnが違うと使えない。dockerを使えば、それぞれのライブラリごとに環境を用意できるのだ。

ただ、途中までインストールをしかけたのだが、dockerに関する知識が乏しく、時間もなかったので、今回は見送った。いつかnvidia-dockerを使いこなす。

NVIDIA CUDA Toolkitのインストール

とりあえず最新が最適化されていて高速だろうという理由から、最新版の9.1をインスールする。Tensorflow1.4は8でないと動かないらしい。以下のリンクにインストール手順がある。

.bashrcを編集してパスを通す。

export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

PCを再起動する。再起動後、インストールできたかバージョンを確認する。

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.90  Tue Sep 19 19:17:35 PDT 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

NVIDIA cuDNN のインストール

次に cuDNNをインストールする。

cuDNNはNVIDIA で アカウントを作成しないとDownloadできない。wgetもできない。不便。

アンケートに回答後、以下の3つをダウンロードして、サーバにscpで転送。

  • cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Developer Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Code Samples and User Guide for Ubuntu16.04 (Deb)

sudo dpkg -iでインストール。インストールできたかテストしてみる。

$ cp -r /usr/src/cudnn_samples_v7/ ~/tmp/cudnn_samples_v7/
$ cd ~/repo/cudnn_samples_v7/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN
Test passed!

Anaconda環境の導入

データサイエンスのためのよくばりセット、Anacondaを入れる。これを入れればデータ解析のための大抵のツールが手に入る。最新版を落としてきてインストール。

kaggle用の環境をつくる。

$ conda create -n kaggle
$ source activate kaggle

GPU対応 xgboost

GPU対応のxgboostを動かすには、ソースからビルドする。

Pythonモジュールをインストール

$ cd python-package; sudo python setup.py install

GPU版 xgboost めちゃくちゃハヤイ!!

04 Jan 2018, 15:35

自宅のUbuntuサーバに外からsshでアクセスする

自宅に高価なパソコンを購入したので、どうせなら外出先でもアクセスしたい。

なので、外部から自宅サーバにsshする方法を調べて設定してみた。

環境

  • ソフトバンク光 BBユニット
  • Ubuntu 16.04 LTS (サーバもクライアントも)

ssh鍵認証でログインする

第一ステップとして、ローカルネットワーク、つまり自宅内のネットワークでssh接続できることを目指す。パスワード認証ではなくて、ssh鍵認証をする。ハッキングが怖いので。

これは、5年前!に書いた自分の記事が役に立った。整理しつつ、再掲。

サーバ側の設定

サーバ側にssh serverを インストールする。

sudo apt install openssh-server

これでOk.簡単です。次にsshの設定をいじる。 /etc/ssh/sshd_configを管理者権限で編集

sudo nano /etc/ssh/ssh_config

//ルートでのログイン禁止
PermitRootLogin no

//RSA認証の有効化
RSAAuthentication yes

//パスワードによる認証を許可
PasswordAuthentication yes

//空のパスワードは拒否
PermitEmptyPasswords no

//チャレンジレスポンス認証を不許可
ChallengeResponseAuthentication no

設定の反映のために再起動。

systemctl restart sshd

クライアント側の設定

クライアントの設定。といってもsshコマンドはデフォルトで入っている。

// 認証公開鍵の作成
$ ssh-keygen -t rsa

// いくつか質問されるのでEnter連打。

クライアントの公開鍵をサーバに送ります。安全のために、ここではscpコマンドを使うのがよいでしょう。

$ scp ~/.ssh/id_rsa.pub  tsu-nera@XXX.XXX.XXX.XXX:

再びサーバ側の設定

scpで送った鍵を保存する。

$ cat id_rsa.pub >> .ssh/authorized_keys
$ rm id_ras.pub

$ chmod 600 .ssh/authorized_keys

再度、sshd_configの設定を編集.

//パスワードによる認証を許可しない
PasswordAuthentication no

再起動して終了。

sudo systemctl restart sshd

ローカルIPアドレスを固定する

ローカルIPアドレス(プライベートIPアドレス)は、DHCP機能によって自動的に振られるので、これを固定IPアドレスにする。

固定の方法なのだけれども、ここでかなりハマった。以下の記事を参考に/etc/network/interfacesを覗いてみたのだけれども・・・

あれ、Loopbackのnicしかないyo!!

ということで、ここでハマった。いろいろ調べてみると、15.xからここらへんの仕様変更があったようで、名前が記事とは違うらしい。名前どころか、仕組みも違うみたい。詳しくは調べきれていないのだが、Network Managerというserviceに置き換わろうとしていて、そのフロントエンドが nm-appletというアプリだそうだ。

というわけで、nm-appletをいじる。これは、右上のネットワーク接続を示すアプレットのこと。これで、まずは接続情報というところをチェックする。Ipv4の欄の

  • IPアドレス
  • ブロードキャストアドレス
  • サブネットマスク
  • デフォルトゲートウェイ

をチェックしてメモする。そして、接続を編集するを選択して、現在接続中の通信を選択して編集を押す。Ipv4設定を選択し情報を以下のように入力する。

ここでは、192.168.3.5を固定IPアドレスにした。これでIPは固定になるはず(自信ないです。。。)

ssh port を 22から 10022に変更する

ssh は port 22 なのだけれども、これを変更する。ハッカーに攻撃されないようにね。

設定ファイルを開き、下記のように変更する。

$ sudo nano /etc/services

//前
ssh              22/udp     # SSH Remote Login Protocol
ssh              22/tcp     # SSH Remote Login Protocol

//後
ssh              10022/udp     # SSH Remote Login Protocol
ssh              10022/tcp     # SSH Remote Login Protocol

グローバルIPアドレスでアクセス

さあ、ローカルネットワークではこれでssh接続できるようになった。次はグローバルだ。まずは、自分のグローバルIPアドレスを以下から調べる。

ソフトバンク光BBユニットの設定からポート開放設定

自分の家のルータの設定を変更して、上で設定した10022番ポートがホストに回してくれるよう設定する。

  • http://172.16.255.254/ に接続、user/userでログイン
  • 詳細設定を開く -> ポート転送
  • 有効/無効 -> 有効
  • プロトコル -> tcp
  • WAN/LAN側ポート両方 -> 10022-10022
  • 転送先IPアドレス -> 自分のローカルipアドレス

ルーターを再起動する。

No-IPを使ってグローバルIPアドレスを DDNSで追跡する

グローバルIPアドレスは気まぐれで変更されてしまう。なので、変更を追跡してくれるサービスを利用する。DDNS(Dynamic DNS)というらしい。No-IPというサービを利用する。

これに登録して、fox10225fox.ddns.netというドメインを取得した。

最後の仕上げ

以下のコマンドで、アクセスできれば目標達成。

ssh -p 10022 tsu-nera@fox10225fox.ddns.net

ちなみにヘアピンNATに注意

同一ネットワーク内からグローバルIPにアクセスしようとすると、アクセスが失敗する。これは、ヘアピンNATと呼ばれているルーターの仕組みの問題。

ヘアピンNAT対応していないルータをつかっていると、どんなに設定をいじってもアクセスが失敗する(これでとても時間をつかった)

/etc/hostsを編集する方法がネットにたくさん散見された。これで試したところ、うまく行った。

$ sudo /etc/hosts

192.168.3.5 fox10225fox.ddns.net

03 Jan 2018, 06:47

Ubuntu で NVidia ドライバを使っている時の不具合

ドスパラでゲーミングPCガレリア(Galleria)を買ったのだけれども、 Ubuntu16.04をインストールしたら、解像度もへんてこだし、音も出ないしでいろいろ不具合がでた。PCのスペックは前記事の記事を参照。

いろいろ試してみたところ、どうもNVIDIAのドライバがインストールされていないからだった。

コンピュータの検索から、システム設定 > ソフトウェアとアップデートを選択。

追加のドライバータブを選択。NVidia CorporationからNVIDIA binary driverを選択。

これをインストールすれば、解像度もモニターに合うし、音も出る。誰かの助けになれば。

02 Jan 2018, 05:31

KaggleのためのMOOCがcourseraに!How to win a Data Science Competitionを受けた

kaggleの攻略法について、以前調査した。あまり、学習教材がなかった。

Kaggleを初心者が進めるには、とにかくコンペに参加してKernelを読むしかないのかなと思っていた。そんな自分に朗報!この courseraが提供するものこそ、自分が求めていたものだ。

その名も・・・

How to Win a Data Science Competition: Learn from Top Kaggler

特徴

ロシアのカグルマスターが講師

この講座では、Yandexというロシアのgoogleが講座をサポートしている。そのため、ロシア切ってのデータサイエンティストから学ぶことができるのだ。

また、catboostなどの、ロシア魂がこもったライブラリを紹介される。これはかのxgboostよりも強力だった。

難易度高い…

正直、難しいです。quiz, assignment, 解けなかった。

この講座は機械学習の手法を教える講座ではない。それらはすでに身についているものとして、コンペで使える技や知識を教えてくれる。

kaggle コンペで腕試し

習ったことは即試してみようということで、練習用のkaggleコンペが用意されている。

ロシアのIT企業の売上予測を行う。時系列データコンペ。

各週の内容

week1:

recap&introduction ということで、データ分析コンペについて紹介される。

基本的な手法はもう知っているよねということで、MLの手法はサラッと紹介されて終わる。

そのあと、前処理についての紹介。これはよくまとまっている。数値変数、カテゴリ変数、時間の扱いと位置の扱い、欠損値の扱い。これは大事なので、なんども復習したいところだ。

assignmentはpandasについての演習。groupbyを多用する必要があり、初心者サヨウナラ感がとてもする。

week2:

EDAについての解説。これも一通りの手法は紹介される。とはいえ、すべてを網羅できるわけではなく、自分で習ったことを実践してみないとこれは身につかない気がした。

次に Validationということで、データ分割の戦略について紹介される。データ分割がなぜ必要か(過学習を避けるため)、その手法と注意点について。

最後に、Data Leakageが扱われる。具体的な事例を元に、DataLeakageにどうやって気づくかなどが紹介される、が、

ここはよくわからなかったな。。。Assignmentも Data Leakageについてなのだが。

week3:

Metrix(評価指標)について学ぶ。回帰、分類それぞれでよく使われる指標を学ぶ。MetrixとLoss functionの違いについて説明。ココらへん、理解していなかったので参考になる。

続いて、mean encodingという手法について紹介される。カテゴリカル変数を変換するための方法で、label/one-hot-encodingよりも、強力だとか。そして、その実装がassignmentとして課される。

week4:

ハイパーパラメータのチューニングについて、まず紹介される。ランダムフォレストやxgboost, ニューラルネットワークのパラメータチューニングについての実践的なアドバイス。また、自動チューニングツールの紹介(hyperoptなど)

次に、特徴量エンジニアリングの小ネタ第二弾。

  • Matrix Factorization
  • Feature Interaction
  • t-SME

最後に、一番むずかしい話題、アンサンブル学習が紹介される。weight average, bagging, stacking, boosting, stacknet…ムズい。assignmentはstackingの実装。

week5:

過去のコンペティションで講師の人が上位入賞をどうやってしたか、カグルマスターがその手法の種明かしをしてくれる。

ただ、これらの動画はおまけのようなもので、最後の週の本題は、用意されたKaggleコンペで上位スコアを取ること。

Assignmentがスコアのcsvデータの提出。一定以上のスコアを超えていないと、クリアとみなされない。そしてこの水準がとても高い。MSE1.0より低くないと、どうやら合格できないよう。LBを見ると、そんな人は30人くらいしかいない。

それに加えて、ペアレビューがある。以下のフォーマットに従って、自分がどうやってコンペに望んだかを説明するレポートを作成して、コードと一緒に提出する。

提出がすむと、他の人のコードをレビューできるようになる。

おわりに

この記事を執筆している時点では、私はコースを完了していない。

QuizもAssignmentも終わらなかった。

ただ、とてもこのコースはとても充実していた。かけた時間は現在95時間。kaggleのための実践的なテクニックが豊富に紹介されていて、吸収することがたくさんある。mean encodingや stackingなど、ネットにはほんとど情報がないが重要な手法も紹介されている

(assignmentにもなっている)

さらに、その知識を実践するする機会もコンペという形で与えられている。MOOCをいろいろと受けてきたけれども、そのなかでもかなり楽しい講座だった。それは、自分が今興味があることがデータサイエンスであり、ちょうど知りたい内容だったからだ。

この講座の内容をよくよく復習し、今後もKaggleに取り組んでいこう。Kaggle用のマシンも購入したことだし、まずはそれでグリッドサーチやアンサンブルを試してスコアを上げる。

31 Dec 2017, 13:14

機械学習/ディープラーニング用にウルトラ高性能ゲーミングPCを購入

2017年も残すところわずかですが、年末最後に羽目を外してしまったというか、やらかしてしまったことを書きます。

ネットで機械学習用のPCを買ってしまいました。。。

33万で。ヽ(`▽´)/

うぇーい。

どうしてこうなったか

大晦日ですが暇していたので、ふとした弾みで最新式のパソコンが欲しくなった。

どうせ買うならば、超高性能のPCが欲しくなってきた。もちろん、GPUつき。

とはいえ、GPU式のウルトラ高性能のPCはどうすれば手に入るのかもわからない程の素人。調べてみると、ゲーム用PC、ゲーミングPCというジャンルがあり、

そのキーワードで検索してみると、よさそうなPCが出てきた。

ネットで情報を漁っているうちにその気持ちが止められなくなって、

買っちゃえ買っちゃえという気分になってきた。年末年始のキャンペーンもやってるし。

高性能PCを作るには自作パソコンだろうと思っていたが、調べるとBTOという方法があるらしい。

BTOとは、Build To Orderの略で、PCのスペックを指定して注文することが出来るサービス。

以下の雑誌が参考になった。

「組む」時間がなくても大丈夫 第8世代Core搭載 買いのBTOパソコン

雑誌を片手に様々な、BTOを提供しているサイトで見積もりを実施。

以下のサイトが参考になった。

結局どこも大差はないのだけれども、納期が即日だったドスパラに決定!

なにを買ったか

というわけで、ドスパラ最強ゲーミングPC ガレリア(GALLERIA) ZZを購入。

ちなみにちなみに、BTOと自作では、30000円くらい差があるとのこと。なんだか高すぎて金銭感覚がなくなってきたお。

スペックはカスタマイズしたのだが、以下を指定。

  • CPU インテル Core i7-8700K
  • メモリ 64GB DDR4 SDRAM
  • GPU NVIDIA GeForce GTX 1080Ti
  • SSD 500GB
  • OSなし(Ubuntu予定)

以下のサイトを参考にスペックは選定した。

CPUは、なにをするにも重宝をするもの。なので、できるだけ高価なものを購入。第8世代とのことで、6コア12スレッド。機械学習の前処理でパワーがあるCPUで処理したいと思い購入。

GPUは、安定のNVIDIAの最新版 GoForce GTXシリーズ。GPUについて、1070Tiと1080Tiで価格が3,40000円違ったので、とても迷った。GALLERIAの ZVというモデルが売れ筋No.1だそうだ。性能の比較が気になるところだが、これと明記した記事は見つからなかった。とても悩んだあげく、高いほうを選択。最高スペックが欲しいという動機があったからだ。

メモリについて、画像データを大量に扱いたいという思いがあり、Memoryネックで計算できないことがないよう、64GBを選択。

OSはLinuxのほうがいろいろなライブラリを扱う上で良いだろうとおもい、Windowsのオプションは捨てた。Ubuntuを入れるぞ。

買ってなにをするか?

一言でいうと、Kaggleです。

2018年の目標は、Kaggleをすること。Kaggleを通じて、機械学習やディープラーニング(Deep Learning)の知識を身につけ、データサイエンス力を磨いていくこと。

今年受けたデータサイエンティスト養成講座で、カグルマスターの人にあったのだが、その方がkaggleはマシンゲーだよと言っていた。高スペックなマシンを持っている人が勝利するとか。自分は、知識も腕前もないのだけれども、まずは形から入ろうとして、マシンを購入した。お金を払うとやらざるを得ないというあれです(ジョギングをすると決意するときに、はじめに効果なシューズやウェアを買うのと同じ心理)

ドスパラは2日で即配達するとのこと。どうしてもお正月に設定を終わらせたかったので、ドスパラを選んだ。即日出荷というのがすごい。というわけで、次回はマシンの設定を書きます。

28 Dec 2017, 04:56

2017年の振り返りと2018年の目標

毎年恒例ですが、一年の振り返りと来年の目標を立ててみようと思います。

2017年の振り返り

TOEIC ほぼ900達成

まずは、2017年の振り返りから。一年前はTOEICをとにかく勉強していた。

そして、年初の目標は、TOEIC 900達成を目指すこと。技術的成長は諦めていた。

ソフトウェア開発よりも、2017 年は TOEIC の勉強に力を入れる。

そして、頑張った結果、895点を3月に取得した。目標達成、めでたしめでたし。

機械学習にかけた一年

今年、もうひとつ頑張ったテーマがAI, 機械学習、Deep Learning。世の中AIブームなので、ミーハーなボクも、流れに乗って勉強を進めたのだった。

AIの勉強をしていて、会社の産業医から、AIで会社にどう貢献するのですか?AIの勉強をしていたら復職させない!といわれ、上司からもうちの部署はAIとは関係ないといわれ、それでもめげずに勉強していた。ところが、世の中はAIブームが来て、会社でもいろんな人がAIの勉強を始めている。ブームは確実にやってきている。

休職中で暇すぎたので、ありあまる時間を使って数々の講座を受講した。

その結果、JDLAの G検定に合格するという成果が出た。基礎的なAIの知識はついた。

仕事に復帰しました

うつ病で休職していたが、9月からようやく仕事に復職できた。復職したら、きっとはじめは窓際な仕事で暇だーといいながらひっそりと過ごすことを期待していたのだけれども、炎上プロジェクトに放りこまれていきなり激務。これはヒド(ry.

今は、ストレージ装置のファームウェア開発をしている。具体的には、システム制御チームでRAIDコントローラーの閉塞処理とファームウェアアップデート機能の開発をしている。2ヶ月で15日遅延で、4ヶ月で1ヶ月遅延で、毎週進捗報告で怒られる。早くAI業務に異動したい。そのためには、今の仕事で成果を出さないといけないのだけれども、また潰されそう。

2018年の目標

2018年は、AIの勉強を引き続き実施していく。具体的には、以下。

kaggleやる

2017は、データサイエンスに入門した。2018は、実力をつける。実力をつけるために、kaggleをやる。kaggleをやることで、機械学習やディープラーニングの知識をつけていく。またよいkernelを公開することで、EDA力、人に説明する力もつけていく。

JDLA E検定を受ける

ディープラーニングの勉強を継続していくために、JDLAの E検定の勉強をすることを一つの目標にしようと思う。資格を取ることで、自分の知識を証明したい。

婚活する

ソフトウェア開発の勉強よりももっとやらなければいけないことがあるのだった。休日は勉強もいいのだけれども、婚活に時間を割く。早く結婚したい。

28 Dec 2017, 02:07

JDLAのG検定、初試験で一発合格

JDLA(日本ディープラーニング協会)のG検定というのが12/16(土)に実施された。

遅ればせながらツイッターに流れてきて試験日を知り、12/4に申し込んだ。

結構難しくて、落ちたかなと思った。

なんとか?合格していました。今回は、受験者1448人、合格者823人。合格率にして57%。

対策日数は10日間だけれども、やったことを書く。

受験の動機

受験の動機は、ディープラーニングの知識を持っていることを資格を保持することで示したかったから。社内にAIを扱っているプロジェクトがあり、そこに移りたいと何度も上司に言っているのだが、受け入れてくれない。なので、資格を持つことで、ディープラーニングの知識を有していることを示したいと思った。

G検定とは

以下の通り

  • 目的:ディープラーニングに関する知識を有し、事業活用する人材(ジェネラリスト)の育成
  • 概要:ディープラーニングを事業に活かすための知識を有しているかを検定する
  • 試験概要:120分、100問(表示される問題数は232問)、多肢選択式、オンライン受験(自宅受験)
  • 受験料:12,960円(税込)
  • 試験日:2017/12/16(土) 13:00-15:00

受験料が高い。あとは、オンライン試験ということで、自宅で受けることが可能なところがポイント。100問とかかれているが、実際は232問出されて、とても分量が多い。私は20分くらい余ってようやく問題を解ききったが、さくさく解いていかないと、時間がなくなる。

シラバス(201712)

まずは、シラバスをチェック。

協会活動 | 一般社団法人 日本ディープラーニング協会 Japan Deep Learning Association

  • 人工知能(AI)とは(人工知能の定義)
  • 人工知能をめぐる動向
    • 探索・推論、知識表現、機械学習、深層学習
  • 人工知能分野の問題
    • トイプロブレム、フレーム問題、弱いAI、強いAI、身体性、シンボルグラウンディング問題、特徴量設計、チューリングテスト、シンギュラリティ
  • 機械学習の具体的手法
    • 代表的な手法、データの扱い、応用
  • ディープラーニングの概要
    • ニューラルネットワークとディープラーニング、既存のニューラルネットワークにおける問題、ディープラーニングのアプローチ、CPU と GPU
    • ディープラーニングにおけるデータ量
  • ディープラーニングの手法
    • 活性化関数、学習率の最適化、更なるテクニック、CNN、RNN
    • 深層強化学習、深層生成モデル
  • ディープラーニングの研究分野
    • 画像認識、自然言語処理、音声処理、ロボティクス (強化学習)、マルチモーダル
  • ディープラーニングの応用に向けて
    • 産業への応用、法律、倫理、現行の議論

実際、どこがでるかというと、まんべんなく出る。このシラバス通りに出る。不明なキーワードはすべて調べ、関連する話題も読んでおかないと、解けない。

自分の対策

推薦書籍は3つある。

  • AI白書 2017 (編)独立行政法人情報処理推進機構 AI白書編集委員会 角川アスキー総合研究所
  • 人工知能は人間を超えるか ディープラーニングの先にあるもの 角川EPUB選書 (著)松尾 豊 KADOKAWA
  • 深層学習 機械学習プロフェッショナルシリーズ (著)岡谷 貴之 講談社

申し込みから試験まで、10日しかなかったので、とりあえず推薦本の一つである、人工知能は人間を超えるかを丁寧に読んだ。

ディープラーニングは今年から勉強を開始したので、ディープラーニングや機械学習の問題が出てくれれば解けるだろうと思っていた。その憶測は正しかった。ディープラーニングや機械学習の問題は簡単だった。

IA白書を買ったのだが、これは分厚く、とても読めなかった。ここから出題された問題もいくつかあったが、正直これは捨て問だと思う。この厚い本を読んで、その一部の情報が記憶に残るとは思わない。

よって、機械学習やディープラーニングで点を稼ぎ、 AIの歴史は松尾本でここも落とさずに点数をとり、それ以外のほとんどの人がわからない問題は捨てる、という戦略が必要。

感想

難しい・・・というか、正確にいうと知らない問題は全く知らない。わかる問題は解ける。とにかく、問題数が多いのだ。オンライン試験なので、調べようと思えば調べられるが、その余裕を与えないための配慮だと思う。調べていたら、時間切れになるようにできている。

とにかく、出題範囲が広いのと問題数が多いのが特徴。という意味で、難しい。

半分くらいはディープラーニングではなくて、その関連知識の問題だった。歴史についてだったりAIについての考え方だったり。このあたりは、知らない問題はまったく手が出せずに捨てた。AI白書を読めば載っていることだろうが、あの本は分厚いので読む気にはならない。機械学習とディープラーニングの問題は優しく、ここで点数を稼いだ。

E検定に向けて

G検定が受かったので、次はE検定を目指す。こちらは、推薦書籍の3つ目が中心に出題されることが予想される。

しかし、この本難しいので、自分は最近発売された以下の本を中心にまずは進めようと考えている。

それとともに、E検定では実技試験が課せられる。これはコーディングをするということなのだろうか?現時点での情報では、そこまでは読み取れないが。とはいえ、なんらかのフレームワークを使って実装するスキルを磨いておきたいところだ。

最近注目してる、PyTorchを学習することにする。チュートリアルやUdemyの動画で学習を進めていく。