Prefectに関して
imperfectに語る
@notrogue
言いたいこと
● Airflowというワークフローエンジンが一番流行ってそうだよ
● でも、Prefectというワークフローエンジンが推しだよ
○ Better Airflow感がある
● プロダクションで使ったことないので「君の目で確かめてくれ」なお気持ち
前段
ワークフローエンジン?
● 一言でいうとすごいcron
● 「ワークフロー管理ツールは、主として次のような機能を提供します。」
○ 「タスクを定期的なスケジュールで実行し、その結果を通知する」
○ 「タスク間の依存関係を定めて、決められた順にもれなく実行する」
○ 「タスクの実行結果を保持し、エラー発生時は再実行出来るようにする」
(ビッグデータを支える技術 P182)
● 愉快な仲間たち
(JP1とかHinemosも?)
ワークフローエンジン(Airflow)のイメージ(1)
https://airflow.apache.org/docs/stable/ui.html
具体的なタスク
(ワーカーで処理される Pythonコード)
タスクの間の依存(成功した後・失敗した後・並
列で出来る…)の定義(DAG)
ワークフローエンジン(Airflow)のイメージ(2)
https://airflow.apache.org/docs/stable/ui.html
過去の履歴が見れる
(&再実行とかも出来る)
比較
● 機能的には大きくは優劣ないのではなかろうか【要出典】
● トレンド的にはAirflowが有利そう?
○ 後発のPrefect頑張ってる感
○ 今日はAirflow/Prefectの話をします
開始(Github) watch start Fork
Airflow 2014 706 18k 7k
Prefect 2017 129 5k 355
DigDag 2015 139 1k 158
Luigi 2011 515 13k 2k
Githubリポジトリの状況
中段
Airflow
● https://airflow.apache.org/, https://github.com/apache/airflow
● いい点
○ Pythonでタスク・タスクの間の依存書ける
■ 動的にタスクの間の依存作ったり、複雑なことも出来る
○ いろいろなプラグインが提供されているので、コード少なくてすむ(かも)
■ 通知(メール/Slack/http…)
■ AWS/GCPのサービス(…)
○ マネージド・サービスがある
■ GCPのCloud Composerと 専業のAstronomer.io
○ 情報が多い
● つらい点
○ 後述
使ってみるわかるAirflowつらみ
● 動的なDAG(特にループ)
○ 出来るが不器用な感じ(履歴の扱いとか)
● タスク間のデータの受け渡し(xcom)
○ サイズ制限がある…ずっと残る…タスクの依存と無関係 …
● スケジューラーが単一障害点
○ 単一のプロセスが、DAGをパースして・DBを見て・DAG/タスクのスケジュール設定する
○ 解決しようと、頑張っている人もいる
■ https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103092651
■ http://site.clairvoyantsoft.com/making-apache-airflow-highly-available/
● タスクが増える(~千のオーダー)と画面やスケジューラが…
○ =>タスクをまとめれば解決するが、リトライの粒度が大きくなる …
● DAGのコード管理
○ 名前変えるしかない
細かい話が多いが
ちょいちょいストレス
本題
Prefect
● https://www.prefect.io/ https://github.com/PrefectHQ/prefect
○ マネージドサービス: Prefect Cloud
○ OSSの部分:Prefect Core
● AirflowのPMC&コミッターが始めた、新たなワークフローエンジン
● Better Airflowのアピールしている
○ https://medium.com/the-prefect-blog/why-not-airflow-4cfa423299c4
○ https://softwareengineeringdaily.com/2020/04/29/prefect-dataflow-scheduler-with-jeremiah-low
in/
● (余談)銀河ヒッチハイク・ガイドネタが時々出てくる
○ (フォード・プリーフェクトという登場人物が出てくる SFです)
Airflowのツラミの解決
● 動的なDAG(特にループ)
○ 変化したら過去の履歴が …
○ DAG間の依存…
○ タスクが増える(~千のオーダー)とUIやスケジューラが…
● タスク間のデータの受け渡し
○ サイズ制限がある…ずっと残る…タスクの依存と無関係 …
● スケジューラーが単一障害点
● DAGのコード管理
○ 名前変えるしかない
=> Map/Reduceをサポート
=> カスタマイズ可能に※
=> 分権化(※※)
=> Versioningをサポート
※PrefectCloud提供のDB、Azure Blob・GCS・S3をデータの受け渡しに使える他、自前でも書ける
※※Agent(複数)がDAGの情報をAPIからpullして、それぞれのEnvironmentでDAGのパース・スケジュールする感じ
に
その他のAirflowとの違い
● Hybrid Model
○ メタデータ(処理の履歴など)の管理・ Web UI・APIなどは、Prefect Cloud
○ ワーカー・コードの置き場などは、ユーザーの管理
○ =>コードやデータを Prefect Cloudに渡さずにすむ
事例
● JX通信社さん
○ 知ってる限り日本唯一・初
○ https://tech.jxpress.net/entry/dataplatform-etl
○ Airflow/Luigiと比較して、好意的なレビュー
● SymphonyRM
○ アメリカのヘルステック企業
○ https://www.prefect.io/case-studies/Prefect%20-%20SymphonyRM%20Case%20Study.pdf
● PrefectのWebサイトに掲載されている会社はたくさんある(次ページ)
○ ロゴはあるが詳しい事例はないので不明 …
○
https://www.prefect.io/に掲載されてるロゴ
懸念
● (私が)本番で使ったことがない
○ 運用・開発してわかるツラミってあるよね
○ 前述のAirflowのツラミが本当に解決したかも、実は不明
● (日本語の)情報はAirflowより少ない
● 環境が柔軟なので、設定が大変そう
○ Environment・Executor・Agent・Resultなどの新しいコンセプトの理解が必要
○ および、それを組みあわせて、自分の環境を考えないといけなさそう

