AI Navigate

[D] 複数のMLプロジェクトでCUDAバージョンとパッケージを管理する現代的なワークフローは何か?

Reddit r/MachineLearning / 2026/3/12

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • 著者は、condaをPython依存関係とCUDAのようなシステムレベルのパッケージの両方に頼っていますが、condaの遅さと望まれない更新、複数プロジェクトでの管理の難しさに不満を持っています。
  • 一部のプロジェクトで古いLinuxカーネルが必要であることから追加の複雑さが生じ、システムレベルの依存関係を分離する手段としてDockerを検討しています。
  • uvはPythonパッケージには高速で優れていると認識していますが、CUDAのようなシステムレベルのインストールには対応しておらず、condaが自分にもたらしていたことを完全には置き換えられません。
  • 提案されたワークフローは、Dockerを使用してシステムレベルの依存関係(CUDAバージョン、カーネル制約、システムライブラリ)を扱い、コンテナ内でPythonパッケージと環境をuvで扱って、完全に分離された再現可能なプロジェクト環境を実現するものであり、マルチプロジェクトのワークフローにおけるコミュニティのベストプラクティスを模索しています。

皆さん、こんにちは。

私は比較的新しいMLエンジニアで、これまで依存関係の管理にはcondaを使ってきました。condaの最大の利点は、CUDAのようなシステムレベルのパッケージを分離された環境にインストールできる点で、古いCUDAバージョンを必要とするプロジェクトがあるため、これは本当に救いでした。

とはいえ、condaには他にも問題があります。パッケージのインストールは非常に遅く、私が触れてほしくないバージョンにランダムに更新され、他の依存関係を壊してしまい、望むとおりに動作させるために過剰な努力を強いられました。

また、いくつかのプロジェクトが古いLinuxカーネルを必要としたケースにも直面し、それがもう1段階の複雑さを加えました。単にそれだけのために複数のWSLインスタンスを起動したくなかったので、Dockerの話を初めて耳にしたのです。

最近では、より高速で現代的なPythonパッケージマネージャーとしてuvの話をよく耳にします。私の見解では、Pythonパッケージには本当に優れていますが、CUDAのようなシステムレベルのインストールには対応しておらず、condaが私にもたらしていた完全な代替にはなりません。

これに対処しているのは私だけではないでしょう。私にとって最善の方法は、Dockerを使ってシステムレベルの依存関係(CUDAバージョン、Linux環境、システムライブラリ)を処理し、コンテナ内でPythonパッケージと環境をuvで処理することです。そうすることで、各プロジェクトは完全に分離された再現可能な環境を得られます。

ただし私はこの分野の経験が浅く、自分の推測に基づくワークフローに固執したくありません。複数プロジェクトの日々のワークフローがどのようなものか、経験豊富なエンジニアの声を聞きたいです。