Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TFX: A TensorFlow-Based Production-Scale Machine Learning Platform #25

Open
takapy0210 opened this issue Nov 6, 2020 · 2 comments
Open
Labels

Comments

@takapy0210
Copy link
Owner

takapy0210 commented Nov 6, 2020

Meta

どんなもの?(3行ぐらいで)

  • Google で実装した機械学習パイプライン(TFX)をGoogle Playにプラットフォームを導入した事例を紹介し、このプロセスで得られた教訓について議論している
    • 機械学習パイプラインのコンポーネントごと( data analysis, data transformation, data validation, trainer, model analysis, serving )で、それぞれどのような役割があるか
    • TFXの導入方法など

TensorFlow Extended (TFX) is ...

  • 機械学習パイプラインの設計思想
  • 設計思想に基づいて機械学習パイプラインを実装するためのフレームワーク
  • フレームワークの各コンポーネントで用いられるライブラリ
    のいずれかを表す

機械学習パイプラインの設計思想がかなり参考になると思い読んだ。

機械学習の運用フレームワークに必要なもの

  • 多くの学習タスクを単一プラットフォームで実行できること (One ML platform for many learning tasks)
  • 継続的な学習とリリース (Continuous training and serving)
  • 人間参加型 (Human-in-the-loop)
  • プロダクトレベルの信頼性とスケーラビリティ (Production-level reliability and scalability)

キモはどこ?

  • 機械学習パイプラインを下記のコンポーネントに分割し、TFXでカバーできる部分について思想を述べている。ここは参考にできそう。
    • Data Analysis
    • Data Transformation
    • Data Validation
    • Trainer
    • Model Evaluation & Validation
    • Serving

image

1. Data Analysis

ここでは機械学習パイプラインに投入するデータにについて、様々な分析を行う。データに含まれる特徴量の数や、特徴量ごとの欠損値の有無、各特徴量の各種統計量を計算し記録することで、入力されたデータがどのような分布をしているのかを把握する

2. Data Transformation

ここではいわゆる前処理で、例えば、カテゴリカルな値にIDを割り振るといった処理はここに含まれる。このコンポーネントを学習時と推論時に使うことで、推論時には学習時と違う処理が行われてしまってうまく動かないことを防げる。

3. Data Validation

入力されているデータに対しての検証を行う。機械学習パイプラインにはデータが継続的に投入されるので、様々な事情でデータの形式や分布は変わってくる。このコンポーネントでは予めデータのスキーマを定めておくことで、新たに投入されたデータがそのスキーマに合致しているかどうかを検証する。
image

4. Trainer

ここでは機械学習モデルを訓練させる。

5. Model Evaluation & Validation

ここではモデルの評価と妥当性の確認を行う。過去データを対象にしたオフラインテストを行い AUC などの指標が適切な範疇にあるかを評価する。また、カナリアリリースを行い、モデルが適切な振る舞いをしているかモニタリングする。

6. Serving

ここではモデルを本番環境にデプロイする。

どうやって有効だと検証した?

TFXをGoogle Playアプリストアに導入し、デプロイまでの時間を短縮することで、アプリのインストール率を2%向上させることに成功しています。(たくさん実験できた結果、ってことかな)

自分なりのアウトプット・どんなことに使えそうか

  • 自前で機械学習パイプラインのプラットフォーム作るのは結構骨が折れるので、こういったオープンプラットフォームに乗っかるのは全然ありだよなー(巨人の肩に乗る的な)
@takapy0210
Copy link
Owner Author

ABSTRACT

