miniconda

(以下は2021年5月6日時点の情報です.ライセンス条件は変更になる可能性があります.)

Anaconda が商用利用とならない範囲で Anaconda 環境がどれぐらい使えるのかを確認してみた.

なお,Anaconda3が既に導入されているWindowsに,minicondaをデフォルトのディレクトリ(Anaconda3と同じディレクトリ)に2回インストールするとAnaconda3のインストールも消えてしまうので注意.

AnacondaはPythonとそのライブラリ一式がパッケージ化されたものです.Pythonをインストールして,pipなどでライブラリを個別にインストールしても良いのですが,ライブラリの依存関係などが複雑な場合,インストールにかなり手間取ることがあります.Anacondaを使っておけば,このようなライブラリのバージョンの競合などを避けることができます(多少は発生します).

また,AnacondaというよりCondaを使うと,Pythonの環境が自由に切り替えられて便利です.特にPytorchなどを使って最近の深層学習モデルを動かすときには,そのモデル専用の環境を作らないと動いてくれなないことが多々あります.最近はモデルがAllen Institute のAllenAI, AllenNLPなどの強力なライブラリに依存していたりして,そちらの環境にも合わせてあげる必要があります.そのため,最新の深層学習モデルを研究していると,研究テーマごとにPythonの環境を作り(conda create -n 環境名),切り替え(conda activate 環境名)ながら実験していくことになります.このあたりのcondaの使い方は丁寧に紹介しているサイトがたくさんあるのでここでは説明しません.

大学等の教育機関ではAnacondaを無償で利用できるため,学生・教員はAnacondaのライセンスを気にする必要はありません.ただ,共同研究や講習会等で企業さんとも関係することがありますので,正確に確認しておくことにしました.

まず,minicondaはAnacondaパッケージの簡易版です.Pythonと最低限必要なライブラリのみをパッケージにしたものです.インストーラーのファイルサイズが約60MBと小さく,miniconda3ディレクトリに初期インストールされたファイルも約400MBとコンパクト.ちなみにPytorch等をインストールすると10GBぐらいの記憶容量を消費します.

docs.conda.io


インストールはminicondaのサイトから自分のPCに合ったインストーラをダウンロードしてインストールするだけ.

現時点で最初に入っているライブラリは下記(バーションなどは日々更新されていきます).

conda list
# packages in environment at C:\ProgramData\Miniconda3:
#
# Name Version Build Channel
brotlipy 0.7.0 py38h2bbff1b_1003
ca-certificates 2020.10.14 0
certifi 2020.6.20 pyhd3eb1b0_3
cffi 1.14.3 py38hcd4344a_2
chardet 3.0.4 py38haa95532_1003
conda 4.9.2 py38haa95532_0
conda-package-handling 1.7.2 py38h76e460a_0
console_shortcut 0.1.1 4
cryptography 3.2.1 py38hcd4344a_1
idna 2.10 py_0
menuinst 1.4.16 py38he774522_1
openssl 1.1.1h he774522_0
pip 20.2.4 py38haa95532_0
powershell_shortcut 0.0.1 3
pycosat 0.6.3 py38h2bbff1b_0
pycparser 2.20 py_2
pyopenssl 19.1.0 pyhd3eb1b0_1
pysocks 1.7.1 py38haa95532_0
python 3.8.5 h5fd99cc_1
pywin32 227 py38he774522_1
requests 2.24.0 py_0
ruamel_yaml 0.15.87 py38he774522_1
setuptools 50.3.1 py38haa95532_1
six 1.15.0 py38haa95532_0
sqlite 3.33.0 h2a8f88b_0
tqdm 4.51.0 pyhd3eb1b0_0
urllib3 1.25.11 py_0
vc 14.1 h0510ff6_4
vs2015_runtime 14.16.27012 hf0eaf9b_3
wheel 0.35.1 pyhd3eb1b0_0
win_inet_pton 1.1.0 py38haa95532_0
wincertstore 0.2 py38_0
yaml 0.2.5 he774522_0
zlib 1.2.11 h62dcd97_4

下記のサイトを参考にAnacondaのリポジトリに依存せず環境を作っていきます.

Anacondaの有償化に伴いminiconda+conda-forgeでの運用を考えてみた - Qiita

