Setup-miniconda: El paso de configuración de conda tarda demasiado

Creado en 10 nov. 2020  ·  16Comentarios  ·  Fuente: conda-incubator/setup-miniconda

¡Gracias por crear / mantener esta gran acción!

Parece que configurar conda solo lleva más tiempo de lo habitual. Por ejemplo, eche un vistazo a este registro , el paso "Configurar conda". Se necesitan 3 minutos y medio para configurar conda (excluyendo la instalación de dependencias). ¿Es eso esperado o estoy haciendo algo mal?

¡Gracias otra vez!

enhancement

Comentario más útil

Hay muchas más piezas en movimiento que vienen ahora que solo usar lo que hay en el disco en lugar de obtener un instalador de una URL con un esquema que hemos podido predecir durante media década, y el comportamiento del código actual w / r / t a mamba es difícil de razonar.

Apuesto a que, si proporciona un mamba-version , _todavía_ intentará instalar mamba desde conda-forge , incluso si ya está allí, y _todavía_ usará conda para todo _excepto_ que el entorno resuelva (por ejemplo, conda config ). Estos derrotarían la mayoría de las ganancias de tenerlo ya en el disco, después del instalador. Dado que un instalador de este tipo con mamba no existía hasta hace 13 horas, esto no fue un problema ... creo que es probable que necesitemos algo como conda-exe: mamba si _ sabes_ que ya está instalado, ya que incluso si _est_ disponible, es posible que no desee utilizarlo, y mañana bien puede haber The Next Tool ( lambada , tarantala ) de The Next Installer.

De todos modos, sentí que solucionar algunos de estos problemas requiere una reestructuración bastante drástica ... en el n. ° 107 (que se está convirtiendo en el n. ° 108, n. ° 109, ... pendiente de revisión) Hice un gran esfuerzo para prepararnos para The Next X, donde X puede ser un PR de uno o dos archivos. Con suerte, podemos llegar a donde podemos comenzar a agregar funciones y abordar el rendimiento, pero me temo que no abordar primero la deuda técnica actual empeorará la situación.

Todos 16 comentarios

Hola @ ma-sadeghi, gracias por las amables palabras y por usar la acción :)

Parece que configurar conda solo lleva más tiempo de lo habitual.

¿Ha cambiado esto en alguna versión más reciente? ¿Cuándo te diste cuenta de que empezaste a notar esto?

Solo me pregunto para que podamos identificar cualquier problema potencial.


@ conda-incubator / setup-miniconda-team, ¿ha notado algo similar a lo descrito?

El mismo problema para mí usando mamba (sin instalar mis departamentos durante la acción) y con la última versión v2.

@bollwyvl Me vendría bien depurar esto a mano

En caso de que ayude (no puedo compartir los 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

Gracias @hadim por el ejemplo. Agregará un PR para verificar los cambios que introdujeron la regresión.

Hola @ ma-sadeghi, gracias por las amables palabras y por usar la acción :)

Parece que configurar conda solo lleva más tiempo de lo habitual.

¿Ha cambiado esto en alguna versión más reciente? ¿Cuándo te diste cuenta de que empezaste a notar esto?

Solo me pregunto para que podamos identificar cualquier problema potencial.

@ conda-incubator / setup-miniconda-team, ¿ha notado algo similar a lo descrito?

Estoy casi seguro de que solía ser mucho más rápido la primera vez que usé esta Acción, fuera de mi cabeza, tal vez me tomó 1 minuto más o menos configurar la conda, ahora es a las 3:30 minutos. Nuestro proyecto es público y ha pasado un tiempo desde que usamos esta acción, así que no dude en consultar nuestros registros en caso de que ayude a depurar el problema: https://github.com/PMEAL/OpenPNM/actions

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

Así que tenemos, de forma poco científica:

  • 26 segundos de obtener repodatos
  • 135 segundos de hacer la resolución para actualizar conda

Lo único que se me ocurre es que se agregará conda-forge , lo que pone al solucionador en over-drive con paquetes adicionales de 10k + (y todas sus versiones).