機械学習モデルを確実に生成し、展開するためのプラットフォームを作成し、維持するには、学習データに基づいてモデルを生成するための学習者、データとモデルの両方を分析し、評価するためのモジュール、そして最終的には本番でモデルを提供するためのインフラストラクチャなど、多くのコンポーネントを慎重に、または協調させる必要があります。 これは、データが時間の経過とともに変化し、新しいモデルを継続的に生成する必要がある場合に特に重要になります。 残念なことに、このようなオーケストレーションは、特定のユースケースのために個々のチームが開発したグルーコードやカスタムスクリプトを使用してアドホックに行われることが多く、重複した作業や、技術的な負債を抱えた脆弱なシステムにつながっています。 前述のコンポーネントを1つのプラットフォームに統合することで、構成要素の標準化、プラットフォーム構成の簡素化、本番までの時間を数ヶ月から数週間に短縮することができ、中断を最小限に抑えるプラットフォームの安定性を実現しました。 TFXを導入することで、カスタムコードの削減、実験サイクルの短縮、データとモデル解析の改善によりアプリのインストール数が2%増加するなどの効果が得られました。

@takapy0210
Copy link
Owner Author

takapy0210 commented Nov 6, 2020

INTRODUCTION

現代のコンピューティングにおける機械学習の重要性を強調するのは難しい。 推薦システム[6,7]から広告のクリックスルー予測[13,15]、さらには絶滅危惧種の保護[5]に至るまで、幅広いユースケースや製品のデータから知識を得るためのツールとして機械学習を採用する組織が増えています。 しかし、実際のワークフローは、機械学習を本番環境に導入する必要がある場合には、より複雑になる。 この場合、学習者とモデルとともに機械学習プラットフォームを構成するコンポーネントが必要となる。 これらのコンポーネントは、本番で起こりうる多様な障害に対処し、モデルのトレーニングとサービスが確実に行われるようにするためのオートメーションを提供します。 このタイプの自動化を構築することは容易ではなく、次のような複雑な問題を考慮すると、さらに困難になります。

  • 様々な学習タスクのために機械学習プラットフォームを構築する。 製品は、データ表現、ストレージ基盤、機械学習タスクの観点から、実質的に異なるニーズを持つことができます。 機械学習プラットフォームは、学習タスクの最も一般的なセットを扱うのに十分な汎用性があるだけでなく、ワンオフの非典型的なユースケースをサポートするために拡張可能でなければなりません。

  • 継続的な学習と提供 このプラットフォームは、固定データ上で単一のモデルをトレーニングする場合だけでなく、進化するデータ(例えば、ログストリームの最新日の移動窓)上で連続的にトレーニングを行い、最新のモデルを生成して提供する場合もサポートしています。

  • ヒューマンインザループ。 機械学習プラットフォームは、最小限の設定でプラットフォームの展開と監視が簡単にできるように、シンプルなユーザーインターフェースを公開する必要があります。 さらに、さまざまなレベルの機械学習の専門知識を持つユーザーがデータやモデルを理解し、分析できるようにする必要があります。

  • 本番レベルの信頼性とスケーラビリティ。 プラットフォームは、一貫性のないデータ、ソフトウェア、ユーザーの設定、および実行環境の障害による中断に対して、回復力を持つ必要があります。 さらに、プラットフォームは、トレーニングで一般的な大量のデータ量や、サービングシステムへの本番トラフィックの増加にも柔軟に対応できるようにしなければなりません。

このようなタイプのプラットフォームを持つことで、チームは本番環境に機械学習を簡単に導入することができ、プラットフォームのさまざまなコンポーネントのベストプラクティスを保証し、異なるコンテキストで再利用できない単発の実装に起因する技術的な負債を制限することができます。

本稿では、エンドツーエンドの機械学習プラットフォームの解剖学を紹介し、前述の課題に対処するためにGoogleで構築したTensorFlow Extended(TFX)を紹介する。 プラットフォームの主要な構成要素とその設計・機能の特徴を説明する。 また、10億人以上のアクティブユーザーと100万本以上のアプリを持つ商用モバイルアプリストアであるGoogle Playにプラットフォームを導入した事例を紹介し、このプロセスで得られた教訓について議論する。 これらの教訓は、多様な文脈での機械学習プラットフォームのベストプラクティスを反映しており、この分野の研究者や実務家にとっては一般的な関心事である。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant