Setup-miniconda: 设置 conda 步骤花费的时间太长

创建于 2020-11-10  ·  16评论  ·  资料来源: conda-incubator/setup-miniconda

感谢您创建/维护这个伟大的行动!

似乎单独设置conda需要比平时更长的时间。 例如,看看这个日志,“设置 conda”步骤。 设置 conda 需要 3 分半钟(不包括安装依赖项)。 这是预期的还是我做错了什么?

再一次谢谢你!

enhancement

最有用的评论

现在有 _lot_ 更动人的部分,而不仅仅是 _use 磁盘上的内容_ vs _从 URL 获取安装程序,使用我们已经能够预测了五年的方案_,以及当前代码的行为 w/r/t 到mamba很难推理。

我敢打赌,如果您提供mamba-version ,它_仍然_ 会尝试从conda-forge安装mamba conda-forge ,即使它已经存在,并且_仍然_ 使用conda为所有_except_ 环境解决(例如conda config )。 这些将打败已经在磁盘上安装后获得的大部分收益。 由于这样一个带有mamba的安装程序直到 13 小时前才存在,这不是问题......我的想法是我们可能需要像conda-exe: mamba这样的东西,如果你_知道_它已经存在了安装,即使它 _is_ 可用,您可能不想使用它,明天很可能会有来自 The Next Installer 的 The Next Tool ( lambadatarantala )。

无论如何,我觉得解决其中一些问题需要进行一些非常激烈的重组......在#107(现在变成#108,#109,......等待审查)我尽最大努力让我们为下一个做好准备X,其中 X 可以是一/二文件 PR。 希望我们可以开始添加功能和解决性能问题,但我担心不首先解决当前的技术债务会使情况变得更糟。

所有16条评论

嗨@ma-sadeghi,感谢您的客气话和使用该操作:)

似乎单独设置 conda 需要比平时更长的时间。

这在任何较新的版本中是否有所改变? 你什么时候开始注意到这一点的?

只是想知道所以我们可以查明任何潜在的问题。


@conda-incubator/setup-miniconda-team 您是否注意到与描述类似的任何内容?

使用 mamba(在操作过程中没有安装我的 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 需要比平时更长的时间。

这在任何较新的版本中是否有所改变? 你什么时候开始注意到这一点的?

只是想知道所以我们可以查明任何潜在的问题。

@conda-incubator/setup-miniconda-team 您是否注意到与描述类似的任何内容?

我几乎可以肯定,在我第一次使用这个 Action 时,它曾经快得多,在我头顶上,也许设置 conda 需要 1 分钟左右,现在是 3:30 分钟。 我们的项目是公开的,自从我们使用这个 Action 已经有一段时间了,所以请随时查看我们的日志以帮助调试问题: https :

从链接的日志:

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 秒获取 repodata
  • 135 秒解决更新 conda

我能想到的唯一一件事是添加了conda-forge ,这会使求解器超速运行,并提供额外的 10k+ 软件包(以及它们的所有版本)。

一些选项,在我的脑海中:

  • 在你的回购...

    • auto-update-condafalse

    • 你会得到你所得到的,但你_通常_会没事的

    • 使用conda-lock生成/检查显式规范

    • 使用自定义安装程序

    • 是的,下载可能需要更长的时间,但不会调用求解器

    • 您也可以/应该缓存它,但是从 github 获取一个比上网更快

  • 在_this_回购..

    • 添加一个新的操作选项,它只会从有限的频道选择中提取,例如conda-update-channels: defaults

    • 添加一些::group::Boring stuff ::endgroup::日志输出,以便更容易跟踪此操作运行的命令的顶级生命周期(我不得不清除我的熊猫的灰尘来做一些计时工作)

    • 还没试过生气......它_可能_

    • 提供micromaba设置(再次,节省几个解决方案) https://github.com/conda-incubator/setup-miniconda/issues/75#issuecomment -698024879

大多数时间花在安装 mamba 上是值得的:

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

可以使用像 micromamba 这样的东西而不是 miniconda 或 miniforge 吗?

查看详细信息,解决步骤需要花费 99% 的时间。

如果此问题得到解决,miniforge 路由将默认提供此: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-client即可登录 anaconda 的方法。可能对这里的某些人有所帮助。)

它如何与mamba-version一起玩? 需要吗? 是否需要检查现有的mamba是否已经到位?

好问题,我实际上不知道。 新安装程序默认提供mamba ,我直接使用没有mamba-version

我需要先登录 anaconda(参见代码段),所以我不依赖于setup-conda来安装我的 env。

我想如果您想使用setup-conda来安装 env 文件,则应该修改setup-conda以确实检查 mamba 并绕过其安装(如果存在)。

也许来自@conda-incubator/setup-miniconda-team 的人可以确认?

现在有 _lot_ 更动人的部分,而不仅仅是 _use 磁盘上的内容_ vs _从 URL 获取安装程序,使用我们已经能够预测了五年的方案_,以及当前代码的行为 w/r/t 到mamba很难推理。

我敢打赌,如果您提供mamba-version ,它_仍然_ 会尝试从conda-forge安装mamba conda-forge ,即使它已经存在,并且_仍然_ 使用conda为所有_except_ 环境解决(例如conda config )。 这些将打败已经在磁盘上安装后获得的大部分收益。 由于这样一个带有mamba的安装程序直到 13 小时前才存在,这不是问题......我的想法是我们可能需要像conda-exe: mamba这样的东西,如果你_知道_它已经存在了安装,即使它 _is_ 可用,您可能不想使用它,明天很可能会有来自 The Next Installer 的 The Next Tool ( lambadatarantala )。

无论如何,我觉得解决其中一些问题需要进行一些非常激烈的重组......在#107(现在变成#108,#109,......等待审查)我尽最大努力让我们为下一个做好准备X,其中 X 可以是一/二文件 PR。 希望我们可以开始添加功能和解决性能问题,但我担心不首先解决当前的技术债务会使情况变得更糟。

conda-incubator/setup-miniconda@master现在(有一段时间)支持以下组合:

miniforge-variable: Mambaforge
use-mamba: true

这应该主要回答这里的邮件......在一个完整的 conda+python+mamba 安装可以的范围内。 Micromamba 最近有很多更新,但我仍然无法评估我们是否希望将其支持/测试到​​与其他提供者相同的水平,但是……

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ma-sadeghi picture ma-sadeghi  ·  9评论

goanpeca picture goanpeca  ·  9评论

volpatto picture volpatto  ·  12评论

ma-sadeghi picture ma-sadeghi  ·  4评论

goanpeca picture goanpeca  ·  9评论