SlideShare a Scribd company logo
2
Most read
16
Most read
18
Most read
Kubernetes
Meetup Tokyo
#43
Kubernetesでゼロから作る
Jupyter as a Service (JaaS)
Daisuke Taniwaki
Preferred Networks, Inc
1
自己紹介
谷脇 大輔 (Daisuke Taniwaki)
2
dtaniwaki
dtaniwaki
2008~2012 Trend Micro 未知の脅威を発見する Webクローラ
2012~2014 Kakaku.com Tabelog USの立ち上げ
2014~2017 Kaizen Platform Kaizen Optimization Platform
2017~現在 Preferred Networks GPUクラスター向けツール
材料探索サービス
職歴
技術領域
Python, Go, Jupyter, Kubernetes, Docker, Argo, OpenTelemetry, AWS
本日の発表について
話すこと
- KubernetesでJaaSを実現するアーキテクチャ
- 実装・構築におけるノウハウ
話さないこと
- 各技術の詳細
- AWS等クラウドサービスのリソース構成
- 自社サービスの仕様や構築方法
必要とされる知識
- Kubernetesのリソースの基本的な知識
- Webアプリケーションに関する基本的な知識
3
簡単なJaaSの構築
4
Zero to JupyterHubをHelmでインストールしてください。
本日の発表はもっと複雑なJaaSの構築についてお話しします。
構築するJaaSの要件
- マルチテナント
- テナント環境と共有環境の共存
- Notebook内での自社技術の提供
- Notebookのデータ管理
- Notebookのセキュリティ
- Webサービスのリソースとの連携
5
全体の構成
6
部分的に解説していきます。
Webアプリケーションの構成
7
非同期処理やスケジュール処理。
②
WebUIは一般的なSPAのWeb application構成
①
Kubernetesリソースのデプロイ
8
KubernetesのリソースをデプロイするUtility。
Notebookの構成
9
Jupyter Serverを継承。
サービスとインテグレートされたNotebookサーバ。
②
JupyterLabでリッチなUIの提供。
Lab Extensionで拡張。
①
③
Notebookのroutingを大量に保持できるAPIでRoute更新できるプロキシ。
(AWSのALBのroutes数は最大100, Ingressリソースのサイズ制限もある)
WebUIから立ち上げたNotebookのrouteを登録。 ③
APIサーバの構成
10
推論技術を提供するgRPC API。
APIをNotebook上で使うためのPyPIパッケージ。
インフラコスト最適化のためのロードバランサー。 ①
推論結果の補助ロジックを提供するgRPC API。
APIをNotebook上で使うためのPyPIパッケージ。
Publicなロジックを提供するPyPIパッケージ。 ②
テナント環境を実現するデータモデル
11
- テナントはNotebookとAPIのServer Envを持
つ。
- それぞれのEnvにServerが立ち上がる。
- テナントに所属するユーザはNotebook Server
を利用する。
- Notebook Serverから接続されているAPI
Serverへアクセスできる。
- API Serverは他API Serverへの参照を持つ。
テナント環境を実現するKubernetesリソース
12
*将来的にCRD化も検討
マルチテナントのNS構成
13
- Tenant毎にNotebook用のNS
- Tenant間で共有または占有の API用NS
- システムプロセスが動く System NS
- 全テナントからのアクセスできる
common NS
Notebook内での自社技術の提供
14
- 推論(非公開), 補助ロジック(公開・非公開)をNotebookに提供。
- 公開する技術はPyPIパッケージとしてPrivate PyPIで配布。
- 非公開の技術はAPIを提供し、PyPIパッケージのAPIクライアントか
ら利用。
- 各種補助ロジックはインターフェース毎に実装を切り替え可能にす
ることでユーザ毎のカスタマイズも可能。
- NotebookにGPUを積まず、推論用APIサーバのみGPUを使う。
GPUサーバ高い!
APIインフラコストの最適化
15
- リクエストに応じて高性能GPUにrouting
- ダウンしている時は低性能GPUにfallback
- 同類のリクエストは負荷分散
- gRPC metadataをlua filterで処理
- Header routingによるクラスタ選択 
- Endpoint priorityによるEP選択
- Headless serviceによるロードバランス
マルチテナントでのAPIサーバのスケーリング
16
- PodのスケールはHPA。
- NodeのスケールはCluster Autoscaler。
- テナント間のfairnessは2つのpriority class
のdeploymentで担保。
- Object Metricsでdeployment間のMetrics
を連携。
*HPAScaleToZeroが必要
Notebookのデータ管理
17
- ユーザ毎のr/wワークスペース。
(PVC Dynamic Provisionerで自動作成)
- グローバルまたはテナント毎のr/o共有ディ
スク。
(PVC Static Provisioningで作成)
- 共有ディスクへはCronJobでGitHub等のコ
ンテンツをSync。
Notebookのセキュリティを強化する理由
18
ユーザはサービス内のネットワークで
任意のPythonコードを実行できる!
具体的には以下が容易に行える環境。
* 他ユーザ、テナントへの攻撃
* システムのサーバへの攻撃
* Kubernetes自体への攻撃
* 踏み台にしてインターネットへの攻撃
Notebookのセキュリティ
- ユーザ用Python Kernelの分離
- 最小権限のNotebookコンテナ
- PodAntiAffinity (NotIn)によるテナント毎の
Notebookノード
(Firecracker等も検討)
- NetworkPolicyによるネットワーク制限
- mTLSによる通信暗号化と認証
(Istioも検討)
- ドメインによる外部アクセス制限
19
Webサービスのリソースとの連携
20 Icon made by Freepik from www.flaticon.com
- WebUIでログイン。
- Notebookを立ち上げる時にOAuth2
Clientを作成。
- 立ち上げたNotebookから同一ドメイ
ンにあるOAuth2サーバから認可とトー
クン取得。
- NotebookのFrontendからは直接
cookieでリソース取得・操作。
- Python KernelからはOAuth2トーク
ンを使ってリソース取得・操作。
21
Kubernetesを使って、自社技術をJaaSで提供してみましょう!

