前提: ABCIとは
AI橋渡しクラウド(AI Bridging Cloud Infrastructure、以下「ABCI」という)は、国立研究開発法人 産業技術総合研究所が構築・運用する、AI技術開発・橋渡しのためのオープンな計算インフラストラクチャです。ABCIは、2018年8月に本格運用を開始し、2021年5月にABCI 2.0にアップグレードされました。
引用: https://docs.abci.ai/ja/
TL;DR
- abciではSingularityしか使えない
- Dockerはroot権限が奪われる危険性があるため,共用サーバでの使用は忌避される
- しかし,どうしてもDockerイメージが使いたい場合ってあるよね
- → Singularity Imageに変換して使いましょう
- 変換の仕方には2パターンある
- パターン1. GitLabを使ってabci上で変換する
- パターン2. ローカルで変換
- 変換の仕方には2パターンある
引用: https://abci.ai/ja/how_to_use/data/ABCI-MiniCamp_Singularity_202105.pdf
最低知識
- Docker Image は Singularity Imageに変換できる
- GitLabはDocker Hubとは異なり,private projectsを無料で無制限に使える
ABCIで任意のDockerイメージを使用する (パターン1)
- 流れ
- ローカルからGitLabに当該Docker Imageをpush
- abci上で
singularity remote login
でGitLabに接続 - abci上で Docker Image を Singularity Imageに変換
- Singularityでコンテナを立ち上げる
step0a. 当該Dockerfileをビルド
|
|
step0b. GitLabにログイン (2FAで弾かれる場合はこちらを参照)
|
|
step1. ローカルからGitLabに当該Docker Imageをpush
|
|
step2. abci上でimageをpull
注: m1project
やyuigawada
を適宜自分のものに切り替えてください.
|
|
FATAL ERROR: Out of memory (cache_alloc)で怒られる場合 (パターン2)
- パターン1だと,原因不明だがabci上だとメモリが足りないと言われることがある
- そういうときは,ローカルでsifファイルを作りましょう
- docker2singularityを使えば一発で作れる
step1. sifファイルに変換 / scpでsifファイルを転送
|
|
SIFの実体はsquashfsという圧縮ファイルシステムで、ローカルのメモリ上で展開します。そのため、 ホームディレクトリ内に展開したライブラリをimportしまくるよりもストレージの負荷が低く、環境 によってはアプリケーションの起動等が有意に速いことがあります。特に多数のジョブを同時展開す る場合は有利かもしれません。
引用: https://abci.ai/ja/how_to_use/data/ABCI-MiniCamp_Singularity_202105.pdf
step2. 実行してみる (とりあえずインタラクティブジョブで動作確認)
|
|
step3. バインドしていないもの以外はread-onlyなので,workspaceをバインド
|
|
→ 成功です🎉🎉🎉🎉🎉🎉🎉