SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
PFN の ML/DL 基盤を支える
Kubernetes における自動化
DevOpsDays Tokyo 2021 (2021/4/16)
SUDA Kazuki (@superbrothers), Preferred Networks, Inc.
SAKATA Masao, Preferred Networks, Inc.
SUDA Kazuki / @superbrothers
● Preferred Networks, Inc. (PFN) エンジニア
● Kubernetes Meetup Tokyo, Prometheus Meetup Tokyo ほか、共同主催者
● Cloud Native Ambassador (Cloud Native Computing Foundation)
● 「Kubernetes実践入門」、「みんなのDocker/Kubernetes」共著書
● 「入門 Prometheus」、「Kubernetes で実践するクラウドネイティブ DevOps」監訳書
SAKATA Masao
● Preferred Networks, Inc. (PFN) エンジニア
● 2016 年 PFN 入社
● 社内向け GPU クラスタの開発運用
○ クラスタをスプレッドシートで運用していた時代から業務に携わる
アウトライン
● PFN の事業を支える GPU クラスタ
● Kubernetes とはなにか
● PFN における Kubernetes クラスタの利用状況
● クラスタで発生する様々な障害
● Kubernetes を用いた自動化への取り組み
● オペレーションの自動化を担うソフトウェア
● Kubernetes クラスタの管理自動化の取り組み
● PFN における Cluster API の利用状況
3
PFN の事業を支える
GPU クラスタ
5
PFN の事業を支える計算機クラスタ
多種多様な研究
多種多様なデータ
自社開発の技術
大量の機械学習ジョブ
大勢の研究者
オンプレの GPU クラスタ
PFN の計算機クラスタの進化
6
NVIDIA GPUなどの最新技術を採用した プライベート・スーパーコンピュータ MN-2 を自社構築し、7月に稼働
Preferred Networksの深層学習用スーパーコンピュータMN-3、省電力性能の前回記録を23.3%更新
Kubernetes とはなにか
8
Kubernetes(クバネテス)
● コンテナオーケストレーションツール
● 複数のマシン(ノード)で構成されるクラスタに対して
コンテナの配備、設定、管理を行う
● κυβερνήτης: ギリシャ語で操舵士
● Google の社内システムからインスパイアされたオープンソースソフトウェア
● 初期は Google のソフトウェアだったが、その後に
Cloud Native Computing Foundation(CNCF)に譲渡され、
現在は CNCF がホストするオープンソースソフトウェア(Apache License 2.0)
● 2015年7月に 1.0.0 をリリース、2021年6月時点の最新バージョンは 1.21
なぜ PFN は Kubernetes を選択したのか
• コンテナによる実行環境の再現性/可搬性/隔離性
• セキュリティ・プライバシ機能 が充実
– Namespace, Pod Security Policy (PSP), RBAC, Network Policy
• スケジューリングのポリシが柔軟 に設定可能
– Label, Taint, Affinity, PriorityClass
• 拡張が柔軟かつ容易
– Device plugin, CustomResourceDefinition (CRD), CRI, CNI
– Custom scheduler, Admission webhook
• オープンソースソフトウェアかつ巨大なエコシステム
– 各種コマンドラインツール、ドキュメント、サンプル、ナレッジベース
– コミュニティ
11
PFN での Kubernetes における自動化
● ML/DL ワークロードな Pod の効率的なスケジューリング
○ プリエンプション(優先度の低い Pod を追い出す)
○ スロットリング(リソース使用の制限)
○ 公平性のあるスケジューリング順序制御
○ ギャングスケジューリング(Pod の集合を一度にスケジュール)
● クラスタ/ノードの運用/障害対応
12
How to Schedule Machine Learning Workloads Nicely In Kubernetes
PFN における
Kubernetes クラスタの利用状況
クラスタの構成概要
データセンター毎に独立の Kubernetes クラスタとして運用
● MN-1
○ Master : 3 台
○ Worker
■ GPU ノード : 168 台 (1344 GPUs)
■ CPU ノード : 22 台
● MN-2
○ Master : 3 台
○ Worker
■ GPU ノード : 128 台 (1024 GPUs)
■ CPU ノード : 22 台
14
...
...
Kubernetes の構成概要 (MN-1)
credits:                             
gpu by Misha Petrishchev, Cpu Chip by Vectors Market, Memory by Jugalbandi, Network Switch by Creaticca Creative Agency,
Webhooks by Paul Dietzel, label by nauraicon, schedule by Pixel Lab from the Noun Project
832 (P100)
512 (V100)
56 Gbps x 2
100 Gbps x 2
2576 Core
1792 Core
24 TiB
24 TiB
64 nodes (MN-1b)
104 nodes (MN-1a) (全体では128 node)
v1.17.0
NVIDIA/k8s-device-plugin
everpeace/k8s-host-device-plugin
custom
admission
webhook
custom
node feature
discovery
custom
kube
-scheduler
InfiniBand
15
Kubernetes の構成概要 (MN-2)
credits:                             
gpu by Misha Petrishchev, Cpu Chip by Vectors Market, Memory by Jugalbandi, Network Switch by Creaticca Creative Agency,
Webhooks by Paul Dietzel, label by nauraicon, schedule by Pixel Lab from the Noun Project
1024 (V100) 100 Gbps x 4
5760 Core 56 TiB
150 nodes
v1.20.2
NVIDIA/k8s-device-plugin
everpeace/k8s-host-device-plugin
custom
admission
webhook
custom
node feature
discovery
custom
kube
-scheduler
Ethernet
16
v1.15.0
絶賛移行中
NEW!!
17
Kubernetes リソースとしての GPU
● Device Plugin Framework
○ ベンダ独自の初期化などが必要なハードウェアを
Kubernetes のリソースとして認識させるための
フレームワーク
● Nvidia Device Plugin
○ https://github.com/NVIDIA/k8s-device-plugin
○ 各 GPU ノード上で動作 (Daemonset)
○ ノードに搭載された GPU を認識、リソースとして公開
○ Health Check も行い、問題のある GPU は公開しない
● Pod がリソースとして要求することで、排他的に GPU を利用可能
共有ストレージ
PFN では主に以下をユーザーの様々なデータ置き場として利用
● NFS (Network File System)
○ 全ノードに NFS をマウント
○ Pod はノードのファイルシステム上の NFS パス
(hostPath)をマウントして利用
● HDFS (Hadoop Distributed File System)
○ Pod で HDFS アクセスに必要なクレデンシャル
(Secret) をマウント
○ Pod からネットワークを介して HDFS を利用
18
クラスタで発生する様々な障害
障害の例 - ノード
● ノードに Pod を配置できる状態にない
○ kubelet (各ノードで実行される k8s エージェント) が
正常に動作していない
● メモリの空き容量がひっ迫
● ローカルディスクの空き容量がひっ迫
● プロセスの大量生成による利用可能な PID のひっ迫
● 原因 : ユーザーのワークロードによる過負荷、OS の不具合、ネット
ワークやノードの障害など、様々な原因が考えられる
● 対応 : kubelet, docker エンジン等のシステム系プロセスの再起動、
もしくはノードの再起動で復旧する場合もある
20
障害の例 - GPU
● 熱や電力供給の問題などの理由により、特定の GPU
ボードが利用できない
● GPU メモリで Single Bit ECC Error, Double Bit ECC Error
が多発
● GPU がビジー状態で利用できない
● 原因 : GPU の一時的な状態異常のほか、物理的な故障が原因の場合も
● 対応 : 一時的な状態異常でも多くの場合、復旧にノードの
再起動が必要。物理故障の場合、GPU 交換が必要。
21
障害の例 - ネットワーク
● Pod から通信や名前解決ができない
● ノードのネットワークがリンクダウンしている
● ノードのネットワークアドレスが設定されていない
● ノードの対外(インターネット)ネットワークの輻輳
● クラスタ間 (MN-1,2間) ネットワークの輻輳
● 原因 : NIC やケーブルなどハードウェア故障のほか、CNI Plugin の
動作の不具合、設定不備など様々な原因が考えられる
● 対応 : CNI Plugin の再起動や、設定不備の修正で復旧する場合もある
が、NIC や スイッチの物理故障は交換対応が必要
22
障害の例 - NFS
● NFS サーバーへの疎通がない
● ノードに NFS がマウントされていない
● 原因 : 過負荷などにより NFS サーバー自体がダウン
している場合の他、ネットワークや、クライアントの
ノード自体の障害が原因の場合もある
● 対応 : 個々の原因に応じて、NFS サーバーへの負荷の低減、NFS サー
バーの再起動、ネットワークやノード自体の障害の復旧といった対応
が必要
23
障害の例 - Pod
● Pod 内のコンテナが再起動を繰り返す
● Pod を削除 (kubectl delete pod) したが、実際にはコンテ
ナやプロセスが正常に終了せず、削除できない
● Pod 内のプロセスが D state (Disk I/O 待ちなどの割り込
み不可の Sleep 状態) になったまま、ノードに残存
● 原因 : 単純な Pod の設定 (Manifest) ミスのほか、ノー
ド、GPU、NFS などの障害により、Pod が正常に起動、も
しくは終了しないことがある
● 対応 : Pod の設定ミスであれば見直しをユーザーに促す。
インフラ側の障害であればそれを復旧
24
クラスタは常にどこかが壊れている
25
26
クラスタは常にどこかが壊れている
分散システムは、完全な意味で「アップ(up)」になることはない。*
● 障害の発生しうる要素
○ ハードウェア
■ CPU, GPU, Memory, Disk, Network (NIC, Cable, ...), FAN, 電源,…
○ ソフトウェア
■ OS, ドライバ, システムプロセス (k8s 含む), Pod (ユーザーのワー
クロード) , …
● 各要素で障害となりうる故障・不具合の種類も複数存在
● クラスタの規模に比例して、どこかが壊れているのが定常的な状態
● 繰り返される定型的な障害の検知と復旧の自動化が必須
* Ops: It's everyone's job now | Opensource.com
Kubernetes を用いた
自動化への取り組み
Kubernetes におけるノードの Condition
28
● Kubernetes ではノードに Pod が配置可能かどうかなど、ノードの状
態を表す Condition と呼ばれる概念が存在
● Condition はデフォルトで存在するいくつかのタイプに加えて、独自
に定義することが可能
● PFN では Node Problem Detector を使い、独自の Condition を定義
し、障害検知に利用している
$ kubectl describe node minikube
...
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... CalicoIsUp Calico is running on this node
MemoryPressure False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletHasSufficientMemory kubelet has sufficient memory...
DiskPressure False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletHasSufficientPID kubelet has sufficient PID ...
Ready True Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletReady kubelet is posting ready status
ノード コンディション タイプ
● Ready
○ ノードに Pod を配置できる状態にあるか?
● MemoryPressure
○ メモリ空き容量がひっ迫していないか?
● DiskPressure
○ ローカルディスクの空き容量がひっ迫していないか?
● PIDPressure
○ プロセスの大量生成により、ノードで利用可能な PID がひっ迫し
ていないか?
● NetworkUnavailable
○ ノードのネットワークが適切に設定されているか?
29
30
PFN での障害検知から復旧までの流れ
1. メトリクス収集
○ Prometheus と各種 exporter によるメトリクス収集
○ ノードの Condition も Prometheus でメトリクスとして収集
2. アラート発報
○ メトリクスが閾値を超えると Alertmanager を介してアラート発報
3. チケット起票
○ alertmanager-to-github でアラート発報と共に Github イシューを作成
○ Github 上で自動的に担当者をアサイン
4. 復旧対応
○ 自動化済みの場合
■ node-operation-controller で復旧オペレーションを Pod で自動実行
■ 自動オペレーションに失敗した場合は担当者が手動対応
○ 手動対応の場合
■ イシューに対応履歴を残し、知見を蓄積
■ 定型化できそうなものは自動化を進める
オペレーションの自動化を
担うソフトウェア
Prometheus
● https://github.com/prometheus/prometheus (Apache 2.0)
● クラウドネイティブの世界で事実上の標準となっている
メトリクス管理ソリューション
● オープンソースのメトリクスベースモニタリングシステム
○ プル型で単純なテキストのメトリクス形式
○ 柔軟なクエリ⾔語
○ サービスディスカバリ機構との連携で動的な環境の
モニタリングが得意
○ ダッシュボードとアラート通知 (Alertmanager)
● 2016年に CNCF の2番⽬のプロジェクトのメンバーに
○ 2018年8⽉に “卒業” (Graduated) プロジェクトとなる
● 既に Prometheus にメトリクスをエクスポートするさまざまな exporter が存在
○ https://prometheus.io/docs/instrumenting/exporters/
32
PFN で利用している exporter
● kube-state-metrics
○ https://github.com/kubernetes/kube-state-metrics
○ Kubernetes の様々なオブジェクト (node, pod, ...) のメトリクスをエクスポート
● node exporter
○ https://github.com/prometheus/node_exporter
○ ノードの CPU, メモリ, Disk, Network などの様々なメトリクスを エクスポート
● NVIDIA dcgm-exporter
○ https://github.com/NVIDIA/gpu-monitoring-tools#dcgm-exporter
○ GPU の利用率, 電力消費量, 温度などのメトリクスをエクスポート
● blackbox exporter
○ https://github.com/prometheus/blackbox_exporter
○ 監視対象に対する HTTP, HTTPS, DNS, TCP , ICMP によるシンプルな外形監視に利
用可能
○ PFN ではネットワークの疎通確認や NFS の死活監視に利用
33
Node Problem Detector (NPD)
● https://github.com/kubernetes/node-problem-detector
● DaemonSet として各ノードで実行し、ノードの問題を検知した場合、
独自の Condition の変更や Event を作成可能
● 検知方法
○ システムログモニタ
■ 各種ログファイルを監視
● filelog プラグイン: 任意のログファイル
● journald プラグイン: journald のログ
● kmsg プラグイン: カーネルログ(/dev/kmsg)
○ カスタムプラグインモニタ
■ custom プラグイン: 任意の監視スクリプトの標準出力と終了
コードで問題を通知する
34
NPD の Custom Plugin (1/2)
GPU
● nvidia-smi コマンドで出力されるログをもとに、障害の有無を判断
Pod (プロセス)
● ノード上のプロセスの State (Running, Sleep, Stopped, ...) 、Docker
コンテナ、Pod の情報を取得
● どの Pod のどのプロセスが、どんな State にあるかを監視
● 削除済みの Pod のプロセスが D state の場合、異常と判断
35
$ nvidia-smi
...
Unable to determine the device handle for GPU 0000:1C:00.0: GPU is lost. Reboot the system to
recover this GPU
NPD の Custom Plugin (2/2)
ネットワーク
● 各ネットワークインターフェースの IP アドレスとリンクの状態を定期
的に監視
NFS
● NFS がマウントされているかの確認
○ stat コマンドによりマウントポイントのファイルシステムを監視
● ノードから NFS の死活監視
○ ping, rpcinfo コマンドにより NFS サーバーへの疎通確認
36
Node Operation Controller (自社開発)
● https://github.com/pfnet-research/node-operation-controller
● ノードの Condition の変化により任意のオペレーションを実⾏
○ ノードの Condition を監視
○ 条件を満たすとそのノードのメンテナンス処理を実⾏する Pod を
作成するコントローラ
● PFN では Condition の変更には Node Problem Detector とそれと連携
する内製のツール (custom プラグイン) を使⽤
● Condition に応じてノードの再起動、NFS のマウントなどの復旧処理
を行う Pod を作成
37
alertmanager-to-github (自社開発)
● https://github.com/pfnet-research/alertmanager-to-github
● Alertmanager からの Webhook を受け取って GitHub イシューを作成
○ 新しいアラートから GitHub イシューを作成
○ アラートが resolved ステータスになるとイシューをクローズ
○ アラートが再度 firing ステータスになるとイシューをリオープン
38
kube-janitor (1/2)
● https://codeberg.org/hjacobs/kube-janitor
● Kubernetes のリソース (pod, job, deployment,etc...) を特定の条件で
自動的に削除してくれる OSS
● 条件の指定は Pod に annotation を付与することで行う
● annotation は以下の 2 種類
○ janitor/ttl : 指定された一定時間経過後に削除
○ janitor/expires : 指定された日時を過ぎたら削除
39
kube-janitor (2/2)
● PFN では node-exporter, dcgm-exporter のメトリクスから
CPU, GPU がアイドル状態の Pod や Pending のままの Pod を検知
● アラートを独自の webhook で受け、kube-janitor の annotation を付
与し、自動削除に利用
● 自動削除前に Slack でユーザーに通知
40
Kubernetes クラスタの
管理自動化の取り組み
42
Kubernetes クラスタの管理も自動化したい
ワーカノードや Pod の障害や問題への対処は自動化できてきたが、
Kubernetes を使っていくうえでの大きな課題にはクラスタ自体の管理もある!
● Kubernetes クラスタの管理とは?
○ 実マシンを使ったクラスタを新たに構築したい
○ 検証用に一度のノードをクラスタから外したい
○ 検証が終わったらノードをクラスタに戻したい
○ クラスタをアップグレードしたい!
オンプレミスでもマネージド Kubernetes サービスのようにクラスタの管理をいい感じ
にやりたい。そこで Cluster API が使えます。
(そもそもオンプレでのバニラ Kubernetes の使用は相当な覚悟でやってください)
43
Cluster API とは
複数の Kubernetes クラスタの作成やアップグレード、
そのほかクラスタをオペレーションをするための宣言的な API と
ツールを提供する SIG Cluster Lifecycle のサブプロジェクト
● Kubernetes クラスタの望ましい状態を宣言的に管理し(マニフェストファイ
ル)、Kubernetes コントローラが実際のインフラが望ましい状態と一致するよう
に継続的に調整する(Reconcile)
たとえば、MySQL Operator は MySQL の作成や削除、管理を自動化してくれる。
Cluster API は Kubernetes クラスタのそういった作業を自動化してくれるので、
「Kubernetes Cluster Operator」ともいえる。
望ましい状態を宣言的に管理するとは
44
apiVersion: cluster.x-k8s.io/v1alpha3
kind: Cluster
metadata:
name: my-cluster
namespace: default
spec:
clusterNetwork:
services:
cidrBlocks: ["10.96.0.0/12"]
pods:
cidrBlocks: ["192.168.0.0/16"]
serviceDomain: "cluster.local"
controlPlaneRef:
apiVersion: controlplane.cluster.x-k8s.io/v1alpha3
kind: KubeadmControlPlane
name: controlplane
namespace: default
infrastructureRef:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
kind: DockerCluster
name: my-cluster
namespace: default
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.19
https://cluster-api.sigs.k8s.io/user/concepts.html
PFN における
Cluster API の利用状況
47
PFN における Cluster API の使用状況
● 2021年4月時点で、1拠点の Kubernetes クラスタを
Cluster API により作成したものに移行
○ Kubernetes バージョン: v1.20.2
○ Cluster API バージョン: v0.3.14
● 今後もう1拠点のクラスタも Cluster API に移行予定
データセンタ
48
PFN での Cluster API の構成
Management Cluster (EKS)
Cluster API コンポーネント
kubeadmControlPlane
kubeadmBootstrap
MAASInfrastructureProvider
Machine
Images
GitOps
(Flux v2)
cluster.yaml
MAAS API
Packer
Ansible
Playbook
CI
ゴールデン
イメージ
Machine
Machine
Machine
Workload Cluster
kubectl
現状の課題とその解決案
➔ マシンのセットアップに時間かかりすぎる
◆ セットアップの大部分をゴールデンイメージに寄せる
◆ ドライバのコンテナによるロード
➔ MachineHealthCheck でマシンの再作成ではなく、再起動させたい
◆ マシンのセットアップにかかる時間を最小化して再作成
◆ OR 独自の Remediation(修復)を開発
➔ MachineDeployment のレプリカ数の調整が面倒
◆ いい感じにやってくれる Kubernetes コントローラを開発
➔ 狙ったマシンをクラスタから外す手順が面倒
◆ いい感じにやってくれる Kubernetes コントローラの開発
➔ ControlPlane ノードのサイズが大きすぎる
◆ VM の導入(KubeVirt?)
49
まとめ
まとめ(1/2)
● PFN での Kubernetes における自動化
○ ML/DL 向けの効率的なスケジューリングを実現する
カスタムスケジューラ
○ クラスタ/ノードの運用/障害対応を自動化するコントローラ
● クラスタで発生する様々な障害
○ クラスタは常にどこかが壊れている
● Kubernetes を用いた自動化への取り組み
○ Node Problem Detector (NPD) を使い、独自の Condition を
定義、障害検知に利用
51
まとめ(2/2)
● オペレーションの自動化を担うソフトウェア
○ Prometheus と exporter、NPD のカスタムプラグインを多用
○ alertmanager-to-github: アラートから GitHub イシューを
作成して管理
○ kube-janitor: 特定の条件を満たすリソースを自動的に削除
● Kubernetes クラスタの管理自動化の取り組み
○ Cluster API を使うとクラスタをマニフェストとして管理できる
● PFN における Cluster API の利用状況
○ 1拠点で Cluster API を利用したクラスタに(ほぼ)移行
○ MAAS をインフラストラクチャとして使用したプロバイダを開発
○ 様々な課題がみえているので、今後それらの解決に取り組む
52
Thanks / Question?
● SUDA Kazuki (@superbrothers)、SAKATA Masao
● スライド: https://www.slideshare.net/pfi
53