More Related Content

PPTX
先駆者に学ぶ MLOpsの実際
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
PDF
Dockerからcontainerdへの移行
PDF
SSII2022 [OS3-02] Federated Learningの基礎と応用
PPTX
Dockerからcontainerdへの移行
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
先駆者に学ぶ MLOpsの実際
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Dockerからcontainerdへの移行
SSII2022 [OS3-02] Federated Learningの基礎と応用
Dockerからcontainerdへの移行
20180729 Preferred Networksの機械学習クラスタを支える技術
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~

What's hot (20)

PDF
Kubernetesによる機械学習基盤への挑戦
PDF
Linux女子部 systemd徹底入門
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PPTX
本当は恐ろしい分散システムの話
PDF
推薦アルゴリズムの今までとこれから
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PPTX
コンテナネットワーキング(CNI)最前線
PPTX
MLOpsはバズワード
PDF
ChatGPT 人間のフィードバックから強化学習した対話AI
PPTX
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PPTX
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
PDF
マルチテナント化で知っておきたいデータベースのこと
Kubernetesによる機械学習基盤への挑戦
Linux女子部 systemd徹底入門
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
本当は恐ろしい分散システムの話
推薦アルゴリズムの今までとこれから
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
コンテナネットワーキング(CNI)最前線
MLOpsはバズワード
ChatGPT 人間のフィードバックから強化学習した対話AI
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Dockerfile を書くためのベストプラクティス解説編
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
マルチテナント化で知っておきたいデータベースのこと
Ad

More from Preferred Networks (20)

PDF
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
PDF
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
PDF
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
PDF
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
PDF
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
PDF
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PPTX
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PDF
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
PDF
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
PDF
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PDF
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
PDF
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
PDF
Topology Managerについて / Kubernetes Meetup Tokyo 50
PDF
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
Ad

ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43