Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PredictionIO構築入門

 PredictionIO構築入門

PredictionIOの構成とインストール方法について説明します。

Avatar for Shinsuke Sugaya

Shinsuke Sugaya

July 03, 2017
Tweet

More Decks by Shinsuke Sugaya

Other Decks in Technology

Transcript

  1. Sparkのインストール PredictionIOはSpark 1.6と2.1をサポートしている (Spark 1.4以上に対応しているが、個人的には1.x系は捨てたい…) 今回はSpark 2.1.1をインストールする $ cd /opt

    # 今回の例では/opt以下に入れる想定 $ wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.6.tgz $ tar zxvf spark-2.1.1-bin-hadoop2.6.tgz $ cd spark-2.1.1-bin-hadoop2.6 $ echo "spark.locality.wait.node 0s" > conf/spark-defaults.conf ↑Standalone版での回避策
  2. データソースの準備 イベント/メタデータにElasticsearch 5.4.2を利用する (構築が一番簡単なので…) モデルデータの保存にはファイルシステムを利用する $ cd /opt $ wget

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.2.tar.gz $ tar zxvf elasticsearch-5.4.2.tar.gz $ cd elasticsearch-5.4.2 $ ./bin/elasticsearch &
  3. PreidctionIOのインストール 現在、バイナリとしての配布物がない… (Apacheでの提供する際のライセンス問題を解決していないので…) GitHubから取得して、まずビルドする $ cd /opt $ git clone

    https://github.com/apache/incubator-predictionio.git $ cd incubator-predictionio/ $ ./make-distribution.sh \ -Dscala.version=2.11.8 \ -Dspark.version=2.1.1 \ -Dhadoop.version=2.6.5 \ -Delasticsearch.version=5.4.2
  4. PreidctionIOの設定 設定ファイルconf/pio-env.shを修正する $ vi conf/pio-env.sh SPARK_HOME=/opt/spark-2.1.1-bin-hadoop2.6 PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=ELASTICSEARCH PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch

    PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9200 PIO_STORAGE_SOURCES_ELASTICSEARCH_SCHEMES=http PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs PIO_STORAGE_SOURCES_LOCALFS_PATH=$PIO_FS_BASEDIR/models 以下のように変更する
  5. PreidctionIOの確認 pio statusを実行して、エラーが出なければOK $ ./bin/pio status … [INFO] [Management$] Apache

    Spark 2.1.1 detected [INFO] [Management$] Inspecting storage backend connections... [INFO] [Storage$] Verifying Meta Data Backend (Source: ELASTICSEARCH)... [INFO] [Storage$] Verifying Model Data Backend (Source: LOCALFS)... [INFO] [Storage$] Verifying Event Data Backend (Source: ELASTICSEARCH)... [INFO] [Storage$] Test writing to Event Store (App Id 0)... [INFO] [Management$] Your system is all ready to go.
  6. イベントサーバの起動 pio eventserverコマンドで起動する これによりREST APIで訓練例を登録できる $ ./bin/pio eventserver & …

    [INFO] [HttpListener] Bound to /0.0.0.0:7070 [INFO] [EventServerActor] Bound received. EventServer is ready.
  7. アプリの登録 PredictionIOにアプリの登録をする $ pio app new TEST_APP # TEST_APPという名前のアプリを登録 "appName":

    "TEST_APP" アクセスキーが発行される(pio app listで確認可能) テンプレートのengine.jsonのappNameを更新する
  8. 学習対象データの登録 data/data.txtにある訓練例をイベントサーバに登録 $ python data/import_eventserver.py --access_key=XXXXX Importing data... 153 events

    are imported. 0,51 35 12 $ curl -XGET "http://localhost:7070/events.json?accessKey=XXXXX” 今回のデータ例:(クラス,属性…) 登録されたデータの確認
  9. 予測 pio deployで予測サーバを起動する $ pio deploy & … [INFO] [MasterActor]

    Engine is deployed and running. Engine API is live at http://0.0.0.0:8000. $ curl -H "Content-Type: application/json" -d '{"attr0":90,"attr1":15,"attr2":73}' \ http://localhost:8000/queries.json {"label":3.0} data/data.txtのデータを投げてみる (たとえば、「3,90 15 73」の場合、3がlabelとして返却される(予測成功!))