SlideShare a Scribd company logo
1 of 25
Copyright© LIFULL All Rights Reserved.
Kubernetesを利用した機械学習モデ
ルの本番適用例
株 式 会 社 L I F U L L
島 佑 介
Copyright© LIFULL All Rights Reserved.
島 佑介
2015年入社
マ ー ケ テ ィ ン グ の 部 署 で バ ッ ク エ ン ド を 実 装 し て い ま し た が 、
機 械 学 習 の 本 番 適 用 に 関 わ っ て み た い と 思 い 異 動 し ま し た 。
A P I の 実 装 や イ ン フ ラ 設 定 な ど を し て い ま す 。
技 術 メ モ : h t t p s : / / q i i t a . c o m / e l y u n i m 2 6
ポ エ ム : h t t p s : / / n o t e . c o m / e l y u n i m 2 6
自己紹介
Copyright© LIFULL All Rights Reserved.
目次 タイトルに関しての概要についてが記載されます。タイトルに関しての概要につ
いてが記載されます。
3.構成上のポイント
今回の施策の概要と全体感を説明します
2.施策と構成図
Kubernetesを使うにあたった経緯を説明します
1.導入
Copyright© LIFULL All Rights Reserved.
機械学習モデルを作った!
デプロイはどうする🤔
Copyright© LIFULL All Rights Reserved.
\SageMaker/
Copyright© LIFULL All Rights Reserved.
機械学習モデルをデプロイする際の最初の選択肢として
AWS SageMakerがあると思います
モデルのファイルとイメージをアップロードしてポチポチす
れば手軽にデプロイすることができます
手軽にやるならSageMaker
Copyright© LIFULL All Rights Reserved.
でも足りない場合もある
Copyright© LIFULL All Rights Reserved.
シンプルな要件であればSageMakerだけでも運用できますが、
バックエンドAPIを他に作りたくなる場合もあります
• 複数モデルへのリクエストを統合して1レスポンスで返す
• 別APIへのリクエストが必要で推論処理と切り分けたい
バックエンドAPIを別に作る
Copyright© LIFULL All Rights Reserved.
バックエンドAPIを運用するのであれば、モデルの運用も同じ
ように行いたいです
• 監視、ロギング
• CI/CD
• 構成管理の記述
バックエンドAPIを別に作る
Copyright© LIFULL All Rights Reserved.
• 内製ツール「KEEL」
• Kubernetesチームが開発、運用してくれてます
• AWS EC2上にKubernetesクラスタがある
• 主要サービスはほぼAWS上なのでGKEは使いづらい
• EKSは最新バージョンへの追従が遅くて小回りがきかないらしい
• HOME’S系の主要リポジトリは移行済み
LIFULLのKubernetes活用事情
Copyright© LIFULL All Rights Reserved.
• 1つの巨大クラスタによるスケールメリットの獲得
• k8s manifestをより簡易なYAMLから生成
• ロギング、監視、CI/CD等が簡単にできる
• IstioによるRate LimitやCircuit Breaker
• AWS CodeBuildとSpinnakerでデプロイ
• スポットインスタンスも使える
KEELでできること
Copyright© LIFULL All Rights Reserved.
物件リストページのおすすめ順最適化
• ユーザニーズに沿うように最適化
(すみませんが詳細は話せないです)
結果は良かったです
(これも細部は話せないです)
今回の施策
Copyright© LIFULL All Rights Reserved.
構成図
Copyright© LIFULL All Rights Reserved.
Copyright© LIFULL All Rights Reserved.
• モデルはAutoMLで作成
• 事前推論で値をSolrに入れておく
• フロントからはSolrにリクエストしてレコメンド取得
モデル概要
Copyright© LIFULL All Rights Reserved.
• BigQueryにあるユーザ行動データが入力
• 前処理でレアケースな物件を弾く
• (賃料/面積)が規定範囲外など
• 最適化するカラムをコンバージョンに設定
• 入力を採用するカラムを選ぶ
→細かいチューニング抜きにモデルが作れる 😆
AutoMLでのモデル作成
Copyright© LIFULL All Rights Reserved.
• 5つのモデルに並列アクセス
• 比較のために旧モデルも同時に動かす
• スポットインスタンスなので3割ほどのコストで運用できる
• 事前推論なので一時的に止まってても影響は無い
• オンデマンドとスポットを混ぜれば同時停止を回避できる(future work)
• 一括処理時はm5.4xlargeが数個動く
スポットの活用
Copyright© LIFULL All Rights Reserved.
• 非同期処理の扱いがしやすい
• 入力の型チェックの機構がある(Pydantic)
• Pydanticで記述した入出力定義からAPI仕様ページを自動生成
Fast APIでのAPI作成
Copyright© LIFULL All Rights Reserved.
• モデルはビルド時にコンテナイメージに格納
• ECRにモデル別のタグをつけて管理
• 問題があったらビルドで弾きたい
• イメージに全部入ってるので非常時の対応がシンプルになる
• モデルはそんなに頻繁に更新しない前提
• モデル変えるたびにmanifest変えないといけないのは課題(futurework)
モデルの格納方法
Copyright© LIFULL All Rights Reserved.
• コンテナ起動後にs3から取得する方法は採用しなかった
• オペミスでモデルの参照が違ったときが怖い
• 本番システムのSolrとつながってるので問題はなるべく起こしたくない
• モデルを頻繁に更新するのであればこの方法も含めて検討
モデルの格納方法
Copyright© LIFULL All Rights Reserved.
• KEEL用のYAMLを書くだけで設定が完了
• Istioの設定で同時接続数を制限
• podへのアクセスが多くなると即座にpodが503を返す
• Istioのリトライ設定でリトライされる
• 処理できるpodに回されて処理ができる
処理安定化のための取り組み
Copyright© LIFULL All Rights Reserved.
• S o l r の 一 括 ロ ー ド 時 に 一 気 に リ ク エ ス ト が 来 る
• 10000req/min程度
• 落ちないように敏感にスケールさせる
• c p u l i m i t は そ こ そ こ 大 き め
• 非同期処理なので負荷にばらつきがある
• ス ケ ー ル し き い 値 は 小 さ め
• スケールに失敗すると、非同期処理でCPU使用率が上がらないうちに連続
エラーや同時接続数でpodが退避されてスケールしないループに陥る
パフォーマンスチューニング
Copyright© LIFULL All Rights Reserved.
• AutoMLでさくっとモデルを作って、Kubernetesをwrapした社
内ツール「KEEL」で運用しています
• コストカットと安定運用を両立できています 😆
ご清聴ありがとうございました 🙇
まとめ
Copyright© LIFULL All Rights Reserved.
Appendix
私達と一緒に機械学習の本番導入を進めていく方を募集して
います
詳細はこちらをご覧ください
https://hrmos.co/pages/lifull/jobs/010-0041
We are hiring!!
Copyright© LIFULL All Rights Reserved.
再掲、構成図

