内容
こちらでは、私がつまづいた点などをまとめていきます。
anacondaを使って環境構築をします。
手順
- definition file から sifファイルを作成
singularity build --fakeroot <container_name>.sif <definition_file>
- 使用したdefinition fileはこちらです。
Bootstrap: docker
From: ubuntu:16.04
%post
# initial get updated and command
apt-get -y update && apt-get install -y --no-install-recommends bzip2 vim git wget htop tmux
# gcc and g++
apt-get install -y build-essential
apt-get install -y software-properties-common
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install g++-7 gcc-7
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 7
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 7
gcc --version
g++ --version
# prerequisite for anaconda
apt-get install -y --no-install-recommends libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
# anaconda
wget --no-check-certificate https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
# /anaconda以下にインストール
bash ./Anaconda3-2022.05-Linux-x86_64.sh -b -p /anaconda
rm ./Anaconda3-2022.05-Linux-x86_64.sh
echo 'export PATH=/anaconda/bin:/bin:/usr/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
conda update -y -n base -c defaults conda
- sandboxをsifから作成
singularity build --sandbox <sandbox_name> <container_name>.sif
- コンテナ内(sandbox)にログイン
singularity shell --fakeroot --writable <sandbox_name>
- conda pathの確認
which conda => ※/anaconda/bin/conda
/anaconda以下のcondaが呼ばれていることを確認。私の場合、コンテナを立てているサーバーのcondaが読み込まれており、競合して複数のエラーが発生した。
- 仮想環境を作成し必要なパッケージのインストール
conda create -y -n pytorch3d python=3.8
eval "$(conda shell.bash hook)"
conda activate pytorch3d
conda install pytorch torchvision torchaudio -c pytorch
conda install -y -c fvcore -c iopath fvcore iopath
conda install -y -c bottler nvidiacub
conda install -y jupyter
エラーが発生した際に確認すると良いこと
全て、/anaconda以下のファイルが参照されているか確認
anacondaのpath
which conda
pythonのpath
which python
pipのpath
which pip
packageのpath
python
>> import numpy
>> print(numpy.__file__)
cuda関連の場合
cudaが読み込まれているか
torch.cuda.is_available()
cudaのバージョン
print(torch.version.cuda)