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
550
HPCでの業界標準コンテナランタイムSingularityを知っていますか?
Container Runtime Meetup #4 LT
森本賢治
August 20, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
Azure App Service on Linux の Sidecar に Phi-3 を配置してインテリジェントなアプリケーションを作ってみよう/jazug-anniv14
thara0402
0
420
LeSSはスクラムではない!?LeSSにおけるスクラムマスターの振る舞い方とは / Scrum Master Behavior in LeSS
toma_sm
0
210
普通の Web エンジニアのための様相論理入門 #yapcjapan / YAPC Hakodate 2024
ytaka23
5
1.5k
【shownet.conf_】ローカル5Gを活用したウォーキングツアーの体感向上
shownet
PRO
0
350
クレジットカードを製造する技術
yutadayo
81
47k
【shownet.conf_】ShowNet伝送改めShowNet APN 2024
shownet
PRO
0
450
CData Virtuality を活かせるキーシナリオと製品デモ
cdataj
0
220
エンジニア向け会社紹介資料
caddi_eng
14
270k
Perlで始めるeBPF: 自作Loaderの作り方 / Getting started with eBPF in Perl_How to create your own Loader
takehaya
1
900
【shownet.conf_】トポロジ図の歩き方
shownet
PRO
0
520
ゼロから実装まで!機械学習入門
natsuki0726
0
180
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hakodate2024
fujiwara3
7
3.3k
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
327
38k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
4
120
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2k
Optimizing for Happiness
mojombo
375
69k
How to Ace a Technical Interview
jacobian
275
23k
Robots, Beer and Maslow
schacon
PRO
157
8.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
3
230
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
249
21k
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
From Idea to $5000 a Month in 5 Months
shpigford
381
46k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
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]