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

PredictionIO構築入門

 PredictionIO構築入門

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

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として返却される(予測成功!))