まずは,各種設定をするため端末を開く.Windowsの場合は,スタートメニューからAnaconda Prompt (Miniconda3)を管理者として選択(右クリックして「管理者として実行」)し,端末を開く.WindowsのコマンドプロムプトはPython等へのパスが設定されてないのでAnacondaのコマンドプロムプトを使う.

デフォルトのチャネルが設定されているかどうか確認する.

conda config --show channels

デフォルトのチャネルdefaultsがある場合は削除しておく.

conda config --remove channels defaults

これでデフォルトのチャネル(ライブラリをダウンロードしてくるサイト)がなくなったので,ライブラリをインストールするたびにチャネルを指定します.また,依存しているAnacondaのレポジトリのライブラリをインストール候補に含めないように --overridge-channels オプションを付ける.

pytorchのインストールは例えば下記のように実行する.pytorchのバージョンの指定が必要だったり,インストール方法が変わったりするので,本家のPytorchのサイトを参照すること.(ただし,本家のcondaのコマンドに-c conda-forgeを追加することを忘れないで)

conda install pytorch -c pytorch -c conda-forge --override-channels
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

environment location: C:\ProgramData\Miniconda3

added / updated specs:
- pytorch


The following packages will be downloaded:

package | build
---------------------------|-----------------
blas-2.109 | mkl 13 KB conda-forge
blas-devel-3.9.0 | 9_mkl 12 KB conda-forge
certifi-2020.12.5 | py39hcbf5309_1 144 KB conda-forge
conda-4.10.1 | py39hcbf5309_0 3.1 MB conda-forge
cudatoolkit-11.1.1 | heb2d755_7 1.20 GB conda-forge
liblapacke-3.9.0 | 9_mkl 4.0 MB conda-forge
libuv-1.41.0 | h8ffe710_0 341 KB conda-forge
mkl-devel-2021.2.0 | h57928b3_390 5.8 MB conda-forge
mkl-include-2021.2.0 | hb70f87d_389 759 KB conda-forge
ninja-1.10.2 | h5362a0b_0 273 KB conda-forge
numpy-1.20.2 | py39h6635163_0 5.3 MB conda-forge
python_abi-3.9 | 1_cp39 4 KB conda-forge
pytorch-1.8.1 |py3.9_cuda11.1_cudnn8_0 1.53 GB pytorch
typing_extensions-3.7.4.3 | py_0 25 KB conda-forge
------------------------------------------------------------
Total: 2.75 GB

The following NEW packages will be INSTALLED:

blas conda-forge/win-64::blas-2.109-mkl
blas-devel conda-forge/win-64::blas-devel-3.9.0-9_mkl
cudatoolkit conda-forge/win-64::cudatoolkit-11.1.1-heb2d755_7
intel-openmp conda-forge/win-64::intel-openmp-2021.2.0-h57928b3_616
libblas conda-forge/win-64::libblas-3.9.0-9_mkl
libcblas conda-forge/win-64::libcblas-3.9.0-9_mkl
liblapack conda-forge/win-64::liblapack-3.9.0-9_mkl
liblapacke conda-forge/win-64::liblapacke-3.9.0-9_mkl
libuv conda-forge/win-64::libuv-1.41.0-h8ffe710_0
m2w64-gcc-libgfor~ conda-forge/win-64::m2w64-gcc-libgfortran-5.3.0-6
m2w64-gcc-libs conda-forge/win-64::m2w64-gcc-libs-5.3.0-7
m2w64-gcc-libs-co~ conda-forge/win-64::m2w64-gcc-libs-core-5.3.0-7
m2w64-gmp conda-forge/win-64::m2w64-gmp-6.1.0-2
m2w64-libwinpthre~ conda-forge/win-64::m2w64-libwinpthread-git-5.0.0.4634.697f757-2
mkl conda-forge/win-64::mkl-2021.2.0-hb70f87d_389
mkl-devel conda-forge/win-64::mkl-devel-2021.2.0-h57928b3_390
mkl-include conda-forge/win-64::mkl-include-2021.2.0-hb70f87d_389
msys2-conda-epoch conda-forge/win-64::msys2-conda-epoch-20160418-1
ninja conda-forge/win-64::ninja-1.10.2-h5362a0b_0
numpy conda-forge/win-64::numpy-1.20.2-py39h6635163_0
python_abi conda-forge/win-64::python_abi-3.9-1_cp39
pytorch pytorch/win-64::pytorch-1.8.1-py3.9_cuda11.1_cudnn8_0
tbb conda-forge/win-64::tbb-2021.2.0-h2d74725_0
typing_extensions conda-forge/noarch::typing_extensions-3.7.4.3-py_0

The following packages will be UPDATED:

certifi pkgs/main::certifi-2020.12.5-py39haa9~ --> conda-forge::certifi-2020.12.5-py39hcbf5309_1
conda pkgs/main::conda-4.9.2-py39haa95532_0 --> conda-forge::conda-4.10.1-py39hcbf5309_0
openssl pkgs/main::openssl-1.1.1i-h2bbff1b_0 --> conda-forge::openssl-1.1.1k-h8ffe710_0


Proceed ([y]/n)?

”-c conda-forge" を付けて,Anacondaのレポジトリにあるライブラリではなくconda-forgeのライブラリをダウンロードするように指定する.

なお,Anacondaのリポジトリにあって,conda-forge にはないライブラリが運悪く必要になった場合は詰む.あきらめて,Anacondaを商用で使うか,pipで別にインストールするか,自分でソースコードからコンパイルして野良インストールするかなど,状況に応じていろいろ試すしかない.


Minicondaはいろいろ重要なライブラリが抜けている.Numpyも入っていない(上記のpytorchのインストール時には自動的に導入される).Jupyter Notebookは研究上欠かせないツールなので下記でインストールする.

conda install jupyter notebook -c conda-forge --override-channels

Scikit-Learnもインストールできる(裏を返せば,Minicondaには含まれていない).

conda install scikit-learn -c conda-forge --override-channels

以下,Anacondaレポジトリのライセンスが気になる方向け.

https://repo.anaconda.com/に対して商用利用のライセンスが設定されている.ここでは,Anacondaのレポジトリにアクセスせず, conda-forge で代用しているので,このライセンスの影響を受けない.conda-forge(https://conda-forge.org/)はフリーでのアクセスを許可している.Anacondaのレポジトリのライセンスは下記のようになっている.

www.anaconda.com

特にAnacondaレポジトリに対するアクセスが商用利用とみなされる場合の規定を引用する.

To avoid confusion, “commercial activities” are any use of the Repository which is NOT:

use solely by an individual using for personal, non-business purposes,
use by a student or employee of an educational institution in connection with educational activities,
use by an employee or volunteer on behalf of a non-profit institution in connection with the provision of charitable services,
use by a 501(c)(3) non-profit research institution in connection with non-commercial activities, such as research to address societal needs and global challenges, public policy development, or the advancement of science for the general good, where such work will not result in revenue to the institution, or
use by entities in common control with each other with fewer than 200 employees in aggregate.

試訳

混乱を避けるために「商用活動(commercial activities)」とは,リポジトリの利用であって,次に*含まれないもの*すべてである.

個人的な目的,非商用目的のために個人が利用する場合
教育活動に関連して教育機関の学生および被雇用者が利用する場合
慈善活動の提供に関連して非営利団体のために被雇用者やボランティアが利用する場合
非営利活動に関連して,501(c)(3)に該当する(※訳注:日本の公益法人に相当する)非営利の研究機関が利用する場合.例えば,公益にかなった,社会的ニーズや地球的規模の挑戦を扱う研究,公共政策開発,科学の進歩.ただし,機関の収入につながらないもの,または全体で200名未満が共通に統制された事業体による利用であること.

当然原文が優先で,私の試訳に正確でない部分があるかもしれませんが,普通の企業での利用は商用利用となるといって間違いはないでしょう.ただし,繰り返しになりますが,conda-forge などのリポジトリを利用するのであれば,minicondaからスタートしていれば問題ありません.あくまで,Anacondaのリポジトリの利用に対するライセンスが商用利用を制限しているからです.その理由は,営利利用のアクセスがAnacondaレポジトリに大量に発生していてレポジトリサーバー維持にかかる負荷が増大しているためだということのようです.個人的には,ミラーを(ボランティアベースで)用意すれば良いように思いますが,ライセンスの規定でミラー目的のレポジトリコンテンツのダウンロードを禁止していますので,現状では実現できません.

最後に:ライセンス関係は常に法的な問題を含みますので,上記の内容について何か損害が発生しても当方は一切の責任は負いません.不安があれば,法務部門や弁護士に相談してAnacondaレポジトリの規定(Terms of Service)を遵守してください.