Setup-miniconda: Der Einrichtungs-Conda-Schritt dauert zu lange

Erstellt am 10. Nov. 2020  ·  16Kommentare  ·  Quelle: conda-incubator/setup-miniconda

Vielen Dank für die Erstellung/Pflege dieser großartigen Aktion!

Es scheint, dass allein die Einrichtung von conda länger dauert als üblich. Sehen Sie sich zum Beispiel dieses Protokoll an , den Schritt "Conda einrichten". Die Einrichtung von conda dauert 3 ½ Minuten (ohne die Installation von Abhängigkeiten). Ist das zu erwarten oder mache ich was falsch?

Vielen Dank noch mal!

enhancement

Hilfreichster Kommentar

Es kommen jetzt _viel_ mehr bewegende Teile als nur _verwenden, was auf der Festplatte ist_ vs _einen Installer von einer URL mit einem Schema abrufen, das wir seit einem halben Jahrzehnt vorhersagen konnten_, und das Verhalten des aktuellen Codes w/r/t zu mamba ist schwer zu begründen.

Ich wette, wenn Sie mamba-version angeben, wird es _noch_ versuchen, mamba von conda-forge zu installieren, auch wenn es bereits da ist, und _immer_ conda für alles _außer_ die Umgebung lösen (zB conda config ). Diese würden die meisten Vorteile zunichte machen, wenn Sie es bereits auf der Festplatte nach dem Installationsprogramm haben. Da ein solches Installationsprogramm mit mamba bis vor 13 Stunden noch nicht existierte, war dies kein Problem ... ich denke, wir werden wahrscheinlich so etwas wie conda-exe: mamba brauchen, wenn du _weißt_, dass es schon ist installiert, denn selbst wenn es _ist_, möchten Sie es vielleicht nicht verwenden, und morgen könnte es The Next Tool ( lambada , tarantala ) von The Next Installer geben.

Wie auch immer, ich hatte das Gefühl, dass die Behebung einiger dieser Probleme eine ziemlich drastische Umstrukturierung erfordert ... auf #107 (die zu #108, #109, ... ausstehender Review wird) habe ich nach besten Kräften versucht, uns für The Next vorzubereiten X, wobei X ein Ein-/Zwei-Datei-PR sein kann. Hoffentlich kommen wir dahin, wo wir anfangen können, Funktionen hinzuzufügen und die Leistung zu verbessern, aber ich befürchte, dass es die Situation noch verschlimmern wird, wenn wir nicht zuerst die aktuellen technischen Schulden angehen.

Alle 16 Kommentare

Hallo @ma-sadeghi, danke für die netten Worte und für die Nutzung der Aktion :)

Es scheint, dass das Einrichten von Conda allein länger dauert als gewöhnlich.

Hat sich das in einer neueren Version geändert? Wann ist Ihnen aufgefallen, dass Sie dies bemerken?

Ich frage mich nur, damit wir jedes potenzielle Problem lokalisieren können.


@conda-incubator/setup-miniconda-team hast du etwas Ähnliches wie beschrieben bemerkt?

Gleiches Problem bei mir mit Mamba (ohne meine Deps während der Aktion zu installieren) und mit der neuesten v2-Version.

@bollwyvl Ich könnte das von Hand debuggen

Falls es hilft (ich kann die Protokolle nicht teilen):

    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

Danke @hadim für das Beispiel. Fügt einen PR hinzu, um die Änderungen zu überprüfen, die die Regression eingeführt haben.

Hallo @ma-sadeghi, danke für die netten Worte und für die Nutzung der Aktion :)

Es scheint, dass das Einrichten von Conda allein länger dauert als gewöhnlich.

Hat sich das in einer neueren Version geändert? Wann ist Ihnen aufgefallen, dass Sie dies bemerken?

Ich frage mich nur, damit wir jedes potenzielle Problem lokalisieren können.

@conda-incubator/setup-miniconda-team hast du etwas Ähnliches wie beschrieben bemerkt?

Ich bin mir fast sicher, dass es früher viel schneller war, als ich diese Aktion zum ersten Mal verwendet habe, aus dem Kopf, vielleicht hat es 1 Minute oder so gedauert, Conda einzurichten, jetzt sind es 3:30 Minuten. Unser Projekt ist öffentlich und es ist schon eine Weile her, dass wir diese Aktion verwenden. Schauen Sie sich also gerne unsere Protokolle an, falls dies beim Debuggen des Problems hilft: https://github.com/PMEAL/OpenPNM/actions

Aus den verlinkten Logs:

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

Wir haben also, etwas unwissenschaftlich:

  • 26 Sekunden zum Abrufen von Repodaten
  • 135 Sekunden Lösung zum Aktualisieren von Conda

Das einzige, was mir einfällt, ist, dass conda-forge hinzugefügt wird, was den Solver mit zusätzlichen 10.000+ Paketen (und all ihren Versionen) auf Hochtouren bringt.

