SlideShare a Scribd company logo
Ryota Arai, Preferred Networks
Prometheus Tokyo Meetup #2
Prometheus at PFN
だれ
• Ryota Arai / 荒井 良太
• Preferred Networks (PFN)
• Kubernetes GPUクラスタ運⽤
• twitter.com/ryot_a_rai
• OSS: Itamae, Infrataster
Preferred Networks
• 深層学習技術の実⽤化を進め、様々な分野で

イノベーションの実現を⽬指している企業
• 深層学習のワークロードが多い
• 学習を⾼速に進めるためGPUが必要
PFNのクラスタ
https://www.preferred-networks.jp/ja/news/pr20190318
NEW!
= 2,560 GPUs
PFNのクラスタ
• 2,560 GPUs / 320ノード
• Kubernetesクラスタを構築し、PodからGPUを利⽤
• InfiniBand, RoCE (RDMA over Converged Ethernet)
• 低レイテンシ、⾼速なノード間通信を利⽤して

分散学習を⾏っている
Prometheus
• 前述の機械学習基盤のモニタリングに利⽤
• クラスタの利⽤状況など
• Kubernetesとのインテグレーション
• ラベルがついたメトリック、強⼒なクエリ⾔語(PromQL)
• が、むずかしい

(⼊⾨Prometheusで詳しく解説されています)
Nodes
Nodes
Exporters
MN-1 MN-2 (構築中)
Trickster
Grafana
PrometheusThanos
Sidecar
Thanos
sidecar
Thanos Store Thanos StoreThanos Query
Query
Recorder
S3
Prometheus
Operator
構成
Alertmanager
Nodes
Nodes
Exporters
MN-1 MN-2 (構築中)
Trickster
Grafana
PrometheusThanos
Sidecar
Thanos
sidecar
Thanos Store Thanos StoreThanos Query
Query
Recorder
S3
Prometheus
Operator
構成
Alertmanager
Prometheus Operator
• github.com/coreos/prometheus-operator
• Prometheusのデプロイ・設定をKubernetesのカスタム
リソースで⾏える
• Prometheus本体の設定やscrape対象など
• KubernetesのRBACを活⽤できる
• PFNではkube-prometheusを利⽤してデプロイしている
kube-prometheus
• KubernetesでPrometheusを使うときに必要なものをまとめてデプロイできる

(Prometheus本体、エクスポータ、スクレイプ設定など)
• Jsonnetでカスタマイズ可能
• jsonnet/kube-prometheus以下を⾒て頑張る
# Tips: configが⽤意されてないフィールドを変更する例
local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') + {
prometheus+:: {
prometheus+: {
spec+: {
resources: {limits: {memory: "64Gi"}}}}}};
Nodes
Nodes
Exporters
MN-1 MN-2 (構築中)
Trickster
Grafana
PrometheusThanos
Sidecar
Thanos
sidecar
Thanos Store Thanos StoreThanos Query
Query
Recorder
S3
Prometheus
Operator
構成
Alertmanager
エクスポータ
• kube-prometheusでデプロイされるもの
• Node exporter, kube-state-metrics, kubeletなど
• NVIDIA DCGM exporter
• kube-nvidia-gpu-exporter(内製)
NVIDIA DCGM exporter
• NVIDIA GPUのメトリックを出⼒するエクスポータ
• DCGM (Data Center GPU Manager)の出⼒を

awkで整形してnode exporterのtextfile collectorに流す
• メトリック例: dcgm_gpu_utilization,
dcgm_gpu_temp, dcgm_power_usage,
dcgm_fb_used
kube-nvidia-gpu-exporter
• PodとそのPodが利⽤しているNVIDIA GPUの組を

出⼒するエクスポータ
• これと先程のDCGM exporterを組み合わせると特定のPodのGPUメトリック
がクエリできる
# kube_nvidia_gpu_pod{pod="...", namespace="...", uuid="..."} 1
avg by (uuid) (

dcgm_gpu_utilization{} and on(uuid) 

kube_nvidia_gpu_pod{pod="$pod", namespace="$namespace"}

)
Nodes
Nodes
Exporters
MN-1 MN-2 (構築中)
Trickster
Grafana
PrometheusThanos
Sidecar
Thanos
sidecar
Thanos Store Thanos StoreThanos Query
Query
Recorder
S3
Prometheus
Operator
構成
Alertmanager
アラート
• Alertmanagerを使⽤
• GPUを確保しながら使われていない場合に

