IT系バンドマンの日常

備忘録やライフログなど

WindowsでVimの環境を整える

みなさんお久しぶりです今回はWindowsでKaoriyaさんVimの設定に挑戦してみたのでやり方をメモしておきます

  1. KaoriyaさんのサイトからWindows版のVimをダウンロード

www.kaoriya.net

  1. 解凍して出てきたフォルダをC:\Program Filesあたりに設置します

  2. 起動させる際に、Kaoriyaさんの便利設定を読み込んだあとC:\Users\.vimrcまでユーザー設定を読み込みにいってくれます。今回はvimの設定ファイルはMacLinuxでのVimの環境と揃えるために自分のリポジトリから引っ張ってきたものを使いました

github.com

  1. C:\Program Files\vim80-kaoriya-win64\switches\catalogにあるutf-8というファイルをC:\Program Files\vim80-kaoriya-win64\switches\enabledにコピーすることで、KaoriyaVim内部のエンコーディングutf-8にすることができるようです。いまのところデフォルトのcp932でも問題なさそうなので、ここらへんの設定はまた後日ご報告できればと思います

WindowsのKaoriya版vim/gvimの問題と対処 - fudist

感想

KaoriyaさんVim最高!!KaoriyaさんVim使わずに+LuaVimコンパイルするのエグかった(挫折した)ので。。。

【小話】MacBookにUbuntu入れたけどMacOSに戻した話

みなさんこんにちは!

今回は、「職場のワークステーションにubuntu16を入れて愛用してるので、きっとプライベートで使ってるMacBookに入れても超快適だろう!と思ったらそうでもなかった話」です

Install

今回はUbuntuのブータブルUSBを作成して、MacBookクリーンインストールしました

MacBook+Ubuntuで気になるところ

  • バッテリー容量がMax充電でも88%表示される
  • MacBookを閉じてからのSleep&復帰の挙動
  • トラックパッドの挙動

さっくりまとめ

  • Laptopの製品を使うときはやっぱり推奨のOS使っとくのが無難
  • MacOS使いやすすぎ!!
  • またUbuntuのモジュールまわりとかを開発したくなったらホストOSにUbuntu入れるかもですが、しばらくはMacOS + VM(UbuntuとかFedoraとか)で過ごしてみたいと思います
  • 次はUbuntu推奨のLaptopPCを買って、そこにUbuntu入れるのがいいなー。

そんなわけでみなさんよいPCライフを!

EC2+cuDNN+Chainerでディープラーニング用爆速計算環境を手に入れる

みなさーん!DeepLearning、楽しんでますかぁーーー!

