conda共用環境の作り方
conda環境共用の原理
conda環境とは
仮想環境管理ツールです。この場合の仮想環境とは「1台のPC/サーバの中に、何個か入れておくことのできる仮想的な環境」のことです。例えば、
- 1台のPCの中にcondaをインストールし、その管理下で仮想環境Aと仮想環境Bを構築する
- 仮想環境Aには、Python3.9と、画像認識用のライブラリ一式をインストールしておく
- 仮想環境Bには、Python3.11と、大規模言語モデルの学習用のライブラリ一式をインストールしておく
といったことが可能になります。仮想環境同士は「独立」しているので、例えば仮想環境Aに既にされているPython3.9環境が、新たに仮想環境BにPython3.11に壊されてしまう、といった悪影響を及ぼすことはありません。
以下は、Team-Tankiの多くの方々が使っていたインストール方法です。
# conda環境をインストールする
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
bash Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
condaを1回インストールしておけば、その下に複数の仮想環境を作ることが可能です。以下は、condaの管理下に2つの仮想環境を構築する操作の例です。
# Python3.9画像認識用の仮想環境を作成してその中で作業を行い、終える
conda create -n env_img_recognition python=3.9
conda activate env_img_recognition
... この間、色々と作業を行う ...
conda deactivate
# Python3.11 大規模言語モデル学習用の仮想環境を作成してその中で作業を行い、終える
conda create -n env_llm_pre_training python=3.11
conda activate env_llm_pre_training
... この間、色々と作業を行う ...
conda deactivate
conda共用環境とは:複数インストールし切り替えて利用できる環境
前章では、1つのconda環境の管理下に複数の仮想環境を構築できることを紹介しましたが、「conda環境自身」も、複数の場所にインストールすることが可能です。例えば個人で使っているPC上でも
/tmp/miniconda3_01
/tmp/miniconda3_02
のように、複数のcondaを、異なるフォルダに独立してインストールすることが可能です。
ちなみに、2つのディレクトリにconda環境をインストールするためには、2回インストールを行います。
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
bash Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
bash Miniconda3-py310_23.10.0-1-Linux-x86_64.sh <- もう一回行う
で、各回のインストールの途中で聞かれる「インストール場所」に対して、別々の場所を指定すればOKです。指定の仕方の例を以下に示します。
複数インストールしたら、以下のようにすることで、/tmp/miniconda3_01にインストールした環境を使うことができます。
source /tmp/miniconda3_01/etc/profile.d/conda.sh
この状態でconda info --envsを行うと、baseという文字の位置から、現在動作しているcondaがminiconda3_01側であることがわかります。
逆に、/tmp/miniconda3_02にインストールした環境を使いたい場合は、以下のようにします。
source /tmp/miniconda3_02/etc/profile.d/conda.sh
この状態でconda info --envsを行うと、現在動作しているcondaがminiconda3_02側であることがわかります。(以下は筆者のWSL環境での実行例です。)
共用ディスク環境にインストールしてプロジェクトメンバー間で共有する方法
前述の通り、source [minicondaインストールフォルダ]/etc/profile.d/conda.sh コマンドだけでconda環境を切り替えられるという性質を利用すると、複数の人が共有ディスク環境にconda環境をインストールすることで、それらのconda環境を複数メンバー間で共有することができます。
これを実現するためには、複数の人が、共用ディスク環境の違うフォルダにconda環境をインストールします。例えば、チームで共有ディスク領域/sharedを準備し、Aさんは/shared/miniconda3_Aに、Bさんは/shared/miniconda3_Bに、それぞれconda環境をインストールすればOKです。その方法は前述の方法と同じで、各自が
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
bash Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
として、途中で聞かれるインストール場所として、Aさんは/shared/miniconda3_Aを、Bさんは/shared/miniconda3_Bを指定すればOKです。その後も、Aさんはminconda3_Aの管理下に、Bさんはminiconda3_Bの管理下に、それぞれの仮想環境を構築します。そうすれば、Bさんは
source /shared/miniconda3_A/etc/profile.d/conda.sh
conda activate Aさんがインストールした仮想環境名
とするだけで、Aさんの環境設定を再利用することができるのです。
この性質を利用すると、複数メンバ間で作業の受け渡しがやりやすくなったりもします。例えば
- Aさんは事前学習に使うデータのキュレーションを行う仮想環境を、minconda3_A環境の管理下に構築して作業している
- Bさんは事前学習用と評価用の2つの仮想環境を、minconda3_B環境の管理下に構築して作業している
- 上記の状態で、もしもAさんが忙しくて事前学習データのキュレーションを進められなくなってしまった場合、Aさんは特に新たな環境をインストールしなくても、Bさんのconda環境を間借りするだけで、代わりに作業を進めることができる
といったことができるのです。
まとめ
本稿では、conda環境を複数インストール可能なことを紹介し、その性質を用いて複数人で共用できるconda環境の構築方法を解説しました。
Team Tanukiでもconda環境の共用は実際に行われていましたし、GENIACプロジェクトはもちろん、チームで行う研究室や企業での開発にもお使いいただける内容かと思います。本稿の内容が皆様のお役に立てれば幸いです。
謝辞
この成果は、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)の助成事業「ポスト5G情報通信システム基盤強化研究開発事業」(JPNP20017)の結果得られたものです。
東京大学 松尾・岩澤研究室が運営する松尾研LLMコミュニティのLLM開発プロジェクト[GENIAC] の開発記録、情報発信になります。 各種リンクはこちら linktr.ee/matsuolab_community
Discussion