Mais conteúdo relacionado

Mais procurados

BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術Preferred Networks
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Preferred Networks
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
Prometheus at Preferred Networks
Prometheus at Preferred NetworksPrometheus at Preferred Networks
Prometheus at Preferred NetworksPreferred Networks
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...Preferred Networks
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介NTT Communications Technology Development
 
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43Preferred Networks
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 

Mais procurados (20)

BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Prometheus at Preferred Networks
Prometheus at Preferred NetworksPrometheus at Preferred Networks
Prometheus at Preferred Networks
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
 
自宅k8s/vSphere入門
自宅k8s/vSphere入門自宅k8s/vSphere入門
自宅k8s/vSphere入門
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 

Semelhante a PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021

GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄Yukio Saito
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Takashi Kanai
 
2019 jetson azure_hands-on
2019 jetson azure_hands-on2019 jetson azure_hands-on
2019 jetson azure_hands-onAya Owosekun
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活Kuninobu SaSaki
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroupManaMurakami1
 
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
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会samemoon
 
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離Takashi Kanai
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterPreferred Networks
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProXToru Makabe
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告Mitsuhiro SHIGEMATSU
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyoManaMurakami1
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudCODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudToshikazu Ichikawa
 
OpenIndiana+KVMによる仮想マシン
OpenIndiana+KVMによる仮想マシンOpenIndiana+KVMによる仮想マシン
OpenIndiana+KVMによる仮想マシン悟 宮崎
 

