Setup-miniconda: A etapa de configuração do conda demora muito

Criado em 10 nov. 2020  ·  16Comentários  ·  Fonte: conda-incubator/setup-miniconda

Obrigado por criar / manter este grande Action!

Parece que configurar conda sozinho leva mais tempo do que o normal. Por exemplo, dê uma olhada neste log , a etapa "Configurar conda". Leva 3 minutos e meio para configurar o conda (excluindo a instalação de dependências). Isso é esperado ou estou fazendo algo errado?

Agradeço novamente!

enhancement

Comentários muito úteis

Existem _muito_ mais peças móveis surgindo agora do que apenas _usar o que está no disco_ vs _obter um instalador de uma URL com um esquema que pudemos prever por meia década_ e o comportamento do código atual w / r / t para mamba é difícil de raciocinar.

Aposto que se você fornecer um mamba-version , _ainda_ tentará instalar mamba de conda-forge , mesmo que já esteja lá, e _ainda_ use conda para tudo _exceto_ o ambiente resolver (por exemplo, conda config ). Isso prejudicaria a maioria dos ganhos de já tê-lo no disco, pós-instalador. Uma vez que esse instalador com mamba não existia até 13 horas atrás, isso não foi um problema ... meu pensamento é que provavelmente precisaremos de algo como conda-exe: mamba se você _sabe_ já instalado, mesmo se _estar_ disponível, você pode não querer usá-lo, e amanhã pode muito bem haver a próxima ferramenta ( lambada , tarantala ) do próximo instalador.

De qualquer forma, achei que consertar alguns desses problemas requer uma reestruturação bem drástica ... no nº 107 (que está se tornando nº 108, nº 109, ... com revisão pendente) Fiz o melhor esforço para nos preparar para o The Next X, onde X pode ser um arquivo PR de um / dois. Esperançosamente, podemos chegar onde podemos começar a adicionar recursos e abordar o desempenho, mas temo que não resolver primeiro o problema técnico atual piorará a situação.

Todos 16 comentários

Olá @ ma-sadeghi, obrigado pelas amáveis ​​palavras e por usar a ação :)

Parece que configurar o conda sozinho leva mais tempo do que o normal.

Isso mudou em alguma versão mais recente? Quando você percebeu que começou a perceber isso?

Só estou pensando para que possamos identificar qualquer problema potencial.


@ conda-incubator / setup-miniconda-team, você notou algo semelhante ao descrito?

Mesmo problema para mim usando mamba (sem instalar meu deps durante a ação) e com a última versão v2.

@bollwyvl eu poderia usar a depuração manual disso

Caso ajude (não consigo compartilhar os registros):

    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

Obrigado @hadim pelo exemplo. Adicionará um PR para verificar as mudanças que introduziram a regressão.

Olá @ ma-sadeghi, obrigado pelas amáveis ​​palavras e por usar a ação :)

Parece que configurar o conda sozinho leva mais tempo do que o normal.

Isso mudou em alguma versão mais recente? Quando você percebeu que começou a perceber isso?

Só estou pensando para que possamos identificar qualquer problema potencial.

@ conda-incubator / setup-miniconda-team, você notou algo semelhante ao descrito?

Tenho quase certeza que costumava ser muito mais rápido na primeira vez que usei essa ação, de cabeça, talvez demorasse 1 minuto ou mais para configurar o conda, agora são 3:30 minutos. Nosso projeto é público e já faz um tempo que estamos usando esta ação, então fique à vontade para verificar nossos registros caso isso ajude a depurar o problema: https://github.com/PMEAL/OpenPNM/actions

Dos registros vinculados:

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 ##

Portanto, temos, de forma um tanto não científica:

  • 26 segundos de obtenção de repodata
  • 135 segundos resolvendo para atualizar o conda

A única coisa em que consigo pensar é conda-forge sendo adicionado, o que coloca o solucionador em over-drive com 10k + pacotes extras (e todas as suas versões).