More Related Content

What's hot

Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015Ken Ojiri
 
Azure Kubernetes ServiceとコンテナのCI/CD
Azure Kubernetes ServiceとコンテナのCI/CDAzure Kubernetes ServiceとコンテナのCI/CD
Azure Kubernetes ServiceとコンテナのCI/CDryosuke matsumura
 
Storylineでデザインする心地よい会話体験
Storylineでデザインする心地よい会話体験Storylineでデザインする心地よい会話体験
Storylineでデザインする心地よい会話体験真吾 吉田
 
Ansible はじめてみました
Ansible はじめてみましたAnsible はじめてみました
Ansible はじめてみましたTakeshi Kuramochi
 
Serverspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へServerspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へKishin Yagami
 
そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)輝 子安
 
もっと気軽に始めるAnsible
もっと気軽に始めるAnsibleもっと気軽に始めるAnsible
もっと気軽に始めるAnsibleakira6592
 
BIGIP作業サービス化してみた
BIGIP作業サービス化してみたBIGIP作業サービス化してみた
BIGIP作業サービス化してみたkotasaegusa
 
Azure Load Testingを試してみた
Azure Load Testingを試してみたAzure Load Testingを試してみた
Azure Load Testingを試してみたHiroyuki Mori
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
Ansibleの限界を超えてファイアウォールの プロビをした話
Ansibleの限界を超えてファイアウォールのプロビをした話Ansibleの限界を超えてファイアウォールのプロビをした話
Ansibleの限界を超えてファイアウォールの プロビをした話shomahirao
 
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...whywaita
 
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習Masanori Hayashi
 
JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告Hiroyuki Numao
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Terui Masashi
 