More Related Content

PDF
失敗から学ぶ機械学習応用
PPTX
畳み込みニューラルネットワークの高精度化と高速化
PPTX
学習時に使ってはいないデータの混入「リーケージを避ける」
PDF
2 6.ゼロ切断・過剰モデル
PPTX
モデル高速化百選
PDF
新分野に飛び入って半年で業績を作るには
PPTX
StyleGAN解説 CVPR2019読み会@DeNA
PDF
最近のDeep Learning (NLP) 界隈におけるAttention事情
失敗から学ぶ機械学習応用
畳み込みニューラルネットワークの高精度化と高速化
学習時に使ってはいないデータの混入「リーケージを避ける」
2 6.ゼロ切断・過剰モデル
モデル高速化百選
新分野に飛び入って半年で業績を作るには
StyleGAN解説 CVPR2019読み会@DeNA
最近のDeep Learning (NLP) 界隈におけるAttention事情

What's hot (20)

PPTX
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
PDF
研究発表のためのプレゼンテーション技術
PDF
Optimizer入門&最新動向
PPTX
backbone としての timm 入門
PDF
画像認識における特徴表現 -SSII技術マップの再考-
PDF
最適輸送入門
PDF
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs
PDF
時系列予測にTransformerを使うのは有効か?
PDF
ブレインパッドにおける機械学習プロジェクトの進め方
PPTX
画像処理AIを用いた異常検知
PDF
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
PDF
【DL輪読会】GPT-4Technical Report
PPTX
[DeepLearning論文読み会] Dataset Distillation
PDF
機械学習のためのベイズ最適化入門
PDF
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
PDF
CV分野におけるサーベイ方法
PPTX
CatBoost on GPU のひみつ
PDF
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
PDF
Data-Centric AIの紹介
PDF
POMDP下での強化学習の基礎と応用
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
研究発表のためのプレゼンテーション技術
Optimizer入門&最新動向
backbone としての timm 入門
画像認識における特徴表現 -SSII技術マップの再考-
最適輸送入門
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs
時系列予測にTransformerを使うのは有効か?
ブレインパッドにおける機械学習プロジェクトの進め方
画像処理AIを用いた異常検知
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
【DL輪読会】GPT-4Technical Report
[DeepLearning論文読み会] Dataset Distillation
機械学習のためのベイズ最適化入門
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
CV分野におけるサーベイ方法
CatBoost on GPU のひみつ
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
Data-Centric AIの紹介
POMDP下での強化学習の基礎と応用
Ad

Prefectに関して imperfectに語る