0. 更新すべき点
- 以下環境のインストールは通るのですが,PyMC3のバージョンが古くサンプリング計算がエラーとなることが後日わかりました.
- 本稿では記載していないのですが,Singularity上にPython3を入れvenvを用いずにpipをインストールすることでPyMC3の動作も確認できました.
- (Python3のDockerイメージとしては,Docker://rackspacedot/python37などを使わせて頂きました.)
1. 背景と目的
- モンテカルロ計算ライブラリであるPyMC3の利用環境構築したい
- 最初はvenv + pipで着手したが,Theanoのインストール課題が解消できず断念
- Anacondaベースで構築するとTheanoインストールの課題を回避できた
- Anacondaの環境分離として,コンテナエンジンであるSingularityを適用してみた
- 可視化プラットフォームとしてJupyterもインストール
2. 手順
- Singularityをインストール(オフィシャルサイトなどを参考に)
- 構成ファイル(aaaa.def)を作成
- 以降で例を記載
- 構成ファイルを使ってSingularityイメージ(bbbb.sif)をビルド
-
sudo singularity bbbb.sif aaaa.def
aaaa.defからbbbb.sifを生成
-
- イメージの実行
-
singularity run bbbb.sif
runscriptの実行 -
singularity shell bbbb.sif
コンテナ環境内でのシェルの立ち上げ - --writableオプションでホスト側にファイル書き込み可能になる
- コンテナが都度作成されるわけではない(Dockerとの違い)
-
3. 構成ファイル例
aaaa-sample.def
BootStrap: docker
From: continuumio/anaconda3:2019.07-alpine
# Bootstrap: ベースのコンテナ群を選択する e.g.) library, docker
# singularity hub以外にもDocker hubのイメージを適用できる
# From: 具体的なイメージ名の指定.今回はAnaconda3導入済みイメージをベースにする
# 最新版はビルドが失敗し(2019年9月時点),2019.07-alpineをタグとして指定
# コメントアウトは#を文頭につける
# %files: ビルド時にファイル群をコピーできる
# 以下の例では,ホスト側で./dataのファイル群をコンテナ側で/tmp/dataにコピーする
%files
# ./data /tmp/data
# %environment: 環境変数の設定
%environment
export LC_ALL=C
export PATH=/opt/conda/bin:$PATH
# %post: ビルド時に実行するコマンドを作成する
# 以下の例ではcondaによるパッケージのインストールを実行
%post
export PATH=/opt/conda/bin:$PATH
/opt/conda/bin/conda install pymc3 jupyter -y
# %runscript: singularity run bbbb.sif で実行されるコマンド
# 以下の例ではjupyter notebookを起動
# コンテナ側からホスト側にファイル書き込み許可するには--writableオプションを実行時につける
%runscript
jupyter notebook --notebook-dir=$PWD/notebooks --ip='*'
%labels
Author k0syam
4. まとめ
コンテナエンジンの勉強も兼ねて環境構築を行いました.タスクに対する最適な構成は難しい課題ですが,それを考えるのも楽しめればと.
a1. 環境
- ホストPC: Ubuntu 18.04
- Singularity 3.3.0