ユーザに通知
• Alertmanagerのwebhook receiver
• Podからユーザを特定しSlackでDMする

webhookを実装
Slack
• 毎朝クラスタのメトリックを

Slackに投稿している
• クラスタの利⽤状況などを

意識できるように
• Grafanaでレンダリングした画像を
Slackに投稿(スクリプト例)
Nodes
Nodes
Exporters
MN-1 MN-2 (構築中)
Trickster
Grafana
PrometheusThanos
Sidecar
Thanos
sidecar
Thanos Store Thanos StoreThanos Query
Query
Recorder
S3
Prometheus
Operator
構成
Alertmanager
Thanos
• thanos.io
• "Highly available Prometheus setup with long term storage
capabilities"
• Global Query View
• Unlimited Retention
• Downsampling & Compaction
• 近い⽬的のプロダクトとしてCortexもある
• 少し前までドキュメントがほぼなかったけど、最近増えている
Thanos
PrometheusThanos Sidecar TSDB blocks
Object Store
(S3, GCS)
Thanos QueryThanos Store
Thanos Store
Client
(Grafana, etc.)
TSDB blockを
アップロード
Blockを取得
(Range GETを使⽤)
Store API
Store API
(Blockになっていない

WALの部分を取得するため)
Remote Read API
Prometheus
HTTP API
※Thanos Compactは省略
High Availability
• 複数のPrometheusから保存された

メトリックをdeduplicateする(Thanos Query)
• 特定のラベル(replica label)だけ

異なる場合⼀つだけ使⽤する
• これによりPrometheusの冗⻑化が可能になる
Global Query View
• 複数のPrometheusにまたがったメトリックをクエリできる
• 以前はFederationで1つのPrometheusに集約していた
• Federationする量に⽐例してscrape時間がかかる
• scrape timeoutとの戦い、scrape intervalを
• scrapeによってメトリックが遅延する
• ⼊⾨Prometheusではバッドプラクティスとして

紹介されている(P.338 20.2)
Unlimited Retention
• データストアとしてS3やGCSなどの

オブジェクトストレージを利⽤でき、

無限に蓄積できる 💸
• ただ、メモリ使⽤量の増加には気をつける
• Remote Writeは使⽤していない
Downsampling & Compaction
• ダウンサンプリングは現在のところ利⽤していない
• ダウンサンプルされたメトリックは

単純な間引きではなく

avg, sum, min, maxなどの統計値となる
• クエリする際にはavg_over_timeなどの関数を

使う必要がある
Thanos at PFN
• Thanos Store, Queryはステートを持たない
• かつ、結構メモリを⾷う
• EC2スポットインスタンスを利⽤している
• 既存PrometheusのThanosへの移⾏
• #348 sidecar: Allow to upload old (already compacted blocks).
• 1. meta.jsonにThanos特有のデータを追加する
• 2. aws s3 cp --recursive prometheus-tsdb/ s3://.../
メモリ使⽤量問題
• クエリや時間範囲によっては⼤きなメモリを必要とする
• OOM killerによって殺される
• 学習ジョブによってPod数が増えやすい
• カーディナリティが⾼く、インデックスが⼤きくなる
• クエリ・時間範囲によるので、事前に⾒積もるのが困難
• --query.max-samples で失敗させることは可能
Recording Rule
• Recording Rule
• クエリの結果をメトリックとして保存する機能
• Cons: 過去にさかのぼってレコードすることはできない
ので、あとから追加することは困難
# 例
- record: "instance_path:requests:rate5m"
expr: 'rate(requests_total{job="myjob"}[5m])'
Nodes
Nodes
Exporters
MN-1 MN-2 (構築中)
Trickster
Grafana
PrometheusThanos
Sidecar
Thanos
sidecar
Thanos Store Thanos StoreThanos Query
Query
Recorder
S3
Prometheus
Operator
構成
Alertmanager
Query Recorder
• バックグラウンドでクエリを実⾏し

