Sincronización AutoDL
Usa los scripts incluidos en esta habilidad para la sincronización de proyectos.
No construyas comandos scp o rsync manualmente cuando estos scripts
puedan realizar la operación solicitada.
Descubrimiento de proyectos
Los scripts de sincronización determinan dinámicamente la raíz del proyecto.
Prefieren la raíz del repositorio Git. Si el directorio actual no está
dentro de un repositorio Git, buscan hacia arriba por .autodl-sync.
No codifiques rutas locales de proyectos.
Configuración del proyecto
La configuración específica de sincronización del proyecto se almacena en:
<raíz-del-proyecto>/.autodl-sync
La configuración puede definir:
- host SSH remoto
- directorio base remoto
- nombre del proyecto remoto
- directorio remoto explícito
- exclusiones de carga conscientes de Git o explícitas
- exclusiones de carga adicionales
- descargas de resultados seleccionados o del proyecto completo
- exclusiones de extracción, tamaño máximo de archivo, comportamiento de eliminación y sobrescritura
- comportamiento de rsync
Lee la configuración de sincronización a través de los scripts proporcionados en lugar de duplicar la lógica de configuración.
Carga de código
Cuando el usuario pida:
- sincronizar código
- cargar código
- desplegar el código fuente actual
- actualizar la copia en AutoDL
ejecuta:
scripts/push-code.sh <raíz-del-proyecto>
Si la raíz del proyecto ya es el directorio de trabajo actual, el argumento puede omitirse.
El filtro de carga siempre aplica exclusiones de seguridad obligatorias. En modo
auto utiliza la lista de archivos rastreados y no ignorados por Git cuando la raíz
del repositorio tiene un .gitignore; de lo contrario, utiliza las exclusiones configuradas. Las entradas
EXCLUDES_APPEND del proyecto aplican en todos los modos.
SYNC_DELETE=true solo se admite cuando el modo de carga resuelto es
excludes; el modo de lista de archivos de Git no puede identificar de forma segura cada archivo
desactualizado remoto y debe fallar en lugar de implicar un espejo de eliminación completo.
Descarga de resultados
Cuando el usuario pida:
- extraer resultados de entrenamiento
- descargar puntos de control
- recuperar registros
- recuperar predicciones
- sincronizar salidas de experimentos
ejecuta:
scripts/pull-results.sh <raíz-del-proyecto>
Las entradas PULL_DIRS son relativas a REMOTE_DIR. Un arreglo vacío no extrae
nada. PULL_ALL=true extrae explícitamente todo el proyecto remoto y
no debe combinarse con PULL_DIRS no vacío. Las exclusiones de extracción, el tamaño
máximo de archivo, la eliminación local y la protección contra sobrescritura son independientes del
filtrado de carga.
Flujo de trabajo de codificación
Cuando las instrucciones del proyecto requieran explícitamente sincronización después de cambios en el código:
- Completa las modificaciones solicitadas al código fuente.
- Ejecuta las pruebas o validaciones locales apropiadas.
- Si la validación es exitosa, ejecuta
push-code.sh. - Informa si la sincronización fue exitosa.
No inicies entrenamiento remoto automáticamente a menos que el usuario lo solicite explícitamente.
Autenticación SSH
La autenticación de AutoDL utiliza la clave SSH local dedicada configurada por
el .autodl-sync del proyecto.
La clave privada debe permanecer en la máquina local.
Si la autenticación con clave pública aún no se ha configurado para una nueva instancia de AutoDL, ejecuta:
scripts/setup-key.sh <raíz-del-proyecto>
Esta operación puede solicitar interactivamente la contraseña de la cuenta de AutoDL una vez para instalar la clave pública.
Después de que la configuración se complete correctamente, las operaciones de carga y extracción deben usar autenticación con clave pública.
Nunca imprimas, leas, cargues, copies ni expongas la clave privada SSH.
Seguridad
Nunca inspecciones, imprimas, copies ni modifiques claves privadas SSH.
La configuración de conexión SSH se lee del .autodl-sync del proyecto y se pasa
explícitamente a ssh y rsync. Los scripts no requieren una entrada
en ~/.ssh/config.
No cargues credenciales ni secretos.
Respeta las exclusiones y el comportamiento de sincronización definido por el
.autodl-sync del proyecto.
No habilites la eliminación de carga o extracción a menos que la configuración del proyecto lo solicite explícitamente. Después de cada sincronización, informa al usuario el resumen de las operaciones de archivos del script.