Sincronização AutoDL
Use os scripts incluídos neste skill para sincronização de projetos.
Não construa manualmente comandos scp ou rsync quando estes scripts podem realizar a operação solicitada.
Descoberta do projeto
Os scripts de sincronização determinam dinamicamente a raiz do projeto.
Eles preferem a raiz do repositório Git. Se o diretório atual não estiver dentro de um repositório Git, eles procuram para cima por .autodl-sync.
Não codifique caminhos de projeto locais.
Configuração do projeto
As configurações de sincronização específicas do projeto são armazenadas em:
<raiz-do-projeto>/.autodl-sync
A configuração pode definir:
- host SSH remoto
- diretório base remoto
- nome do projeto remoto
- diretório remoto explícito
- exclusões de upload com reconhecimento Git ou explícitas
- exclusões adicionais de upload
- downloads de resultados selecionados ou do projeto completo
- exclusões de pull, tamanho máximo de arquivo, comportamento de exclusão e sobrescrita
- comportamento do rsync
Leia as configurações de sincronização através dos scripts fornecidos, em vez de duplicar a lógica de configuração.
Upload de código
Quando o usuário pedir para:
- sincronizar código
- fazer upload de código
- implantar código fonte atual
- atualizar a cópia do AutoDL
execute:
scripts/push-code.sh <raiz-do-projeto>
Se a raiz do projeto já for o diretório de trabalho atual, o argumento pode ser omitido.
O filtro de upload sempre aplica exclusões de segurança obrigatórias. No modo auto, ele usa a lista de arquivos rastreados e não ignorados pelo Git quando a raiz do repositório tem um .gitignore; caso contrário, usa as exclusões configuradas. As entradas EXCLUDES_APPEND do projeto se aplicam em todos os modos.
SYNC_DELETE=true é suportado apenas quando o modo de upload resolvido é excludes; o modo de lista de arquivos do Git não pode identificar com segurança todos os arquivos remotos obsoletos e deve falhar em vez de implicar um espelhamento de exclusão completo.
Download de resultados
Quando o usuário pedir para:
- puxar resultados de treinamento
- baixar checkpoints
- recuperar logs
- recuperar previsões
- sincronizar saídas de experimento
execute:
scripts/pull-results.sh <raiz-do-projeto>
As entradas PULL_DIRS são relativas a REMOTE_DIR. Um array vazio não puxa nada. PULL_ALL=true puxa explicitamente todo o projeto remoto e não deve ser combinado com PULL_DIRS não vazio. Exclusões de pull, tamanho máximo de arquivo, exclusão local e proteção contra sobrescrita são independentes da filtragem de upload.
Fluxo de trabalho de codificação
Quando as instruções do projeto exigirem explicitamente sincronização após alterações de código:
- Complete as modificações solicitadas no código-fonte.
- Execute validação local ou testes apropriados.
- Se a validação for bem-sucedida, execute
push-code.sh. - Relate se a sincronização foi bem-sucedida.
Não inicie automaticamente o treinamento remoto, a menos que o usuário solicite explicitamente a execução remota.
Autenticação SSH
A autenticação AutoDL usa a chave SSH local dedicada configurada pelo .autodl-sync do projeto.
A chave privada deve permanecer na máquina local.
Se a autenticação por chave pública ainda não foi configurada para uma nova instância AutoDL, execute:
scripts/setup-key.sh <raiz-do-projeto>
Esta operação pode solicitar interativamente a senha da conta AutoDL uma vez para instalar a chave pública.
Após a configuração bem-sucedida, as operações de push e pull devem usar autenticação por chave pública.
Nunca imprima, leia, faça upload, copie ou exponha a chave privada SSH.
Segurança
Nunca inspecione, imprima, copie ou modifique chaves privadas SSH.
As configurações de conexão SSH são lidas do .autodl-sync do projeto e passadas explicitamente para ssh e rsync. Os scripts não exigem uma entrada em ~/.ssh/config.
Não faça upload de credenciais ou segredos.
Respeite as exclusões e o comportamento de sincronização definidos pelo .autodl-sync do projeto.
Não habilite exclusão de upload ou pull a menos que a configuração do projeto solicite explicitamente. Após cada sincronização, relate ao usuário o resumo das operações de arquivo do script.