Azure Kubernetes ServiceとCI/CD pipeline
Azure Kubernetes ServiceとCI/CD pipelineAzure Kubernetes ServiceとCI/CD pipeline
Azure Kubernetes ServiceとCI/CD pipelineryosuke matsumura
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話gree_tech
 
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減gree_tech
 
Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境
Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境
Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境BMXUG
 

What's hot (20)

Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015
 
Azure Kubernetes ServiceとコンテナのCI/CD
Azure Kubernetes ServiceとコンテナのCI/CDAzure Kubernetes ServiceとコンテナのCI/CD
Azure Kubernetes ServiceとコンテナのCI/CD
 
Storylineでデザインする心地よい会話体験
Storylineでデザインする心地よい会話体験Storylineでデザインする心地よい会話体験
Storylineでデザインする心地よい会話体験
 
Ansible はじめてみました
Ansible はじめてみましたAnsible はじめてみました
Ansible はじめてみました
 
Serverspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へServerspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へ
 
そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)
 
もっと気軽に始めるAnsible
もっと気軽に始めるAnsibleもっと気軽に始めるAnsible
もっと気軽に始めるAnsible
 
BIGIP作業サービス化してみた
BIGIP作業サービス化してみたBIGIP作業サービス化してみた
BIGIP作業サービス化してみた
 
Azure Load Testingを試してみた
Azure Load Testingを試してみたAzure Load Testingを試してみた
Azure Load Testingを試してみた
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
Ansibleの限界を超えてファイアウォールの プロビをした話
Ansibleの限界を超えてファイアウォールのプロビをした話Ansibleの限界を超えてファイアウォールのプロビをした話
Ansibleの限界を超えてファイアウォールの プロビをした話
 
Keynote
KeynoteKeynote
Keynote
 
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
 
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習
 
JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
 
Azure Kubernetes ServiceとCI/CD pipeline
Azure Kubernetes ServiceとCI/CD pipelineAzure Kubernetes ServiceとCI/CD pipeline
Azure Kubernetes ServiceとCI/CD pipeline
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
 
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
 
Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境
Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境
Kubernetes+Ansibleでつくる最新Linuxディストリビューション開発環境
 

Similar to 【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例

Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkKubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkwhywaita
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsshunki fujiwara
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとはKoto Shigeru
 
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現Hitachi, Ltd. OSS Solution Center.
 
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?IIJ
 
LIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULL Co., Ltd.
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengewhywaita
 
KubeFlowでどこまでいける?
KubeFlowでどこまでいける?KubeFlowでどこまでいける?
KubeFlowでどこまでいける?Yuji Oshima
 
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南Google Cloud Platform - Japan
 
Azuredevopsakskeda
AzuredevopsakskedaAzuredevopsakskeda
AzuredevopsakskedaTsukasa Kato
 
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演VirtualTech Japan Inc.
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
OpenStack Summit Vancouver Summary
OpenStack Summit Vancouver SummaryOpenStack Summit Vancouver Summary
OpenStack Summit Vancouver SummaryIkuo Kumagai
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
TUNA-Con#kubeapps.pdf
TUNA-Con#kubeapps.pdfTUNA-Con#kubeapps.pdf
TUNA-Con#kubeapps.pdfssuser41e724
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクションTakahiro Okumura
 
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介Daisuke Ikeda
 
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoTcloudconductor
 

Similar to 【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例 (20)

Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkKubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
 
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
 
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
 
LIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL について
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
KubeFlowでどこまでいける?
KubeFlowでどこまでいける?KubeFlowでどこまでいける?
KubeFlowでどこまでいける?
 
Osdt2015 saito
Osdt2015 saitoOsdt2015 saito
Osdt2015 saito
 
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
 
Azuredevopsakskeda
AzuredevopsakskedaAzuredevopsakskeda
Azuredevopsakskeda
 
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
OpenStack Summit Vancouver Summary
OpenStack Summit Vancouver SummaryOpenStack Summit Vancouver Summary
OpenStack Summit Vancouver Summary
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
TUNA-Con#kubeapps.pdf
TUNA-Con#kubeapps.pdfTUNA-Con#kubeapps.pdf
TUNA-Con#kubeapps.pdf
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
 
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介
 
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
 

More from LIFULL Co., Ltd.

20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのことLIFULL Co., Ltd.
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性LIFULL Co., Ltd.
 
Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方LIFULL Co., Ltd.
 
Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術LIFULL Co., Ltd.
 
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL Co., Ltd.
 
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULL Co., Ltd.
 
