632 Views
October 29, 20
スライド概要
2020/10/29 Ltech#11 不動産領域のAI活用最前線 〜初完全リモート開催〜
AI戦略室データサイエンスグループ 島佑介
LIFULL HOME'Sを運営する株式会社LIFULLのアカウントです。 LIFULLが主催するエンジニア向けイベント「Ltech」等で公開されたスライド等をこちらで共有しております。
Kubernetesを利用した機械学習モデ ルの本番適用例 株式会社LIFULL 島 佑介 Copy rig ht© LIF ULL All R ig hts R es erv ed.
自己紹介 島 佑介 2015年入社 マーケティングの部署でバックエンドを実装していましたが、 機械学習の本番適用に関わってみたいと思い異動しました。 APIの実装やインフラ設定などをしています。 技 術 メ モ : h t t p s : //q iit a. c o m /e lyu n im 2 6 ポ エ ム : h t t p s : //n o t e . c o m/e lyu n im 2 6 Copy rig ht© LIF ULL All R ig hts R es erv ed.
1.導入 Kube rnetesを使うにあたった経緯を説明します 2.施策と構成図 今回の施策の概要と全体感を説明します 目次 3.構成上のポイント タイトルに関しての概要についてが記載されます。タイトルに関しての概要につ いてが記載されます。 Copy rig ht© LIF ULL All R ig hts R es erv ed.
機械学習モデルを作った! デプロイはどうする🤔 Copy rig ht© LIF ULL All R ig hts R es erv ed.
\SageMaker/ Copy rig ht© LIF ULL All R ig hts R es erv ed.
手軽にやるならSageMaker 機械学習モデルをデプロイする際の最初の選択肢として AW S S a g e M a k e r が あ る と 思 い ま す モデルのファイルとイメージをアップロードしてポチポチす れば手軽にデプロイすることができます Copy rig ht© LIF ULL All R ig hts R es erv ed.
でも足りない場合もある Copy rig ht© LIF ULL All R ig hts R es erv ed.
バックエンドAPIを別に作る シンプル な要 件であ ればSag eMakerだ けでも 運用 でき ますが、 バックエンドAPIを他に作り たくな る場 合もあ ります • 複数モデルへのリクエストを統合して1レスポンスで返す • 別APIへのリクエストが必要 で推論 処理 と切り 分けた い Copy rig ht© LIF ULL All R ig hts R es erv ed.
バックエンドAPIを別に作る バックエンドAPIを運用する のであ れば 、モデ ルの運 用も同 じように行いたいです • 監視、ロギング • CI/CD • 構成管理の記述 Copy rig ht© LIF ULL All R ig hts R es erv ed.
LIFULLのKubernetes活用事情 • 内製ツール「KEEL」 • Kuber netes チ ー ム が 開 発 、 運 用 し て く れ て ま す • AW S E C 2 上 に Ku b e r n e t e s ク ラ ス タ が あ る • • 主要サービスはほぼAWS上なのでGKEは使いづらい • EKSは最新バージョンへの追従が遅くて小回りがきかないらしい H OME’ S 系の主要リポジトリは移行済み Copy rig ht© LIF ULL All R ig hts R es erv ed.
KEELでできること • 1つの巨大クラスタによるスケールメリットの獲得 • k 8 s m a n i fe s t を よ り 簡 易 な YA M L か ら 生 成 • ロギング、監視、CI/CD等が簡単にできる • Istio によるRate L im itやCirc uit Breaker • AW S C o d e B u i l d と S p i n n a k e r で デ プ ロ イ • スポットインスタンスも使える Copy rig ht© LIF ULL All R ig hts R es erv ed.
今回の施策 物件リストページのおすすめ順最適化 • ユーザニーズに沿うように最適化 (すみませんが詳細は話せないです) 結果は良かったです (これも細部は話せないです) Copy rig ht© LIF ULL All R ig hts R es erv ed.
構成図 Copy rig ht© LIF ULL All R ig hts R es erv ed.
Copy rig ht© LIF ULL All R ig hts R es erv ed.
モデル概要 • モデルはAutoMLで作成 • 事前推論で値をSolrに入れておく • フロントからはSolrにリクエストし てレ コメン ド取得 Copy rig ht© LIF ULL All R ig hts R es erv ed.
AutoMLでのモデル作成 • BigQueryにあるユーザ行 動デー タが 入力 • 前処理でレアケースな物件を弾く • (賃料/面積)が規定範囲外など • 最適化するカラムをコンバージョンに設定 • 入力を採用するカラムを選ぶ →細かいチューニング抜きにモデルが作れる😆 Copy rig ht© LIF ULL All R ig hts R es erv ed.
スポットの活用 • 5つのモデルに並列アクセス • 比較のために旧モデルも同時に動かす • スポットインスタンスなので3割ほどのコストで運用できる • 事前推論なので一時的に止まってても影響は無い • オンデマンドとスポットを混ぜれば同時停止を回避できる(future work) • 一括処理時はm5.4xlargeが数個動く Copy rig ht© LIF ULL All R ig hts R es erv ed.
Fast APIでのAPI作成 • 非同期処理の扱いがしやすい • 入力の型チェックの機構がある(Pydantic ) • Pydanticで記述した入出力定義 から AP I仕様 ページ を自動 生成 Copy rig ht© LIF ULL All R ig hts R es erv ed.
モデルの格納方法 • モデルはビルド時にコンテナイメージに格納 • ECRにモデル別のタグをつけて管理 • 問題があったらビルドで弾きたい • イメージに全部入ってるので非常時の対応がシンプルになる • モデルはそんなに頻繁に更新しない前提 • Copy rig ht© LIF ULL All R ig hts R es erv ed. モデル変えるたびにmanifest変えないといけないのは課題(future work)
モデルの格納方法 • コンテナ起動後にs3から取得す る方法 は採 用しな かった • オペミスでモデルの参照が違ったときが怖い • 本番システムのSolrとつながってるので問題はなるべく起こしたくない • モデルを頻繁に更新するのであればこの方法も含めて検討 Copy rig ht© LIF ULL All R ig hts R es erv ed.
処理安定化のための取り組み • K E E L 用 の YA M L を 書 く だ け で 設 定 が 完 了 • Istioの設定で同時接続数を制限 • podへのアクセスが多くなると即座にpodが503を返す • Istioのリトライ設定でリトライされる • 処理できるpodに回されて処理ができる Copy rig ht© LIF ULL All R ig hts R es erv ed.
パフォーマンスチューニング • Solrの一括ロード時に一気にリクエストが来る • 10000req/min程度 • 落ちないように敏感にスケールさせる • cpu limitはそこそこ大きめ • 非同期処理なので負荷にばらつきがある • スケールしきい値は小さめ • スケールに失敗すると、非同期処理でCPU使用率が上がらないうちに連続 エラーや同時接続数でpodが退避されてスケールしないループに陥る Copy rig ht© LIF ULL All R ig hts R es erv ed.
まとめ • Auto M L でさくっとモデルを作って 、Ku ber net e sを wra pし た社内ツール「KEEL」で運用しています • コストカットと安定運用を両立できています😆 ご清聴ありがとうございました🙇 Copy rig ht© LIF ULL All R ig hts R es erv ed.
Appendix We are hiring!! 私達と一緒に機械学習の本番導入を進めていく方を募集して います 詳細はこちらをご覧ください h tt p s : / / h r m o s . c o / p a g e s / l i f u l l / j o b s / 0 1 0 - 0 0 4 1 Copy rig ht© LIF ULL All R ig hts R es erv ed.
再掲、構成図 Copy rig ht© LIF ULL All R ig hts R es erv ed.