Algumas opções, em cima da minha cabeça:

  • no seu repo ...

    • defina auto-update-conda para false

    • você vai conseguir o que consegue, mas você _usualmente_ vai ficar bem

    • gerar / verificar na especificação explícita com conda-lock

    • use um instalador personalizado

    • sim, o download pode demorar mais, mas o solucionador não será invocado

    • você pode / deve armazená-lo em cache também, mas obter um do github será mais rápido do que acessar a internet

  • neste_repo ..

    • adicione uma nova opção de ação, que só puxará de uma seleção limitada de canais, por exemplo, conda-update-channels: defaults

    • adicione alguns ::group::Boring stuff ::endgroup:: log de saída para que o ciclo de vida de nível superior dos comandos que esta ação executa sejam mais fáceis de rastrear (tive que tirar a poeira dos meus pandas para fazer algumas das coisas de tempo)

    • não tentei com raiva ... pode _pode_

    • oferece uma configuração de micromaba (novamente, economizando algumas soluções) https://github.com/conda-incubator/setup-miniconda/issues/75#issuecomment -698024879

Pois vale a pena gastar a maior parte do tempo na instalação do mamba:

image

Configuração associada:

      - 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

É possível usar algo como micromamba em vez de miniconda ou miniforge?

Observar os detalhes da etapa de solução é o que leva 99% do tempo.

Se esse problema for resolvido, a rota do miniforge fornecerá isso por padrão: D

Confirmo que o instalador MambaForge lançado recentemente torna o CI mais rápido:

- 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

(o trecho também inclui uma maneira de fazer o login no anaconda sem a necessidade de instalar anaconda-client . Pode ser útil para alguns aqui.)

Como é que joga com mamba-version ? É necessário? É necessário verificar se um mamba já está instalado?

Boa pergunta e eu realmente não sei. O novo instalador vem mamba por padrão e eu uso diretamente sem mamba-version .

Eu preciso primeiro fazer o login no anaconda (veja o trecho), então não confio em setup-conda para instalar meu env.

Eu acho que se você quiser usar setup-conda para instalar um arquivo env, setup-conda deve ser modificado para verificar se há mamba e ignorar sua instalação, se ela existir.

Talvez alguém da @conda-incubator / setup-miniconda-team possa confirmar ou não?

Existem _muito_ mais peças móveis surgindo agora do que apenas _usar o que está no disco_ vs _obter um instalador de uma URL com um esquema que pudemos prever por meia década_ e o comportamento do código atual w / r / t para mamba é difícil de raciocinar.

Aposto que se você fornecer um mamba-version , _ainda_ tentará instalar mamba de conda-forge , mesmo que já esteja lá, e _ainda_ use conda para tudo _exceto_ o ambiente resolver (por exemplo, conda config ). Isso prejudicaria a maioria dos ganhos de já tê-lo no disco, pós-instalador. Uma vez que esse instalador com mamba não existia até 13 horas atrás, isso não foi um problema ... meu pensamento é que provavelmente precisaremos de algo como conda-exe: mamba se você _sabe_ já instalado, mesmo se _estar_ disponível, você pode não querer usá-lo, e amanhã pode muito bem haver a próxima ferramenta ( lambada , tarantala ) do próximo instalador.

De qualquer forma, achei que consertar alguns desses problemas requer uma reestruturação bem drástica ... no nº 107 (que está se tornando nº 108, nº 109, ... com revisão pendente) Fiz o melhor esforço para nos preparar para o The Next X, onde X pode ser um arquivo PR de um / dois. Esperançosamente, podemos chegar onde podemos começar a adicionar recursos e abordar o desempenho, mas temo que não resolver primeiro o problema técnico atual piorará a situação.

conda-incubator/setup-miniconda@master agora (por um tempo) suportou a combinação de:

miniforge-variable: Mambaforge
use-mamba: true

Que deve principalmente responder ao e-mail aqui ... na medida em que uma instalação completa conda + python + mamba pode. Micromamba teve muitas atualizações recentemente, mas eu ainda não fui capaz de avaliar se queremos suportá-lo / testá-lo no mesmo nível que os outros provedores, ainda ...

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ma-sadeghi picture ma-sadeghi  ·  9Comentários

mrmundt picture mrmundt  ·  12Comentários

jaimergp picture jaimergp  ·  13Comentários

volpatto picture volpatto  ·  12Comentários

goanpeca picture goanpeca  ·  9Comentários