Was macht AutoDL Sync?
Nutzen Sie die in diesem Skill enthaltenen Skripte zur Projektsynchronisation.
Konstruieren Sie keine manuellen scp- oder rsync-Befehle, wenn diese Skripte die angeforderte Operation ausführen können.
Projektfindung
Die Synchronisationsskripte ermitteln das Projektverzeichnis dynamisch.
Sie bevorzugen das Git-Repository-Stammverzeichnis. Falls das aktuelle Verzeichnis nicht in einem Git-Repository liegt, suchen sie aufwärts nach .autodl-sync.
Hardcodieren Sie keine lokalen Projektpfade.
Projektkonfiguration
Projektspezifische Synchronisationseinstellungen werden gespeichert in:
<projekt-stamm>/.autodl-sync
Die Konfiguration kann definieren:
- Remote-SSH-Host
- Remote-Basisverzeichnis
- Remote-Projektname
- explizites Remote-Verzeichnis
- Git-bewusste oder explizite Upload-Ausschlüsse
- zusätzliche Upload-Ausschlüsse
- ausgewählte oder vollständige Projektergebnis-Downloads
- Pull-Ausschlüsse, maximale Dateigröße, Lösch- und Überschreibverhalten
- rsync-Verhalten
Lesen Sie die Synchronisationseinstellungen über die bereitgestellten Skripte, anstatt die Konfigurationslogik zu duplizieren.
Code hochladen
Wenn der Benutzer bittet um:
- Code synchronisieren
- Code hochladen
- aktuellen Quellcode bereitstellen
- die AutoDL-Kopie aktualisieren
führen Sie aus:
scripts/push-code.sh <projekt-stamm>
Wenn der Projektstamm bereits das aktuelle Arbeitsverzeichnis ist, kann das Argument weggelassen werden.
Der Upload-Filter wendet immer obligatorische Sicherheitsausschlüsse an. Im Modus auto verwendet er die von Git verfolgte und nicht ignorierte Dateiliste, wenn das Repository-Stammverzeichnis eine .gitignore-Datei enthält; andernfalls verwendet er konfigurierte Ausschlüsse. Projekt-EXCLUDES_APPEND-Einträge werden in jedem Modus angewendet.
SYNC_DELETE=true wird nur unterstützt, wenn der aufgelöste Upload-Modus excludes ist; der Git-Dateilisten-Modus kann nicht sicher alle veralteten Remote-Dateien identifizieren und muss fehlschlagen, anstatt eine vollständige Löschspiegelung zu implizieren.
Ergebnisse herunterladen
Wenn der Benutzer bittet um:
- Trainingsergebnisse ziehen
- Checkpoints herunterladen
- Logs abrufen
- Vorhersagen abrufen
- Experimentausgaben synchronisieren
führen Sie aus:
scripts/pull-results.sh <projekt-stamm>
PULL_DIRS-Einträge sind relativ zu REMOTE_DIR. Ein leeres Array zieht nichts. PULL_ALL=true zieht explizit das gesamte Remote-Projekt und darf nicht mit nicht-leeren PULL_DIRS kombiniert werden. Pull-Ausschlüsse, maximale Dateigröße, lokale Löschung und Überschreibschutz sind unabhängig von der Upload-Filterung.
Codierungsworkflow
Wenn Projektanweisungen explizit eine Synchronisation nach Codeänderungen erfordern:
- Führen Sie die angeforderten Quellcode-Änderungen durch.
- Führen Sie geeignete lokale Validierungen oder Tests aus.
- Wenn die Validierung erfolgreich ist, führen Sie
push-code.shaus. - Melden Sie, ob die Synchronisation erfolgreich war.
Starten Sie nicht automatisch ein Remote-Training, es sei denn, der Benutzer fordert explizit eine Remote-Ausführung an.
SSH-Authentifizierung
Die AutoDL-Authentifizierung verwendet den dedizierten lokalen SSH-Schlüssel, der durch die .autodl-sync-Konfiguration des Projekts festgelegt wird.
Der private Schlüssel muss auf dem lokalen Rechner verbleiben.
Wenn die Public-Key-Authentifizierung für eine neue AutoDL-Instanz noch nicht konfiguriert wurde, führen Sie aus:
scripts/setup-key.sh <projekt-stamm>
Dieser Vorgang kann interaktiv das AutoDL-Konto-Passwort einmal anfordern, um den öffentlichen Schlüssel zu installieren.
Nach erfolgreicher Einrichtung müssen Push- und Pull-Operationen die Public-Key-Authentifizierung verwenden.
Geben Sie niemals den SSH-Private-Key aus, lesen Sie ihn nicht hoch, kopieren Sie ihn nicht und setzen Sie ihn nicht offen.
Sicherheit
Überprüfen, ausgeben, kopieren oder ändern Sie niemals SSH-Private-Keys.
SSH-Verbindungseinstellungen werden aus der .autodl-sync-Konfiguration des Projekts gelesen und explizit an ssh und rsync übergeben. Die Skripte benötigen keinen Eintrag in ~/.ssh/config.
Laden Sie keine Anmeldeinformationen oder Geheimnisse hoch.
Respektieren Sie die durch die .autodl-sync-Konfiguration des Projekts definierten Ausschlüsse und das Synchronisationsverhalten.
Aktivieren Sie keine Upload- oder Pull-Löschung, es sei denn, die Projektkonfiguration fordert dies explizit an. Melden Sie nach jeder Synchronisation die Dateioperationen-Zusammenfassung des Skripts an den Benutzer.