キャッシュするサーバを開発(内製)
• クエリ先への負荷を抑えるため

ある程度短いレンジで繰り返し

クエリを発⾏
• 00:00-01:00, 01:00-02:00, ...
• Remote Read APIで利⽤する
• Thanosで利⽤するためSidecarを

挟んでいる
Client
Prometheus
Query Recorder
QueryRange
Remote Read
Cached
Metrics
QueryRange
(Range: 1h)
Write Read
Thanos
Sidecar
Thanos
Query
Trickster
• github.com/Comcast/trickster
• クエリの結果をキャッシュするサーバ
• 差分の時間範囲のみオリジンに

問い合わせるためキャッシュを

有効活⽤できる
• Grafanaの前段に配置することで

⼀度表⽰したパネルの⾼速化を図っている
Client
(Grafana)
Trickster
Prometheus
Cache
Data
QueryRange
QueryRange
(when cache miss)
Nodes
Nodes
Exporters
MN-1 MN-2 (構築中)
Trickster
Grafana
PrometheusThanos
Sidecar
Thanos
sidecar
Thanos Store Thanos StoreThanos Query
Query
Recorder
S3
Prometheus
Operator
構成
Alertmanager

More Related Content

PPTX
コンテナネットワーキング(CNI)最前線
PDF
分散システムの限界について知ろう
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PDF
シリコンバレーの「何が」凄いのか
PDF
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
PPTX
本当は恐ろしい分散システムの話
コンテナネットワーキング(CNI)最前線
分散システムの限界について知ろう
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
シリコンバレーの「何が」凄いのか
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
本当は恐ろしい分散システムの話

What's hot (20)

PDF
Python 3.9からの新定番zoneinfoを使いこなそう
PDF
マイクロサービス 4つの分割アプローチ
PDF
Kubernetesによる機械学習基盤への挑戦
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PDF
超実践 Cloud Spanner 設計講座
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
あなたの知らないPostgreSQL監視の世界
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
PPTX
トランザクションの設計と進化
PPTX
Istioサービスメッシュ入門
PDF
kube-system落としてみました
PPTX
Prometheus入門から運用まで徹底解説
PDF
テスト文字列に「うんこ」と入れるな
PDF
実環境にTerraform導入したら驚いた
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Python 3.9からの新定番zoneinfoを使いこなそう
マイクロサービス 4つの分割アプローチ
Kubernetesによる機械学習基盤への挑戦
Dockerfile を書くためのベストプラクティス解説編
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
超実践 Cloud Spanner 設計講座
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
あなたの知らないPostgreSQL監視の世界
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
トランザクションの設計と進化
Istioサービスメッシュ入門
kube-system落としてみました
Prometheus入門から運用まで徹底解説
テスト文字列に「うんこ」と入れるな
実環境にTerraform導入したら驚いた
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Ad

Similar to Prometheus at Preferred Networks (20)

PDF
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
PDF
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
PDF
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PDF
モニタリングプラットフォーム開発の裏側
PDF
オフィスに1台!全文検索Fess
PDF
2015 0228 OpenStack swift; GMO Internet Services
PPT
Osoljp201210 oi swift
PDF
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
PDF
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
PDF
Dockerの仕組みとIIJ社内での利用例
PDF
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
PPTX
認証/認可が実現する安全で高速分析可能な分析処理基盤
PDF
serverless openstack 101
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PDF
OpenStack Ops Mid-cycle Meetup 参加報告
PPTX
OpenStack Congress Deep Dive
PDF
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
PDF
Gmo media.inc 第9回西日本ossの普及を考える会
PPT
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
PPTX
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
モニタリングプラットフォーム開発の裏側
オフィスに1台!全文検索Fess
2015 0228 OpenStack swift; GMO Internet Services
Osoljp201210 oi swift
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
Dockerの仕組みとIIJ社内での利用例
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
認証/認可が実現する安全で高速分析可能な分析処理基盤
serverless openstack 101
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
OpenStack Ops Mid-cycle Meetup 参加報告
OpenStack Congress Deep Dive
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
Gmo media.inc 第9回西日本ossの普及を考える会
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
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
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
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回情報科学若手の会
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50

Prometheus at Preferred Networks