Часто ли устанавливаете пакеты и используете Conda или используете пакетирование из Docker? Если да, то смело переходите на пакетный менеджер Mamba. Он спасет вам лишнее время на загрузку пакетов, поскольку намного быстрее, чем Conda.
Conda vs Mamba: измеряем скорость установки
Сравним установку пакетов через environment.yml
в Conda и Mamba:
name: myenv channels: - conda-forge dependencies: - python=3.9 - matplotlib - pandas - scipy
Более того, чтобы предотвратить механизм кэширования, установку пакетов выполним в контейнере Docker. Итак, установка пакетов с помощью Conda:
# Dockerfile.just-conda FROM continuumio/miniconda3 COPY environment.yml . RUN /bin/bash -c "time conda env create -f environment.yml"
После запуска мы получили следующие результаты времени выполнения команды conda env create
:
real 2m15.143s user 1m38.642s sys 0m6.421s
Таким образом, на все про все было потрачен 2:15 минут, из них 1:45 на вычисления процессором.
А теперь попробуем оценить скорость установки с помощью Mamba. Для этого нужно выполнить conda install -c conda-forge mamba
. Также посчитаем скорость выполнения через time
.
# Dockerfile.conda-then-mamba FROM continuumio/miniconda3 COPY environment.yml . RUN conda install -c conda-forge mamba RUN /bin/bash -c "time mamba env create -f environment.yml"
Результаты:
real 0m47.090s user 0m28.493s sys 0m4.692s
Mamba устанавливает пакеты почти в три раза быстрее, чем это делает Conda! Не только тратится меньше процессорного времени, но также и загрузка по сети происходит быстрее. А все это благодаря параллельной загрузки по сети.
Что такое Mamba?
Mamba — это более усовершенствованный пакетный менеджер Conda. Он имеет преимущества в виде:
- скорости,
- тот же CLI-интерфейс (не придется переучиваться),
- дополнительные фишки
Если вы рассмотрите Dockerfile
ы выше, то заметите, что команда conda
была заменена на mamba
и только (причем установили его как раз через conda
). Это действительно так, Mamba используется для всех команд Conda.
Этот пакетный менеджер, написанный на C++, развивается с 2019 года и уже набрал более 1,8 млн скачиваний. Если вы на постоянной основе используете Conda, то советуем попробовать и Mamba.
Ускоряем Docker-контейнер еще немного
Взглянем еще раз на Dockerfile
, который запускает mamba
. У этого контейнера есть слабое место: он сперва устанавливает Mamba через обычную команду mamba
.
# Dockerfile.conda-then-mamba FROM continuumio/miniconda3 COPY environment.yml . RUN conda install -c conda-forge mamba # <-- Медленно все равно RUN /bin/bash -c "time mamba env create -f environment.yml"
Как можно поступить? Conda-Forge имеет установщик, который идет вместе с предустановленным Mamba. Даже имеется целый образ Docker. Теперь мы можем заменить Dockerfile
:
# Dockerfile.just-mamba FROM condaforge/mambaforge COPY environment.yml . RUN mamba env create -f environment.yml
Но чуда не ждите. Такая установка сохранит вам около 25 секунд.
Почему менеджер Conda такой медленный?
Conda даже по сравнению с Pip загружает и устанавливает пакеты достаточно медленно. Ведь каждый раз, когда вы запускаете команду conda install
, происходит следующее:
- Собираются метаданные пакета.
- Разрешаются окружения.
- Скачиваются пакеты.
- Устанавливаются пакеты.
И вот когда этих пакетов очень много, то вот тут и начинается замедленное веселье.
О том, как ускорять установку пакетов, загрузку больших данных вы узнаете на наших образовательных курсах в лицензированном учебном центре обучения и повышения квалификации руководителей и ИТ-специалистов (менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data) в Москве:
- DPREP: Подготовка данных для Data Mining на Python
- PYML: Машинное обучение на Python
- Разработка и внедрение ML-решений
- Графовые алгоритмы. Бизнес-приложения