LoginSignup
0
1

More than 3 years have passed since last update.

SingularityをベースにAnaconda+PyMC3+Jupyter環境を構築する

Last updated at Posted at 2019-09-22

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

a2. 参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1