AutoDL 同步
使用此技能附帶的腳本進行專案同步。
當這些腳本可以執行請求的操作時,請不要手動建構 scp 或 rsync 命令。
專案發現
同步腳本會動態確定專案根目錄。
它們優先使用 Git 倉庫根目錄。如果目前目錄不在 Git 倉庫內,它們會向上搜尋 .autodl-sync。
請不要硬編碼本機專案路徑。
專案配置
專案特定的同步設定儲存在:
<project-root>/.autodl-sync
配置可以定義:
- 遠端 SSH 主機
- 遠端基礎目錄
- 遠端專案名稱
- 明確的遠端目錄
- Git 感知或明確的上傳排除項
- 額外的上傳排除項
- 選定或完整專案的結果下載
- 拉取排除項、最大檔案大小、刪除和覆蓋行為
- rsync 行為
請透過提供的腳本讀取同步設定,而不是複製配置邏輯。
上傳程式碼
當使用者要求:
- 同步程式碼
- 上傳程式碼
- 部署當前原始碼
- 更新 AutoDL 副本
請執行:
scripts/push-code.sh <project-root>
如果專案根目錄已經是當前工作專案,則可以省略參數。
上傳過濾器始終會套用強制性的安全排除項。在 auto 模式下,當倉庫根目錄有 .gitignore 時,它會使用 Git 追蹤且未被忽略的檔案列表;否則它會使用配置的排除項。在每種模式下,專案的 EXCLUDES_APPEND 項目都會生效。
SYNC_DELETE=true 僅在解析的上傳模式為 excludes 時才被支援;Git 檔案列表模式無法安全地識別所有過時的遠端檔案,因此必須失敗,而不是暗示完整的刪除鏡像。
下載結果
當使用者要求:
- 拉取訓練結果
- 下載檢查點
- 檢索日誌
- 檢索預測結果
- 同步實驗輸出
請執行:
scripts/pull-results.sh <project-root>
PULL_DIRS 項目相對於 REMOTE_DIR。空陣列表示不拉取任何內容。PULL_ALL=true 明確拉取整個遠端專案,並且不能與非空的 PULL_DIRS 結合使用。拉取排除項、最大檔案大小、本機刪除和覆蓋保護獨立於上傳過濾。
編碼工作流程
當專案指令明確要求在程式碼變更後進行同步時:
- 完成請求的原始碼修改。
- 執行適當的本機驗證或測試。
- 如果驗證成功,執行
push-code.sh。 - 報告同步是否成功。
除非使用者明確請求遠端執行,否則不要自動開始遠端訓練。
SSH 認證
AutoDL 認證使用由專案的 .autodl-sync 配置的專用本機 SSH 金鑰。
私鑰必須保留在本機機器上。
如果尚未為新的 AutoDL 實例配置公鑰認證,請執行:
scripts/setup-key.sh <project-root>
此操作可能互動式地要求一次 AutoDL 帳戶密碼,以安裝公鑰。
設定成功後,推送和拉取操作必須使用公鑰認證。
切勿列印、讀取、上傳、複製或暴露 SSH 私鑰。
安全
切勿檢查、列印、複製或修改 SSH 私鑰。
SSH 連線設定從專案的 .autodl-sync 讀取,並明確傳遞給 ssh 和 rsync。這些腳本不需要 ~/.ssh/config 中的條目。
請勿上傳認證憑證或密碼。
尊重由專案的 .autodl-sync 定義的排除項和同步行為。
除非專案配置明確要求,否則不要啟用上傳或拉取刪除。每次同步後,向使用者報告腳本的檔案操作摘要。