Algunas opciones, fuera de mi cabeza:

  • en tu repositorio ...

    • establecer auto-update-conda en false

    • obtendrás un poco lo que obtienes, pero normalmente estarás bien

    • generar / verificar especificación explícita con conda-lock

    • usar un instalador personalizado

    • sí, la descarga puede tardar más, pero el solucionador no se invoca

    • también puede / debe almacenar en caché esto, pero obtener uno de github será más rápido que ir a Internet

  • en _este_ repositorio ..

    • agregue una nueva opción de acción, que solo obtendrá de una selección limitada de canales, por ejemplo, conda-update-channels: defaults

    • agregue una salida de registro de ::group::Boring stuff ::endgroup:: para que el ciclo de vida de nivel superior de los comandos que ejecuta esta acción sea más fácil de rastrear (tuve que desempolvar mis pandas para hacer algunas de las cosas de sincronización)

    • no lo he intentado con ira ...

    • ofrecer una configuración de micromaba (nuevamente, guardando un par de soluciones) https://github.com/conda-incubator/setup-miniconda/issues/75#issuecomment -698024879

Por lo que vale, la mayor parte del tiempo se dedica a instalar mamba:

image

Configuración asociada:

      - 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

¿Es posible usar algo como micromamba en lugar de miniconda o miniforge?

En cuanto a los detalles, el paso de resolución es lo que lleva el 99% del tiempo.

Si se soluciona este problema , la ruta miniforge proporcionará esto de forma predeterminada: D

Confirmo que el instalador MambaForge lanzado recientemente hace que el CI sea más 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

(el fragmento también incluye una forma de iniciar sesión en anaconda sin la necesidad de instalar anaconda-client . Podría ser útil para algunos aquí).

¿Cómo se juega con mamba-version ? ¿Es necesario? ¿Es necesario comprobar si ya existe un mamba existente?

Buena pregunta y en realidad no lo sé. El nuevo instalador envía mamba por defecto y lo uso directamente sin mamba-version .

Primero necesito iniciar sesión en anaconda primero (ver fragmento), así que no confío en setup-conda para instalar mi env.

Supongo que si desea usar setup-conda para instalar un archivo env, setup-conda debería modificarse para comprobar si existe mamba y omitir su instalación si existe.

¿Quizás alguien de @ conda-incubator / setup-miniconda-team pueda confirmarlo o no?

Hay muchas más piezas en movimiento que vienen ahora que solo usar lo que hay en el disco en lugar de obtener un instalador de una URL con un esquema que hemos podido predecir durante media década, y el comportamiento del código actual w / r / t a mamba es difícil de razonar.

Apuesto a que, si proporciona un mamba-version , _todavía_ intentará instalar mamba desde conda-forge , incluso si ya está allí, y _todavía_ usará conda para todo _excepto_ que el entorno resuelva (por ejemplo, conda config ). Estos derrotarían la mayoría de las ganancias de tenerlo ya en el disco, después del instalador. Dado que un instalador de este tipo con mamba no existía hasta hace 13 horas, esto no fue un problema ... creo que es probable que necesitemos algo como conda-exe: mamba si _ sabes_ que ya está instalado, ya que incluso si _est_ disponible, es posible que no desee utilizarlo, y mañana bien puede haber The Next Tool ( lambada , tarantala ) de The Next Installer.

De todos modos, sentí que solucionar algunos de estos problemas requiere una reestructuración bastante drástica ... en el n. ° 107 (que se está convirtiendo en el n. ° 108, n. ° 109, ... pendiente de revisión) Hice un gran esfuerzo para prepararnos para The Next X, donde X puede ser un PR de uno o dos archivos. Con suerte, podemos llegar a donde podemos comenzar a agregar funciones y abordar el rendimiento, pero me temo que no abordar primero la deuda técnica actual empeorará la situación.

conda-incubator/setup-miniconda@master ahora (por un tiempo) ha apoyado la combinación de:

miniforge-variable: Mambaforge
use-mamba: true

Lo que debería responder principalmente al correo aquí ... en la medida en que una instalación completa de conda + python + mamba pueda hacerlo. Micromamba ha tenido muchas actualizaciones recientemente, pero todavía no he podido evaluar si queremos admitirlo / probarlo al mismo nivel que los otros proveedores, todavía ...

¿Fue útil esta página
0 / 5 - 0 calificaciones