horioの雑記帳

データ分析屋さんが、気の向いた事を色々メモってる雑記帳。

虹色の雲でRを動かす

※この記事は R Advent Calendar 2015 - Qiita の 12日目の記事です。

最近、何故か色々なクラウドで分析のお仕事をしてます(泣)。私の頭は、それぞれの雲の色が入り乱れて真っ黒に?なりそうなので、備忘録がてらに各クラウドでのRの使い方をまとめてみました。

以下の、基本方針や注意事項や

  • 便利なモノは使うに限る。昔はイチから作る気概があった気もしましたが、最近はすっかり易きに…。
  • 各サービスでのアカウントの作り方、料金体系、無料枠の範囲等については、各サービスでの最新情報をご参照ください。
  • 色の表記は私の適当です。公式ではこう言っている、なツッコミはご教示頂ければ幸いです。
  • この色は虹にないぞ、なツッコミは無視しますw
  • (言い訳ですが)12日目を確保した数日後、ドンピシャで週末を全部潰す地方遠征が決定してしまいました…。後で、加筆UPDATEします。

AWS(オレンジ)

  • 後で、19日目の記事にリンクします。

Azure(空色)

最近、見た目や操作方法が大幅に変わり、私は只今大混乱中です…。
なお以下Azureの記述の一部は、既にぞうさん通信(2015/12/7)でも挙げられております。

Rの使い方その1:AzureのVMを使う

極力楽をするとの方針に従えば、Microsoft's new Data Science Virtual Machineで紹介されているとおり、Microsoft Data Science Virtual Machineを使うに限ります。具体的な手順は、以下記事をご参照下さい。
azure.microsoft.com

なお、用意されているものは以下のとおりです。普通に仕事で分析をするには、ほぼ困らなさそうな品揃えです。

Rの使い方その2:Azure Machine Learning(ML)のRノードを使う方法

手軽に高性能のアルゴリズムを使いたい*1、自作APIを作りたい、のときの有力な選択肢と思います。
(少々脱線ですが)12/10に、Azure Stream AnalyticsからAzure MLを操作出来るようになったとの事です。なんかにかこつけて、遊んでみたいと思います。
Azure ML Now Available as a Function in Azure Stream Analytics - Machine Learning - Site Home - TechNet Blogs

ここでは、MLでのRノードでRコードを記述する際の注意点を挙げます。
(後で色々加筆します。長くなったならば、ページを分割します。)

  1. INPUT/OUTPUTは、data.frame形式のみしか受け付けない
  2. Azure ML上で用意されていないpackageを使う際は、依存pakeageも含めて全て、事前にzip形式でUPする必要がある
    • 用意されているpakeage一覧を取得する方法を書く
    • install.packageでのpathの指定方法がややトリッキー(なので、何かしたら上手く成功したのですが、肝心の「何をしたのか」のメモを紛失してしまい、只今大弱り。)
  3. この記述によると、並列実行が出来ない、との事。Azure MLでは、折角A8インスタンスIntel Xeon E5-2670 8コア@2.6 GHz + DDR3-1600 MHz 56 GB)を使っているのに。

参考

Google Cloud Platform(水色+赤+黄色)

GCPでRを立てた経験はないです。易きに流れる、の基本方針に沿うと、こんな記事が良さげに見えました(が、当然実際の検証はしておりません。)
markedmondson.me

IBM BlueMix(水色+黒)

(後で色々加筆します。長くなりそうなので、恐らくページを分割します。)

BlueMixでのPaaSの構成方法

現時点(2015年12月)では、以下の2(+1)通りあります。

  1. ボイラーテンプレートの利用
  2. ランタイム or コンテナ に、APIを乗せる*2
    1. 自作のランタイム or コンテナをUPする
R以前にハマったドツボ

Rの使い方その1:dashDBを使う

  • デフォルトで、dashDB(DB2 ?)+ R Studioが用意済。起動はマウスクリックのみで可能
  • DBとのやりとりは、ibmdbRパッケージを使う

Rの使い方その2:node-REDから使う

  • IoTのセンサーデータ解析なら、これをやりたい!
  • 基本戦略は、dashDBのインスタンスに、POSTコマンドを打つ。結果はDBに保存する
  • DBとのやりとりは、ibmdbRパッケージを使う
注意点
  • sudo権限が無いので、依存関係でsudoを要求するパッケージ(例えばdevtools)は利用できない。痛い
  • 不揮発データは、DBに格納するしかない。node-REDからgetwd()すると、毎回pathが変わるという謎
  • DBのデータが1Gを越えると有料枠に掛かる。dashDBは2015年12月現在で月5250円~、と結構お高い

*1:回帰問題で、RでAzure MLに勝負を挑んだこともありますが、結局勝てませんでしたorz。

*2:ボイラーテンプレートは、既にAPIを乗せているランタイム or コンテナ