目次
はじめに
今回の記事は下記の記事を読みながら、
Twitterを使ってメモしたものです。
メモ
このNetflixのJupyter Notebookの活用法の記事面白いなぁ。久しぶりにTwitterでメモしてみようかな。 https://t.co/1gLA1N20Qk
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
タイトルは「Netflixにおける、インタラクティブを超えたNotebook革命」かな。Notebookはプロトタイピングや、探索的なデータ解析のデファクトスタンダードになっている。しかし、Netflixではそれを超えた活用法を実現している。この記事ではNetflixにおけるNotebookのインフラと活用法について述べる
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
Netflixにとってデータはパワーである。1.3億人のユーザーのデータは大きなコンテンツとなる。しかしこれは良いことだけでない。Netflixでは1日に一兆回のイベントが発生し、そのデータは100ペタバイトにもなる。これを解析するためのインフラが必要になる。
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
また様々な種類のエンジニアが、様々な言語やツールを使ってそのデータを利用している。しかし、そのような汎用化が難しい状況でも、コードを実行し、データを探索し、その結果を表示するというフローはどの言語においても共通である。そこで出てくるのがJupyter Notebook である。
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
Jupyter Notebookは2014年にスタートしたOSSプロジェクトであり、データサイエンティストの必須ツールとなっている。Jupyterの素晴らしい所としては、言語に依存しないカーネルブラウザ間のメッセージプロトコル、コードと出力、マークダウンに対応した編集可能なファイル、WebベースのUIが挙げられる
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
Netflixでは大きく分けて3つの特徴的なJupyterの使い方をしている。それはデータアクセス、Notebookテンプレート、スケジュール化されたNotebookである。一つ目としては、NetflixではすべてのデータAPIアクセスを実施するPythonライブラリを開発し、これによりJupyterですべてのデータにアクセスできる
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
Notebookテンプレートは、パラメータを入力として起動するNotebookであり、様々な定型処理を可能にする。例えば、パラメータを変えたテストや、様々なクエリを含んだデータのデプロイメント処理、ステークホルダーへの定型データ可視化、トラブルシューティングのEmail送信などである。
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
スケジューリング化されたNotebookは最も強力なものである。これは定期的な処理に対して、自動でNotebookが作成され、実行される。そして実行されたNotebookはコードから、パラメータ、エラーメッセージなどの全てを含んだ永続的なログとして残り、問題が発生した場合はこのファイルから解析ができる。
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
続いて、これらの活用法を支えるインフラについて述べる。一つ目はnteractである。これはReactベースのUIであり、既存のJupyterUIの問題点である、セルのドラッグ&ドロップ、インラインセルツールバー、データエクスプローラなどが追加されている。https://t.co/TvvSEm4N49
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
二つ目はpapermillである。これはNotebook テンプレートに使われるものであり、パラメータを変更したNotebookを複数並列処理できるものである。またその結果を集計する機能も有する。https://t.co/x9j2bYadLG
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
三つ目はcommuterである。これはnotebookの閲覧と共有をする軽量アプリである。これはローカルのファイルやS3にあるNotebookを横断的に閲覧、検索可能にする。https://t.co/byEb81hkAK
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
最後はTitusである。これはコンテナマネージメントプラットフォームであり、AWSと連携して、安定したクラウド環境を構築するものである。https://t.co/645xONkS6O
— Atsushi Sakai (@Atsushi_twi) 2018年9月4日
NotebookのストレージはS3とEFS上に仮想的なファイルシステムとして構築される。それぞれのユーザーがホームディレクトリをもち、その中にNotebookを格納し、リンクを簡単に共有することができる。このような場合、間違ってNotebookを変更してしまうことがあるため、閲覧用にCommuterを使っている。
— Atsushi Sakai (@Atsushi_twi) 2018年9月5日
計算のプラットフォームは、AWS上に構築されており、ユーザはメモリや、CPUなどをフレキシブルに選ぶことができる。加えて、OSSにも積極的に貢献し、利用するようにしている。スケジュール化されたNotebook に関してはこちらの記事を参照してもらいたい。https://t.co/jpytYLUkAC
— Atsushi Sakai (@Atsushi_twi) 2018年9月5日
こんな感じかな、定期処理にNotebook を自動生成して、実行するのはすごいな。。Notebookを外部から変更して、実行するツールを作ってみようかな。
— Atsushi Sakai (@Atsushi_twi) 2018年9月5日
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。