Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HPCでの業界標準コンテナランタイムSingularityを知っていますか?
Search
森本賢治
August 20, 2022
Technology
0
410
HPCでの業界標準コンテナランタイムSingularityを知っていますか?
Container Runtime Meetup #4 LT
森本賢治
August 20, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
Garoon 開発チーム / Garoon development team
cybozuinsideout
PRO
2
2.9k
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
2
670
少数チームで挑む: SwiftUI, TCA, KMPを用いた 新規動画配信アプリ 「ABEMA Live」の開発について
tomu28
0
540
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
320
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
150
Databricks:『生成AI World Cup』のご案内
databricksjapan
2
150
〜小さく始めて大きく育てる〜データ分析基盤の開発から活用まで
kniino
0
2k
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
0
160
Next'24 事例セッションの紹介とクラウド資格を活用したキャリア形成について語りMuscle
yasumuusan
1
340
OpenTelemetry を使ったトレースエグザンプラーの活用 / otel-trace-exemplar
k6s4i53rx
2
640
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
340
転移学習とドメイン適応の基礎
kmatsui
2
570
Featured
See All Featured
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
Making Projects Easy
brettharned
108
5.5k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Faster Mobile Websites
deanohume
297
30k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Building Applications with DynamoDB
mza
88
5.6k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.4k
How GitHub (no longer) Works
holman
304
140k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
Become a Pro
speakerdeck
PRO
10
4.5k
Transcript
HPCでの業界標準 コンテナランタイム Singularity を知っていますか? Container Runtime Meetup #4 LT session.
20 Aug 2022 KMorimoto
Singularityとは • 米国Lawrence Berkeley National Laboratoryのスパコンで生まれ、HPC環境 での利用に即して開発されたコンテナ実装。類似のものに Shifter, CharieCloud 等。
• 修正BSDライセンスで配布されるオープンソースのコンテナ実装であると共に、同じく オープンな開発が進むイメージフォーマットの規格を含む。 • 開発を開始したのはCentOS創始者の一人Gregory Kurtzerで、当初はC++で記述 されていたが、その後Goで全面的に書き直し。 • 有償版を販売するSylabs社がコミュニティ主導で開発を行って配布している SingularityCE(https://github.com/sylabs/singularity )と、 元コミュニティから The Linux Foundation に移管され名称を変更した Apptainer(https://github.com/apptainer/apptainer ) に分かれている。 • それぞれ開発の方向性/優先順位等が微妙に異なっているが、コンテナランタイムの動 作としては後方互換。 • 主要Linuxディストリビューションの他、WSL2でも動作。
典型的なスパコン(HPCクラスタ)の構造 • 多数のサーバーを高速インターコネクト (1~200GbE,Infiniband等)で接続。 • 共有ファイルストレージを計算ノードの同一 ディレクトリにマウント。速度・容量重視のよう に用途毎に用意している場合もある。 • 直接ログインするノードをホストノードと呼
び、実行したい処理をシェルスクリプトで記 述、バッチジョブスケジューラに投入する。 • スケジューラは空いた計算ノードに、ユーザー の権限でジョブ(スクリプト)を実行していく。 短いもので数秒、長いと数か月。 • 使うアプリケーションは各計算ノードや共有 ファイルシステム内にセットアップしておく必 要がある。
HPCでコンテナに求められる要件(事情) • ウェブ系:システム構築して、サービス提 供。 HPC系:自分だけのアプリを使いたい。 • マルチテナント対応はほぼ不要。 • パフォーマンスが最重要。オーバーヘッドを 極限まで減らし、使える全リソースをシーム
レスに使いたい。 • アプリケーションと、必要なランタイム、OS のユーザーランドをまとめて個別保存し、 再利用したり、使い分けたりしたい。 • 構成の異なる複数サイトで同じイメージを 直感的に使いまわしたい。 • 結論:ユーザーランド+アプリケーションを カプセル化した、着せ替えツールが欲しい。
Singularityの特徴 独自イメージ構造(Singularity Image Format) • SquashFSを用いたシングルファイルのイメージ、かつ イメージファイルを直接実行可能。ハンドリングが容易。 • PGPで電子署名を付けられ、改ざんや混入を防止。 ホスト側リソースにシームレスにアクセス可能
• 起動したUIDがコンテナ内で有効で、ホームディレクトリや/tmpを デフォルトでマウント済み。ファイル持ち込み処理不要。 • ネットワーク、デバイス(/dev)、プロセス空間(/proc)も共有。 運用中 root権限を必要としない • ホスト側でDaemonを稼働させておく必要がない。 • コンテナ内外で、root権限を要求・発生しない使い方。 • 一般的な使い方ではイメージをローカルに展開しない。
使ってみる-1- [pteck@sing01 ~]$ singularity pull jammy.sif docker://ubuntu:latest INFO: Converting OCI
blobs to SIF format INFO: Starting build… Getting image source signatures Copying blob d19f32bd9e41 done Copying config 3f892a8eb9 done Writing manifest to image destination Storing signatures 2022/08/14 18:49:36 info unpack layer: sha256:d19f32bd9e4106d487f1a703fc2f09c8edadd92db4405d477978e8e466ab290d INFO: Creating SIF file… [pteck@sing01 ~]$ ls -l jammy.sif -rwxrwxr-x 1 pteck pteck 29810688 Aug 14 18:49 jammy.sif [pteck@sing01 ~]$ singularity exec jammy.sif head -n 4 /etc/os-release PRETTY_NAME="Ubuntu 22.04.1 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.1 LTS (Jammy Jellyfish)" [pteck@sing01 ~]$ ./ubuntu_latest.sif Singularity> grep `whoami` /etc/passwd pteck:x:1000:1000:pteck:/home/pteck:/bin/bash Singularity> pwd /home/pteck Singularity> ps ef PID TTY STAT TIME COMMAND 698 pts/0 Ss 0:00 -bash HOSTTYPE=x86_64 LANG=en_US.UTF-8……… 819 pts/0 Sl 0:00 ¥_ Singularity runtime parent 838 pts/0 S 0:00 ¥_ /bin/bash --norc BASH_FUNC_which%%=() {……… • CentOS7の環境でDockerHub からUbuntuイメージを取得して SIFに変換。 • SquashFSではデフォルトでgzip 圧縮がかかり、SIFファイルサイズは 30MB以下に抑えられている。 • コンテナ内のアプリケーションを直接 実行。Ubuntuであることを確認。 • SIFイメージを直接起動するとシェル が起動する。UIDやGID、ホームディ レクトリが引き継がれていることが 判る。
使ってみる-2- [pteck@sing01 ~]$ cat a-s.def Bootstrap: docker From: ubuntu:latest %post
apt update && apt clean all %runscript apt search $* [pteck@sing01 ~]$ singularity build -f apt-search a-s.def INFO: Starting build... <<中略>> INFO: Adding runscript INFO: Creating SIF file... INFO: Build complete: apt-search [pteck@sing01 ~]$ ./apt-search nginx-core Sorting... Done Full Text Search... Done nginx-core/jammy-updates,jammy-security 1.18.0-6ubuntu14.1 amd64 nginx web/proxy server (standard version) [pteck@sing01 ~]$ head -n 2 ./apt-search #!/usr/bin/env run-singularity kbkboci-config.json@PPkbkb02Bootstrap: dockerMkbkbinspect- metadata.json@¥ [pteck@pteck02 ~]$ singularity exec ./apt-search touch /hoge /usr/bin/touch: cannot touch '/hoge': Read-only file system • 定義ファイルを用いてSIFをビルド。 • 定義ファイル内で、ビルド時に必要な処理と、 実行時に必要な処理を記述。 • 特に%runscriptはイメージを直接実行し た際に実行する内容を記述できる。 • CentOS7から、Ubuntu22.04のapt searchができるコマンドが作れたりする。 • できたイメージをPATHが通ったところに 置けば、スタティックリングしたバイナリのよ うな使い勝手。コンテナを使っていることを 意識せずに使える。 • イメージファイルはスクリプトになっている。 • イメージの中はデフォルトでRead-onlyな ので、後付けでapt install等はできない。
どこで使われている? 有償・無償問わず 他にも利用者は多数。 理化学研究所 「富岳」 産業技術総合研究所 ABCI 2.0
Singularityの現在と今後 • Kubernetesのような、オーケストレーション実装が存在しない。 • DockerHubやORAS互換のリポジトリからイメージを取得するのは最初期からできて いたが、ランタイムとしてはOCIとは無縁の状況が続いていた。少なくともHPCのユーザー は必要としてこなかった面がある。 • OCI互換の動作をさせるociサブコマンドがあり、例えば singularity
oci mount ubuntu.sif /var/tmp/jammy のようにするとbundleが展開される。以前は独自 実装をしていたが、直近でリリースされた3.10でruncを呼び出すよう変更。 • OCIイメージを直接動作させたり(現在はblobのダウンロード後、SIFへ変換を行って いる)、OCIイメージをそのままカプセル化できるようSIF規格の拡張も進められており、 来年リリース予定の4.0で本格利用ができるようにするとのこと。 • podmanがSIFイメージを扱うことができるようになった(内部でイメージ変換)
Q&A? Thank you for your attention and interest. • Github:
https://github.com/sylabs/singularity • Slack: https://singularityce.slack.com • GoogleGroup: https://groups.google.com/g/singularity-ce • Mail:
[email protected]