@r1z4x/tezgah 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +738 -0
- package/LICENSE +21 -0
- package/MANIFEST +753 -0
- package/README.de.md +169 -0
- package/README.es.md +168 -0
- package/README.fr.md +166 -0
- package/README.md +161 -0
- package/README.tr.md +163 -0
- package/agents/tezgah-reviewer.md +70 -0
- package/bin/codegen +337 -0
- package/bin/consult +797 -0
- package/bin/tezgah-adhd +50 -0
- package/bin/tezgah-agents +45 -0
- package/bin/tezgah-capture +66 -0
- package/bin/tezgah-context +96 -0
- package/bin/tezgah-decisions +213 -0
- package/bin/tezgah-design +953 -0
- package/bin/tezgah-docs +1199 -0
- package/bin/tezgah-doctor +497 -0
- package/bin/tezgah-dsh +37 -0
- package/bin/tezgah-dsh.cmd +70 -0
- package/bin/tezgah-gate +75 -0
- package/bin/tezgah-import-ai-research +439 -0
- package/bin/tezgah-index +32 -0
- package/bin/tezgah-lessons +148 -0
- package/bin/tezgah-mcp +322 -0
- package/bin/tezgah-migrate +324 -0
- package/bin/tezgah-pony +50 -0
- package/bin/tezgah-research +772 -0
- package/bin/tezgah-rollback +93 -0
- package/bin/tezgah-route +124 -0
- package/bin/tezgah-setup +5798 -0
- package/bin/tezgah-status +383 -0
- package/bin/tezgah-task +607 -0
- package/bin/tezgah-taste +423 -0
- package/bin/tezgah-triage +485 -0
- package/bin/tezgah.js +36 -0
- package/commands/adhd.md +21 -0
- package/commands/ponytail.md +21 -0
- package/docs/README.md +112 -0
- package/docs/architecture.md +226 -0
- package/docs/citations-baseline.json +59 -0
- package/docs/clarity-baseline.json +116 -0
- package/docs/contract.md +416 -0
- package/docs/environment.md +141 -0
- package/docs/evidence.md +831 -0
- package/docs/feature-audit.md +139 -0
- package/docs/gate.md +407 -0
- package/docs/glossary.md +201 -0
- package/docs/hosts.md +400 -0
- package/docs/index.json +471 -0
- package/docs/judge.md +193 -0
- package/docs/layers.md +189 -0
- package/docs/models.md +160 -0
- package/docs/operations.md +666 -0
- package/docs/research.md +809 -0
- package/docs/results/paired-outcome-2026-10.jsonl +254 -0
- package/docs/results/paired-outcome-2026-10.md +204 -0
- package/docs/skills.md +236 -0
- package/docs/status-line.md +315 -0
- package/docs/testing.md +287 -0
- package/docs/vision.md +117 -0
- package/hooks/hooks.json +33 -0
- package/hooks/projects-auto-init.py +98 -0
- package/hooks/projects-posttooluse.py +149 -0
- package/hooks/projects-pretooluse.py +40 -0
- package/hooks/projects-stop.py +60 -0
- package/hooks/tezgah_agents.py +817 -0
- package/hooks/tezgah_apps.py +266 -0
- package/hooks/tezgah_attest.py +255 -0
- package/hooks/tezgah_clarity.py +171 -0
- package/hooks/tezgah_components.py +140 -0
- package/hooks/tezgah_context.py +2953 -0
- package/hooks/tezgah_embed.py +765 -0
- package/hooks/tezgah_gate.py +2736 -0
- package/hooks/tezgah_guard.py +177 -0
- package/hooks/tezgah_index.py +124 -0
- package/hooks/tezgah_integrity.py +5141 -0
- package/hooks/tezgah_judge.py +487 -0
- package/hooks/tezgah_lang.py +230 -0
- package/hooks/tezgah_lessons.py +210 -0
- package/hooks/tezgah_models.py +855 -0
- package/hooks/tezgah_paths.py +1132 -0
- package/hooks/tezgah_policy.py +1039 -0
- package/hooks/tezgah_rank.py +77 -0
- package/hooks/tezgah_replay.py +1109 -0
- package/hooks/tezgah_research.py +5176 -0
- package/hooks/tezgah_shapes.py +305 -0
- package/hooks/tezgah_skill_pick.py +227 -0
- package/hooks/tezgah_snapshot.py +490 -0
- package/hooks/tezgah_stopspec.py +320 -0
- package/hooks/tezgah_task.py +458 -0
- package/hooks/tezgah_taste.py +201 -0
- package/hooks/tezgah_untrusted.py +112 -0
- package/hooks/tezgah_update.py +430 -0
- package/hosts/codex/hook.py +268 -0
- package/hosts/codex/hooks.json +26 -0
- package/hosts/cursor/hook.py +461 -0
- package/hosts/cursor/hooks.json +44 -0
- package/hosts/dsh/hooks.json +21 -0
- package/hosts/dsh/statusline/lib/client.js +138 -0
- package/hosts/dsh/statusline/lib/index.js +104 -0
- package/hosts/dsh/statusline/package.json +28 -0
- package/hosts/omp/hook.py +277 -0
- package/hosts/omp/tezgah-hook.ts.in +701 -0
- package/hosts/opencode/plugins/tezgah.js +2742 -0
- package/hosts/opencode/tui/tezgah-tui.tsx +151 -0
- package/output-styles/tezgah.md +142 -0
- package/package.json +32 -0
- package/packaging/build.sh +342 -0
- package/packaging/install.ps1 +166 -0
- package/packaging/install.sh +56 -0
- package/packaging/upgrade.sh +142 -0
- package/skills/ai-research/0-autoresearch-skill/SKILL.md +411 -0
- package/skills/ai-research/0-autoresearch-skill/references/agent-continuity.md +95 -0
- package/skills/ai-research/0-autoresearch-skill/references/progress-reporting.md +166 -0
- package/skills/ai-research/0-autoresearch-skill/references/skill-routing.md +219 -0
- package/skills/ai-research/0-autoresearch-skill/templates/findings.md +44 -0
- package/skills/ai-research/0-autoresearch-skill/templates/research-log.md +41 -0
- package/skills/ai-research/01-model-architecture/litgpt/SKILL.md +469 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/custom-models.md +569 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/distributed-training.md +452 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/supported-models.md +337 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/training-recipes.md +620 -0
- package/skills/ai-research/01-model-architecture/mamba/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/mamba/references/architecture-details.md +207 -0
- package/skills/ai-research/01-model-architecture/mamba/references/benchmarks.md +256 -0
- package/skills/ai-research/01-model-architecture/mamba/references/training-guide.md +389 -0
- package/skills/ai-research/01-model-architecture/nanogpt/SKILL.md +290 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/architecture.md +383 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/data.md +477 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/training.md +565 -0
- package/skills/ai-research/01-model-architecture/rwkv/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/architecture-details.md +345 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/rwkv7.md +387 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/state-management.md +370 -0
- package/skills/ai-research/01-model-architecture/torchtitan/SKILL.md +358 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/checkpoint.md +182 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/custom-models.md +259 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/float8.md +134 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/fsdp.md +127 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/SKILL.md +516 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/algorithms.md +654 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/integration.md +638 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/pipeline.md +724 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/training.md +566 -0
- package/skills/ai-research/02-tokenization/sentencepiece/SKILL.md +235 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/algorithms.md +201 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/training.md +305 -0
- package/skills/ai-research/03-fine-tuning/axolotl/SKILL.md +158 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/api.md +5549 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/dataset-formats.md +1030 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/index.md +16 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/other.md +3564 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/_images.md +24 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/advanced.md +1056 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/getting_started.md +350 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/index.md +20 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/other.md +32 -0
- package/skills/ai-research/03-fine-tuning/peft/SKILL.md +431 -0
- package/skills/ai-research/03-fine-tuning/peft/references/advanced-usage.md +515 -0
- package/skills/ai-research/03-fine-tuning/peft/references/troubleshooting.md +481 -0
- package/skills/ai-research/03-fine-tuning/unsloth/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/index.md +8 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/llms.md +83 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/SKILL.md +436 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/README.md +79 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/api.md +345 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/tutorials.md +301 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/SKILL.md +473 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/README.md +74 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/api.md +384 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/tutorials.md +377 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/SKILL.md +386 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/README.md +71 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/api.md +334 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/tutorials.md +319 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/SKILL.md +346 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/README.md +55 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/api.md +363 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/tutorials.md +340 -0
- package/skills/ai-research/05-data-processing/nemo-curator/SKILL.md +383 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/deduplication.md +88 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/filtering.md +103 -0
- package/skills/ai-research/05-data-processing/ray-data/SKILL.md +326 -0
- package/skills/ai-research/05-data-processing/ray-data/references/integration.md +83 -0
- package/skills/ai-research/05-data-processing/ray-data/references/transformations.md +84 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/README.md +98 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/SKILL.md +572 -0
- package/skills/ai-research/06-post-training/miles/SKILL.md +315 -0
- package/skills/ai-research/06-post-training/miles/references/api-reference.md +142 -0
- package/skills/ai-research/06-post-training/miles/references/troubleshooting.md +353 -0
- package/skills/ai-research/06-post-training/openrlhf/SKILL.md +249 -0
- package/skills/ai-research/06-post-training/openrlhf/references/algorithm-comparison.md +405 -0
- package/skills/ai-research/06-post-training/openrlhf/references/custom-rewards.md +531 -0
- package/skills/ai-research/06-post-training/openrlhf/references/hybrid-engine.md +288 -0
- package/skills/ai-research/06-post-training/openrlhf/references/multi-node-training.md +455 -0
- package/skills/ai-research/06-post-training/simpo/SKILL.md +219 -0
- package/skills/ai-research/06-post-training/simpo/references/datasets.md +479 -0
- package/skills/ai-research/06-post-training/simpo/references/hyperparameters.md +453 -0
- package/skills/ai-research/06-post-training/simpo/references/loss-functions.md +351 -0
- package/skills/ai-research/06-post-training/slime/SKILL.md +464 -0
- package/skills/ai-research/06-post-training/slime/references/api-reference.md +393 -0
- package/skills/ai-research/06-post-training/slime/references/troubleshooting.md +387 -0
- package/skills/ai-research/06-post-training/torchforge/SKILL.md +433 -0
- package/skills/ai-research/06-post-training/torchforge/references/api-reference.md +328 -0
- package/skills/ai-research/06-post-training/torchforge/references/troubleshooting.md +410 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/SKILL.md +455 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/dpo-variants.md +228 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/online-rl.md +83 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/reward-modeling.md +123 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/sft-training.md +169 -0
- package/skills/ai-research/06-post-training/verl/SKILL.md +391 -0
- package/skills/ai-research/06-post-training/verl/references/api-reference.md +302 -0
- package/skills/ai-research/06-post-training/verl/references/troubleshooting.md +392 -0
- package/skills/ai-research/07-safety-alignment/constitutional-ai/SKILL.md +290 -0
- package/skills/ai-research/07-safety-alignment/llamaguard/SKILL.md +337 -0
- package/skills/ai-research/07-safety-alignment/nemo-guardrails/SKILL.md +297 -0
- package/skills/ai-research/07-safety-alignment/prompt-guard/SKILL.md +312 -0
- package/skills/ai-research/08-distributed-training/accelerate/SKILL.md +332 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/custom-plugins.md +454 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/megatron-integration.md +490 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/performance.md +526 -0
- package/skills/ai-research/08-distributed-training/deepspeed/SKILL.md +141 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/08.md +18 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/09.md +174 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2020.md +379 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2023.md +280 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/assets.md +180 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/index.md +36 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/mii.md +119 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/other.md +1192 -0
- package/skills/ai-research/08-distributed-training/megatron-core/SKILL.md +366 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/benchmarks.md +250 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/parallelism-guide.md +405 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/production-examples.md +474 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/training-recipes.md +548 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/SKILL.md +231 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_async_recipe.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_overview.md +19 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_recipe.md +18 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_ddp_notes.md +10 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_device_mesh_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_examples_fsdp2.md +15 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp1_api.md +9 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp2_tutorial.md +45 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fully_shard_api.md +49 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_tp_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/ray_train_fsdp2_example.md +13 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/torchtitan_fsdp_notes.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/SKILL.md +346 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/callbacks.md +437 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/distributed.md +491 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/hyperparameter-tuning.md +557 -0
- package/skills/ai-research/08-distributed-training/ray-train/SKILL.md +406 -0
- package/skills/ai-research/08-distributed-training/ray-train/references/multi-node.md +629 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/SKILL.md +545 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/advanced-usage.md +612 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/troubleshooting.md +531 -0
- package/skills/ai-research/09-infrastructure/modal/SKILL.md +341 -0
- package/skills/ai-research/09-infrastructure/modal/references/advanced-usage.md +504 -0
- package/skills/ai-research/09-infrastructure/modal/references/troubleshooting.md +495 -0
- package/skills/ai-research/09-infrastructure/skypilot/SKILL.md +509 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/advanced-usage.md +492 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/troubleshooting.md +571 -0
- package/skills/ai-research/10-optimization/awq/SKILL.md +310 -0
- package/skills/ai-research/10-optimization/awq/references/advanced-usage.md +325 -0
- package/skills/ai-research/10-optimization/awq/references/troubleshooting.md +345 -0
- package/skills/ai-research/10-optimization/bitsandbytes/SKILL.md +411 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/memory-optimization.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/qlora-training.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/quantization-formats.md +448 -0
- package/skills/ai-research/10-optimization/flash-attention/SKILL.md +367 -0
- package/skills/ai-research/10-optimization/flash-attention/references/benchmarks.md +216 -0
- package/skills/ai-research/10-optimization/flash-attention/references/transformers-integration.md +294 -0
- package/skills/ai-research/10-optimization/gguf/SKILL.md +427 -0
- package/skills/ai-research/10-optimization/gguf/references/advanced-usage.md +505 -0
- package/skills/ai-research/10-optimization/gguf/references/troubleshooting.md +443 -0
- package/skills/ai-research/10-optimization/gptq/SKILL.md +450 -0
- package/skills/ai-research/10-optimization/gptq/references/calibration.md +338 -0
- package/skills/ai-research/10-optimization/gptq/references/integration.md +130 -0
- package/skills/ai-research/10-optimization/gptq/references/troubleshooting.md +96 -0
- package/skills/ai-research/10-optimization/hqq/SKILL.md +445 -0
- package/skills/ai-research/10-optimization/hqq/references/advanced-usage.md +529 -0
- package/skills/ai-research/10-optimization/hqq/references/troubleshooting.md +504 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/SKILL.md +319 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/architecture.md +320 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/biomedical.md +498 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/domain-specific.md +626 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/experiment-loop.md +129 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/optimizers.md +330 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/scaling-and-selection.md +428 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/SKILL.md +405 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/benchmarks.md +394 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/custom-tasks.md +425 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/issues.md +395 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/SKILL.md +490 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/api-evaluation.md +491 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/benchmark-guide.md +489 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/custom-tasks.md +603 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/distributed-eval.md +520 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/SKILL.md +494 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/adapter-system.md +341 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/configuration.md +448 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/custom-benchmarks.md +316 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/execution-backends.md +362 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/SKILL.md +258 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/optimization.md +90 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/quantization.md +214 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/server.md +126 -0
- package/skills/ai-research/12-inference-serving/sglang/SKILL.md +442 -0
- package/skills/ai-research/12-inference-serving/sglang/references/deployment.md +491 -0
- package/skills/ai-research/12-inference-serving/sglang/references/radix-attention.md +414 -0
- package/skills/ai-research/12-inference-serving/sglang/references/structured-generation.md +542 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/SKILL.md +187 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/multi-gpu.md +299 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/optimization.md +243 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/serving.md +471 -0
- package/skills/ai-research/12-inference-serving/vllm/SKILL.md +364 -0
- package/skills/ai-research/12-inference-serving/vllm/references/optimization.md +227 -0
- package/skills/ai-research/12-inference-serving/vllm/references/quantization.md +285 -0
- package/skills/ai-research/12-inference-serving/vllm/references/server-deployment.md +256 -0
- package/skills/ai-research/12-inference-serving/vllm/references/troubleshooting.md +448 -0
- package/skills/ai-research/13-mlops/mlflow/SKILL.md +704 -0
- package/skills/ai-research/13-mlops/mlflow/references/deployment.md +745 -0
- package/skills/ai-research/13-mlops/mlflow/references/model-registry.md +771 -0
- package/skills/ai-research/13-mlops/mlflow/references/tracking.md +681 -0
- package/skills/ai-research/13-mlops/swanlab/SKILL.md +406 -0
- package/skills/ai-research/13-mlops/swanlab/references/integrations.md +305 -0
- package/skills/ai-research/13-mlops/swanlab/references/visualization.md +234 -0
- package/skills/ai-research/13-mlops/tensorboard/SKILL.md +629 -0
- package/skills/ai-research/13-mlops/tensorboard/references/integrations.md +639 -0
- package/skills/ai-research/13-mlops/tensorboard/references/profiling.md +546 -0
- package/skills/ai-research/13-mlops/tensorboard/references/visualization.md +621 -0
- package/skills/ai-research/13-mlops/weights-and-biases/SKILL.md +590 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/artifacts.md +585 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/integrations.md +701 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/sweeps.md +848 -0
- package/skills/ai-research/14-agents/a-evolve/SKILL.md +383 -0
- package/skills/ai-research/14-agents/a-evolve/references/README.md +831 -0
- package/skills/ai-research/14-agents/a-evolve/references/api.md +594 -0
- package/skills/ai-research/14-agents/a-evolve/references/architecture.md +417 -0
- package/skills/ai-research/14-agents/a-evolve/references/design-patterns.md +462 -0
- package/skills/ai-research/14-agents/a-evolve/references/examples.md +352 -0
- package/skills/ai-research/14-agents/a-evolve/references/issues.md +591 -0
- package/skills/ai-research/14-agents/a-evolve/references/releases.md +112 -0
- package/skills/ai-research/14-agents/a-evolve/references/tutorials.md +819 -0
- package/skills/ai-research/14-agents/autogpt/SKILL.md +403 -0
- package/skills/ai-research/14-agents/autogpt/references/advanced-usage.md +536 -0
- package/skills/ai-research/14-agents/autogpt/references/troubleshooting.md +421 -0
- package/skills/ai-research/14-agents/crewai/SKILL.md +498 -0
- package/skills/ai-research/14-agents/crewai/references/flows.md +439 -0
- package/skills/ai-research/14-agents/crewai/references/tools.md +430 -0
- package/skills/ai-research/14-agents/crewai/references/troubleshooting.md +481 -0
- package/skills/ai-research/14-agents/langchain/SKILL.md +480 -0
- package/skills/ai-research/14-agents/langchain/references/agents.md +500 -0
- package/skills/ai-research/14-agents/langchain/references/integration.md +563 -0
- package/skills/ai-research/14-agents/langchain/references/rag.md +601 -0
- package/skills/ai-research/14-agents/llamaindex/SKILL.md +569 -0
- package/skills/ai-research/14-agents/llamaindex/references/agents.md +84 -0
- package/skills/ai-research/14-agents/llamaindex/references/data_connectors.md +109 -0
- package/skills/ai-research/14-agents/llamaindex/references/query_engines.md +407 -0
- package/skills/ai-research/15-rag/chroma/SKILL.md +406 -0
- package/skills/ai-research/15-rag/chroma/references/integration.md +39 -0
- package/skills/ai-research/15-rag/faiss/SKILL.md +221 -0
- package/skills/ai-research/15-rag/faiss/references/index_types.md +281 -0
- package/skills/ai-research/15-rag/pinecone/SKILL.md +358 -0
- package/skills/ai-research/15-rag/pinecone/references/deployment.md +182 -0
- package/skills/ai-research/15-rag/qdrant/SKILL.md +493 -0
- package/skills/ai-research/15-rag/qdrant/references/advanced-usage.md +649 -0
- package/skills/ai-research/15-rag/qdrant/references/troubleshooting.md +632 -0
- package/skills/ai-research/15-rag/sentence-transformers/SKILL.md +255 -0
- package/skills/ai-research/15-rag/sentence-transformers/references/models.md +124 -0
- package/skills/ai-research/16-prompt-engineering/dspy/SKILL.md +590 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/examples.md +664 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/modules.md +476 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/optimizers.md +567 -0
- package/skills/ai-research/16-prompt-engineering/guidance/SKILL.md +572 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/backends.md +555 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/constraints.md +675 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/examples.md +768 -0
- package/skills/ai-research/16-prompt-engineering/instructor/SKILL.md +740 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/examples.md +108 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/providers.md +71 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/validation.md +607 -0
- package/skills/ai-research/16-prompt-engineering/outlines/SKILL.md +652 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/backends.md +616 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/examples.md +774 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/json_generation.md +653 -0
- package/skills/ai-research/17-observability/langsmith/SKILL.md +422 -0
- package/skills/ai-research/17-observability/langsmith/references/advanced-usage.md +549 -0
- package/skills/ai-research/17-observability/langsmith/references/troubleshooting.md +538 -0
- package/skills/ai-research/17-observability/phoenix/SKILL.md +475 -0
- package/skills/ai-research/17-observability/phoenix/references/advanced-usage.md +620 -0
- package/skills/ai-research/17-observability/phoenix/references/troubleshooting.md +539 -0
- package/skills/ai-research/18-multimodal/audiocraft/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/advanced-usage.md +667 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/troubleshooting.md +505 -0
- package/skills/ai-research/18-multimodal/blip-2/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/blip-2/references/advanced-usage.md +681 -0
- package/skills/ai-research/18-multimodal/blip-2/references/troubleshooting.md +527 -0
- package/skills/ai-research/18-multimodal/clip/SKILL.md +253 -0
- package/skills/ai-research/18-multimodal/clip/references/applications.md +208 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/SKILL.md +402 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/libero-commands.md +175 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/robocasa-commands.md +147 -0
- package/skills/ai-research/18-multimodal/llava/SKILL.md +304 -0
- package/skills/ai-research/18-multimodal/llava/references/training.md +198 -0
- package/skills/ai-research/18-multimodal/openpi/SKILL.md +480 -0
- package/skills/ai-research/18-multimodal/openpi/references/checkpoints-and-env-map.md +86 -0
- package/skills/ai-research/18-multimodal/openpi/references/config-recipes.md +50 -0
- package/skills/ai-research/18-multimodal/openpi/references/pytorch-gotchas.md +49 -0
- package/skills/ai-research/18-multimodal/openpi/references/remote-client-pattern.md +48 -0
- package/skills/ai-research/18-multimodal/openpi/references/training-debugging.md +46 -0
- package/skills/ai-research/18-multimodal/openvla-oft/SKILL.md +441 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/aloha-workflow.md +141 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/config-troubleshooting.md +97 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/libero-workflow.md +115 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/paper-and-checkpoints.md +84 -0
- package/skills/ai-research/18-multimodal/segment-anything/SKILL.md +500 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/advanced-usage.md +590 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/troubleshooting.md +485 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/SKILL.md +519 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/advanced-usage.md +717 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/troubleshooting.md +556 -0
- package/skills/ai-research/18-multimodal/whisper/SKILL.md +317 -0
- package/skills/ai-research/18-multimodal/whisper/references/languages.md +190 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/SKILL.md +458 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/references/minillm.md +335 -0
- package/skills/ai-research/19-emerging-techniques/long-context/SKILL.md +536 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/extension_methods.md +469 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/fine_tuning.md +612 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/rope.md +403 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/SKILL.md +497 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/coefficient-tuning.md +415 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/evaluation.md +463 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/examples.md +429 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/methods.md +353 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/SKILL.md +495 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/references/wanda.md +348 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/SKILL.md +526 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/architectures.md +433 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/inference.md +349 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/training.md +426 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/SKILL.md +467 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/lookahead.md +310 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/medusa.md +351 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/SKILL.md +479 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/data-visualization.md +509 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/diagram-generation.md +395 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/style-guide.md +305 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/SKILL.md +982 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/checklists.md +348 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/citation-workflow.md +563 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/reviewer-guidelines.md +349 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/sources.md +165 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/writing-guide.md +477 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/SKILL.md +298 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/references/slide-templates.md +505 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/SKILL.md +270 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/checklist.md +279 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/reviewer-guidelines.md +116 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/section-blueprints.md +400 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/systems-conferences.md +261 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/writing-patterns.md +231 -0
- package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md +384 -0
- package/skills/ai-research/21-research-ideation/creative-thinking-for-research/SKILL.md +366 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/SKILL.md +245 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/ara-schema.md +439 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/exploration-tree-spec.md +125 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/validation-checklist.md +149 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/SKILL.md +324 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/event-taxonomy.md +124 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/provenance-tags.md +190 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md +162 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/SKILL.md +322 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md +182 -0
- package/skills/ai-research/SKILL.md +101 -0
- package/skills/ai-research/SOURCE +38 -0
- package/skills/ai-research/index/1-frame.md +18 -0
- package/skills/ai-research/index/2-data.md +21 -0
- package/skills/ai-research/index/3-train.md +48 -0
- package/skills/ai-research/index/4-measure.md +25 -0
- package/skills/ai-research/index/5-run.md +23 -0
- package/skills/ai-research/index/6-write.md +35 -0
- package/skills/ai-research/library.json +3456 -0
- package/skills/analyze-app/EVALS.md +82 -0
- package/skills/analyze-app/SKILL.md +188 -0
- package/skills/design-contract/EVALS.md +80 -0
- package/skills/design-contract/SKILL.md +171 -0
- package/skills/design-library/EVALS.md +85 -0
- package/skills/design-library/INDEX.md +59 -0
- package/skills/design-library/SKILL.md +58 -0
- package/skills/design-library/SOURCE +131 -0
- package/skills/design-library/adaptive-interfaces/skills/colour-independence/SKILL.md +90 -0
- package/skills/design-library/adaptive-interfaces/skills/flexible-typography/SKILL.md +83 -0
- package/skills/design-library/adaptive-interfaces/skills/information-density/SKILL.md +87 -0
- package/skills/design-library/adaptive-interfaces/skills/preference-audit/SKILL.md +70 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/SKILL.md +86 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-review/SKILL.md +76 -0
- package/skills/design-library/adaptive-interfaces/skills/simplified-views/SKILL.md +97 -0
- package/skills/design-library/adaptive-interfaces/skills/specify/SKILL.md +63 -0
- package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/SKILL.md +100 -0
- package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/assess-load/SKILL.md +48 -0
- package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/SKILL.md +71 -0
- package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/SKILL.md +67 -0
- package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/plain-language-design/SKILL.md +78 -0
- package/skills/design-library/cognitive-accessibility/skills/review/SKILL.md +56 -0
- package/skills/design-library/cognitive-accessibility/skills/simplify/SKILL.md +39 -0
- package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/SKILL.md +64 -0
- package/skills/design-library/design-research/skills/behavioural-analytics/SKILL.md +33 -0
- package/skills/design-library/design-research/skills/qual-quant-triangulation/SKILL.md +33 -0
- package/skills/design-library/inclusive-interaction/skills/audit/SKILL.md +50 -0
- package/skills/design-library/inclusive-interaction/skills/design-flow/SKILL.md +58 -0
- package/skills/design-library/inclusive-interaction/skills/feedback-and-status/SKILL.md +76 -0
- package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/SKILL.md +99 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-review/SKILL.md +54 -0
- package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/SKILL.md +79 -0
- package/skills/design-library/inclusive-interaction/skills/multi-modal-input/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/touch-target-design/SKILL.md +71 -0
- package/skills/design-library/inclusive-interaction/skills/voice-interaction/SKILL.md +68 -0
- package/skills/design-library/visual-critique/skills/critique-affordance/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-brand-consistency/SKILL.md +42 -0
- package/skills/design-library/visual-critique/skills/critique-color/SKILL.md +44 -0
- package/skills/design-library/visual-critique/skills/critique-composition/SKILL.md +46 -0
- package/skills/design-library/visual-critique/skills/critique-information-density/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-typography/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/SKILL.md +40 -0
- package/skills/feature-audit/EVALS.md +83 -0
- package/skills/feature-audit/SKILL.md +326 -0
- package/skills/harness/EVALS.md +81 -0
- package/skills/harness/SKILL.md +88 -0
- package/skills/i-have-adhd/EVALS.md +80 -0
- package/skills/i-have-adhd/SKILL.md +183 -0
- package/skills/no-ai-slop/EVALS.md +89 -0
- package/skills/no-ai-slop/SKILL.md +209 -0
- package/skills/no-ai-slop/eval.md +52 -0
- package/skills/plan-add/EVALS.md +79 -0
- package/skills/plan-add/SKILL.md +179 -0
- package/skills/plan-add/render_table.py +72 -0
- package/skills/plan-status/EVALS.md +78 -0
- package/skills/plan-status/SKILL.md +52 -0
- package/skills/plan-sync/EVALS.md +80 -0
- package/skills/plan-sync/SKILL.md +69 -0
- package/skills/pm-frameworks/SKILL.md +33 -0
- package/skills/pm-frameworks/SOURCE +39 -0
- package/skills/pm-frameworks/intended-vs-implemented/SKILL.md +42 -0
- package/skills/pm-frameworks/opportunity-solution-tree/SKILL.md +64 -0
- package/skills/ponytail/EVALS.md +80 -0
- package/skills/ponytail/SKILL.md +124 -0
- package/skills/product-analysis/EVALS.md +103 -0
- package/skills/product-analysis/SKILL.md +361 -0
- package/skills/research/EVALS.md +104 -0
- package/skills/research/SKILL.md +570 -0
- package/skills/rl-env/SKILL.md +53 -0
- package/skills/rl-env/SOURCE +41 -0
- package/skills/rl-env/generate-nemo-gym-env/SKILL.md +169 -0
- package/skills/rl-env/generate-nemo-gym-env/references/architecture.md +114 -0
- package/skills/rl-env/generate-openenv-env/SKILL.md +183 -0
- package/skills/rl-env/generate-openenv-env/references/architecture.md +82 -0
- package/skills/rl-env/generate-ors-env/SKILL.md +209 -0
- package/skills/rl-env/generate-ors-env/references/architecture.md +113 -0
- package/skills/rl-env/generate-verifiers-env/SKILL.md +188 -0
- package/skills/rl-env/generate-verifiers-env/references/architecture.md +119 -0
- package/skills/rl-env/rl-env-from-description/SKILL.md +124 -0
- package/skills/rl-env/rl-env-from-description/references/interview.md +75 -0
- package/skills/rl-env/rl-env-from-description/references/nemo_gym.md +41 -0
- package/skills/rl-env/rl-env-from-description/references/openenv.md +35 -0
- package/skills/rl-env/rl-env-from-description/references/ors.md +50 -0
- package/skills/rl-env/rl-env-from-description/references/verifiers.md +39 -0
- package/skills/tezgah-contract/EVALS.md +78 -0
- package/skills/tezgah-contract/SKILL.md +792 -0
- package/statusline.py +129 -0
- package/workflows/graph-impact.js +153 -0
- package/workflows/graph-map.js +158 -0
- package/workflows/graph-review.js +170 -0
|
@@ -0,0 +1,626 @@
|
|
|
1
|
+
<!-- vendored from orchestra-research/AI-research-SKILLs@773a52944ba4747a18bd4ae9ade53fff041adcbc 10-optimization/ml-training-recipes/references/domain-specific.md; MIT (c) Orchestra Research -->
|
|
2
|
+
# Domain-Specific Training Patterns
|
|
3
|
+
|
|
4
|
+
Patterns for vision, diffusion, and other non-LLM training scenarios. Referenced from SKILL.md.
|
|
5
|
+
|
|
6
|
+
## Table of Contents
|
|
7
|
+
|
|
8
|
+
1. [Computer Vision Training](#computer-vision-training)
|
|
9
|
+
2. [Diffusion Model Training](#diffusion-model-training)
|
|
10
|
+
3. [EMA (Exponential Moving Average) Models](#ema-models)
|
|
11
|
+
4. [Contrastive / Self-Supervised Learning](#contrastive--self-supervised-learning)
|
|
12
|
+
5. [Fine-Tuning & Transfer Learning](#fine-tuning--transfer-learning)
|
|
13
|
+
6. [Multi-GPU / Distributed Training](#multi-gpu--distributed-training)
|
|
14
|
+
7. [Checkpointing](#checkpointing)
|
|
15
|
+
8. [Data Loading for Images](#data-loading-for-images)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Computer Vision Training
|
|
20
|
+
|
|
21
|
+
### Data augmentation pipeline
|
|
22
|
+
|
|
23
|
+
Data augmentation is often more impactful than architecture changes in vision:
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
import torchvision.transforms.v2 as T
|
|
27
|
+
|
|
28
|
+
train_transform = T.Compose([
|
|
29
|
+
T.RandomResizedCrop(224, scale=(0.08, 1.0)),
|
|
30
|
+
T.RandomHorizontalFlip(),
|
|
31
|
+
T.RandAugment(num_ops=2, magnitude=9), # automated augmentation
|
|
32
|
+
T.ToImage(),
|
|
33
|
+
T.ToDtype(torch.float32, scale=True),
|
|
34
|
+
T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
|
|
35
|
+
])
|
|
36
|
+
|
|
37
|
+
val_transform = T.Compose([
|
|
38
|
+
T.Resize(256),
|
|
39
|
+
T.CenterCrop(224),
|
|
40
|
+
T.ToImage(),
|
|
41
|
+
T.ToDtype(torch.float32, scale=True),
|
|
42
|
+
T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
|
|
43
|
+
])
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### MixUp and CutMix
|
|
47
|
+
|
|
48
|
+
Regularization via input mixing — very effective for classification:
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from torchvision.transforms.v2 import MixUp, CutMix
|
|
52
|
+
|
|
53
|
+
mixup = MixUp(alpha=0.2, num_classes=num_classes)
|
|
54
|
+
cutmix = CutMix(alpha=1.0, num_classes=num_classes)
|
|
55
|
+
# Apply randomly to each batch
|
|
56
|
+
mix_fn = T.RandomChoice([mixup, cutmix])
|
|
57
|
+
|
|
58
|
+
for images, targets in train_loader:
|
|
59
|
+
images, targets = mix_fn(images, targets)
|
|
60
|
+
# targets are now soft labels (one-hot blended)
|
|
61
|
+
loss = F.cross_entropy(model(images), targets)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Stochastic depth (drop path)
|
|
65
|
+
|
|
66
|
+
Randomly drop residual blocks during training — better than dropout for vision:
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
class DropPath(nn.Module):
|
|
70
|
+
def __init__(self, drop_prob=0.0):
|
|
71
|
+
super().__init__()
|
|
72
|
+
self.drop_prob = drop_prob
|
|
73
|
+
|
|
74
|
+
def forward(self, x):
|
|
75
|
+
if not self.training or self.drop_prob == 0.0:
|
|
76
|
+
return x
|
|
77
|
+
keep_prob = 1 - self.drop_prob
|
|
78
|
+
shape = (x.shape[0],) + (1,) * (x.ndim - 1)
|
|
79
|
+
mask = torch.bernoulli(torch.full(shape, keep_prob, device=x.device))
|
|
80
|
+
return x * mask / keep_prob
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Use linearly increasing drop rates: layer 0 gets 0%, last layer gets max (e.g., 0.2):
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
drop_rates = [x.item() for x in torch.linspace(0, 0.2, num_layers)]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Label smoothing
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
loss = F.cross_entropy(logits, targets, label_smoothing=0.1)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Progressive resizing
|
|
96
|
+
|
|
97
|
+
Train at low resolution first, then increase — saves compute and acts as regularization:
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
# Phase 1: 160x160, lr=1e-3, epochs 0-60
|
|
101
|
+
# Phase 2: 224x224, lr=3e-4, epochs 60-90
|
|
102
|
+
# Phase 3: 288x288, lr=1e-4, epochs 90-100
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Vision optimizer recipes
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
# ViT / Vision Transformer
|
|
109
|
+
optimizer = torch.optim.AdamW(params, lr=1e-3, weight_decay=0.05, betas=(0.9, 0.999))
|
|
110
|
+
# + cosine LR decay, 5-epoch warmup, batch_size=1024
|
|
111
|
+
|
|
112
|
+
# ConvNeXt / CNN
|
|
113
|
+
optimizer = torch.optim.AdamW(params, lr=4e-3, weight_decay=0.05)
|
|
114
|
+
# + cosine LR decay, 20-epoch warmup, layer-wise LR decay
|
|
115
|
+
|
|
116
|
+
# ResNet (classic SGD recipe)
|
|
117
|
+
optimizer = torch.optim.SGD(params, lr=0.1, momentum=0.9, weight_decay=1e-4)
|
|
118
|
+
# + step LR decay (0.1x at epoch 30, 60, 90)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Diffusion Model Training
|
|
124
|
+
|
|
125
|
+
### Training loop for DDPM-style
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
import torch.nn.functional as F
|
|
129
|
+
|
|
130
|
+
def train_step(model, x_0, noise_schedule):
|
|
131
|
+
B = x_0.shape[0]
|
|
132
|
+
# Sample random timesteps
|
|
133
|
+
t = torch.randint(0, noise_schedule.num_timesteps, (B,), device=x_0.device)
|
|
134
|
+
|
|
135
|
+
# Sample noise
|
|
136
|
+
noise = torch.randn_like(x_0)
|
|
137
|
+
|
|
138
|
+
# Forward diffusion: add noise
|
|
139
|
+
x_t = noise_schedule.q_sample(x_0, t, noise)
|
|
140
|
+
|
|
141
|
+
# Predict noise (or v, or x_0)
|
|
142
|
+
pred = model(x_t, t)
|
|
143
|
+
|
|
144
|
+
# Simple MSE loss on noise prediction
|
|
145
|
+
loss = F.mse_loss(pred, noise)
|
|
146
|
+
return loss
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Noise schedules
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
# Linear schedule (DDPM original)
|
|
153
|
+
betas = torch.linspace(1e-4, 0.02, 1000)
|
|
154
|
+
|
|
155
|
+
# Cosine schedule (improved DDPM — better for high-res)
|
|
156
|
+
def cosine_schedule(timesteps, s=0.008):
|
|
157
|
+
steps = timesteps + 1
|
|
158
|
+
x = torch.linspace(0, timesteps, steps)
|
|
159
|
+
alphas_cumprod = torch.cos((x / timesteps + s) / (1 + s) * torch.pi * 0.5) ** 2
|
|
160
|
+
alphas_cumprod = alphas_cumprod / alphas_cumprod[0]
|
|
161
|
+
betas = 1 - alphas_cumprod[1:] / alphas_cumprod[:-1]
|
|
162
|
+
return torch.clamp(betas, 0.0001, 0.9999)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Flow matching (modern, simpler)
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
def flow_matching_loss(model, x_0):
|
|
169
|
+
"""Conditional flow matching — simpler than DDPM, often better."""
|
|
170
|
+
t = torch.rand(x_0.shape[0], 1, 1, 1, device=x_0.device) # uniform [0, 1]
|
|
171
|
+
noise = torch.randn_like(x_0)
|
|
172
|
+
|
|
173
|
+
# Interpolate between noise and data
|
|
174
|
+
x_t = (1 - t) * noise + t * x_0
|
|
175
|
+
|
|
176
|
+
# Target velocity: data - noise
|
|
177
|
+
target = x_0 - noise
|
|
178
|
+
|
|
179
|
+
# Predict velocity
|
|
180
|
+
pred = model(x_t, t.squeeze())
|
|
181
|
+
return F.mse_loss(pred, target)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### v-prediction (better for low SNR regions)
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
# v = alpha * noise - sigma * x_0
|
|
188
|
+
# Better than epsilon-prediction for high-resolution images
|
|
189
|
+
def v_prediction_loss(model, x_0, alpha, sigma):
|
|
190
|
+
noise = torch.randn_like(x_0)
|
|
191
|
+
x_t = alpha * x_0 + sigma * noise
|
|
192
|
+
v_target = alpha * noise - sigma * x_0
|
|
193
|
+
v_pred = model(x_t, t)
|
|
194
|
+
return F.mse_loss(v_pred, v_target)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Classifier-free guidance training
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
def train_step_cfg(model, x_0, condition, p_uncond=0.1):
|
|
201
|
+
"""Train with random condition dropout for classifier-free guidance."""
|
|
202
|
+
# Randomly drop condition with probability p_uncond
|
|
203
|
+
mask = torch.rand(x_0.shape[0]) < p_uncond
|
|
204
|
+
condition_masked = condition.clone()
|
|
205
|
+
condition_masked[mask] = 0 # or null embedding
|
|
206
|
+
|
|
207
|
+
t = torch.randint(0, T, (x_0.shape[0],), device=x_0.device)
|
|
208
|
+
noise = torch.randn_like(x_0)
|
|
209
|
+
x_t = q_sample(x_0, t, noise)
|
|
210
|
+
|
|
211
|
+
pred = model(x_t, t, condition_masked)
|
|
212
|
+
return F.mse_loss(pred, noise)
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Diffusion model tips
|
|
216
|
+
|
|
217
|
+
- **EMA is essential** — use EMA weights for inference (see EMA section below)
|
|
218
|
+
- **Large batch sizes** work well (256-2048 for image diffusion)
|
|
219
|
+
- **AdamW** with lr=1e-4, no weight decay on biases/norms
|
|
220
|
+
- **No LR warmup** needed for most diffusion models (just constant LR works)
|
|
221
|
+
- **Train for many steps** — diffusion models are hungry (1M+ steps for ImageNet quality)
|
|
222
|
+
- **Monitor FID** every N steps on a fixed set of samples, not every step (expensive)
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## EMA Models
|
|
227
|
+
|
|
228
|
+
Exponential Moving Average of weights produces smoother, higher-quality models for inference.
|
|
229
|
+
Essential for diffusion models, also useful for any generative model or self-supervised learning.
|
|
230
|
+
|
|
231
|
+
```python
|
|
232
|
+
class EMA:
|
|
233
|
+
def __init__(self, model, decay=0.9999):
|
|
234
|
+
self.decay = decay
|
|
235
|
+
self.shadow = {name: param.clone().detach()
|
|
236
|
+
for name, param in model.named_parameters()}
|
|
237
|
+
|
|
238
|
+
@torch.no_grad()
|
|
239
|
+
def update(self, model):
|
|
240
|
+
for name, param in model.named_parameters():
|
|
241
|
+
self.shadow[name].lerp_(param.data, 1 - self.decay)
|
|
242
|
+
|
|
243
|
+
def apply(self, model):
|
|
244
|
+
"""Swap model weights with EMA weights for inference."""
|
|
245
|
+
self.backup = {name: param.clone()
|
|
246
|
+
for name, param in model.named_parameters()}
|
|
247
|
+
for name, param in model.named_parameters():
|
|
248
|
+
param.data.copy_(self.shadow[name])
|
|
249
|
+
|
|
250
|
+
def restore(self, model):
|
|
251
|
+
"""Restore original weights after inference."""
|
|
252
|
+
for name, param in model.named_parameters():
|
|
253
|
+
param.data.copy_(self.backup[name])
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Usage in training loop
|
|
257
|
+
|
|
258
|
+
```python
|
|
259
|
+
ema = EMA(model, decay=0.9999)
|
|
260
|
+
|
|
261
|
+
for step, (x, y) in enumerate(train_loader):
|
|
262
|
+
loss = model(x, y)
|
|
263
|
+
loss.backward()
|
|
264
|
+
optimizer.step()
|
|
265
|
+
optimizer.zero_grad()
|
|
266
|
+
|
|
267
|
+
ema.update(model) # update EMA after each step
|
|
268
|
+
|
|
269
|
+
# For evaluation: temporarily swap to EMA weights
|
|
270
|
+
if step % eval_interval == 0:
|
|
271
|
+
ema.apply(model)
|
|
272
|
+
val_metric = evaluate(model, val_loader)
|
|
273
|
+
ema.restore(model)
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### EMA decay warmup
|
|
277
|
+
|
|
278
|
+
Start with lower decay and ramp up to avoid the EMA lagging during early fast learning:
|
|
279
|
+
|
|
280
|
+
```python
|
|
281
|
+
def ema_decay_schedule(step, base_decay=0.9999, warmup_steps=2000):
|
|
282
|
+
return min(base_decay, 1 - (1 - base_decay) * (1 + step) / (1 + warmup_steps))
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Contrastive / Self-Supervised Learning
|
|
288
|
+
|
|
289
|
+
### SimCLR-style contrastive loss
|
|
290
|
+
|
|
291
|
+
```python
|
|
292
|
+
def contrastive_loss(z1, z2, temperature=0.5):
|
|
293
|
+
"""NT-Xent loss for contrastive learning."""
|
|
294
|
+
z1 = F.normalize(z1, dim=1)
|
|
295
|
+
z2 = F.normalize(z2, dim=1)
|
|
296
|
+
|
|
297
|
+
B = z1.shape[0]
|
|
298
|
+
z = torch.cat([z1, z2], dim=0) # [2B, D]
|
|
299
|
+
sim = z @ z.T / temperature # [2B, 2B]
|
|
300
|
+
|
|
301
|
+
# Mask out self-similarity
|
|
302
|
+
mask = ~torch.eye(2 * B, dtype=torch.bool, device=z.device)
|
|
303
|
+
sim = sim.masked_fill(~mask, -1e9)
|
|
304
|
+
|
|
305
|
+
# Positive pairs: (i, i+B) and (i+B, i)
|
|
306
|
+
labels = torch.cat([torch.arange(B, 2*B), torch.arange(B)], dim=0).to(z.device)
|
|
307
|
+
return F.cross_entropy(sim, labels)
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Key patterns for self-supervised
|
|
311
|
+
|
|
312
|
+
- **Two augmented views** of same image → attract; different images → repel
|
|
313
|
+
- **Large batch sizes** critical (4096+ for SimCLR) — more negatives = better
|
|
314
|
+
- **Projection head** (MLP) between backbone and loss — discard after pretraining
|
|
315
|
+
- **LARS/LAMB optimizer** for very large batch training
|
|
316
|
+
- **Momentum encoder** (MoCo, BYOL) — use EMA of encoder as the target network
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Fine-Tuning & Transfer Learning
|
|
321
|
+
|
|
322
|
+
### Layer-wise LR decay
|
|
323
|
+
|
|
324
|
+
Deeper (earlier) layers get smaller LR — they need less adaptation:
|
|
325
|
+
|
|
326
|
+
```python
|
|
327
|
+
def get_layer_lrs(model, base_lr, decay_factor=0.65, num_layers=12):
|
|
328
|
+
"""Assign exponentially decaying LR to each layer."""
|
|
329
|
+
param_groups = []
|
|
330
|
+
for i in range(num_layers):
|
|
331
|
+
lr = base_lr * (decay_factor ** (num_layers - 1 - i))
|
|
332
|
+
layer_params = get_layer_params(model, i) # implement per architecture
|
|
333
|
+
param_groups.append({"params": layer_params, "lr": lr})
|
|
334
|
+
|
|
335
|
+
# Head gets full LR
|
|
336
|
+
param_groups.append({"params": model.head.parameters(), "lr": base_lr})
|
|
337
|
+
return param_groups
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Freezing strategies
|
|
341
|
+
|
|
342
|
+
```python
|
|
343
|
+
# Strategy 1: Freeze all, unfreeze head only
|
|
344
|
+
for param in model.parameters():
|
|
345
|
+
param.requires_grad = False
|
|
346
|
+
for param in model.head.parameters():
|
|
347
|
+
param.requires_grad = True
|
|
348
|
+
|
|
349
|
+
# Strategy 2: Gradual unfreezing (from top layers down)
|
|
350
|
+
def unfreeze_layers(model, num_layers_to_unfreeze):
|
|
351
|
+
layers = list(model.children())
|
|
352
|
+
for layer in layers[-num_layers_to_unfreeze:]:
|
|
353
|
+
for param in layer.parameters():
|
|
354
|
+
param.requires_grad = True
|
|
355
|
+
|
|
356
|
+
# Strategy 3: LoRA (low-rank adaptation) — efficient for large models
|
|
357
|
+
# Only train small low-rank matrices added to existing weights
|
|
358
|
+
# Saves memory and prevents catastrophic forgetting
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Fine-tuning tips
|
|
362
|
+
|
|
363
|
+
- **Lower LR** than pretraining (10-100x smaller)
|
|
364
|
+
- **Shorter training** (5-20 epochs typically)
|
|
365
|
+
- **Freeze BatchNorm** statistics: `model.eval()` for BN layers but `model.train()` for dropout
|
|
366
|
+
- **Warmup is important** — prevents destroying pretrained features early on
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## Multi-GPU / Distributed Training
|
|
371
|
+
|
|
372
|
+
### DDP (DistributedDataParallel) — most common
|
|
373
|
+
|
|
374
|
+
```python
|
|
375
|
+
import torch.distributed as dist
|
|
376
|
+
from torch.nn.parallel import DistributedDataParallel as DDP
|
|
377
|
+
|
|
378
|
+
# Init process group
|
|
379
|
+
dist.init_process_group(backend="nccl")
|
|
380
|
+
local_rank = int(os.environ["LOCAL_RANK"])
|
|
381
|
+
torch.cuda.set_device(local_rank)
|
|
382
|
+
|
|
383
|
+
# Wrap model
|
|
384
|
+
model = model.to(local_rank)
|
|
385
|
+
model = DDP(model, device_ids=[local_rank])
|
|
386
|
+
|
|
387
|
+
# Use DistributedSampler for data
|
|
388
|
+
sampler = torch.utils.data.distributed.DistributedSampler(dataset)
|
|
389
|
+
loader = DataLoader(dataset, sampler=sampler, batch_size=per_gpu_batch)
|
|
390
|
+
|
|
391
|
+
# Remember to set epoch for proper shuffling
|
|
392
|
+
for epoch in range(num_epochs):
|
|
393
|
+
sampler.set_epoch(epoch)
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### FSDP (Fully Sharded Data Parallel) — for large models
|
|
397
|
+
|
|
398
|
+
```python
|
|
399
|
+
from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
|
|
400
|
+
|
|
401
|
+
model = FSDP(
|
|
402
|
+
model,
|
|
403
|
+
auto_wrap_policy=size_based_auto_wrap_policy, # wrap layers > threshold
|
|
404
|
+
mixed_precision=MixedPrecision(
|
|
405
|
+
param_dtype=torch.bfloat16,
|
|
406
|
+
reduce_dtype=torch.bfloat16,
|
|
407
|
+
buffer_dtype=torch.bfloat16,
|
|
408
|
+
),
|
|
409
|
+
)
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### Scaling rules
|
|
413
|
+
|
|
414
|
+
- **Linear scaling**: When scaling batch_size by k, scale LR by k (up to a point)
|
|
415
|
+
- **Square root scaling**: `lr_new = lr_base * sqrt(batch_new / batch_base)` — more conservative, often works better
|
|
416
|
+
- **Warmup**: Scale warmup duration with batch size increase
|
|
417
|
+
- **Gradient accumulation**: Equivalent to larger batch size without more GPUs
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## Checkpointing
|
|
422
|
+
|
|
423
|
+
### Save/load with proper state
|
|
424
|
+
|
|
425
|
+
```python
|
|
426
|
+
def save_checkpoint(model, optimizer, scheduler, step, path):
|
|
427
|
+
torch.save({
|
|
428
|
+
'step': step,
|
|
429
|
+
'model_state_dict': model.state_dict(),
|
|
430
|
+
'optimizer_state_dict': optimizer.state_dict(),
|
|
431
|
+
'scheduler_state_dict': scheduler.state_dict() if scheduler else None,
|
|
432
|
+
'rng_state': torch.cuda.get_rng_state(),
|
|
433
|
+
}, path)
|
|
434
|
+
|
|
435
|
+
def load_checkpoint(model, optimizer, scheduler, path):
|
|
436
|
+
ckpt = torch.load(path, map_location='cpu', weights_only=False)
|
|
437
|
+
model.load_state_dict(ckpt['model_state_dict'])
|
|
438
|
+
optimizer.load_state_dict(ckpt['optimizer_state_dict'])
|
|
439
|
+
if scheduler and ckpt.get('scheduler_state_dict'):
|
|
440
|
+
scheduler.load_state_dict(ckpt['scheduler_state_dict'])
|
|
441
|
+
torch.cuda.set_rng_state(ckpt['rng_state'])
|
|
442
|
+
return ckpt['step']
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Best practices
|
|
446
|
+
|
|
447
|
+
- Save every N steps (not just every epoch) — long epochs can lose hours of work
|
|
448
|
+
- Keep last K checkpoints + best checkpoint (by val metric)
|
|
449
|
+
- Save optimizer state for exact resumption — without it, training dynamics change
|
|
450
|
+
- For DDP/FSDP: save only on rank 0, load on all ranks
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
## Data Loading for Images
|
|
455
|
+
|
|
456
|
+
### Efficient ImageFolder with workers
|
|
457
|
+
|
|
458
|
+
```python
|
|
459
|
+
from torch.utils.data import DataLoader
|
|
460
|
+
from torchvision.datasets import ImageFolder
|
|
461
|
+
|
|
462
|
+
train_dataset = ImageFolder(root="data/train", transform=train_transform)
|
|
463
|
+
|
|
464
|
+
train_loader = DataLoader(
|
|
465
|
+
train_dataset,
|
|
466
|
+
batch_size=256,
|
|
467
|
+
shuffle=True,
|
|
468
|
+
num_workers=8, # rule of thumb: 4 * num_GPUs
|
|
469
|
+
pin_memory=True, # faster CPU→GPU transfer
|
|
470
|
+
persistent_workers=True, # avoid re-spawning workers each epoch
|
|
471
|
+
prefetch_factor=2, # prefetch 2 batches per worker
|
|
472
|
+
drop_last=True, # avoid small last batch (bad for BatchNorm)
|
|
473
|
+
)
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### WebDataset for large-scale (millions of images)
|
|
477
|
+
|
|
478
|
+
```python
|
|
479
|
+
import webdataset as wds
|
|
480
|
+
|
|
481
|
+
dataset = (
|
|
482
|
+
wds.WebDataset("data/train-{000000..000099}.tar")
|
|
483
|
+
.shuffle(1000)
|
|
484
|
+
.decode("pil")
|
|
485
|
+
.to_tuple("jpg", "cls")
|
|
486
|
+
.map_tuple(train_transform, lambda x: x)
|
|
487
|
+
.batched(256)
|
|
488
|
+
)
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
### FFCV for maximum throughput
|
|
492
|
+
|
|
493
|
+
```python
|
|
494
|
+
# FFCV can be 3-7x faster than standard PyTorch DataLoader
|
|
495
|
+
# Writes data to a custom binary format, then reads with zero-copy
|
|
496
|
+
from ffcv.loader import Loader, OrderOption
|
|
497
|
+
from ffcv.fields.decoders import RandomResizedCropRGBImageDecoder
|
|
498
|
+
|
|
499
|
+
loader = Loader(
|
|
500
|
+
"data/train.beton",
|
|
501
|
+
batch_size=256,
|
|
502
|
+
order=OrderOption.QUASI_RANDOM,
|
|
503
|
+
num_workers=8,
|
|
504
|
+
pipelines={
|
|
505
|
+
"image": [RandomResizedCropRGBImageDecoder((224, 224))],
|
|
506
|
+
"label": [IntDecoder(), ToTensor(), ToDevice(device)],
|
|
507
|
+
},
|
|
508
|
+
)
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
## LLM Data Loading
|
|
514
|
+
|
|
515
|
+
### Pinned buffers for zero-copy transfers
|
|
516
|
+
|
|
517
|
+
```python
|
|
518
|
+
# Pre-allocate pinned CPU + GPU buffers
|
|
519
|
+
cpu_buffer = torch.empty(2 * B * T, dtype=torch.long, pin_memory=True)
|
|
520
|
+
gpu_buffer = torch.empty(2 * B * T, dtype=torch.long, device="cuda")
|
|
521
|
+
gpu_buffer.copy_(cpu_buffer, non_blocking=True)
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### Best-fit packing (no padding)
|
|
525
|
+
|
|
526
|
+
Instead of padding sequences to fixed length (wastes compute), pack documents tightly:
|
|
527
|
+
1. Maintain a buffer of tokenized documents
|
|
528
|
+
2. For each row, greedily fit the largest document that fits remaining space
|
|
529
|
+
3. If nothing fits, crop the shortest to fill exactly
|
|
530
|
+
4. Every row starts with BOS token
|
|
531
|
+
5. Result: 100% utilization, no wasted tokens
|
|
532
|
+
|
|
533
|
+
### Infinite iterators
|
|
534
|
+
|
|
535
|
+
```python
|
|
536
|
+
def make_dataloader(split):
|
|
537
|
+
"""Yields (x, y, epoch) forever, cycling through data."""
|
|
538
|
+
epoch = 1
|
|
539
|
+
while True:
|
|
540
|
+
for batch in data_source:
|
|
541
|
+
yield process(batch), epoch
|
|
542
|
+
epoch += 1
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
---
|
|
546
|
+
|
|
547
|
+
## Architecture Pattern Tables
|
|
548
|
+
|
|
549
|
+
### Transformer / LLM components
|
|
550
|
+
|
|
551
|
+
| Component | Recommended | Why |
|
|
552
|
+
|-----------|------------|-----|
|
|
553
|
+
| Normalization | RMSNorm | ~same quality as LayerNorm, fewer ops |
|
|
554
|
+
| Position encoding | RoPE | Relative, extrapolates well, standard |
|
|
555
|
+
| Attention | Flash Attention 3 | Memory-efficient, faster, exact |
|
|
556
|
+
| Activation | ReluSquared or SwiGLU | ReluSquared: sparse. SwiGLU: better quality |
|
|
557
|
+
| Residual | Learnable scaling + x0 skip | Stabilizes deep networks |
|
|
558
|
+
| Logit cap | Soft capping | `softcap * tanh(logits / softcap)` |
|
|
559
|
+
| Init | Zero-init output projections | Residual stream starts clean |
|
|
560
|
+
| KV heads | GQA | Saves memory with minimal quality loss |
|
|
561
|
+
|
|
562
|
+
### Vision (CNN / ViT) components
|
|
563
|
+
|
|
564
|
+
| Component | Recommended | Why |
|
|
565
|
+
|-----------|------------|-----|
|
|
566
|
+
| Backbone | ConvNeXt v2 or ViT | ConvNeXt: modern CNN. ViT: scalable |
|
|
567
|
+
| Data augmentation | RandAugment + MixUp + CutMix | More impactful than architecture |
|
|
568
|
+
| Regularization | Stochastic depth + label smoothing | Better than dropout for vision |
|
|
569
|
+
| Optimizer | AdamW (ViT) / SGD+momentum (CNN) | ViTs need adaptive methods |
|
|
570
|
+
| Resolution | Progressive resizing | Train small → finetune large |
|
|
571
|
+
|
|
572
|
+
### Diffusion model components
|
|
573
|
+
|
|
574
|
+
| Component | Recommended | Why |
|
|
575
|
+
|-----------|------------|-----|
|
|
576
|
+
| Architecture | U-Net or DiT | DiT scales better |
|
|
577
|
+
| Noise schedule | Cosine or flow matching | Flow matching: simpler, state-of-art |
|
|
578
|
+
| Loss | MSE on noise or v-prediction | v-prediction better at low SNR |
|
|
579
|
+
| EMA | Keep EMA model for inference | Higher quality samples |
|
|
580
|
+
| Sampling | DDIM / DPM-Solver++ | Faster than DDPM |
|
|
581
|
+
|
|
582
|
+
### General supervised
|
|
583
|
+
|
|
584
|
+
| Component | Recommended | Why |
|
|
585
|
+
|-----------|------------|-----|
|
|
586
|
+
| Optimizer | AdamW | Safe default |
|
|
587
|
+
| Early stopping | Patience 5-10 epochs | Prevents overfitting |
|
|
588
|
+
| Class imbalance | Weighted loss or oversampling | Weighted loss is simpler |
|
|
589
|
+
|
|
590
|
+
---
|
|
591
|
+
|
|
592
|
+
## BPB Evaluation for Language Models
|
|
593
|
+
|
|
594
|
+
```python
|
|
595
|
+
@torch.no_grad()
|
|
596
|
+
def evaluate_bpb(model, val_loader, token_bytes):
|
|
597
|
+
total_nats, total_bytes = 0.0, 0
|
|
598
|
+
for x, y in val_loader:
|
|
599
|
+
loss_per_token = F.cross_entropy(..., reduction='none').view(-1)
|
|
600
|
+
nbytes = token_bytes[y.view(-1)]
|
|
601
|
+
mask = nbytes > 0
|
|
602
|
+
total_nats += (loss_per_token * mask).sum().item()
|
|
603
|
+
total_bytes += nbytes.sum().item()
|
|
604
|
+
return total_nats / (math.log(2) * total_bytes)
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
### EMA smoothed loss
|
|
608
|
+
|
|
609
|
+
```python
|
|
610
|
+
ema_beta = 0.9
|
|
611
|
+
smooth_loss = 0
|
|
612
|
+
for step in range(num_steps):
|
|
613
|
+
smooth_loss = ema_beta * smooth_loss + (1 - ema_beta) * loss.item()
|
|
614
|
+
debiased = smooth_loss / (1 - ema_beta ** (step + 1))
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### Final summary format
|
|
618
|
+
|
|
619
|
+
Print structured output for easy parsing:
|
|
620
|
+
```
|
|
621
|
+
val_bpb: 0.997900
|
|
622
|
+
training_seconds: 300.1
|
|
623
|
+
peak_vram_mb: 45060.2
|
|
624
|
+
mfu_percent: 39.80
|
|
625
|
+
total_tokens_M: 499.6
|
|
626
|
+
```
|