LoginSignup
9
10

More than 5 years have passed since last update.

Pachyderm Introduction

Last updated at Posted at 2019-01-18

image.png

某勉強会で発表した資料ですが、公開します。
Creative Common 4.0 by-sa

1. Pachydermとは?

Pachyderm - Scalable, Reproducible Data Science
https://www.pachyderm.io/

image.png

データ処理のための

  1. データ(トレーニングデータ、モデルデータ含む)のバージョン管理
  2. データ操作パイプライン
    を構築できるフレームワークです。

※有償のEnterprise Edition があります。
Enterprise Editionはダッシュボード機能やアクセスコントロール、ジョブ実行やデータに
ついての詳細統計が取得できます。
今回は、OSSでのPachydermについてご紹介します

2. Pachydermを作った人が困っていたこと

Spark、Hadoopを使っていたが、それらには問題があった

  1. どういうデータが元々あったか?変更途中のデータの履歴がない
  2. どういう風にデータを修正したかという操作履歴がない
  3. 元データに変更があった場合に同じような操作をなんども手動で実施する必要がある

image.png

Fully-Reproducible ML Deployment with Spark, Pachyderm, and MLeap - Databricks
https://databricks.com/session/fully-reproducible-ml-deployment-with-spark-pachyderm-and-mleap

3. Pachydermと他のソリューションとの比較(当時)

image.png

Fully-Reproducible ML Deployment with Spark, Pachyderm, and MLeap - Databricks
https://databricks.com/session/fully-reproducible-ml-deployment-with-spark-pachyderm-and-mleap

4. データがバージョニングされるツールがなかった(当時)

データをバージョニングして、データ操作をパイプライン化するというツールはなかったので、Pachydermの開発者は開発を開始した。

5. Kubeflowとのインテグレーション

Kubeflowプロジェクトに採用予定
image.png

Ref: Kubeflow Project: Deep Dive
https://kccnceu18.sched.com/event/Drnd/kubeflow-deep-dive-david-aronchick-jeremy-lewi-google-intermediate-skill-level

6. Pachydermではどういうことができるか?

image.png

  • データのバージョニング
  • データ処理をコンテナで実行
  • データを分散処理

Pachyderm - Scalable, Reproducible Data Science
https://pachyderm.io/open_source.html

7. 動作例

7-1. 全体像

このようなデータ処理があったとします。
image.png

7-2. リポジトリ(データストア)

データが保存されている場所=リポジトリがあります
image.png

7-3. パイプライン

データを処理する=パイプラインがあります
image.png

7-4. 実行

  1. trainingにデータを入れたら自動的にバージョニングされて、train.scalaが動いて、modelにバージョニングしてデータを保存
  2. testにデータを入れるか、またはmodelにデータが入ったら、score.scalaが動いて、scoreにバージョニングしてデータを保存
    image.png

8. Pachyderm について

  • Pachyderm動作要件

    • Kubernetes
    • Pachyderm
    • S3 compatible storage(option)
  • Pachyderm システム構成要素

    • pachd(Pachydermジョブコントローラー)
    • etcd(ジョブデータ保管)
    • dash(Pachydermダッシュボード)

9. Pachyderm インストール

  • Kubernetesに接続できる環境で

    1. Pachydermコマンド(pachctl)をインストール
    2. PachydermをKubernetesクラスターにpachctl deploy localでデプロイ
  • Pachyderm構成イメージ

image.png

10. Pachydermの使い方(例)

  • Pachydermを使う
    1. データを入れるリポジトリを作る(pachctl create-repo hogehoge)
    2. ファイルをレポジトリーにputする
    3. パイプラインファイルをjsonファイルで作成する
    4. パイプラインファイルを取り込む
    5. 自動的に実行
sample-pipeline.json
パイプラインサンプル
{
  "pipeline": {
    "name": "wordcount"
  },
  "transform": {
    "image": "wordcount-image",
    "cmd": ["/binary", "/pfs/data", "/pfs/out"]
  },
  "input": {
      "atom": {
        "repo": "data",
        "glob": "/*"
      }
  }
}

image.png

11. Pachydermのデータ保存

  • Pachydermをデプロイするときにデータ保存先を指定する
    データは、トレーニングデータ、モデルデータを保存できる
    保存先は、S3 互換のオブジェクトストレージも使える
  • ジョブ実行履歴は、etcdのKVSに入る
    移行や別の場所での確認時には、pachctl extract で明示的にエクスポート、pachctl restoreでインポートする必要がある
  • 実行ジョブのソースコードはコンテナーイメージに入れておくか、コンテナー実行時にソースコードを読み込む必要がある
    (ソースコード修正時のトリガーは別途用意する必要がある)
  • コンテナーイメージ実行時にPachydermのリポジトリデータは、以下のマウントパスで参照できる
    /pfs/<リポジトリ名>
    データ出力ディレクトリは以下のマウントパスにする必要がある
    /pfs/output

12. Pachydermのパイプラインについて

  • パイプライン実行タイミングは、リポジトリが更新された時
  • Pachydermのパイプラインは複数のデータリポジトリを参照できる
  • 実行する処理は、コンテナーイメージを指定
  • 実行する処理はオプションも指定可能
  • パイプラインの並列分散実行も可能
  • sparkやhadoopも呼び出せる
  • cron定期実行も可能
  • リポジトリの更新された新しいファイルのみ処理も可能

13. Pachyderm 情報リンク

まだ日本語での情報は少ない。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10