SaPID を導入するまでとそれから
SaPID を導入するまでとそれからSaPID を導入するまでとそれから
SaPID を導入するまでとそれからLIFULL Co., Ltd.
 
3D間取りを支える技術
3D間取りを支える技術3D間取りを支える技術
3D間取りを支える技術LIFULL Co., Ltd.
 
LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL Co., Ltd.
 
大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構えLIFULL Co., Ltd.
 
スクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみスクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみLIFULL Co., Ltd.
 
実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニアLIFULL Co., Ltd.
 
エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由LIFULL Co., Ltd.
 
「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術LIFULL Co., Ltd.
 
ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標LIFULL Co., Ltd.
 
Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏LIFULL Co., Ltd.
 
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったことLIFULL Co., Ltd.
 
ウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたLIFULL Co., Ltd.
 
大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末LIFULL Co., Ltd.
 
新しい検索体験とデザインシステム
新しい検索体験とデザインシステム新しい検索体験とデザインシステム
新しい検索体験とデザインシステムLIFULL Co., Ltd.
 

More from LIFULL Co., Ltd. (20)

20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
 
Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方
 
Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術
 
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷
 
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
 
SaPID を導入するまでとそれから
SaPID を導入するまでとそれからSaPID を導入するまでとそれから
SaPID を導入するまでとそれから
 
3D間取りを支える技術
3D間取りを支える技術3D間取りを支える技術
3D間取りを支える技術
 
LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発
 
大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え
 
スクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみスクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみ
 
実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア
 
エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由
 
「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術
 
ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標
 
Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏
 
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
 
ウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめました
 
大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末
 
新しい検索体験とデザインシステム
新しい検索体験とデザインシステム新しい検索体験とデザインシステム
新しい検索体験とデザインシステム
 

