verilog書く人

自称ASIC設計者です。どなたかkaggle一緒に出ましょう。

Microsoft Azureでサインアップしてからkaggleデータで機械学習するまでのメモ

kaggleの本番コンペはデータが大きくて、AzureやAWSなどのクラウドサービスで、メモリ数十GBのモンスターマシンの力を借りたくなることがあります。

この前参加したデータ分析ハッカソンなどで、Azureの使い方をおぼえて来たのでメモ。

 

Azureは本家のチュートリアルがかなり分かりやすくできていますので、主にリンク集です。

 

※基本的に無料試用版で試したので、自分から無料制限をはずさない限りここで書いてある内容はお金をかけずに試せるはずですが、課金に関する最新の正確な情報は本家サイトでよくお確かめください。

 

 

もくじ

 

Azureにサインアップする

特に難しいことはありません。

ここで個人情報、クレジットカード情報などを登録してください。

その後、Portalにログインします。


バーチャルマシン(VM)のデプロイ 

 

f:id:segafreder:20160828002916p:plain

 新規→Virtual Machines→Ubuntuをクリックします。(Windows Serverも選べます。)

 

f:id:segafreder:20160828002928p:plain

リソースマネージャーを選択します。

 

f:id:segafreder:20160828002940p:plain

名前→なんでもいいですが、VMの目的に沿った名前がわかりやすいです。

disk type→SSDかStandardか選びます。後者のほうが速度は遅いが、無料枠の減りは遅い…はず。

ユーザー名:sshでログインするときのユーザー名になります。

認証の種類:好きなほうでいいですが、公開キーって何?ってひとにはパスワードがラクです。ただし、パスワードは十分セキュアなものにしましょう。

サブスクリプション:無料試用版を使いたい人は無料試用版を選択。

リソースグループ:新規作成

ロケーション→近いほうが通信が速いです。西日本とか。GPUサーバーなど、一部のサーバーは特定のロケーションでしか使えません。

ただし、無料試用版の場合はコア数制限(4まで)があり、6コア以上必要なGPUサーバーは使えません。

 

上記の設定をして、OKをクリックします。

 

オプション機能の構成
よくわからないので、デフォルトにします。

 

概要
OKを押します。

デプロイが開始されました、とメッセージが出ます。

起動には数分かかるので落ち着いて待ちましょう。

ポップアップで起動が完了した旨表示されます。


ちなみに使わないときは停止しておくと、VMが課金枠を使用しなくなり、節約できます。

f:id:segafreder:20160828005545p:plain

ポータル→すべてのリソースから起動中のVMをクリックし、停止をクリックします。

停止には数分かかるので、見届けます。

 

 

再起動すると、ストレージのデータは残ったまま続きの操作が出来ます。


SSHでの接続

IPアドレスの確認

f:id:segafreder:20160828005244p:plain

Portalトップからすべてのリソース→****-ipをクリックすると赤枠内に表示されます。

 

SSH接続のために、WindowsではTera Termが使えます。

f:id:segafreder:20160828005912p:plain

 ホストには先ほど確認したIPアドレスを入力します。

ポートはデフォルトでは22が開放されています。

接続方式はSSH→SSH2です。

f:id:segafreder:20160828010311p:plain

つながるとこの画面が出ます。

VMデプロイ時に設定したユーザー名とパスワードを入力します。

 

↓の画面が出れば、SSH接続成功です。

f:id:segafreder:20160828012831p:plain


関連ライブラリのインストール

私の場合、Pythonがないと戦えないので、scikit-learnやらpandasをインストールします。Python自体は入っていますが、pipやnumpyは入っていませんので、自分でインストールする必要があります。

Anacondaをインストールする場合はこちらをSSHで実行してください。

# install anaconda
> cd ~
> mkdir -p anaconda
> cd anaconda/
> curl -O https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda3-2.3.0-Linux-x86_64.sh
> sudo bash Anaconda3-2.3.0-Linux-x86_64.sh -b -f -p /anaconda3

# clean up home directory
> cd ..
> rm -rf anaconda/

# Update Jupyter to the latest install and generate its config file
> sudo /anaconda3/bin/conda install jupyter -y /anaconda3/bin/jupyter-notebook --generate-config

 

アナコンダ派の方はこちら。

 

> sudo apt-get install python-pip
> sudo pip install --upgrade pip
> sudo pip install numpy
> sudo pip install nose
> sudo pip install scikit-learn

 

kaggleデータのダウンロード

wgetcurlを使いますが、正確にはkaggleの各データコンペにおいて規約に同意したというCookie情報がないと、csvファイルがダウンロードできません。

 

そこでまず、VMではなく手元のパソコンでkaggleにアクセスして、規約に同意しデータをダウンロードできる状態にします。

 

Cookieのエクスポートはブラウザによって方法が違いますが、Chromeの場合はこれを使います

f:id:segafreder:20160828001129p:plain

kaggleを開いた状態で、右上の赤丸内のアイコンをクリックするとCookie情報が記載されているポップアップが表れるので、これをコピペしてcookie.txtに保存します。

そしてcookie.txtをSCPなどの方法で、VMに転送します。

Tera Termでのやり方はこちら。

 

> wget -x -c --load-cookies cookies.txt -P data -nH --cut-dirs=5 https://www.kaggle.com/c/diabetic-retinopathy-detection/download/trainLabels.csv.zip

あとは、VM上にスクリプトを置いて走らせるだけです。


おまけ:Jupyterを使いたいとき

SSHでシコシココマンドラインでやるより、デバッグやグラフのビジュアライズをしたいという観点ではJupyter notebook経由で叩くのが便利です。スクリプトの編集もラクですし。本家が詳しいので参照してください。勿論、上記の方法でデータを配置した後、Jupyter経由で解析することもできます。

Jupyter/IPython Notebook を作成する | Microsoft Azure