Semelhante a PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021 (20)

GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化
 
2019 jetson azure_hands-on
2019 jetson azure_hands-on2019 jetson azure_hands-on
2019 jetson azure_hands-on
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
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 発表資料)
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
Cmc cmd slim
Cmc cmd slimCmc cmd slim
Cmc cmd slim
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyo
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudCODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
 
OpenIndiana+KVMによる仮想マシン
OpenIndiana+KVMによる仮想マシンOpenIndiana+KVMによる仮想マシン
OpenIndiana+KVMによる仮想マシン
 

Mais de Preferred Networks

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

Mais de Preferred Networks (20)

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

Último

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Último (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021

  • 1. PFN の ML/DL 基盤を支える Kubernetes における自動化 DevOpsDays Tokyo 2021 (2021/4/16) SUDA Kazuki (@superbrothers), Preferred Networks, Inc. SAKATA Masao, Preferred Networks, Inc.
  • 2. SUDA Kazuki / @superbrothers ● Preferred Networks, Inc. (PFN) エンジニア ● Kubernetes Meetup Tokyo, Prometheus Meetup Tokyo ほか、共同主催者 ● Cloud Native Ambassador (Cloud Native Computing Foundation) ● 「Kubernetes実践入門」、「みんなのDocker/Kubernetes」共著書 ● 「入門 Prometheus」、「Kubernetes で実践するクラウドネイティブ DevOps」監訳書 SAKATA Masao ● Preferred Networks, Inc. (PFN) エンジニア ● 2016 年 PFN 入社 ● 社内向け GPU クラスタの開発運用 ○ クラスタをスプレッドシートで運用していた時代から業務に携わる
  • 3. アウトライン ● PFN の事業を支える GPU クラスタ ● Kubernetes とはなにか ● PFN における Kubernetes クラスタの利用状況 ● クラスタで発生する様々な障害 ● Kubernetes を用いた自動化への取り組み ● オペレーションの自動化を担うソフトウェア ● Kubernetes クラスタの管理自動化の取り組み ● PFN における Cluster API の利用状況 3
  • 6. PFN の計算機クラスタの進化 6 NVIDIA GPUなどの最新技術を採用した プライベート・スーパーコンピュータ MN-2 を自社構築し、7月に稼働 Preferred Networksの深層学習用スーパーコンピュータMN-3、省電力性能の前回記録を23.3%更新
  • 8. 8 Kubernetes(クバネテス) ● コンテナオーケストレーションツール ● 複数のマシン(ノード)で構成されるクラスタに対して コンテナの配備、設定、管理を行う ● κυβερνήτης: ギリシャ語で操舵士 ● Google の社内システムからインスパイアされたオープンソースソフトウェア ● 初期は Google のソフトウェアだったが、その後に Cloud Native Computing Foundation(CNCF)に譲渡され、 現在は CNCF がホストするオープンソースソフトウェア(Apache License 2.0) ● 2015年7月に 1.0.0 をリリース、2021年6月時点の最新バージョンは 1.21
  • 9.
  • 10.
  • 11. なぜ PFN は Kubernetes を選択したのか • コンテナによる実行環境の再現性/可搬性/隔離性 • セキュリティ・プライバシ機能 が充実 – Namespace, Pod Security Policy (PSP), RBAC, Network Policy • スケジューリングのポリシが柔軟 に設定可能 – Label, Taint, Affinity, PriorityClass • 拡張が柔軟かつ容易 – Device plugin, CustomResourceDefinition (CRD), CRI, CNI – Custom scheduler, Admission webhook • オープンソースソフトウェアかつ巨大なエコシステム – 各種コマンドラインツール、ドキュメント、サンプル、ナレッジベース – コミュニティ 11
  • 12. PFN での Kubernetes における自動化 ● ML/DL ワークロードな Pod の効率的なスケジューリング ○ プリエンプション(優先度の低い Pod を追い出す) ○ スロットリング(リソース使用の制限) ○ 公平性のあるスケジューリング順序制御 ○ ギャングスケジューリング(Pod の集合を一度にスケジュール) ● クラスタ/ノードの運用/障害対応 12 How to Schedule Machine Learning Workloads Nicely In Kubernetes
  • 14. クラスタの構成概要 データセンター毎に独立の Kubernetes クラスタとして運用 ● MN-1 ○ Master : 3 台 ○ Worker ■ GPU ノード : 168 台 (1344 GPUs) ■ CPU ノード : 22 台 ● MN-2 ○ Master : 3 台 ○ Worker ■ GPU ノード : 128 台 (1024 GPUs) ■ CPU ノード : 22 台 14 ... ...
  • 15. Kubernetes の構成概要 (MN-1) credits:                              gpu by Misha Petrishchev, Cpu Chip by Vectors Market, Memory by Jugalbandi, Network Switch by Creaticca Creative Agency, Webhooks by Paul Dietzel, label by nauraicon, schedule by Pixel Lab from the Noun Project 832 (P100) 512 (V100) 56 Gbps x 2 100 Gbps x 2 2576 Core 1792 Core 24 TiB 24 TiB 64 nodes (MN-1b) 104 nodes (MN-1a) (全体では128 node) v1.17.0 NVIDIA/k8s-device-plugin everpeace/k8s-host-device-plugin custom admission webhook custom node feature discovery custom kube -scheduler InfiniBand 15
  • 16. Kubernetes の構成概要 (MN-2) credits:                              gpu by Misha Petrishchev, Cpu Chip by Vectors Market, Memory by Jugalbandi, Network Switch by Creaticca Creative Agency, Webhooks by Paul Dietzel, label by nauraicon, schedule by Pixel Lab from the Noun Project 1024 (V100) 100 Gbps x 4 5760 Core 56 TiB 150 nodes v1.20.2 NVIDIA/k8s-device-plugin everpeace/k8s-host-device-plugin custom admission webhook custom node feature discovery custom kube -scheduler Ethernet 16 v1.15.0 絶賛移行中 NEW!!
  • 17. 17 Kubernetes リソースとしての GPU ● Device Plugin Framework ○ ベンダ独自の初期化などが必要なハードウェアを Kubernetes のリソースとして認識させるための フレームワーク ● Nvidia Device Plugin ○ https://github.com/NVIDIA/k8s-device-plugin ○ 各 GPU ノード上で動作 (Daemonset) ○ ノードに搭載された GPU を認識、リソースとして公開 ○ Health Check も行い、問題のある GPU は公開しない ● Pod がリソースとして要求することで、排他的に GPU を利用可能
  • 18. 共有ストレージ PFN では主に以下をユーザーの様々なデータ置き場として利用 ● NFS (Network File System) ○ 全ノードに NFS をマウント ○ Pod はノードのファイルシステム上の NFS パス (hostPath)をマウントして利用 ● HDFS (Hadoop Distributed File System) ○ Pod で HDFS アクセスに必要なクレデンシャル (Secret) をマウント ○ Pod からネットワークを介して HDFS を利用 18
  • 20. 障害の例 - ノード ● ノードに Pod を配置できる状態にない ○ kubelet (各ノードで実行される k8s エージェント) が 正常に動作していない ● メモリの空き容量がひっ迫 ● ローカルディスクの空き容量がひっ迫 ● プロセスの大量生成による利用可能な PID のひっ迫 ● 原因 : ユーザーのワークロードによる過負荷、OS の不具合、ネット ワークやノードの障害など、様々な原因が考えられる ● 対応 : kubelet, docker エンジン等のシステム系プロセスの再起動、 もしくはノードの再起動で復旧する場合もある 20
  • 21. 障害の例 - GPU ● 熱や電力供給の問題などの理由により、特定の GPU ボードが利用できない ● GPU メモリで Single Bit ECC Error, Double Bit ECC Error が多発 ● GPU がビジー状態で利用できない ● 原因 : GPU の一時的な状態異常のほか、物理的な故障が原因の場合も ● 対応 : 一時的な状態異常でも多くの場合、復旧にノードの 再起動が必要。物理故障の場合、GPU 交換が必要。 21
  • 22. 障害の例 - ネットワーク ● Pod から通信や名前解決ができない ● ノードのネットワークがリンクダウンしている ● ノードのネットワークアドレスが設定されていない ● ノードの対外(インターネット)ネットワークの輻輳 ● クラスタ間 (MN-1,2間) ネットワークの輻輳 ● 原因 : NIC やケーブルなどハードウェア故障のほか、CNI Plugin の 動作の不具合、設定不備など様々な原因が考えられる ● 対応 : CNI Plugin の再起動や、設定不備の修正で復旧する場合もある が、NIC や スイッチの物理故障は交換対応が必要 22
  • 23. 障害の例 - NFS ● NFS サーバーへの疎通がない ● ノードに NFS がマウントされていない ● 原因 : 過負荷などにより NFS サーバー自体がダウン している場合の他、ネットワークや、クライアントの ノード自体の障害が原因の場合もある ● 対応 : 個々の原因に応じて、NFS サーバーへの負荷の低減、NFS サー バーの再起動、ネットワークやノード自体の障害の復旧といった対応 が必要 23
  • 24. 障害の例 - Pod ● Pod 内のコンテナが再起動を繰り返す ● Pod を削除 (kubectl delete pod) したが、実際にはコンテ ナやプロセスが正常に終了せず、削除できない ● Pod 内のプロセスが D state (Disk I/O 待ちなどの割り込 み不可の Sleep 状態) になったまま、ノードに残存 ● 原因 : 単純な Pod の設定 (Manifest) ミスのほか、ノー ド、GPU、NFS などの障害により、Pod が正常に起動、も しくは終了しないことがある ● 対応 : Pod の設定ミスであれば見直しをユーザーに促す。 インフラ側の障害であればそれを復旧 24
  • 26. 26 クラスタは常にどこかが壊れている 分散システムは、完全な意味で「アップ(up)」になることはない。* ● 障害の発生しうる要素 ○ ハードウェア ■ CPU, GPU, Memory, Disk, Network (NIC, Cable, ...), FAN, 電源,… ○ ソフトウェア ■ OS, ドライバ, システムプロセス (k8s 含む), Pod (ユーザーのワー クロード) , … ● 各要素で障害となりうる故障・不具合の種類も複数存在 ● クラスタの規模に比例して、どこかが壊れているのが定常的な状態 ● 繰り返される定型的な障害の検知と復旧の自動化が必須 * Ops: It's everyone's job now | Opensource.com
  • 28. Kubernetes におけるノードの Condition 28 ● Kubernetes ではノードに Pod が配置可能かどうかなど、ノードの状 態を表す Condition と呼ばれる概念が存在 ● Condition はデフォルトで存在するいくつかのタイプに加えて、独自 に定義することが可能 ● PFN では Node Problem Detector を使い、独自の Condition を定義 し、障害検知に利用している $ kubectl describe node minikube ... Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- NetworkUnavailable False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... CalicoIsUp Calico is running on this node MemoryPressure False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletHasSufficientMemory kubelet has sufficient memory... DiskPressure False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletHasNoDiskPressure kubelet has no disk pressure PIDPressure False Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletHasSufficientPID kubelet has sufficient PID ... Ready True Tue, 13 Apr 2021 ... Tue, 13 Apr 2021 ... KubeletReady kubelet is posting ready status
  • 29. ノード コンディション タイプ ● Ready ○ ノードに Pod を配置できる状態にあるか? ● MemoryPressure ○ メモリ空き容量がひっ迫していないか? ● DiskPressure ○ ローカルディスクの空き容量がひっ迫していないか? ● PIDPressure ○ プロセスの大量生成により、ノードで利用可能な PID がひっ迫し ていないか? ● NetworkUnavailable ○ ノードのネットワークが適切に設定されているか? 29
  • 30. 30 PFN での障害検知から復旧までの流れ 1. メトリクス収集 ○ Prometheus と各種 exporter によるメトリクス収集 ○ ノードの Condition も Prometheus でメトリクスとして収集 2. アラート発報 ○ メトリクスが閾値を超えると Alertmanager を介してアラート発報 3. チケット起票 ○ alertmanager-to-github でアラート発報と共に Github イシューを作成 ○ Github 上で自動的に担当者をアサイン 4. 復旧対応 ○ 自動化済みの場合 ■ node-operation-controller で復旧オペレーションを Pod で自動実行 ■ 自動オペレーションに失敗した場合は担当者が手動対応 ○ 手動対応の場合 ■ イシューに対応履歴を残し、知見を蓄積 ■ 定型化できそうなものは自動化を進める
  • 32. Prometheus ● https://github.com/prometheus/prometheus (Apache 2.0) ● クラウドネイティブの世界で事実上の標準となっている メトリクス管理ソリューション ● オープンソースのメトリクスベースモニタリングシステム ○ プル型で単純なテキストのメトリクス形式 ○ 柔軟なクエリ⾔語 ○ サービスディスカバリ機構との連携で動的な環境の モニタリングが得意 ○ ダッシュボードとアラート通知 (Alertmanager) ● 2016年に CNCF の2番⽬のプロジェクトのメンバーに ○ 2018年8⽉に “卒業” (Graduated) プロジェクトとなる ● 既に Prometheus にメトリクスをエクスポートするさまざまな exporter が存在 ○ https://prometheus.io/docs/instrumenting/exporters/ 32
  • 33. PFN で利用している exporter ● kube-state-metrics ○ https://github.com/kubernetes/kube-state-metrics ○ Kubernetes の様々なオブジェクト (node, pod, ...) のメトリクスをエクスポート ● node exporter ○ https://github.com/prometheus/node_exporter ○ ノードの CPU, メモリ, Disk, Network などの様々なメトリクスを エクスポート ● NVIDIA dcgm-exporter ○ https://github.com/NVIDIA/gpu-monitoring-tools#dcgm-exporter ○ GPU の利用率, 電力消費量, 温度などのメトリクスをエクスポート ● blackbox exporter ○ https://github.com/prometheus/blackbox_exporter ○ 監視対象に対する HTTP, HTTPS, DNS, TCP , ICMP によるシンプルな外形監視に利 用可能 ○ PFN ではネットワークの疎通確認や NFS の死活監視に利用 33
  • 34. Node Problem Detector (NPD) ● https://github.com/kubernetes/node-problem-detector ● DaemonSet として各ノードで実行し、ノードの問題を検知した場合、 独自の Condition の変更や Event を作成可能 ● 検知方法 ○ システムログモニタ ■ 各種ログファイルを監視 ● filelog プラグイン: 任意のログファイル ● journald プラグイン: journald のログ ● kmsg プラグイン: カーネルログ(/dev/kmsg) ○ カスタムプラグインモニタ ■ custom プラグイン: 任意の監視スクリプトの標準出力と終了 コードで問題を通知する 34
  • 35. NPD の Custom Plugin (1/2) GPU ● nvidia-smi コマンドで出力されるログをもとに、障害の有無を判断 Pod (プロセス) ● ノード上のプロセスの State (Running, Sleep, Stopped, ...) 、Docker コンテナ、Pod の情報を取得 ● どの Pod のどのプロセスが、どんな State にあるかを監視 ● 削除済みの Pod のプロセスが D state の場合、異常と判断 35 $ nvidia-smi ... Unable to determine the device handle for GPU 0000:1C:00.0: GPU is lost. Reboot the system to recover this GPU
  • 36. NPD の Custom Plugin (2/2) ネットワーク ● 各ネットワークインターフェースの IP アドレスとリンクの状態を定期 的に監視 NFS ● NFS がマウントされているかの確認 ○ stat コマンドによりマウントポイントのファイルシステムを監視 ● ノードから NFS の死活監視 ○ ping, rpcinfo コマンドにより NFS サーバーへの疎通確認 36
  • 37. Node Operation Controller (自社開発) ● https://github.com/pfnet-research/node-operation-controller ● ノードの Condition の変化により任意のオペレーションを実⾏ ○ ノードの Condition を監視 ○ 条件を満たすとそのノードのメンテナンス処理を実⾏する Pod を 作成するコントローラ ● PFN では Condition の変更には Node Problem Detector とそれと連携 する内製のツール (custom プラグイン) を使⽤ ● Condition に応じてノードの再起動、NFS のマウントなどの復旧処理 を行う Pod を作成 37
  • 38. alertmanager-to-github (自社開発) ● https://github.com/pfnet-research/alertmanager-to-github ● Alertmanager からの Webhook を受け取って GitHub イシューを作成 ○ 新しいアラートから GitHub イシューを作成 ○ アラートが resolved ステータスになるとイシューをクローズ ○ アラートが再度 firing ステータスになるとイシューをリオープン 38
  • 39. kube-janitor (1/2) ● https://codeberg.org/hjacobs/kube-janitor ● Kubernetes のリソース (pod, job, deployment,etc...) を特定の条件で 自動的に削除してくれる OSS ● 条件の指定は Pod に annotation を付与することで行う ● annotation は以下の 2 種類 ○ janitor/ttl : 指定された一定時間経過後に削除 ○ janitor/expires : 指定された日時を過ぎたら削除 39
  • 40. kube-janitor (2/2) ● PFN では node-exporter, dcgm-exporter のメトリクスから CPU, GPU がアイドル状態の Pod や Pending のままの Pod を検知 ● アラートを独自の webhook で受け、kube-janitor の annotation を付 与し、自動削除に利用 ● 自動削除前に Slack でユーザーに通知 40
  • 42. 42 Kubernetes クラスタの管理も自動化したい ワーカノードや Pod の障害や問題への対処は自動化できてきたが、 Kubernetes を使っていくうえでの大きな課題にはクラスタ自体の管理もある! ● Kubernetes クラスタの管理とは? ○ 実マシンを使ったクラスタを新たに構築したい ○ 検証用に一度のノードをクラスタから外したい ○ 検証が終わったらノードをクラスタに戻したい ○ クラスタをアップグレードしたい! オンプレミスでもマネージド Kubernetes サービスのようにクラスタの管理をいい感じ にやりたい。そこで Cluster API が使えます。 (そもそもオンプレでのバニラ Kubernetes の使用は相当な覚悟でやってください)
  • 43. 43 Cluster API とは 複数の Kubernetes クラスタの作成やアップグレード、 そのほかクラスタをオペレーションをするための宣言的な API と ツールを提供する SIG Cluster Lifecycle のサブプロジェクト ● Kubernetes クラスタの望ましい状態を宣言的に管理し(マニフェストファイ ル)、Kubernetes コントローラが実際のインフラが望ましい状態と一致するよう に継続的に調整する(Reconcile) たとえば、MySQL Operator は MySQL の作成や削除、管理を自動化してくれる。 Cluster API は Kubernetes クラスタのそういった作業を自動化してくれるので、 「Kubernetes Cluster Operator」ともいえる。
  • 44. 望ましい状態を宣言的に管理するとは 44 apiVersion: cluster.x-k8s.io/v1alpha3 kind: Cluster metadata: name: my-cluster namespace: default spec: clusterNetwork: services: cidrBlocks: ["10.96.0.0/12"] pods: cidrBlocks: ["192.168.0.0/16"] serviceDomain: "cluster.local" controlPlaneRef: apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 kind: KubeadmControlPlane name: controlplane namespace: default infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: DockerCluster name: my-cluster namespace: default apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19
  • 46. PFN における Cluster API の利用状況
  • 47. 47 PFN における Cluster API の使用状況 ● 2021年4月時点で、1拠点の Kubernetes クラスタを Cluster API により作成したものに移行 ○ Kubernetes バージョン: v1.20.2 ○ Cluster API バージョン: v0.3.14 ● 今後もう1拠点のクラスタも Cluster API に移行予定
  • 48. データセンタ 48 PFN での Cluster API の構成 Management Cluster (EKS) Cluster API コンポーネント kubeadmControlPlane kubeadmBootstrap MAASInfrastructureProvider Machine Images GitOps (Flux v2) cluster.yaml MAAS API Packer Ansible Playbook CI ゴールデン イメージ Machine Machine Machine Workload Cluster kubectl
  • 49. 現状の課題とその解決案 ➔ マシンのセットアップに時間かかりすぎる ◆ セットアップの大部分をゴールデンイメージに寄せる ◆ ドライバのコンテナによるロード ➔ MachineHealthCheck でマシンの再作成ではなく、再起動させたい ◆ マシンのセットアップにかかる時間を最小化して再作成 ◆ OR 独自の Remediation(修復)を開発 ➔ MachineDeployment のレプリカ数の調整が面倒 ◆ いい感じにやってくれる Kubernetes コントローラを開発 ➔ 狙ったマシンをクラスタから外す手順が面倒 ◆ いい感じにやってくれる Kubernetes コントローラの開発 ➔ ControlPlane ノードのサイズが大きすぎる ◆ VM の導入(KubeVirt?) 49
  • 51. まとめ(1/2) ● PFN での Kubernetes における自動化 ○ ML/DL 向けの効率的なスケジューリングを実現する カスタムスケジューラ ○ クラスタ/ノードの運用/障害対応を自動化するコントローラ ● クラスタで発生する様々な障害 ○ クラスタは常にどこかが壊れている ● Kubernetes を用いた自動化への取り組み ○ Node Problem Detector (NPD) を使い、独自の Condition を 定義、障害検知に利用 51
  • 52. まとめ(2/2) ● オペレーションの自動化を担うソフトウェア ○ Prometheus と exporter、NPD のカスタムプラグインを多用 ○ alertmanager-to-github: アラートから GitHub イシューを 作成して管理 ○ kube-janitor: 特定の条件を満たすリソースを自動的に削除 ● Kubernetes クラスタの管理自動化の取り組み ○ Cluster API を使うとクラスタをマニフェストとして管理できる ● PFN における Cluster API の利用状況 ○ 1拠点で Cluster API を利用したクラスタに(ほぼ)移行 ○ MAAS をインフラストラクチャとして使用したプロバイダを開発 ○ 様々な課題がみえているので、今後それらの解決に取り組む 52
  • 53. Thanks / Question? ● SUDA Kazuki (@superbrothers)、SAKATA Masao ● スライド: https://www.slideshare.net/pfi 53