【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例

  • 1. Copyright© LIFULL All Rights Reserved. Kubernetesを利用した機械学習モデ ルの本番適用例 株 式 会 社 L I F U L L 島 佑 介
  • 2. Copyright© LIFULL All Rights Reserved. 島 佑介 2015年入社 マ ー ケ テ ィ ン グ の 部 署 で バ ッ ク エ ン ド を 実 装 し て い ま し た が 、 機 械 学 習 の 本 番 適 用 に 関 わ っ て み た い と 思 い 異 動 し ま し た 。 A P I の 実 装 や イ ン フ ラ 設 定 な ど を し て い ま す 。 技 術 メ モ : h t t p s : / / q i i t a . c o m / e l y u n i m 2 6 ポ エ ム : h t t p s : / / n o t e . c o m / e l y u n i m 2 6 自己紹介
  • 3. Copyright© LIFULL All Rights Reserved. 目次 タイトルに関しての概要についてが記載されます。タイトルに関しての概要につ いてが記載されます。 3.構成上のポイント 今回の施策の概要と全体感を説明します 2.施策と構成図 Kubernetesを使うにあたった経緯を説明します 1.導入
  • 4. Copyright© LIFULL All Rights Reserved. 機械学習モデルを作った! デプロイはどうする🤔
  • 5. Copyright© LIFULL All Rights Reserved. \SageMaker/
  • 6. Copyright© LIFULL All Rights Reserved. 機械学習モデルをデプロイする際の最初の選択肢として AWS SageMakerがあると思います モデルのファイルとイメージをアップロードしてポチポチす れば手軽にデプロイすることができます 手軽にやるならSageMaker
  • 7. Copyright© LIFULL All Rights Reserved. でも足りない場合もある
  • 8. Copyright© LIFULL All Rights Reserved. シンプルな要件であればSageMakerだけでも運用できますが、 バックエンドAPIを他に作りたくなる場合もあります • 複数モデルへのリクエストを統合して1レスポンスで返す • 別APIへのリクエストが必要で推論処理と切り分けたい バックエンドAPIを別に作る
  • 9. Copyright© LIFULL All Rights Reserved. バックエンドAPIを運用するのであれば、モデルの運用も同じ ように行いたいです • 監視、ロギング • CI/CD • 構成管理の記述 バックエンドAPIを別に作る
  • 10. Copyright© LIFULL All Rights Reserved. • 内製ツール「KEEL」 • Kubernetesチームが開発、運用してくれてます • AWS EC2上にKubernetesクラスタがある • 主要サービスはほぼAWS上なのでGKEは使いづらい • EKSは最新バージョンへの追従が遅くて小回りがきかないらしい • HOME’S系の主要リポジトリは移行済み LIFULLのKubernetes活用事情
  • 11. Copyright© LIFULL All Rights Reserved. • 1つの巨大クラスタによるスケールメリットの獲得 • k8s manifestをより簡易なYAMLから生成 • ロギング、監視、CI/CD等が簡単にできる • IstioによるRate LimitやCircuit Breaker • AWS CodeBuildとSpinnakerでデプロイ • スポットインスタンスも使える KEELでできること
  • 12. Copyright© LIFULL All Rights Reserved. 物件リストページのおすすめ順最適化 • ユーザニーズに沿うように最適化 (すみませんが詳細は話せないです) 結果は良かったです (これも細部は話せないです) 今回の施策
  • 13. Copyright© LIFULL All Rights Reserved. 構成図
  • 14. Copyright© LIFULL All Rights Reserved.
  • 15. Copyright© LIFULL All Rights Reserved. • モデルはAutoMLで作成 • 事前推論で値をSolrに入れておく • フロントからはSolrにリクエストしてレコメンド取得 モデル概要
  • 16. Copyright© LIFULL All Rights Reserved. • BigQueryにあるユーザ行動データが入力 • 前処理でレアケースな物件を弾く • (賃料/面積)が規定範囲外など • 最適化するカラムをコンバージョンに設定 • 入力を採用するカラムを選ぶ →細かいチューニング抜きにモデルが作れる 😆 AutoMLでのモデル作成
  • 17. Copyright© LIFULL All Rights Reserved. • 5つのモデルに並列アクセス • 比較のために旧モデルも同時に動かす • スポットインスタンスなので3割ほどのコストで運用できる • 事前推論なので一時的に止まってても影響は無い • オンデマンドとスポットを混ぜれば同時停止を回避できる(future work) • 一括処理時はm5.4xlargeが数個動く スポットの活用
  • 18. Copyright© LIFULL All Rights Reserved. • 非同期処理の扱いがしやすい • 入力の型チェックの機構がある(Pydantic) • Pydanticで記述した入出力定義からAPI仕様ページを自動生成 Fast APIでのAPI作成
  • 19. Copyright© LIFULL All Rights Reserved. • モデルはビルド時にコンテナイメージに格納 • ECRにモデル別のタグをつけて管理 • 問題があったらビルドで弾きたい • イメージに全部入ってるので非常時の対応がシンプルになる • モデルはそんなに頻繁に更新しない前提 • モデル変えるたびにmanifest変えないといけないのは課題(futurework) モデルの格納方法
  • 20. Copyright© LIFULL All Rights Reserved. • コンテナ起動後にs3から取得する方法は採用しなかった • オペミスでモデルの参照が違ったときが怖い • 本番システムのSolrとつながってるので問題はなるべく起こしたくない • モデルを頻繁に更新するのであればこの方法も含めて検討 モデルの格納方法
  • 21. Copyright© LIFULL All Rights Reserved. • KEEL用のYAMLを書くだけで設定が完了 • Istioの設定で同時接続数を制限 • podへのアクセスが多くなると即座にpodが503を返す • Istioのリトライ設定でリトライされる • 処理できるpodに回されて処理ができる 処理安定化のための取り組み
  • 22. Copyright© LIFULL All Rights Reserved. • S o l r の 一 括 ロ ー ド 時 に 一 気 に リ ク エ ス ト が 来 る • 10000req/min程度 • 落ちないように敏感にスケールさせる • c p u l i m i t は そ こ そ こ 大 き め • 非同期処理なので負荷にばらつきがある • ス ケ ー ル し き い 値 は 小 さ め • スケールに失敗すると、非同期処理でCPU使用率が上がらないうちに連続 エラーや同時接続数でpodが退避されてスケールしないループに陥る パフォーマンスチューニング
  • 23. Copyright© LIFULL All Rights Reserved. • AutoMLでさくっとモデルを作って、Kubernetesをwrapした社 内ツール「KEEL」で運用しています • コストカットと安定運用を両立できています 😆 ご清聴ありがとうございました 🙇 まとめ
  • 24. Copyright© LIFULL All Rights Reserved. Appendix 私達と一緒に機械学習の本番導入を進めていく方を募集して います 詳細はこちらをご覧ください https://hrmos.co/pages/lifull/jobs/010-0041 We are hiring!!
  • 25. Copyright© LIFULL All Rights Reserved. 再掲、構成図