Зачем вам Mamba: быстрее, чем Conda в 3 раза

Часто ли устанавливаете пакеты и используете 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. Он имеет преимущества в виде:

Если вы рассмотрите 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, происходит следующее:

  1. Собираются метаданные пакета.
  2. Разрешаются окружения.
  3. Скачиваются пакеты.
  4. Устанавливаются пакеты.

И вот когда этих пакетов очень много, то вот тут и начинается замедленное веселье.

 

О том, как ускорять установку пакетов, загрузку больших данных вы узнаете на наших образовательных курсах в лицензированном учебном центре обучения и повышения квалификации руководителей и ИТ-специалистов (менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data) в Москве:

Источники
  1. Оригинал статьи

Добавить комментарий

Поиск по сайту