みなさん「.........(^ω^#)ビキビキ」

え、GPU搭載の計算環境がなくて全然楽しめてない?

そんなときはAWSでEC2インスタンスを立ち上げて爆速計算環境を手に入れよう!!!!

ということで今回はAWSでEC2の立ち上げからChainerのインストールまでの作業手順をまとめてみたいと思います

EC2インスタンスの立ち上げ

EC2インスタンス立ち上げの前にregionを選択します。

regionによってだいぶ値段が違うので、現在どのくらいの値段なのか気になる方は、料金 - Amazon EC2 | AWSの「オンデマンドインスタンス価格」の欄を見ると参考になります。

値段をそんなに気にしない方はTokyoリージョン、少しでも安いのがいい人はOregonリージョンで行きましょう。僕はOregonリージョンにしました。

次にインスタンスの立ち上げです。Services(左上) > EC2 > Launch Instance > AWS Marketplace > 検索欄で「NVIDIA」と検索 > 「Amazon Linux AMI with NVIDIA GRID GPU Driver」を選択 > Typeは「g2.2xlarge」を選択 > Launchをクリック!

LaunchをクリックするとKey pairを選択する画面が出現しますので、「Create a new key pair」を選択してKey pairを新規作成します。Key pairとはAWSで作成したインスタンスにアクセスするために必要なドアの鍵のようなものです。ドアの鍵をなくしたらドアは絶対に開けれません。ダウンロードしたキーはなくさないようにしましょう。$HOME/.ssh配下においておくのがおすすめです。

うまくいけばそれでインスタンスが立ち上がるはずです!

なんか2時間待てとか言われる

AWSアカウントを作成したばかりだと2時間くらいはEC2インスタンスが立ち上げられないことがあるそうです。オッケーされるまで待ちましょう。

インスタンスの利用上限枠が0なのでインスタンスを立ち上げられませんと言われる

Services(左上) > EC2 > Limitsよりg2.2xlargeの Current Limitが0になってる方は、右隣のRequest limit increaseより上限を1つか2つ上げてもらうようお願いしましょう。多分ですが、日本語でも聞いてもらえると思います。

インスタンスの立ち上げが終わった方は下記のコマンドでアクセスしてみましょう

ssh -i [ダウンロードしてきた.pemファイル] ec2-user@[EC2インスタンスのIPアドレス]

うまく接続できればEC2インスタンスの立ち上げは終了です

cuDNNのインストール

cuDNNとは、めちゃくちゃざっくり言うとDeepLearningの計算スピードをあげてくれるライブラリのことです。

NVIDIA cuDNN | NVIDIA Developerより、ユーザ登録をしたあと、CUDAのVersionにあったcuDNNをローカルのPCにダウンロードしてきます(先程立ち上げたインスタンスには既にCUDAがインストールされています。/opt/nvidia/cuda/version.txtを見ればCUDAのバージョンが分かります)。

ダウンロードが終わったら、下記コマンドでEC2インスタンスにアップロードしましょう。

scp -i [ダウンロードしてきた.pemファイル] アップロードしたいファイル ec2-user@[EC2インスタンスのIPアドレス]:~/

cuDNNのインストール手順は以下のとおりです

gzip -dc [filename] | tar xvf -

sudo cp -P ~/cuda/include/cudnn.h /opt/nvidia/cuda/include/

sudo cp -P ~/cuda/lib64/libcudnn* /opt/nvidia/cuda/lib64/

sudo chmod a+r /opt/nvidia/cuda/lib64/libcudnn*
which nvcc

してエラーがでなければcuDNNのインストールは完了です。

参考:nvidia - How can I install CuDNN on Ubuntu 16.04? - Ask Ubuntu

Chainerのインストール

sudo pip install chainer

サンプルコードをダウンロード&実行

wget https://github.com/pfnet/chainer/archive/v1.15.0.1.tar.gz
tar xzf v1.15.0.1.tar.gz
python chainer-1.15.0.1/examples/mnist/train_mnist.py --gpu 0

エラーがでずに2~3分で計算が終われば環境設定は終了です。

使い終わったら忘れずインスタンスを消しましょう

EC2 > Instances > Actions >Instance state > Stop

さいごに注意点

  • AWSは従量課金制です。EC2インスタンスをつけっぱなしにすると1日で2000円くらいの損失がでてしまいます。また、EC2で利用するストレージや通信料など、さまざまな課金対象がありますので心配な方は今回作成したインスタンスをTerminate(削除)しておくのが一番安全です。

  • 僕はまだ計算に利用しますので、ひとまずEC2をStopして保持してみることにしました。おそらく利用しなくても月数百円のコストがかかっていくと思います。

  • また、今回紹介した方法は僕の作業ログなので自分で作業する際は自己責任でお願いします

  • やってみたいけど不安で怖い!って方は僕がどんどん手伝いますので質問等ありましたらガンガン連絡ください!

それではみなさま良いDeepLearningライフを!

テキストベースの数値データをグラフにplotして視える化するまでの3つの方法

今回次のようなタブ区切りのテキストベースのデータを用いてグラフで視える化するまでに3つの方法を試しましたので紹介します

Id  Content
1   33  
2   70  
3   43  
4   60  
5   98  

なお実行環境はUbuntu16.04ですが、今回紹介する3つの方法はMacOSXWindowsでも動作すると思います。

1. Python + Pandas + Matplotlib + Jupyter

コード

import matplotlib.pyplot as plt
import pandas as pd

# データの読み込み
f = open("test.txt", "r")
hoge = pd.read_table(f, index_col='Id')
f.close()

hoge.plot()

出力結果

f:id:kaoru6strings:20160909092015p:plain

所感

  • 実際コードにしてみるとそんなに長くないけど、いろいろ試してうまくいくまでに結構時間がかかった
  • 複雑なデータ解析をするときは役にたちそうだけど、軽いデータを取り扱うには重めの環境だと感じた
  • もしかしてPandas使わなくてももっと簡単にプロットできたのかもしれない・・・
  • Jupyterの保存形式でまるまる作業内容を保存できるのは嬉しい!

2. R + Rstudio

コード

# headerがあるときはheader=Tで認識してくれるらしい
x <- read.table("~/Desktop/test.txt", header=T)
# type="l"で折れ線グラフで表示させる
plot(x, type="l")

出力結果

f:id:kaoru6strings:20160909092936p:plain

所感

  • に、二行だと!!手軽に自分でデータを確認したいときにピッタリじゃないか!?
  • あと細かいデータを確認したいとき、Rstudioのウィンドウを引っ張ってぐいっと引き伸ばすとグラフもぐいっと引き伸ばされるのは個人的に嬉しい機能でした

3. gnuplot

データの前処理

予めヘッダ行をコメントアウトしておきます

# Id  Content
1   33  
2   70  
3   43  
4   60  
5   98  

コード(というかコマンド)

gnuplot
plot "test.txt" with line


# 画像を保存する場合はこちら(20161209追記)
set terminal png # 保存形式を指定
set output 'test.png' # 保存するファイル名を指定
plot "test.txt" with line

出力結果

f:id:kaoru6strings:20160909095454p:plain

所感

  • gnuplot内部のコマンドでもある程度はデータ整形できるけど、いったんlinuxのコマンドで中間ファイル作ってからグラフを描画するほうがやりやすそう?
  • Linuxのコマンドと親和性が高いので個人的にテンションあがりました!

まとめ

今回は素早く数値データのプロットをして視える化するのが出口だったので、Rstudioがベストプラクティスでした。

取り組む作業の出口によってベストな解法は変わると思いますので、いろいろなツールをかじっておくといいことがあるかもと思いました。

今日のひとこと

自分で作業していて、なんだかもやもやするときグラフにプロットしてみると以外な発見があるかも!

それではまた!

Vimでなんか知らんが便利なCtrl+r+=で四則演算ができちゃうお話

みなさんこんにちは!今回はvimで四則演算の結果を手軽に貼り付けることのできる機能のお話です。

インサートモード時に

Ctrl+r=11+22

とすると、カーソルの場所に演算の結果"33"がそのまま貼り付けられる素晴らしい機能がVimには標準でついてます。

pythonインタプリタやbcコマンドを使って演算をした後コピペなどが原因で起こるヒューマンエラーをなくすことができるので、とても重宝する機能だと思います。

とっても便利なこの機能、わけもわからず使っていたのですが、、、調べてみたところExpressionレジスタという演算機能を持った特殊なレジスタとのことです。

そもそも、インサートモードの時に Ctrl+r+レジスタ名 でレジスタの中身を利用することができるみたい。

試しに "ayy で任意の行をaキーのレジスタにヤンクしたあとインサートモードで Ctrl+r+a を押してみたら、ヤンクしてきた任意の行がペーストされました。いやーこれは気づけてよかった!超便利!

Pandasとscikit-learnで基本的なクラスタリング分析やってみた

みなさんこんにちは!今回はこちらの記事を参考にPandasの取り扱い方を勉強したので作業メモします!

qiita.com

記事のサンプルコードを一通り通したあとにPandasのデータフレームにして3科目の合計点をカラムに追加したところまでです。

# pandasモジュールの読み込み
import pandas as pd
# pandasのオブジェクトにして結合とデータフレームの概要の確認
pd_labels = pd.DataFrame(labels)
pd_features = pd.DataFrame(features)
df.info()
temp_df.info()
# カラムの結合
df_concat = pd.concat([pd_labels, pd_features], axis=1)
df_concat
# カラムのヘッダが0,1,2,3という名前になっていたので、df_concat.columnsで一気に名前変更
df_concat.columns = ['Cluster', 'Japanese', 'Math', 'English']
df_concat
# 3科目の点数の合計値を計算して追加
df_concat["sum"] = df_concat[["Japanese","Math", "English"]].sum(axis=1)

次回はこのデータを使ってグラフとか出してみるテストする予定です。

それでは!

オープンソースコミッターになったった!( ・`д・´)

ついに俺もオープンソースコミッターになったったのでご報告だぜー!ヒャッハーウオオオオアアアア( 'ω')/アアアアアッッッッ!!!!!

とあるツールのHow to useの欄にtypoがあったので報告しました。

github.com

こちらのツール、バイオインフォマティクス界隈では有名なblastnという塩基配列の相同性を見つけるソフトを高速化させることのできるツールとなっています。

typoの報告がこちら

github.com

作者氏> I have corrected the typos. Thanks for reminding!

中西、ついにやりました!!! OSSコミッターになるのが長年の目標だったのでひとまずは目標達成です〜(´ω`)

GithubでのOSS活動にはプルリクというものがあるらしいのでそちらもコードの修正とかも送れるようになるのが次の目標です。

あと流暢な英文が書けるようになるのも目標です。。。

いやー。感謝されるって気持ちのいいものですね!

これからもいつもお世話になってるOSSに還元できるようにOSS活動頑張って行きたいと思います。