Setup-miniconda: Шаг установки conda занимает слишком много времени

Созданный на 10 нояб. 2020  ·  16Комментарии  ·  Источник: conda-incubator/setup-miniconda

Спасибо за создание / поддержку этой замечательной акции!

Кажется, что настройка conda занимает больше времени, чем обычно. Например, взгляните на этот журнал , шаг «Настройка conda». Настройка conda занимает 3 с половиной минуты (без учета установки зависимостей). Это ожидается или я что-то делаю не так?

Еще раз, спасибо!

enhancement

Самый полезный комментарий

Сейчас впереди еще много интересных моментов, чем просто _использовать то, что на диске_ против _получить установщик по URL-адресу со схемой, которую мы могли предсказать за полдесятилетия_, и поведение текущего кода с / п / т до mamba трудно рассуждать.

Держу пари, если вы предоставите mamba-version , он _ все еще_ будет пытаться установить mamba из conda-forge , даже если он уже там, и _ все еще_ использует conda для всего, что _ кроме_ решения среды (например, conda config ). Это свело бы на нет большинство преимуществ от того, что он уже был на диске после установки. Поскольку такой установщик с mamba не существовал до 13 часов назад, это не было проблемой ... я думаю, нам, вероятно, понадобится что-то вроде conda-exe: mamba если вы _знаете_, что это уже установлен, так как даже если он _is_ доступен, вы можете не захотеть его использовать, и завтра вполне может быть The Next Tool ( lambada , tarantala ) из The Next Installer.

Как бы то ни было, я чувствовал, что для исправления некоторых из этих проблем требуется довольно радикальная реструктуризация ... на # 107 (который становится # 108, # 109, ... в ожидании проверки) я приложил все усилия, чтобы подготовить нас к The Next. X, где X может быть одно- или двухфайловым PR. Надеюсь, мы сможем приступить к добавлению функций и повышению производительности, но я боюсь, что не устранение в первую очередь текущего технического долга ухудшит ситуацию.

Все 16 Комментарий

Привет @ ma-sadeghi, спасибо за добрые слова и за использование акции :)

Кажется, что настройка одной только конды занимает больше времени, чем обычно.

Изменилось ли это в какой-либо более новой версии? Когда вы заметили, начали это замечать?

Просто интересно, чтобы мы могли определить любую потенциальную проблему.


@ conda-incubator / setup-miniconda-team заметили ли вы что-нибудь похожее на описанное?

Та же проблема для меня с использованием мамбы (без установки моих deps во время действия) и с последней версией v2.

@bollwyvl Я мог бы отладить это вручную

В случае, если это поможет (я не могу поделиться журналами):

    steps:
      - name: Checkout the code
        uses: actions/checkout<strong i="6">@v2</strong>

      - name: Cache conda
        uses: actions/cache<strong i="7">@v1</strong>
        env:
          CACHE_NUMBER: 2
        with:
          path: ~/conda_pkgs_dir
          key: conda-${{ runner.os }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('env.yml') }}

      - name: Setup conda
        uses: conda-incubator/setup-miniconda<strong i="8">@v2</strong>
        with:
          mamba-version: "*"
          channels: conda-forge,defaults
          channel-priority: true
          use-only-tar-bz2: true

Спасибо @hadim за пример. Добавим PR для проверки изменений, которые привели к регрессу.

Привет @ ma-sadeghi, спасибо за добрые слова и за использование акции :)

Кажется, что настройка одной только конды занимает больше времени, чем обычно.

Изменилось ли это в какой-либо более новой версии? Когда вы заметили, начали это замечать?

Просто интересно, чтобы мы могли определить любую потенциальную проблему.

@ conda-incubator / setup-miniconda-team заметили ли вы что-нибудь похожее на описанное?

Я почти уверен, что раньше это было намного быстрее в первый раз, когда я использовал этот Экшен, с головы до ног, может быть, на настройку conda ушло около 1 минуты, теперь это 3:30 минуты. Наш проект является общедоступным, и мы давно не использовали это действие, поэтому не стесняйтесь проверять наши журналы на случай, если это поможет отладить проблему: https://github.com/PMEAL/OpenPNM/actions

Из связанных журналов:

Tue, 10 Nov 2020 21:09:23 GMT /usr/share/miniconda/condabin/conda update conda
Tue, 10 Nov 2020 21:09:54 GMT Collecting package metadata (repodata.json): ...working... done
Tue, 10 Nov 2020 21:10:07 GMT Solving environment: ...working... done
Tue, 10 Nov 2020 21:11:56 GMT
Tue, 10 Nov 2020 21:11:56 GMT ## Package Plan ##

Итак, несколько ненаучно:

  • 26 секунд получения реподанных
  • 135 секунд выполнения решения для обновления conda

Единственное, о чем я могу думать, - это добавление conda-forge , что приводит к перегрузке решателя с дополнительными 10k + пакетами (и всеми их версиями).