Einige Optionen aus dem Kopf:

  • in deinem repo...

    • setze auto-update-conda auf false

    • du wirst irgendwie bekommen, was du bekommst, aber es wird dir _normalerweise_ gut gehen

    • explizite Spezifikation mit conda-lock generieren/einchecken

    • Verwenden Sie ein benutzerdefiniertes Installationsprogramm

    • Ja, der Download kann länger dauern, aber der Solver wird nicht aufgerufen

    • Sie können/sollten dies auch zwischenspeichern, aber es ist schneller, einen von github zu beziehen, als ins Internet zu gehen

  • auf _diesem_ Repository..

    • Fügen Sie eine neue Aktionsoption hinzu, die nur aus einer begrenzten Auswahl von Kanälen zieht, z. B. conda-update-channels: defaults

    • Fügen Sie einige ::group::Boring stuff ::endgroup:: Log-Ausgaben hinzu, damit der Lebenszyklus der Befehle dieser Aktion auf oberster Ebene einfacher zu verfolgen ist (ich musste meine Pandas abstauben, um einige der Timing-Sachen zu erledigen)

    • habe es nicht im Zorn versucht ... es _might_

    • Bieten Sie ein micromaba Setup an (wieder sparen Sie ein paar Lösungen) https://github.com/conda-incubator/setup-miniconda/issues/75#issuecomment -698024879

Die meiste Zeit ist es wert, Mamba zu installieren:

image

Zugehörige Konfiguration:

      - 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

Ist es möglich, anstelle von Miniconda oder Miniforge so etwas wie Micromamba zu verwenden?

Wenn man sich die Details ansieht, ist der Lösungsschritt das, was 99% der Zeit in Anspruch nimmt.

Wenn dieses Problem behoben wird, bietet die Miniforge-Route dies standardmäßig :D

Ich bestätige, dass das kürzlich veröffentlichte MambaForge-Installationsprogramm das CI schneller macht:

- 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

(Das Snippet enthält auch eine Möglichkeit, sich bei Anaconda anzumelden, ohne anaconda-client installieren zu müssen. Könnte für einige hier hilfreich sein.)

Wie spielt es sich mit mamba-version ? Wird es benötigt? Muss überprüft werden, ob bereits ein vorhandenes mamba ist?

Gute Frage und ich weiß es tatsächlich nicht. Das neue Installationsprogramm wird standardmäßig mit mamba und ich verwende es direkt ohne mamba-version .

Ich muss mich zuerst bei Anaconda anmelden (siehe Snippet), damit ich mich nicht auf setup-conda , um meine Umgebung zu installieren.

Ich denke, wenn Sie setup-conda möchten, um eine env-Datei zu installieren, sollte setup-conda geändert werden, um tatsächlich nach Mamba zu suchen und die Installation zu umgehen, falls sie existiert.

Vielleicht kann das jemand von @conda-incubator/setup-miniconda-team bestätigen oder nicht?

Es kommen jetzt _viel_ mehr bewegende Teile als nur _verwenden, was auf der Festplatte ist_ vs _einen Installer von einer URL mit einem Schema abrufen, das wir seit einem halben Jahrzehnt vorhersagen konnten_, und das Verhalten des aktuellen Codes w/r/t zu mamba ist schwer zu begründen.

Ich wette, wenn Sie mamba-version angeben, wird es _noch_ versuchen, mamba von conda-forge zu installieren, auch wenn es bereits da ist, und _immer_ conda für alles _außer_ die Umgebung lösen (zB conda config ). Diese würden die meisten Vorteile zunichte machen, wenn Sie es bereits auf der Festplatte nach dem Installationsprogramm haben. Da ein solches Installationsprogramm mit mamba bis vor 13 Stunden noch nicht existierte, war dies kein Problem ... ich denke, wir werden wahrscheinlich so etwas wie conda-exe: mamba brauchen, wenn du _weißt_, dass es schon ist installiert, denn selbst wenn es _ist_, möchten Sie es vielleicht nicht verwenden, und morgen könnte es The Next Tool ( lambada , tarantala ) von The Next Installer geben.

Wie auch immer, ich hatte das Gefühl, dass die Behebung einiger dieser Probleme eine ziemlich drastische Umstrukturierung erfordert ... auf #107 (die zu #108, #109, ... ausstehender Review wird) habe ich nach besten Kräften versucht, uns für The Next vorzubereiten X, wobei X ein Ein-/Zwei-Datei-PR sein kann. Hoffentlich kommen wir dahin, wo wir anfangen können, Funktionen hinzuzufügen und die Leistung zu verbessern, aber ich befürchte, dass es die Situation noch verschlimmern wird, wenn wir nicht zuerst die aktuellen technischen Schulden angehen.

conda-incubator/setup-miniconda@master nun (seit einiger Zeit) die Kombination von:

miniforge-variable: Mambaforge
use-mamba: true

Was hier hauptsächlich die Mail beantworten sollte... soweit eine vollständige conda+python+mamba-Installation möglich ist. Micromamba hat in letzter Zeit viele Updates bekommen, aber ich konnte es noch nicht beurteilen, ob wir es auf dem gleichen Niveau wie die anderen Anbieter unterstützen/testen wollen, aber...

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen