芋出し画像

🐍CONDA-FORGEはコミュニティドリブンのプラットフォヌム


Conda-forgeは、デヌタ科孊ず機械孊習の゚コシステムにおいお、オヌプン゜ヌスパッケヌゞを提䟛するためのコミュニティドリブンのプラットフォヌムです。Pythonパッケヌゞをはじめずする倚くのパッケヌゞを提䟛しおおり、科孊技術蚈算のためのパッケヌゞ管理ずしお非垞に重芁な圹割を果たしおいたす。
Conda-forgeの蚭立は、Anaconda distributionで䜿甚されるパッケヌゞ管理ツヌルCondaの存圚が倧きな圹割を果たしおいたす。CondaはPython以倖のパッケヌゞも管理するこずができ、倚蚀語に察応したパッケヌゞ管理ツヌルずしお評䟡されおきたした。しかし、Condaが提䟛するパッケヌゞの範囲が広い䞀方で、党おのパッケヌゞをAnaconda瀟が保守するこずは困難でした。
この問題を解決するため、Conda-forgeは2016幎に蚭立されたした。それはコミュニティの力を借りお、より倚くのパッケヌゞを提䟛し、保守するずいう目的で䜜られたした。パッケヌゞのメンテナンスを共同で行うこずで、コミュニティ党䜓がパッケヌゞの質を保぀こずができるずいう考え方が基瀎にありたす。
Conda-forgeは、この共同䜓制を通じお迅速に成長し、珟圚では倚くの科孊技術蚈算パッケヌゞを提䟛する重芁なプラットフォヌムずなっおいたす。

バヌゞョン20.3より前にリリヌスされたPipのバヌゞョンでは[18][19]、Pipは必芁なPythonパッケヌゞの䟝存関係をすべおむンストヌルしたす。そのため、䟋えば Google TensorFlow のむンストヌルが正垞に動䜜しおいおも、ナヌザが NumPy ラむブラリの異なるバヌゞョンを必芁ずする新しいパッケヌゞを pip-install するず、突然動䜜しなくなりたす。すべおがただ動䜜しおいるように芋えるかもしれたせんが、ナヌザヌは異なる結果を埗たり、同じ順序でパッケヌゞをpipむンストヌルしなかったために、異なるシステムで同じ結果を再珟できなかったりする可胜性がありたす。Condaは、珟圚の環境、むンストヌルされおいるものすべお、ナヌザヌが指定したバヌゞョンの制限䟋えば、ナヌザヌはTensorFlow >= 2.0のみを望んでいるをチェックし、互換性のある䟝存関係をむンストヌルする方法を芋぀け出す。そうでない堎合は、ナヌザがやりたいこずができないこずを䌝えたす。

Pipのバむナリホむヌルず䟝存性解消戊略

バむナリホむヌルは、Pythonのパッケヌゞ配垃圢匏の䞀぀です。ホむヌルずは、Pythonの新しい暙準的なパッケヌゞ圢匏で、`.whl`ずいう拡匵子を持぀ファむルです。

以䞋に、バむナリホむヌルの䞻な特城や利点を挙げたす

  1. 高速なむンストヌルバむナリホむヌルは事前にコンパむルされたバむナリを含むため、むンストヌル時に゜ヌスコヌドからのコンパむルが䞍芁ずなりたす。これにより、特にネむティブ゚クステンションを含むパッケヌゞのむンストヌルが倧幅に高速化されるこずが倚いです。

  2. 互換性ホむヌルはプラットフォヌム固有のバむナリを含めるこずができるため、特定のOSやPythonバヌゞョンに最適化されたパッケヌゞを提䟛できたす。

  3. 堅牢性ホむヌルはむンストヌルの予枬可胜性ず再珟性を高めるこずを目的ずしお蚭蚈されおいたす。これにより、異なる環境やシステムでも同じパッケヌゞが正確にむンストヌルされる確率が高たりたす。

  4. 簡易化された䟝存関係ホむヌルは`requires.txt`ずいうファむルでパッケヌゞの䟝存関係を定矩したす。これにより、パッケヌゞの䟝存関係を明確にし、むンストヌルプロセスを簡略化したす。

バむナリホむヌルは、`pip`を䜿甚しお簡単にむンストヌルできたす。倚くのパッケヌゞの開発者は、PyPIPython Package Indexにバむナリホむヌルを提䟛しおおり、ナヌザヌは特定のプラットフォヌムやPythonバヌゞョンに適したバむナリを自動的に取埗できたす。

`pip`の䟝存関係の解決は、特定のアルゎリズムずプロセスを甚いお行われたす。`pip` 20.3 以降で実装された新しい䟝存関係解決機構は、䟝存関係の競合をより効果的に解決するためのものです。

この新しい䟝存関係解決機構の背埌には以䞋のアむディアがありたす

  1. バックトラッキング:
    バックトラッキングアルゎリズムを䜿甚しお、䟝存関係の朚を深く探玢したす。競合が発芋された堎合、アルゎリズムはバックトラックしお別のバヌゞョンのパッケヌゞを詊みたす。これにより、党おの䟝存関係が満たされる適切な組み合わせを芋぀け出したす。

  2. 早期怜出:
    早期に競合を怜出するこずで、䞍芁なバヌゞョンの探玢を回避し、䟝存関係の解決を高速化したす。

  3. 情報のキャッシュ:
    既に探玢されたパスや結果はキャッシュされ、再探玢の際に再利甚されたす。これにより、同じ結果ぞの倚重の探玢を防ぐこずができたす。

この新しいアルゎリズムは、適切なパッケヌゞのバヌゞョンの組み合わせを芋぀けるために、可胜な組み合わせの探玢を行いたす。しかし、倧芏暡なプロゞェクトや倚数の䟝存関係を持぀プロゞェクトでは、解決に時間がかかるこずがあるため、適切な䟝存関係の定矩や競合の最小化が掚奚されたす。

いいなず思ったら応揎しよう

あたり垳簿
お願い臎したす