Affiner AnomalyGenNext
Cette feuille prépare un dataset détenu par l'utilisateur et une recette optionnelle pour l'entraînement LoRA AnomalyGenNext spécifique à la tâche. L'image épinglée est déclarée dans
references/skill_info.yaml ; ne la remplacez pas par la version 1.0 plus ancienne.
Lisez references/input-contract.md lors de la validation d'un dataset ou de l'adaptation d'une
recette, et references/container-runtime.md avant la soumission.
Inputs
DATASET/
defect_spec.jsonl
TEXTURE/
clean_image/*
anomaly_image/DEFECT/*
mask/DEFECT/*
VALIDATION/testcase.jsonl
Fournissez également un répertoire de checkpoint de base Cosmos3-Nano au format DCP contenant
checkpoint.json, model/.metadata, et au moins un shard model/*.distcp,
Wan2.2_VAE.pth, et
une racine de checkpoint complète contenant les assets du modèle tokenizer Qwen requis
sous hf/ plus facebook/dinov2-large/ pour la validation. Le nom du répertoire hf/ fait partie de la mise en page de checkpoint fixe de l'image en amont. Le JSONL de validation doit contenir image_filename, mask_filename, et anomaly_type ; chaque
TEXTURE+DEFECT entraîné nécessite au moins trois lignes. Une spec de défaut stockée séparément
est acceptée avec --defect-spec.
Si le checkpoint officiel Cosmos3-Nano n'est pas déjà préparé au format DCP, exécutez le convertisseur fourni dans l'image AnomalyGenNext épinglée et écrivez sa sortie dans un répertoire monté et persistant :
python -m cosmos_framework.scripts.convert_model_to_dcp \
-o /models/Cosmos3-Nano-dcp \
--checkpoint-path Cosmos3-Nano
Le nom Cosmos3-Nano enregistré résout le checkpoint officiel. Pour
convertir un checkpoint Hugging Face déjà préparé à la place, remplacez-le par
le chemin absolu de ce répertoire dans le conteneur. Utilisez la sortie du convertisseur comme
--base-checkpoint ; la préparation vérifie checkpoint.json,
model/.metadata, et les shards model/*.distcp générés avant le travail GPU.
Les images et masques du dataset et de validation doivent utiliser .jpg, .jpeg, ou .png,
correspondant aux extensions supportées par le chargeur runtime AnomalyGenNext 1.1.
Chaque pixel de masque doit être binaire 0 ou 255 ; les masques en palette ou niveaux de gris avec
des valeurs intermédiaires sont rejetés avant l'entraînement. Chaque masque doit contenir les deux
valeurs, donc les masques vides/tous zéros et complets/tous 255 sont également rejetés.
Une recipe.yaml utilisateur optionnelle est un template. Les paramètres d'entraînement personnalisés sont conservés,
tandis que le dataset, le checkpoint, la validation, l'ordre des types et la validation à l'itération zéro
sont remplacés par des identités validées. Sans template, la recette empaquetée
utilise les valeurs par défaut établies de 5000 étapes.
Préparer
Après l'examen de lancement commun, exécutez l'action prepare_recipe :
scripts/prepare_finetune_recipe.py \
--dataset-root /data/my_dataset \
--validation-testcase /data/validation/testcase.jsonl \
--base-checkpoint /models/Cosmos3-Nano \
--vae-path /models/Wan2.2_VAE.pth \
--checkpoint-root /models/anomalygen-checkpoints \
--dataset-name my_dataset \
--recipe-template /data/recipe.yaml \
--output /results/canonical_recipe.yaml
L'action fige les chemins de validation absolus, valide la forme du checkpoint de base DCP, rejette les extensions d'image que le runtime ne peut pas décoder, valide l'appairage anomalie/masque et les masques binaires, vérifie l'accord des types avec
defect_spec.jsonl, refuse la réutilisation de sortie, et émet une recette plus des métadonnées.
validation_iter doit être un multiple de save_iter ; max_iter doit atteindre une
validation post-baseline.
Entraîner et accepter
Invoquez tao-launch-workflow, examinez la plateforme, l'image, les montages, la forme GPU,
le runtime et la recette exacte, puis soumettez l'action train. Liez la racine de checkpoint entière en lecture seule au chemin de conteneur fixe déclaré dans
skill_info.yaml ; l'entraîneur en amont résout les
assets du modèle tokenizer Qwen à checkpoints/hf et DINOv2 à
checkpoints/facebook/dinov2-large sous son référentiel d'image. Monter uniquement
le répertoire DINOv2 ou définir HF_HOME ne satisfait pas ce contrat.
scripts/finetune_anomalygennext.sh \
--recipe /results/canonical_recipe.yaml \
--results-dir /new/training_results \
--checkpoint-root /workspace/paidf-anomalygen/checkpoints \
--num-gpus 1
Le wrapper utilise l'entraîneur en amont déjà présent dans le conteneur épinglé. Il
refuse les sorties de publication existantes et, sauf si --resume est explicite, un
répertoire runtime existant. Acceptez le succès uniquement quand training_handoff.json
est COMPLETE : l'itération zéro et un checkpoint noté ultérieur doivent exister,
best_checkpoint.txt doit sélectionner le Average.nn_score maximum, et le score
doit s'améliorer strictement. La remise hache l'adaptateur et la recette copiés.
Lisez references/nn-score-contract.md avant de modifier les paramètres de métrique ou d'acceptation.
Une exécution de 1 000 étapes est le plus petit smoke test de qualité ; les exécutions plus courtes ne prouvent que le câblage.