Некоторые варианты, вне моей головы:

  • в вашем репо ...

    • установить auto-update-conda в false

    • Вы получите то, что получаете, но обычно с вами все будет в порядке

    • генерировать / проверять в явной спецификации с помощью conda-lock

    • использовать собственный установщик

    • да, загрузка может занять больше времени, но решатель не будет вызван

    • вы также можете / должны кэшировать это, но получение одного из github будет быстрее, чем выход в Интернет

  • на _этом_ репо ..

    • добавить новую опцию действия, которая будет извлекать только из ограниченного набора каналов, например, conda-update-channels: defaults

    • добавить вывод журнала ::group::Boring stuff ::endgroup:: чтобы было легче отслеживать жизненный цикл команд верхнего уровня, выполняемых этим действием (мне пришлось отряхнуть пыль со своих панд, чтобы выполнить некоторые задания по времени)

    • не пробовал в гневе ... это _могло_

    • предложить настройку micromaba (опять же, экономия пары решает) https://github.com/conda-incubator/setup-miniconda/issues/75#issuecomment -698024879

Как бы то ни было, большая часть времени уходит на установку мамбы:

image

Связанный конфиг:

      - name: Cache conda
        uses: actions/cache<strong i="9">@v2</strong>
        env:
          CACHE_NUMBER: 3
        with:
          path: ~/conda_pkgs_dir
          key: conda-${{ runner.os }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('env.yml') }}

      - name: Setup conda
        uses: conda-incubator/setup-miniconda<strong i="10">@v2</strong>
        with:
          python-version: 3.7
          mamba-version: "*"
          channels: conda-forge,defaults
          channel-priority: true
          use-only-tar-bz2: true
          activate-environment: nova

Можно ли использовать что-то вроде микромамбы вместо миниконды или минифорж?

Глядя на детали, этап решения занимает 99% времени.

Если эта проблема будет решена, маршрут мини-холодильника по умолчанию предоставит это: D

Я подтверждаю, что недавно выпущенный установщик MambaForge ускоряет CI:

- name: Setup conda
  uses: conda-incubator/setup-miniconda<strong i="6">@v2</strong>
  with:
    installer-url: https://github.com/conda-forge/miniforge/releases/download/4.9.2-2/Mambaforge-Linux-x86_64.sh
    channel-priority: true
    use-only-tar-bz2: true
    activate-environment: my-env

- name: Anaconda Login
  run: |
    # Bypass the installation of anaconda-client
    TOKEN_DIR="$HOME/.config/binstar"
    TOKEN_PATH="$TOKEN_DIR/https%3A%2F%2Fapi.anaconda.org.token"
    mkdir -p $TOKEN_DIR
    echo -e "${ANACONDA_USER_TOKEN}\c" > $TOKEN_PATH

- name: Install Dependencies
  run: mamba env update -f env.yml

(фрагмент также включает в себя способ входа в anaconda без необходимости установки anaconda-client . Может быть полезным для некоторых здесь.)

Как это работает с mamba-version ? Это нужно? Нужна ли проверка, есть ли уже существующий mamba ?

Хороший вопрос, на самом деле я не знаю. Новый установщик по умолчанию отправляет mamba , и я использую его напрямую без mamba-version .

Мне нужно сначала войти в anaconda (см. Фрагмент), поэтому я не полагаюсь на setup-conda для установки моего env.

Я предполагаю, что если вы хотите использовать setup-conda для установки файла env, setup-conda следует изменить, чтобы действительно проверять наличие мамбы и обходить ее установку, если она существует.

Может быть, кто-нибудь из @ conda-incubator / setup-miniconda-team сможет подтвердить или нет?

Сейчас впереди еще много интересных моментов, чем просто _использовать то, что на диске_ против _получить установщик по URL-адресу со схемой, которую мы могли предсказать за полдесятилетия_, и поведение текущего кода с / п / т до mamba трудно рассуждать.

Держу пари, если вы предоставите mamba-version , он _ все еще_ будет пытаться установить mamba из conda-forge , даже если он уже там, и _ все еще_ использует conda для всего, что _ кроме_ решения среды (например, conda config ). Это свело бы на нет большинство преимуществ от того, что он уже был на диске после установки. Поскольку такой установщик с mamba не существовал до 13 часов назад, это не было проблемой ... я думаю, нам, вероятно, понадобится что-то вроде conda-exe: mamba если вы _знаете_, что это уже установлен, так как даже если он _is_ доступен, вы можете не захотеть его использовать, и завтра вполне может быть The Next Tool ( lambada , tarantala ) из The Next Installer.

Как бы то ни было, я чувствовал, что для исправления некоторых из этих проблем требуется довольно радикальная реструктуризация ... на # 107 (который становится # 108, # 109, ... в ожидании проверки) я приложил все усилия, чтобы подготовить нас к The Next. X, где X может быть одно- или двухфайловым PR. Надеюсь, мы сможем приступить к добавлению функций и повышению производительности, но я боюсь, что не устранение в первую очередь текущего технического долга ухудшит ситуацию.

conda-incubator/setup-miniconda@master теперь (какое-то время) поддерживает комбинацию:

miniforge-variable: Mambaforge
use-mamba: true

Что в основном должно отвечать на почту здесь ... в той степени, в которой может быть установлена ​​полная установка conda + python + mamba. В последнее время у Micromamba было много обновлений, но я до сих пор не смог оценить, хотим ли мы поддерживать / тестировать его на том же уровне, что и другие поставщики, но ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги