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
760
HPCでの業界標準コンテナランタイムSingularityを知っていますか?
Container Runtime Meetup #4 LT
森本賢治
August 20, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
ビズリーチ求職者検索におけるPLMとLLMの活用 / Search Engineering MEET UP_2-1
visional_engineering_and_design
1
160
衛星画像超解像化によって実現する2D, 3D空間情報の即時生成と“AI as a Service”/ Real-time generation spatial data enabled_by satellite image super-resolution
lehupa
0
190
能登半島災害現場エンジニアクロストーク 【JAWS FESTA 2025 in 金沢】
ditccsugii
0
900
Digitization部 紹介資料
sansan33
PRO
1
5.6k
Claude Code Subagents 再入門 ~cc-sddの実装で学んだこと~
gotalab555
10
16k
AWSでAgentic AIを開発するための前提知識の整理
nasuvitz
2
190
能登半島地震において デジタルができたこと・できなかったこと
ditccsugii
0
250
初めてのDatabricks Apps開発
taka_aki
1
130
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
14k
能登半島地震で見えた災害対応の課題と組織変革の重要性
ditccsugii
0
1k
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
1
170
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
8.8k
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Building an army of robots
kneath
306
46k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Docker and Python
trallard
46
3.6k
Side Projects
sachag
455
43k
Practical Orchestrator
shlominoach
190
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
Code Review Best Practice
trishagee
72
19k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Making Projects Easy
brettharned
120
6.4k
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]