Какой ресурс больше всего необходим для ускорения сложной установки conda - PullRequest
1 голос
/ 07 августа 2020

Я устанавливаю значительное количество пакетов conda [это происходит в среде jupyter].

Conda, по своей природе, требует много времени, чтобы определить лучшую комбинацию выпусков для всех пакеты. Это значительно быстрее на моей рабочей станции, чем в моей системе сборки CI ... и мне действительно, действительно нужно ускорить этот процесс.

Я не Я не хочу переключаться на pip, так как это может привести к несовместимым версиям библиотек.

Вопрос в том, какие вычислительные ресурсы будут иметь наибольшее значение: тактовая частота процессора; количество вычислительных ядер; или RAM?

EDIT После комментария, вот пример

FROM jupyter/tensorflow-notebook:dd2087c75645
# dc9744740e12
LABEL MAINTAINER="NaaS Project <edina@ed.ac.uk>"

USER root

# We need libsodium23
RUN apt-get update \
  && apt-get install -yq --no-install-recommends \
    less \
    libgl1 \
    libgl1-mesa-glx \
    sharutils \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

USER $NB_USER

# python3 updates and additional files
RUN conda install --quiet --yes \
    'beautifulsoup4' \
    'bokeh==2.0.1' \
    'cloudpickle' \
    'conda-build' \
    'cython' \
    'dask' \
    'graphviz' \
    'ffmpeg' \
    'imagemagick' \
    'ipympl==0.5.6' \
    'ipywidgets' \
    'jupyterhub' \
    'libxml2' \
    'lxml'  \
    'matplotlib==3.2.2' \
    'matplotlib-base==3.2.2' \
    'mpld3' \
    'nltk' \
    'notebook' \
    'numba' \
    'numexpr' \
    'numpy' \
    'opencv' \
    'pandas' \
    'patsy' \
    'plotly' \
    'protobuf' \
    'psutil' \
    'pytables' \
    'python-graphviz' \
    'rise' \
    'scikit-image' \
    'scikit-learn' \
    'scipy' \
    'seaborn' \
    'spacy' \
    'spectral' \
    'sqlalchemy' \
    'statsmodels' \
    'sympy' \
    'textblob' \
    'unixodbc' \
    'vega' \
    'vincent' \
    'widgetsnbextension' \
    'wordcloud' \
    'xlrd' \
    'xmlschema' \
  && conda build purge-all

Это занимает 15+ минут

1 Ответ

1 голос
/ 08 августа 2020

Самый простой способ повысить скорость выполнения вашей команды conda install - это настроить команду или попробовать другой решатель (см. Ниже). Но поскольку ваш вопрос был сформулирован узко об аппаратном обеспечении ЦП, я отвечу на него первым.

Аппаратные соображения

Anaconda опубликовала соответствующую запись в блоге об узких местах производительности в conda , и в нем перечислены следующие этапы, которые можно распараллелить:

  • Загрузка и чтение реподанных из нескольких каналов
  • Проверка транзакций
  • Выполнение транзакций

Однако, чтобы извлечь выгоду из этого параллелизма, вам следует настроить файл .condarc на фактическое использование нескольких потоков для этих шагов, как описано здесь, в conda docs .

Например:

conda config --set default_threads 4

Но вы спросили, в частности, о времени решения. Поскольку этого нет в списке выше, он не распараллеливается. Для этого только более быстрый ЦП повысит производительность, если вы не улучшите выполняемую команду, как описано ниже.

Альтернативы более качественному оборудованию

Эти параметры с большей вероятностью позволят сократить время установки, чем обновление вашего оборудования.

1. Будьте более конкретными c

У Anaconda есть сообщение в блоге , в котором объясняется, как ускорить работу решателя . Они предлагают несколько предложений, но в вашем случае наиболее подходящим является c более подробное описание необходимых вам версий пакетов. Например, если вы знаете. вам нужно dask>=2, затем добавьте "dask>=2" в свою команду. Если вы знаете, что вам нужен pandas 1.x, укажите в своей команде pandas=1. Каждый раз, когда вы добавляете требования к своим спецификациям пакетов, вы сокращаете набор возможных пакетов, которые решатель должен изучить, чтобы найти согласованный набор пакетов для вашей среды.

2. Попробуйте mamba

Если на самом деле узким местом для вас является этап решения (а не этапы проверки или выполнения), вы можете попробовать альтернативный решатель. mamba может быть установлен вместе с conda, и он может обеспечить более быстрое решение для больших сред.

conda install mamba -c conda-forge
mamba install --quiet --yes \
    'beautifulsoup4' \
    # etc...

Осторожно: если существует более одного «решения» для требований пакета, вы в списке, то решающая программа должна выбрать, какой из них является «лучшим» с учетом недостаточно установленных требований. В таких случаях conda и mamba не всегда делают одинаковый выбор. Предположительно, различия не имеют значения - иначе вы бы уточнили требования. Но вы должны знать, что между ними может быть разница в поведении. Технически, mamba не является вполне заменой conda во всех случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...