Conda спасает от dependency hell'а
Помню, как мы три дня потратили на деплой ML модели. pip install tensorflow==2.13.0
прошел без ошибок, но при запуске обучения
- `Your CPU supports instructions that this TensorFlow binary was not compiled to use:
AVX2 FMA. GPU не определялся вообще. Потом 6 часов ставили CUDA 11.8, cudnn, но версии не совпали:
libcudnn.so.8: cannot open shared object file. В итоге пришлось переустанавливать весь сервер. С тех пор
conda install tensorflow-gpu=2.13.0`
- все работает сразу, включая CUDA.
Зачем вообще нужен Conda
Conda решает проблемы, которые pip не может. pip отлично работает для простых Python пакетов, но когда дело доходит до системных зависимостей, начинается боль:
- NumPy падает с `ImportError:
BLAS/LAPACK libraries not found` если system dependencies не поставлены
OpenCV:
ImportError: libgthread-2.0.so.0: cannot open shared object file
на свежей UbuntuPyTorch: `RuntimeError:
CUDA out of memory` или вообще не видит GPU без nvidia-toolkit
- scikit-learn:
Microsoft Visual C++ 14.0 is required
на Windows - 3 часа на stackoverflow
Conda устанавливает все это одной командой.
Реальные примеры из жизни
Кейс 1: Миграция с production сервера
Старый сервер умирал, нужно было перенести ML pipeline на новый. С pip requirements.txt полдня мучился: error: [Errno 2] No such file or directory: 'cmake'
, потом `RuntimeError:
Platform linux_x86_64 is not a supported platform. С
conda env export` скопировал весь environment за 10 минут. Даже CUDA версии совпали!
Кейс 2: Команда из 8 разработчиков Каждый ставил зависимости как хотел. У кого-то Num
Py 1.18, у кого-то 1.24. Модель обучалась по-разному. Перешли на общий environment.yml
- проблем больше нет.
**Кейс 3:
ARM64 MacBook M1/M2** TensorFlow на новых маках с pip
- это страдания. С conda-forge работает из коробки. Подробности в Apple Silicon Support Guide.
Conda против pip
- честное сравнение
Когда использовать Conda:
Data science проекты
Работа с CUDA
Команда больше 2 человек
Production deployment
Работа с R, Julia, или другими языками
Когда pip все еще лучше:
Простые веб-приложения
Только Python пакеты
Быстрый прототип
Пакет есть только в PyPI
Conda channels
- где брать пакеты
- используй его всегда. 20,000+ пакетов, обновляются быстрее официальных. Команда из сотен добровольцев проверяет качество.
defaults от Anaconda
- коммерческие ограничения с 2020 года. Для компаний нужна лицензия.
- если работаешь с биоинформатикой. 8000+ пакетов для биологов.
Настрой правильные приоритеты:
conda config --add channels conda-forge
conda config --set channel_priority strict
Performance reality check
Да, Conda медленнее pip при установке простых пакетов. Но когда у тебя environment с 100+ зависимостями, solver Conda'ы спасает время:
pip: может поставить несовместимые версии, придется разбираться
conda: проверит все заранее, поставит то что работает
С libmamba solver (дефолт с conda 23.10) установка TensorFlow стала в 2 раза быстрее. Mamba вообще в 10 раз быстрее conda при создании больших environment'ов
- наш тест показал: conda 15 минут, mamba 90 секунд для установки PyTorch + TensorFlow + Jupyter.
Дополнительные ресурсы: