Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

2,451 views

Published on

2019年4月16日(火)開催「PyData.Tokyo Meetup #19 SysML」の発表資料。
データ活用施策を実サービスに組み込むには、データサイエンス・機械学習のスキルだけでなく、エンジニアリングスキルも必要です。そのため、毎回データサイエンティスト・エンジニアの工数が発生して施策がスローダウンしたり、そもそも実施を諦めることてしまうことも少なくありません。私たちリクルートライフスタイルの CET チームは、この問題を解消するため、データ活用のための統一基盤を開発・運用しデータサイエンティストだけで施策を実施できる環境を整えています。本セッションでは、その基盤がどのように構築されているのか、また実際にどのような施策が実施されているのかを具体的にご紹介します。
https://pydatatokyo.connpass.com/event/123479/

Published in: Engineering
  • Be the first to comment

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

  1. 1. デ ータ サイ エン ティ スト が力 を発 揮で きる ア ジャ イル デー タ活 用基 盤 株 式 会 社 リ ク ル ー ト ラ イ フ ス タ イ ル デ ー タ エ ン ジ ニ ア リ ン グ グ ル ー プ 田 村 真 一 Meetup #19 SysML
  2. 2. 田村 真一 • リクルートライフスタイル データエンジニアリンググループ (CET チーム) • 主な業務内容 ‣ データプロダクトの開発・運用 ‣ 機械学習を活用した案件の実装 ‣ 対話型検索サービスの開発 @tmshn @reto_nayuta tamurashinichi tmshn $ whoami
  3. 3. リクルートホールディングス “統合報告書2018” https://recruit-holdings.co.jp/who/reports/ リクルートグループのビジネスモデル
  4. 4. 「日常消費領域」を扱うため「顧客接点」が豊富 リクルートライフスタイルの提供サービス例
  5. 5. データ サイエンティスト エンジニア データプランナー “CET” (Capture Everything) Team データプランナー・データサイエンティスト・エンジニアで構成され、 データ × テクノロジー(データプロダクト)による「価値創出」がチームミッション デ ー タ プ ロ ダ ク ト input output CET Team https://pt.slideshare.net/RecruitLifestyle/meetup7 SlideShare にて詳細公開中!
  6. 6. まずはデモを
  7. 7. この推薦システムの全体像 (0.2, 0.1, ..., 0.5) (0.3, 0.2, ..., 0.5) (0.8, 0.3, ..., 0.1) (0.5, 0.3, ..., 0.4) (0.4, 0.15, ..., 0.35) オマエ、絶対コレ好キ! (0.3, 0.1, ..., 0.4) = ID: 9999 リアルタイムログ API 機械学習 API アイテム情報 API Backends For Frontends API ML 分析/モデリング 基盤 ① ② ③ 同期 非同期 ベクトル化 ベクトル演算 類似アイテム検索 アイテム情報検索
  8. 8. Embedding: Item Embedding by word2vec 閲覧セッション(or 予約履歴)中のアイテムの前後に 出現するアイテムの出現確率を用いてベクトル化 意味が近いアイテム(ベクトル)は、周辺のアイテムも 似ているはず 似テル! 似テナイ! 閲覧・予約 注意 Embedding に利用する情報はアイテム IDに関するセッションデータ(時系列順 に並んだ閲覧などのアイテムID)だけ! Word ⇒ Item ID Sentence ⇒ Session of IDs
  9. 9. Embedding のメリット ベクトル化されたアイテムの演算が可能 ユーザの直近の複数閲覧・予約アイテムを演算(例えば加重 平均)した結果から、アイテムの推薦ができるようになる 閲覧・予約 (0.2, 0.1, ..., 0.5) (0.3, 0.2, ..., 0.5) (0.8, 0.3, ..., 0.1) (0.5, 0.3, ..., 0.4) (0.4, 0.15, ..., 0.35) オマエ、絶対コレ好キ!(0.3, 0.1, ..., 0.4)
  10. 10. こういう施策をいっぱいやるの 大変じゃないですか?
  11. 11. データプロダクトのライフサイクル • 企画〜運用までのイテレーションを通して事業に貢献 企画・分析・モデリング・開発・運用…… 全体として多数のステップからなり、幅広い技能が要求される 企画・ プレ分析 データ開発 モデリング API 開発 AB テスト とその評価 本番運用 エンハンス 予約入力での 離脱率下げたい 過去ログ使って LightGBM で分類 モデルを… GAE で Flask と Datastore 使って… 新規ユーザに絞れば CVR が有意に改善! 日次バッチがコケたから メモリ増やして再実行
  12. 12. 施策1つを回すのに、データサイエンティストとエンジニアの (まったく毛色の違う)作業が必要 → コミュニケーションコストや工数の増加によりイテレー ションが遅くなる、作りっぱなしのモデルが出る……etc なにが辛いのか?
  13. 13. さまざまなデータ活用案件に柔軟に 応用可能なプラットフォームを用意 エンジニアによる都度開発を最小限 におさえ、スムーズな施策イテレー ションを実現しています
  14. 14. API の世界
  15. 15. ユーザ行動ログをブラウザからリア ルタイムに取得し連携する API 現在は Ad o be DataF eed を利用 しているが、さらなる低レイテン シーを求めて独自の web ビーコン も開発中 Hacci API
  16. 16. Key- value のシンプルな API (v alue は 任 意 の JSON を返せる) CSV ファイルを S 3 にアップロード するだけでデータロードできる 汎用 API バ ッ チ 基 盤 か ら P a n d a s D a t a F r a m e を 書 き 込 ん だ り ( S D K を 用 意 ) df.to_api(...) B i g Q u e r y の ク エ リ 結 果 を 書 き 込 ん だ り ( S Q L と Y A M L を G i t h u b に 置 く だ け で 設 定 可 能 ) C l o u d D a t a f l o w で リ ア ル タ イ ム に 書 き 込 ん だ り
  17. 17. 機械学習のオンライン予測を提供する API clo ud pickle で pickle 化した学習済みモ デルを起動時に GCS からロードして利用 リクエスト JSON を DataF rame 化して モデルに渡し、レスポンスを JSON 化 し て 返す cetflow API ・・・ request dispatcher 1 モ デ ル ご と に k 8 s p o d が デ プ ロ イ さ れ 、 そ れ を N g i n x で ル ー テ ィ ン グ し て い る 後 述 の ジ ョ ブ 基 盤 ・ ア ド ホ ッ ク 基 盤 と d o c k e r イ メ ー ジ を 共 通 化 し て い る
  18. 18. CET の API エコシステムはマイク ロサービス的に複数のシステムを組 み合わせて利用できる 集約 API は、Pytho n 1 ファイル 書いて Github に push するだけ で、その BF F API が作れる仕組み 社内の API は SDK を用意 resp = cetflow_serving.call(...) 集約 API ・・・ request dispatcher 1 A P I ご と に k 8 s p o d が デ プ ロ イ さ れ 、 そ れ を N g i n x で ル ー テ ィ ン グ し て い る
  19. 19. オブザーバビリティは基盤側で担保 • 各 API のログは Stackdriver/BigQuery に連携されており、エ ラーログベースのアラートも必要に応じて設定可能 • Istio を用いたシステムメトリクスのモニタリングも完備 • [TODO] 機械学習特有のメトリクスのオンライン評価・アラート の実装(異常検知?) • [TODO] API 利用状況の計測、データリネージュからのバッチの GC
  20. 20. リアルタイムストリームの世界
  21. 21. ログ収集基盤から Clo ud Pub/Sub で受け取ったログ を Clo ud Dataf lo w 集計し、汎用 API に書き込む 現在は Jav a の Beam SDK で開発を行っているが、 メンバーのスキルセットを考え Pytho n 版に移行した い(もしくは Beam SQL ) リアルタイム処理システム
  22. 22. バッチの世界
  23. 23. BigQuery の SQL と YAML ファイルを書くだけでク エリを定期実行し、汎用 API に自動でロードしてくれ る仕組み SQL Farm
  24. 24. ジョブを定期実行する基盤 機械学習モデルのトレーニングから push 通知の送信 まで幅広くカバー Airf lo w でスケジュール・ワークフローを管理し、 GK E 上でジョブを実行(タスクごとにマシンリソース が選択できる) ジョブの大半は YAML の記述だけで完結するように なっている ジョブ基盤 機械学習用途では、 papermill を用いて jupyter no tebo o k を直接実行しており、 さらにモデルの GCS アップロードから API の自動デプロイまで行える(学習精 度に応じてデプロイ可否をコントロールすることも可能)
  25. 25. アドホックの世界
  26. 26. データサイエンティストが自由に分析やモデリングを 行える環境 GK E 上に jupyterhub をデプロイしており、Github アカウントでログインする また jupyterhub 上 か ら 直 接 Github に push できる Jupyterhub G i t h u b で の レ ビ ュ ー 時 は p y t h o n に 変 換 後 の コ ー ド を レ ビ ュ ー し て い る ( 変 換 後 の フ ァ イ ル が な い と C I で 怒 ら れ マ ー ジ で き な い )
  27. 27. ポイント 何か施策をやるたびに基盤の開発が必要なのは辛い データサイエンティストとエンジニアの関心をうまく分離し て、データサイエンティストだけで施策をどんどん実施でき る環境を作ろう!

×