repro-tech-meetup-7
by
Takeshi Kamada
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ReproのAI機能を支える技術 Repro AI Labs. 鎌田武志 (@take4_k)
Slide 2
Slide 2 text
自己紹介 ● 鎌田武志 (@take4_k) ● 2018 年 6 月 Repro 入社 ● Repro AI Labs 所属 ● WEB アプリケーションエンジニア (!?)
Slide 3
Slide 3 text
今日話すこと ● Repro の ML 基盤について ● 最速で AI 機能をリリースする技術からのリリース後安定化させ るまでの軌跡 ● アルゴリズムの話は出てきません
Slide 4
Slide 4 text
Reproとは
Slide 5
Slide 5 text
Reproでできること ● アナリティクス ( 分析 ) ● マーケティング ○ プッシュ配信 ○ アプリ内メッセージ ○ Web メッセージ
Slide 6
Slide 6 text
Smart Audience™ ● Repro 初の AI 機能 ● キャンペーン対象ユーザーを自動予測 ○ 現在はチャーン予測 ( 離脱しそうなユーザー ) に対応
Slide 7
Slide 7 text
Repro AI Labs. ● データ分析 ● PoC ● ML Ops ● Repro 本体への機能追加
Slide 8
Slide 8 text
アーキテクチャ 最近の CTO の発表もご参照ください
Slide 9
Slide 9 text
ML基盤 ● 予測結果を S3 に転送してクラウドの壁を超える ● 本体とはなるべく粗結合にする
Slide 10
Slide 10 text
Composer(Airflow) ● フルマネージドワークフローオーケストレーションサービス ● GKE 上に Airflow を構築してくれる ● Python で DAG( 有向非巡回グラフ ) を使いワークフローを定義 ○ DAG ファイルは GCS に置くだけ ● スケジュール管理 ● 様々な Operator ● ( UI わかりずらいけど他よりまだマシな気がする)
Slide 11
Slide 11 text
DAG
Slide 12
Slide 12 text
Dataproc ● Spark & Hadoop クラスタのフルマネージドサービス ● GCS コネクタ ● Pyspark など様々な言語に対応 ● Job API がある
Slide 13
Slide 13 text
Datalab ● GCE 上にデータ分析、可視化、 ML のための環境を構築してく れるサービス ● Notebook 形式で使いやすい ● BQ 、 GCS などと簡単に接続できる ● Docker 化されている ● Repro では PoC 用
Slide 14
Slide 14 text
最速リリースのポイント ● 構築が楽なサービスを使った ● Repro 本体の既存の仕組みに乗れた
Slide 15
Slide 15 text
最速でリリースしたツケ ● 前処理・学習・予測全て 1 スクリプト 1 タスクで実行 ○ 途中でコケた時に全て再実行 … ● 処理時間が線形に増加してスケールできない ○ 一時期は 7 時間かかっていた … ● 補足できてないエラーがあった ○ コケていたことに気付かずインシデントに …
Slide 16
Slide 16 text
Dataprocアンチパターン ● Jupyter notebook も scikit-learn もインストールできる ● やろうと思えば ML バッチ処理に使える?! ● でもやらないほうがよい ○ Python 側でマシンリソース使いすぎた時に Spark の Job が落 ちる
Slide 17
Slide 17 text
改善できた理由 ● 今後の AI 機能開発を見据えたチーム増員 ○ アプリケーション ○ インフラ ● AI エンジニアに不足しがちな視点を補完 ( きっとアルゴリズムや 予測精度で頭いっぱいですよね ) ○ システム負荷 ○ 障害対応 ■ 起き辛いコードを書くのも含む
Slide 18
Slide 18 text
推測するな 計測せよ ● 適切にログを追加 ● 通信に無駄に時間がかかっていたのがわかって改善につな がった ○ Spark のキャッシュを使った ○ 転送ファイル圧縮した
Slide 19
Slide 19 text
技術スタックの理解を深める ● 知らないと使えない ● 知ることで監視設定など追加できた ○ Stackdriver Monitoring ■ VM とコンテナの死活監視 ○ Airflow ■ Timeout 設定 ■ Retry の設定
Slide 20
Slide 20 text
雰囲気で運用をやらない ● チームで SLO 設定 ○ エラーだから ASAP で対応→心の余裕 ● Redash のダッシュボード作成 ○ 定期的な振り返りを実施
Slide 21
Slide 21 text
リファクタリング ● 前処理・学習・予測を分割した ● 再実行しやすくなった ● `SocketTimeoutException` がでなくなった
Slide 22
Slide 22 text
まとめ ● アルゴリズムや予測精度だけでなくシステム開発の基本が改め て重要 ● メンバーで補完しあえるチームを作ろう
Slide 23
Slide 23 text
今後やっていきたいこと ● ML 基盤まだまだ伸びしろある ○ Dataproc から ML を剥がしたい ○ もっと良い感じの PoC 環境を作りたい ● もっと AI 機能を作る ○ 課金ユーザーを予測 ○ ユーザー毎の最適なプッシュ配信時間を予測
Slide 24
Slide 24 text
We are hiring!! https://www.wantedly.com/companies/repro/projects