[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-anomalygen-release":3,"mdc-kncthh-key":34,"related-repo-nvidia-anomalygen-release":2152,"related-org-nvidia-anomalygen-release":2191},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"anomalygen-release","build and validate AnomalyGen containers","Build and validate PAIDF AnomalyGen product and develop Docker containers from docker\u002FDockerfile.cuda128. Use when the user asks to build an anomalygen product container, build an anomalygen develop container, validate container runtime permissions, or produce release summaries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Deployment","deployment","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Engineering","engineering",{"name":21,"slug":22,"type":15},"Docker","docker",11,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fpaidf-anomalygen","2026-07-14T05:31:17.447135","Apache-2.0",3,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Diffusion-based pipeline for generating photorealistic, mask-aligned synthetic anomaly images for industrial visual inspection from only a few real examples","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fpaidf-anomalygen\u002Ftree\u002FHEAD\u002Fskills\u002Fanomalygen-release","---\nname: anomalygen-release\ndescription: >-\n  Build and validate PAIDF AnomalyGen product and develop Docker containers\n  from docker\u002FDockerfile.cuda128. Use when the user asks to build an anomalygen\n  product container, build an anomalygen develop container, validate container\n  runtime permissions, or produce release summaries.\nlicense: Apache-2.0\nmetadata:\n  author: Wenny Lo \u003Cwennyl@nvidia.com>\n  tags: [release, docker, container, airgapped, paidf]\n---\n\n# AnomalyGen Release\n\nUse this skill to build and validate AnomalyGen CUDA 12.8 containers. This is a\nrelease\u002Fbuild workflow, not a training or inference workflow.\n\nRun every command from the repo root.\n\n**Docker privilege.** All `docker` commands below assume your user is in\nthe `docker` group (or the daemon is rootless). If your environment\nrequires elevated privileges, prefix `sudo` to each `docker` invocation.\n\n## Container Modes\n\nThere are two image modes:\n\n- **Product container**: protected runtime for users operating AnomalyGen through\n  an agent. The image sets `ANOMALYGEN_PRODUCT_MODE=1`, runs as a non-root user,\n  locks production code read-only, and keeps runtime artifacts writable.\n- **Develop container**: writable development environment for developers using\n  an agent to edit code. The image leaves `ANOMALYGEN_PRODUCT_MODE` unset and\n  keeps production code paths writable.\n\nEach mode is available in two variants:\n\n- **Standard**: checkpoints are mounted at runtime (thin image, ~10 GB).\n- **Air-gapped**: checkpoints are baked into the image (fat image, ~75 GB+).\n  Use when the target environment cannot reach the network at runtime.\n\nBuilds should happen from a normal cloned repo or develop container where\n`ANOMALYGEN_PRODUCT_MODE` is unset. Do not build nested images from a product\nruntime container.\n\nUser-facing prompts:\n\n```text\nBuild anomalygen product container\nBuild anomalygen develop container\nGenerate airgapped docker image\nBuild airgapped product image\nBuild airgapped develop image\n```\n\n## Scope\n\nAllowed:\n\n- Inspect `docker\u002FDockerfile.cuda128` and `docker\u002FDockerfile.cuda128.airgapped`\n  and release inputs.\n- Build product or develop images (standard or air-gapped) with the helper scripts.\n- Auto-download missing checkpoints when building an air-gapped image.\n- Validate product image runtime guardrails.\n- Validate develop image writability for code development.\n- Report image tag, image id, mode, and validation results.\n\nDo not:\n\n- Run AnomalyGen training or SDG generation as part of release.\n- Bake secrets, private datasets, or user experiment outputs into the image.\n- Build images inside `ANOMALYGEN_PRODUCT_MODE=1`.\n- Use arbitrary Docker commands beyond the build and validation steps unless\n  the user explicitly asks.\n\n## Canonical Build Commands\n\nProduct container:\n\n```bash\nbash scripts\u002Fbuild_image.sh --mode product\n```\n\nEquivalent Docker command:\n\n```bash\nDATE_TAG=\"$(date -u +%Y%m%d)\"\nDOCKER_BUILDKIT=1 docker build \\\n    --target product \\\n    -f docker\u002FDockerfile.cuda128 \\\n    -t \"paidf-anomalygen:${DATE_TAG}\" \\\n    .\n```\n\nDevelop container:\n\n```bash\nbash scripts\u002Fbuild_image.sh --mode develop\n```\n\nUse a minute-level tag when multiple builds may happen in one day:\n\n```bash\nbash scripts\u002Fbuild_image.sh \\\n    --mode product \\\n    --tag \"$(date -u +%Y%m%d-%H%M)\"\n```\n\n## Air-Gapped Image\n\nUse when the target environment has no network access and cannot pull\ncheckpoints at runtime. The airgapped build uses\n`docker\u002FDockerfile.cuda128.airgapped`, which bakes all checkpoints into the\nimage layers. The result is self-contained (~75 GB+).\n\n### Canonical command\n\n```bash\nbash scripts\u002Fbuild_airgapped_image.sh \\\n    --mode product\n```\n\nThe script:\n\n1. **Checks all required checkpoints** in `checkpoints\u002F` (the paths the\n   Dockerfile COPYs in):\n   - `checkpoints\u002Fnvidia\u002FCosmos-Predict2-2B-Text2Image\u002Fmodel.pt`\n   - `checkpoints\u002Fnvidia\u002FCosmos-Predict2-14B-Text2Image\u002Fmodel.pt`\n   - `checkpoints\u002FNVDINOV2\u002Fnv_dinov2_classification_model.ckpt`\n   - `checkpoints\u002Fnvidia\u002FC-RADIO-V3\u002Fmodel.safetensors`\n   - `checkpoints\u002Fsam2\u002Fsam2.1_hiera_large.pt`\n   - `checkpoints\u002Ffacebook\u002Fdinov2-large\u002F` (non-empty)\n   - `checkpoints\u002Fgoogle-t5\u002Ft5-large\u002F` or `checkpoints\u002Fgoogle-t5\u002Ft5-11b\u002F`\n     (at least one)\n\n2. **Auto-downloads** any missing checkpoints via\n   `scripts\u002Futilities\u002Fdownload_checkpoints.sh`. This requires\n   `HF_TOKEN` to be exported and `huggingface-cli` in `PATH`. If you do\n   not want auto-download, pass `--skip-download` and download manually\n   with the setup skill first.\n\n3. **Builds** the airgapped image after all checkpoints are confirmed present.\n\nDefault image names:\n\n| Mode | Tag |\n|---|---|\n| `product` | `paidf-anomalygen-airgapped:\u003Cdate>` |\n| `develop` | `paidf-anomalygen-dev-airgapped:\u003Cdate>` |\n\nOptions:\n\n```bash\nbash scripts\u002Fbuild_airgapped_image.sh \\\n    --mode product|develop \\\n    --tag YYYYMMDD \\\n    --checkpoint-dir checkpoints \\\n    --skip-download\n```\n\n### Running the air-gapped image\n\nNo volume mounts required — checkpoints live inside the image:\n\n```bash\ndocker run --gpus all -it --rm --shm-size=16g \\\n    paidf-anomalygen-airgapped:\u003Ctag> bash\n```\n\n### Delivering to an air-gapped host\n\n```bash\n# on the build host\ndocker save paidf-anomalygen-airgapped:\u003Ctag> | gzip \\\n    > paidf-anomalygen-airgapped-\u003Ctag>.tar.gz\n\n# transfer the .tar.gz to the air-gapped host, then:\ndocker load \u003C paidf-anomalygen-airgapped-\u003Ctag>.tar.gz\ndocker run --gpus all -it --rm --shm-size=16g \\\n    paidf-anomalygen-airgapped:\u003Ctag> bash\n```\n\n## Product Filesystem Policy\n\nThe product image should run as a non-root runtime user. Only production\nimplementation paths should be non-writable. Runtime data, artifacts,\ncheckpoints, caches, and logs should remain writable.\n\nProduction paths expected to be non-writable in product containers and writable\nin develop containers:\n\n```text\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcosmos_predict2\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fscripts\u002Fanomaly_gen\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fscripts\u002Futilities\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002F.agents\u002Fskills\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002FREADME.md\n\u002Fworkspace\u002Fpaidf-anomalygen\u002FCLAUDE.md\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fdocker\u002FDockerfile*\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Frequirements*.txt\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcosmos-predict2-cuda128.yaml\n```\n\nRuntime paths expected to be writable in both modes:\n\n```text\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_configs\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_inference\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fdatasets\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcheckpoints\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Flogs\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Ftmp\u002F\n\u002Ftmp\u002F\nthe runtime user's `$HOME` (`\u002Fhome\u002Fanomalygen\u002F` in product images)\nthe runtime user's `$HOME\u002F.cache` (used by HF, torch.compile, and triton)\n```\n\nIn addition to the top-level directories above, the validator probes a set of\nnested paths that AnomalyGen actually writes to during training, SDG, and\nrefine. Top-level writability alone can miss ownership issues on mounted\nvolumes or pre-created subdirectories, so each of these must also be writable:\n\n```text\n# Training output\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002Fanomaly_gen\u002F_permission_test\u002Fcheckpoints\u002Fmodel\n\n# SDG output (original and searched buckets, plus per-round refine)\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002Freconstructed_image\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002Foriginal_mask\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002Foverlay_image\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Fsearched\u002Freconstructed_image\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Frounds\u002Fround_001\u002Fsdg\u002Freconstructed_image\n\n# AMP cache\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_inference\u002F_permission_test\u002Famp\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_inference\u002F_permission_test\u002Fresized_masks\n\n# torch.compile \u002F triton cache\n$HOME\u002F.cache\u002Fpaidf-anomalygen\u002Ftorch_inductor\n$HOME\u002F.cache\u002Fpaidf-anomalygen\u002Ftriton\n\n# Hugging Face cache\n$HOME\u002F.cache\u002Fhuggingface\n```\n\nThe validator also probes that `SDG_result.csv` can be created and written\nunder each of the SDG bucket roots:\n\n```text\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002FSDG_result.csv\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Fsearched\u002FSDG_result.csv\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Frounds\u002Fround_001\u002Fsdg\u002FSDG_result.csv\n```\n\nThis `SDG_result.csv` probe exists so the validator can fail fast on\nread-only mounts where SDG would later be unable to record its index. It does\nnot mean this release skill runs SDG itself; SDG generation remains\nout-of-scope for the release workflow (see Scope above) and is handled by the\n`sdg-inference` skill.\n\nIf a product image does not set `ANOMALYGEN_PRODUCT_MODE=1`, runs as root, or\nleaves production code writable, treat the image as not productized.\n\n## Pre-Build Checklist\n\nBefore building:\n\n1. Verify these files exist:\n   - `docker\u002FDockerfile.cuda128`\n   - `cosmos-predict2-cuda128.yaml`\n   - `requirements-conda-cuda128.txt`\n2. Verify the Docker build context does not intentionally include secrets:\n   - `.env`\n   - token files\n   - SSH keys\n   - private datasets\n   - user result folders\n3. Decide checkpoint strategy for product images:\n   - Thin image: checkpoints mounted or downloaded at runtime.\n   - Fat image: checkpoints copied into image. This is large and should be\n     explicitly requested.\n\n## Validation\n\nAfter building a product image:\n\n```bash\nbash scripts\u002Fvalidate_image_permissions.sh \\\n    --mode product \\\n    \"paidf-anomalygen:${DATE_TAG}\"\n```\n\nAfter building a develop image:\n\n```bash\nbash scripts\u002Fvalidate_image_permissions.sh \\\n    --mode develop \\\n    \"paidf-anomalygen-dev:${DATE_TAG}\"\n```\n\nIf validation fails, do not call the image ready for its intended mode.\n\n## Running the Container\n\n> **Warning:** always pass `--shm-size` (minimum `16g`). PyTorch DataLoader\n> uses `\u002Fdev\u002Fshm` for multiprocessing shared memory; the Docker default of\n> 64 MB causes \"Bus error\" crashes or silent hangs during training and\n> inference. Remind the user of this flag whenever reporting a completed build.\n\nProduct container:\n\n```bash\nTAG=\"paidf-anomalygen:$(date -u +%Y%m%d)\"\nREPO=\"$PWD\"\ndocker run --rm -it --gpus all --shm-size=16g \\\n    -v \"${REPO}\u002Fcheckpoints:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcheckpoints\" \\\n    -v \"${REPO}\u002Fdatasets:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fdatasets\" \\\n    -v \"${REPO}\u002Fresults:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\" \\\n    \"${TAG}\" \\\n    bash\n```\n\nDevelop container:\n\n```bash\nTAG=\"paidf-anomalygen-dev:$(date -u +%Y%m%d)\"\nREPO=\"$PWD\"\ndocker run --rm -it --gpus all --shm-size=16g \\\n    -v \"${REPO}:\u002Fworkspace\u002Fpaidf-anomalygen\" \\\n    \"${TAG}\" \\\n    bash\n```\n\n## Release Summary\n\nReport:\n\n```text\nImage: paidf-anomalygen:\u003Ctag>\nMode: product | develop\nImage ID: \u003Cdocker image id>\nDockerfile: docker\u002FDockerfile.cuda128\nANOMALYGEN_PRODUCT_MODE: set | unset | failed validation\nProduction code: non-writable | writable | failed validation\nRuntime paths: writable | failed validation\nCheckpoint strategy: thin | fat | unknown\nNotes: \u003Cwarnings, if any>\n```\n",{"data":35,"body":43},{"name":4,"description":6,"license":26,"metadata":36},{"author":37,"tags":38},"Wenny Lo \u003Cwennyl@nvidia.com>",[39,22,40,41,42],"release","container","airgapped","paidf",{"type":44,"children":45},"root",[46,54,60,65,106,113,118,159,164,187,199,204,216,222,227,276,281,311,317,322,358,363,519,524,551,556,620,626,638,645,679,684,843,848,918,923,1010,1016,1021,1102,1108,1327,1333,1338,1343,1352,1357,1366,1371,1380,1393,1402,1422,1434,1440,1445,1537,1543,1548,1611,1616,1678,1683,1689,1727,1731,1964,1968,2126,2132,2137,2146],{"type":47,"tag":48,"props":49,"children":50},"element","h1",{"id":4},[51],{"type":52,"value":53},"text","AnomalyGen Release",{"type":47,"tag":55,"props":56,"children":57},"p",{},[58],{"type":52,"value":59},"Use this skill to build and validate AnomalyGen CUDA 12.8 containers. This is a\nrelease\u002Fbuild workflow, not a training or inference workflow.",{"type":47,"tag":55,"props":61,"children":62},{},[63],{"type":52,"value":64},"Run every command from the repo root.",{"type":47,"tag":55,"props":66,"children":67},{},[68,74,76,82,84,89,91,97,99,104],{"type":47,"tag":69,"props":70,"children":71},"strong",{},[72],{"type":52,"value":73},"Docker privilege.",{"type":52,"value":75}," All ",{"type":47,"tag":77,"props":78,"children":80},"code",{"className":79},[],[81],{"type":52,"value":22},{"type":52,"value":83}," commands below assume your user is in\nthe ",{"type":47,"tag":77,"props":85,"children":87},{"className":86},[],[88],{"type":52,"value":22},{"type":52,"value":90}," group (or the daemon is rootless). If your environment\nrequires elevated privileges, prefix ",{"type":47,"tag":77,"props":92,"children":94},{"className":93},[],[95],{"type":52,"value":96},"sudo",{"type":52,"value":98}," to each ",{"type":47,"tag":77,"props":100,"children":102},{"className":101},[],[103],{"type":52,"value":22},{"type":52,"value":105}," invocation.",{"type":47,"tag":107,"props":108,"children":110},"h2",{"id":109},"container-modes",[111],{"type":52,"value":112},"Container Modes",{"type":47,"tag":55,"props":114,"children":115},{},[116],{"type":52,"value":117},"There are two image modes:",{"type":47,"tag":119,"props":120,"children":121},"ul",{},[122,141],{"type":47,"tag":123,"props":124,"children":125},"li",{},[126,131,133,139],{"type":47,"tag":69,"props":127,"children":128},{},[129],{"type":52,"value":130},"Product container",{"type":52,"value":132},": protected runtime for users operating AnomalyGen through\nan agent. The image sets ",{"type":47,"tag":77,"props":134,"children":136},{"className":135},[],[137],{"type":52,"value":138},"ANOMALYGEN_PRODUCT_MODE=1",{"type":52,"value":140},", runs as a non-root user,\nlocks production code read-only, and keeps runtime artifacts writable.",{"type":47,"tag":123,"props":142,"children":143},{},[144,149,151,157],{"type":47,"tag":69,"props":145,"children":146},{},[147],{"type":52,"value":148},"Develop container",{"type":52,"value":150},": writable development environment for developers using\nan agent to edit code. The image leaves ",{"type":47,"tag":77,"props":152,"children":154},{"className":153},[],[155],{"type":52,"value":156},"ANOMALYGEN_PRODUCT_MODE",{"type":52,"value":158}," unset and\nkeeps production code paths writable.",{"type":47,"tag":55,"props":160,"children":161},{},[162],{"type":52,"value":163},"Each mode is available in two variants:",{"type":47,"tag":119,"props":165,"children":166},{},[167,177],{"type":47,"tag":123,"props":168,"children":169},{},[170,175],{"type":47,"tag":69,"props":171,"children":172},{},[173],{"type":52,"value":174},"Standard",{"type":52,"value":176},": checkpoints are mounted at runtime (thin image, ~10 GB).",{"type":47,"tag":123,"props":178,"children":179},{},[180,185],{"type":47,"tag":69,"props":181,"children":182},{},[183],{"type":52,"value":184},"Air-gapped",{"type":52,"value":186},": checkpoints are baked into the image (fat image, ~75 GB+).\nUse when the target environment cannot reach the network at runtime.",{"type":47,"tag":55,"props":188,"children":189},{},[190,192,197],{"type":52,"value":191},"Builds should happen from a normal cloned repo or develop container where\n",{"type":47,"tag":77,"props":193,"children":195},{"className":194},[],[196],{"type":52,"value":156},{"type":52,"value":198}," is unset. Do not build nested images from a product\nruntime container.",{"type":47,"tag":55,"props":200,"children":201},{},[202],{"type":52,"value":203},"User-facing prompts:",{"type":47,"tag":205,"props":206,"children":211},"pre",{"className":207,"code":209,"language":52,"meta":210},[208],"language-text","Build anomalygen product container\nBuild anomalygen develop container\nGenerate airgapped docker image\nBuild airgapped product image\nBuild airgapped develop image\n","",[212],{"type":47,"tag":77,"props":213,"children":214},{"__ignoreMap":210},[215],{"type":52,"value":209},{"type":47,"tag":107,"props":217,"children":219},{"id":218},"scope",[220],{"type":52,"value":221},"Scope",{"type":47,"tag":55,"props":223,"children":224},{},[225],{"type":52,"value":226},"Allowed:",{"type":47,"tag":119,"props":228,"children":229},{},[230,251,256,261,266,271],{"type":47,"tag":123,"props":231,"children":232},{},[233,235,241,243,249],{"type":52,"value":234},"Inspect ",{"type":47,"tag":77,"props":236,"children":238},{"className":237},[],[239],{"type":52,"value":240},"docker\u002FDockerfile.cuda128",{"type":52,"value":242}," and ",{"type":47,"tag":77,"props":244,"children":246},{"className":245},[],[247],{"type":52,"value":248},"docker\u002FDockerfile.cuda128.airgapped",{"type":52,"value":250},"\nand release inputs.",{"type":47,"tag":123,"props":252,"children":253},{},[254],{"type":52,"value":255},"Build product or develop images (standard or air-gapped) with the helper scripts.",{"type":47,"tag":123,"props":257,"children":258},{},[259],{"type":52,"value":260},"Auto-download missing checkpoints when building an air-gapped image.",{"type":47,"tag":123,"props":262,"children":263},{},[264],{"type":52,"value":265},"Validate product image runtime guardrails.",{"type":47,"tag":123,"props":267,"children":268},{},[269],{"type":52,"value":270},"Validate develop image writability for code development.",{"type":47,"tag":123,"props":272,"children":273},{},[274],{"type":52,"value":275},"Report image tag, image id, mode, and validation results.",{"type":47,"tag":55,"props":277,"children":278},{},[279],{"type":52,"value":280},"Do not:",{"type":47,"tag":119,"props":282,"children":283},{},[284,289,294,306],{"type":47,"tag":123,"props":285,"children":286},{},[287],{"type":52,"value":288},"Run AnomalyGen training or SDG generation as part of release.",{"type":47,"tag":123,"props":290,"children":291},{},[292],{"type":52,"value":293},"Bake secrets, private datasets, or user experiment outputs into the image.",{"type":47,"tag":123,"props":295,"children":296},{},[297,299,304],{"type":52,"value":298},"Build images inside ",{"type":47,"tag":77,"props":300,"children":302},{"className":301},[],[303],{"type":52,"value":138},{"type":52,"value":305},".",{"type":47,"tag":123,"props":307,"children":308},{},[309],{"type":52,"value":310},"Use arbitrary Docker commands beyond the build and validation steps unless\nthe user explicitly asks.",{"type":47,"tag":107,"props":312,"children":314},{"id":313},"canonical-build-commands",[315],{"type":52,"value":316},"Canonical Build Commands",{"type":47,"tag":55,"props":318,"children":319},{},[320],{"type":52,"value":321},"Product container:",{"type":47,"tag":205,"props":323,"children":327},{"className":324,"code":325,"language":326,"meta":210,"style":210},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bash scripts\u002Fbuild_image.sh --mode product\n","bash",[328],{"type":47,"tag":77,"props":329,"children":330},{"__ignoreMap":210},[331],{"type":47,"tag":332,"props":333,"children":336},"span",{"class":334,"line":335},"line",1,[337,342,348,353],{"type":47,"tag":332,"props":338,"children":340},{"style":339},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[341],{"type":52,"value":326},{"type":47,"tag":332,"props":343,"children":345},{"style":344},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[346],{"type":52,"value":347}," scripts\u002Fbuild_image.sh",{"type":47,"tag":332,"props":349,"children":350},{"style":344},[351],{"type":52,"value":352}," --mode",{"type":47,"tag":332,"props":354,"children":355},{"style":344},[356],{"type":52,"value":357}," product\n",{"type":47,"tag":55,"props":359,"children":360},{},[361],{"type":52,"value":362},"Equivalent Docker command:",{"type":47,"tag":205,"props":364,"children":366},{"className":324,"code":365,"language":326,"meta":210,"style":210},"DATE_TAG=\"$(date -u +%Y%m%d)\"\nDOCKER_BUILDKIT=1 docker build \\\n    --target product \\\n    -f docker\u002FDockerfile.cuda128 \\\n    -t \"paidf-anomalygen:${DATE_TAG}\" \\\n    .\n",[367],{"type":47,"tag":77,"props":368,"children":369},{"__ignoreMap":210},[370,405,438,455,473,510],{"type":47,"tag":332,"props":371,"children":372},{"class":334,"line":335},[373,379,385,390,395,400],{"type":47,"tag":332,"props":374,"children":376},{"style":375},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[377],{"type":52,"value":378},"DATE_TAG",{"type":47,"tag":332,"props":380,"children":382},{"style":381},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[383],{"type":52,"value":384},"=",{"type":47,"tag":332,"props":386,"children":387},{"style":381},[388],{"type":52,"value":389},"\"$(",{"type":47,"tag":332,"props":391,"children":392},{"style":339},[393],{"type":52,"value":394},"date",{"type":47,"tag":332,"props":396,"children":397},{"style":344},[398],{"type":52,"value":399}," -u +%Y%m%d",{"type":47,"tag":332,"props":401,"children":402},{"style":381},[403],{"type":52,"value":404},")\"\n",{"type":47,"tag":332,"props":406,"children":408},{"class":334,"line":407},2,[409,414,418,423,428,433],{"type":47,"tag":332,"props":410,"children":411},{"style":375},[412],{"type":52,"value":413},"DOCKER_BUILDKIT",{"type":47,"tag":332,"props":415,"children":416},{"style":381},[417],{"type":52,"value":384},{"type":47,"tag":332,"props":419,"children":420},{"style":344},[421],{"type":52,"value":422},"1",{"type":47,"tag":332,"props":424,"children":425},{"style":339},[426],{"type":52,"value":427}," docker",{"type":47,"tag":332,"props":429,"children":430},{"style":344},[431],{"type":52,"value":432}," build",{"type":47,"tag":332,"props":434,"children":435},{"style":375},[436],{"type":52,"value":437}," \\\n",{"type":47,"tag":332,"props":439,"children":440},{"class":334,"line":27},[441,446,451],{"type":47,"tag":332,"props":442,"children":443},{"style":344},[444],{"type":52,"value":445},"    --target",{"type":47,"tag":332,"props":447,"children":448},{"style":344},[449],{"type":52,"value":450}," product",{"type":47,"tag":332,"props":452,"children":453},{"style":375},[454],{"type":52,"value":437},{"type":47,"tag":332,"props":456,"children":458},{"class":334,"line":457},4,[459,464,469],{"type":47,"tag":332,"props":460,"children":461},{"style":344},[462],{"type":52,"value":463},"    -f",{"type":47,"tag":332,"props":465,"children":466},{"style":344},[467],{"type":52,"value":468}," docker\u002FDockerfile.cuda128",{"type":47,"tag":332,"props":470,"children":471},{"style":375},[472],{"type":52,"value":437},{"type":47,"tag":332,"props":474,"children":476},{"class":334,"line":475},5,[477,482,487,492,497,501,506],{"type":47,"tag":332,"props":478,"children":479},{"style":344},[480],{"type":52,"value":481},"    -t",{"type":47,"tag":332,"props":483,"children":484},{"style":381},[485],{"type":52,"value":486}," \"",{"type":47,"tag":332,"props":488,"children":489},{"style":344},[490],{"type":52,"value":491},"paidf-anomalygen:",{"type":47,"tag":332,"props":493,"children":494},{"style":381},[495],{"type":52,"value":496},"${",{"type":47,"tag":332,"props":498,"children":499},{"style":375},[500],{"type":52,"value":378},{"type":47,"tag":332,"props":502,"children":503},{"style":381},[504],{"type":52,"value":505},"}\"",{"type":47,"tag":332,"props":507,"children":508},{"style":375},[509],{"type":52,"value":437},{"type":47,"tag":332,"props":511,"children":513},{"class":334,"line":512},6,[514],{"type":47,"tag":332,"props":515,"children":516},{"style":344},[517],{"type":52,"value":518},"    .\n",{"type":47,"tag":55,"props":520,"children":521},{},[522],{"type":52,"value":523},"Develop container:",{"type":47,"tag":205,"props":525,"children":527},{"className":324,"code":526,"language":326,"meta":210,"style":210},"bash scripts\u002Fbuild_image.sh --mode develop\n",[528],{"type":47,"tag":77,"props":529,"children":530},{"__ignoreMap":210},[531],{"type":47,"tag":332,"props":532,"children":533},{"class":334,"line":335},[534,538,542,546],{"type":47,"tag":332,"props":535,"children":536},{"style":339},[537],{"type":52,"value":326},{"type":47,"tag":332,"props":539,"children":540},{"style":344},[541],{"type":52,"value":347},{"type":47,"tag":332,"props":543,"children":544},{"style":344},[545],{"type":52,"value":352},{"type":47,"tag":332,"props":547,"children":548},{"style":344},[549],{"type":52,"value":550}," develop\n",{"type":47,"tag":55,"props":552,"children":553},{},[554],{"type":52,"value":555},"Use a minute-level tag when multiple builds may happen in one day:",{"type":47,"tag":205,"props":557,"children":559},{"className":324,"code":558,"language":326,"meta":210,"style":210},"bash scripts\u002Fbuild_image.sh \\\n    --mode product \\\n    --tag \"$(date -u +%Y%m%d-%H%M)\"\n",[560],{"type":47,"tag":77,"props":561,"children":562},{"__ignoreMap":210},[563,578,594],{"type":47,"tag":332,"props":564,"children":565},{"class":334,"line":335},[566,570,574],{"type":47,"tag":332,"props":567,"children":568},{"style":339},[569],{"type":52,"value":326},{"type":47,"tag":332,"props":571,"children":572},{"style":344},[573],{"type":52,"value":347},{"type":47,"tag":332,"props":575,"children":576},{"style":375},[577],{"type":52,"value":437},{"type":47,"tag":332,"props":579,"children":580},{"class":334,"line":407},[581,586,590],{"type":47,"tag":332,"props":582,"children":583},{"style":344},[584],{"type":52,"value":585},"    --mode",{"type":47,"tag":332,"props":587,"children":588},{"style":344},[589],{"type":52,"value":450},{"type":47,"tag":332,"props":591,"children":592},{"style":375},[593],{"type":52,"value":437},{"type":47,"tag":332,"props":595,"children":596},{"class":334,"line":27},[597,602,607,611,616],{"type":47,"tag":332,"props":598,"children":599},{"style":344},[600],{"type":52,"value":601},"    --tag",{"type":47,"tag":332,"props":603,"children":604},{"style":381},[605],{"type":52,"value":606}," \"$(",{"type":47,"tag":332,"props":608,"children":609},{"style":339},[610],{"type":52,"value":394},{"type":47,"tag":332,"props":612,"children":613},{"style":344},[614],{"type":52,"value":615}," -u +%Y%m%d-%H%M",{"type":47,"tag":332,"props":617,"children":618},{"style":381},[619],{"type":52,"value":404},{"type":47,"tag":107,"props":621,"children":623},{"id":622},"air-gapped-image",[624],{"type":52,"value":625},"Air-Gapped Image",{"type":47,"tag":55,"props":627,"children":628},{},[629,631,636],{"type":52,"value":630},"Use when the target environment has no network access and cannot pull\ncheckpoints at runtime. The airgapped build uses\n",{"type":47,"tag":77,"props":632,"children":634},{"className":633},[],[635],{"type":52,"value":248},{"type":52,"value":637},", which bakes all checkpoints into the\nimage layers. The result is self-contained (~75 GB+).",{"type":47,"tag":639,"props":640,"children":642},"h3",{"id":641},"canonical-command",[643],{"type":52,"value":644},"Canonical command",{"type":47,"tag":205,"props":646,"children":648},{"className":324,"code":647,"language":326,"meta":210,"style":210},"bash scripts\u002Fbuild_airgapped_image.sh \\\n    --mode product\n",[649],{"type":47,"tag":77,"props":650,"children":651},{"__ignoreMap":210},[652,668],{"type":47,"tag":332,"props":653,"children":654},{"class":334,"line":335},[655,659,664],{"type":47,"tag":332,"props":656,"children":657},{"style":339},[658],{"type":52,"value":326},{"type":47,"tag":332,"props":660,"children":661},{"style":344},[662],{"type":52,"value":663}," scripts\u002Fbuild_airgapped_image.sh",{"type":47,"tag":332,"props":665,"children":666},{"style":375},[667],{"type":52,"value":437},{"type":47,"tag":332,"props":669,"children":670},{"class":334,"line":407},[671,675],{"type":47,"tag":332,"props":672,"children":673},{"style":344},[674],{"type":52,"value":585},{"type":47,"tag":332,"props":676,"children":677},{"style":344},[678],{"type":52,"value":357},{"type":47,"tag":55,"props":680,"children":681},{},[682],{"type":52,"value":683},"The script:",{"type":47,"tag":685,"props":686,"children":687},"ol",{},[688,784,833],{"type":47,"tag":123,"props":689,"children":690},{},[691,696,698,704,706],{"type":47,"tag":69,"props":692,"children":693},{},[694],{"type":52,"value":695},"Checks all required checkpoints",{"type":52,"value":697}," in ",{"type":47,"tag":77,"props":699,"children":701},{"className":700},[],[702],{"type":52,"value":703},"checkpoints\u002F",{"type":52,"value":705}," (the paths the\nDockerfile COPYs in):",{"type":47,"tag":119,"props":707,"children":708},{},[709,718,727,736,745,754,765],{"type":47,"tag":123,"props":710,"children":711},{},[712],{"type":47,"tag":77,"props":713,"children":715},{"className":714},[],[716],{"type":52,"value":717},"checkpoints\u002Fnvidia\u002FCosmos-Predict2-2B-Text2Image\u002Fmodel.pt",{"type":47,"tag":123,"props":719,"children":720},{},[721],{"type":47,"tag":77,"props":722,"children":724},{"className":723},[],[725],{"type":52,"value":726},"checkpoints\u002Fnvidia\u002FCosmos-Predict2-14B-Text2Image\u002Fmodel.pt",{"type":47,"tag":123,"props":728,"children":729},{},[730],{"type":47,"tag":77,"props":731,"children":733},{"className":732},[],[734],{"type":52,"value":735},"checkpoints\u002FNVDINOV2\u002Fnv_dinov2_classification_model.ckpt",{"type":47,"tag":123,"props":737,"children":738},{},[739],{"type":47,"tag":77,"props":740,"children":742},{"className":741},[],[743],{"type":52,"value":744},"checkpoints\u002Fnvidia\u002FC-RADIO-V3\u002Fmodel.safetensors",{"type":47,"tag":123,"props":746,"children":747},{},[748],{"type":47,"tag":77,"props":749,"children":751},{"className":750},[],[752],{"type":52,"value":753},"checkpoints\u002Fsam2\u002Fsam2.1_hiera_large.pt",{"type":47,"tag":123,"props":755,"children":756},{},[757,763],{"type":47,"tag":77,"props":758,"children":760},{"className":759},[],[761],{"type":52,"value":762},"checkpoints\u002Ffacebook\u002Fdinov2-large\u002F",{"type":52,"value":764}," (non-empty)",{"type":47,"tag":123,"props":766,"children":767},{},[768,774,776,782],{"type":47,"tag":77,"props":769,"children":771},{"className":770},[],[772],{"type":52,"value":773},"checkpoints\u002Fgoogle-t5\u002Ft5-large\u002F",{"type":52,"value":775}," or ",{"type":47,"tag":77,"props":777,"children":779},{"className":778},[],[780],{"type":52,"value":781},"checkpoints\u002Fgoogle-t5\u002Ft5-11b\u002F",{"type":52,"value":783},"\n(at least one)",{"type":47,"tag":123,"props":785,"children":786},{},[787,792,794,800,802,808,810,816,817,823,825,831],{"type":47,"tag":69,"props":788,"children":789},{},[790],{"type":52,"value":791},"Auto-downloads",{"type":52,"value":793}," any missing checkpoints via\n",{"type":47,"tag":77,"props":795,"children":797},{"className":796},[],[798],{"type":52,"value":799},"scripts\u002Futilities\u002Fdownload_checkpoints.sh",{"type":52,"value":801},". This requires\n",{"type":47,"tag":77,"props":803,"children":805},{"className":804},[],[806],{"type":52,"value":807},"HF_TOKEN",{"type":52,"value":809}," to be exported and ",{"type":47,"tag":77,"props":811,"children":813},{"className":812},[],[814],{"type":52,"value":815},"huggingface-cli",{"type":52,"value":697},{"type":47,"tag":77,"props":818,"children":820},{"className":819},[],[821],{"type":52,"value":822},"PATH",{"type":52,"value":824},". If you do\nnot want auto-download, pass ",{"type":47,"tag":77,"props":826,"children":828},{"className":827},[],[829],{"type":52,"value":830},"--skip-download",{"type":52,"value":832}," and download manually\nwith the setup skill first.",{"type":47,"tag":123,"props":834,"children":835},{},[836,841],{"type":47,"tag":69,"props":837,"children":838},{},[839],{"type":52,"value":840},"Builds",{"type":52,"value":842}," the airgapped image after all checkpoints are confirmed present.",{"type":47,"tag":55,"props":844,"children":845},{},[846],{"type":52,"value":847},"Default image names:",{"type":47,"tag":849,"props":850,"children":851},"table",{},[852,871],{"type":47,"tag":853,"props":854,"children":855},"thead",{},[856],{"type":47,"tag":857,"props":858,"children":859},"tr",{},[860,866],{"type":47,"tag":861,"props":862,"children":863},"th",{},[864],{"type":52,"value":865},"Mode",{"type":47,"tag":861,"props":867,"children":868},{},[869],{"type":52,"value":870},"Tag",{"type":47,"tag":872,"props":873,"children":874},"tbody",{},[875,897],{"type":47,"tag":857,"props":876,"children":877},{},[878,888],{"type":47,"tag":879,"props":880,"children":881},"td",{},[882],{"type":47,"tag":77,"props":883,"children":885},{"className":884},[],[886],{"type":52,"value":887},"product",{"type":47,"tag":879,"props":889,"children":890},{},[891],{"type":47,"tag":77,"props":892,"children":894},{"className":893},[],[895],{"type":52,"value":896},"paidf-anomalygen-airgapped:\u003Cdate>",{"type":47,"tag":857,"props":898,"children":899},{},[900,909],{"type":47,"tag":879,"props":901,"children":902},{},[903],{"type":47,"tag":77,"props":904,"children":906},{"className":905},[],[907],{"type":52,"value":908},"develop",{"type":47,"tag":879,"props":910,"children":911},{},[912],{"type":47,"tag":77,"props":913,"children":915},{"className":914},[],[916],{"type":52,"value":917},"paidf-anomalygen-dev-airgapped:\u003Cdate>",{"type":47,"tag":55,"props":919,"children":920},{},[921],{"type":52,"value":922},"Options:",{"type":47,"tag":205,"props":924,"children":926},{"className":324,"code":925,"language":326,"meta":210,"style":210},"bash scripts\u002Fbuild_airgapped_image.sh \\\n    --mode product|develop \\\n    --tag YYYYMMDD \\\n    --checkpoint-dir checkpoints \\\n    --skip-download\n",[927],{"type":47,"tag":77,"props":928,"children":929},{"__ignoreMap":210},[930,945,969,985,1002],{"type":47,"tag":332,"props":931,"children":932},{"class":334,"line":335},[933,937,941],{"type":47,"tag":332,"props":934,"children":935},{"style":339},[936],{"type":52,"value":326},{"type":47,"tag":332,"props":938,"children":939},{"style":344},[940],{"type":52,"value":663},{"type":47,"tag":332,"props":942,"children":943},{"style":375},[944],{"type":52,"value":437},{"type":47,"tag":332,"props":946,"children":947},{"class":334,"line":407},[948,952,956,961,965],{"type":47,"tag":332,"props":949,"children":950},{"style":344},[951],{"type":52,"value":585},{"type":47,"tag":332,"props":953,"children":954},{"style":344},[955],{"type":52,"value":450},{"type":47,"tag":332,"props":957,"children":958},{"style":381},[959],{"type":52,"value":960},"|",{"type":47,"tag":332,"props":962,"children":963},{"style":339},[964],{"type":52,"value":908},{"type":47,"tag":332,"props":966,"children":967},{"style":375},[968],{"type":52,"value":437},{"type":47,"tag":332,"props":970,"children":971},{"class":334,"line":27},[972,976,981],{"type":47,"tag":332,"props":973,"children":974},{"style":344},[975],{"type":52,"value":601},{"type":47,"tag":332,"props":977,"children":978},{"style":344},[979],{"type":52,"value":980}," YYYYMMDD",{"type":47,"tag":332,"props":982,"children":983},{"style":375},[984],{"type":52,"value":437},{"type":47,"tag":332,"props":986,"children":987},{"class":334,"line":457},[988,993,998],{"type":47,"tag":332,"props":989,"children":990},{"style":344},[991],{"type":52,"value":992},"    --checkpoint-dir",{"type":47,"tag":332,"props":994,"children":995},{"style":344},[996],{"type":52,"value":997}," checkpoints",{"type":47,"tag":332,"props":999,"children":1000},{"style":375},[1001],{"type":52,"value":437},{"type":47,"tag":332,"props":1003,"children":1004},{"class":334,"line":475},[1005],{"type":47,"tag":332,"props":1006,"children":1007},{"style":344},[1008],{"type":52,"value":1009},"    --skip-download\n",{"type":47,"tag":639,"props":1011,"children":1013},{"id":1012},"running-the-air-gapped-image",[1014],{"type":52,"value":1015},"Running the air-gapped image",{"type":47,"tag":55,"props":1017,"children":1018},{},[1019],{"type":52,"value":1020},"No volume mounts required — checkpoints live inside the image:",{"type":47,"tag":205,"props":1022,"children":1024},{"className":324,"code":1023,"language":326,"meta":210,"style":210},"docker run --gpus all -it --rm --shm-size=16g \\\n    paidf-anomalygen-airgapped:\u003Ctag> bash\n",[1025],{"type":47,"tag":77,"props":1026,"children":1027},{"__ignoreMap":210},[1028,1069],{"type":47,"tag":332,"props":1029,"children":1030},{"class":334,"line":335},[1031,1035,1040,1045,1050,1055,1060,1065],{"type":47,"tag":332,"props":1032,"children":1033},{"style":339},[1034],{"type":52,"value":22},{"type":47,"tag":332,"props":1036,"children":1037},{"style":344},[1038],{"type":52,"value":1039}," run",{"type":47,"tag":332,"props":1041,"children":1042},{"style":344},[1043],{"type":52,"value":1044}," --gpus",{"type":47,"tag":332,"props":1046,"children":1047},{"style":344},[1048],{"type":52,"value":1049}," all",{"type":47,"tag":332,"props":1051,"children":1052},{"style":344},[1053],{"type":52,"value":1054}," -it",{"type":47,"tag":332,"props":1056,"children":1057},{"style":344},[1058],{"type":52,"value":1059}," --rm",{"type":47,"tag":332,"props":1061,"children":1062},{"style":344},[1063],{"type":52,"value":1064}," --shm-size=16g",{"type":47,"tag":332,"props":1066,"children":1067},{"style":375},[1068],{"type":52,"value":437},{"type":47,"tag":332,"props":1070,"children":1071},{"class":334,"line":407},[1072,1077,1082,1087,1092,1097],{"type":47,"tag":332,"props":1073,"children":1074},{"style":344},[1075],{"type":52,"value":1076},"    paidf-anomalygen-airgapped:",{"type":47,"tag":332,"props":1078,"children":1079},{"style":381},[1080],{"type":52,"value":1081},"\u003C",{"type":47,"tag":332,"props":1083,"children":1084},{"style":344},[1085],{"type":52,"value":1086},"ta",{"type":47,"tag":332,"props":1088,"children":1089},{"style":375},[1090],{"type":52,"value":1091},"g",{"type":47,"tag":332,"props":1093,"children":1094},{"style":381},[1095],{"type":52,"value":1096},">",{"type":47,"tag":332,"props":1098,"children":1099},{"style":344},[1100],{"type":52,"value":1101}," bash\n",{"type":47,"tag":639,"props":1103,"children":1105},{"id":1104},"delivering-to-an-air-gapped-host",[1106],{"type":52,"value":1107},"Delivering to an air-gapped host",{"type":47,"tag":205,"props":1109,"children":1111},{"className":324,"code":1110,"language":326,"meta":210,"style":210},"# on the build host\ndocker save paidf-anomalygen-airgapped:\u003Ctag> | gzip \\\n    > paidf-anomalygen-airgapped-\u003Ctag>.tar.gz\n\n# transfer the .tar.gz to the air-gapped host, then:\ndocker load \u003C paidf-anomalygen-airgapped-\u003Ctag>.tar.gz\ndocker run --gpus all -it --rm --shm-size=16g \\\n    paidf-anomalygen-airgapped:\u003Ctag> bash\n",[1112],{"type":47,"tag":77,"props":1113,"children":1114},{"__ignoreMap":210},[1115,1124,1171,1205,1214,1222,1263,1299],{"type":47,"tag":332,"props":1116,"children":1117},{"class":334,"line":335},[1118],{"type":47,"tag":332,"props":1119,"children":1121},{"style":1120},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1122],{"type":52,"value":1123},"# on the build host\n",{"type":47,"tag":332,"props":1125,"children":1126},{"class":334,"line":407},[1127,1131,1136,1141,1145,1149,1153,1157,1162,1167],{"type":47,"tag":332,"props":1128,"children":1129},{"style":339},[1130],{"type":52,"value":22},{"type":47,"tag":332,"props":1132,"children":1133},{"style":344},[1134],{"type":52,"value":1135}," save",{"type":47,"tag":332,"props":1137,"children":1138},{"style":344},[1139],{"type":52,"value":1140}," paidf-anomalygen-airgapped:",{"type":47,"tag":332,"props":1142,"children":1143},{"style":381},[1144],{"type":52,"value":1081},{"type":47,"tag":332,"props":1146,"children":1147},{"style":344},[1148],{"type":52,"value":1086},{"type":47,"tag":332,"props":1150,"children":1151},{"style":375},[1152],{"type":52,"value":1091},{"type":47,"tag":332,"props":1154,"children":1155},{"style":381},[1156],{"type":52,"value":1096},{"type":47,"tag":332,"props":1158,"children":1159},{"style":381},[1160],{"type":52,"value":1161}," |",{"type":47,"tag":332,"props":1163,"children":1164},{"style":339},[1165],{"type":52,"value":1166}," gzip",{"type":47,"tag":332,"props":1168,"children":1169},{"style":375},[1170],{"type":52,"value":437},{"type":47,"tag":332,"props":1172,"children":1173},{"class":334,"line":27},[1174,1179,1184,1188,1192,1196,1200],{"type":47,"tag":332,"props":1175,"children":1176},{"style":381},[1177],{"type":52,"value":1178},"    >",{"type":47,"tag":332,"props":1180,"children":1181},{"style":344},[1182],{"type":52,"value":1183}," paidf-anomalygen-airgapped-",{"type":47,"tag":332,"props":1185,"children":1186},{"style":381},[1187],{"type":52,"value":1081},{"type":47,"tag":332,"props":1189,"children":1190},{"style":344},[1191],{"type":52,"value":1086},{"type":47,"tag":332,"props":1193,"children":1194},{"style":375},[1195],{"type":52,"value":1091},{"type":47,"tag":332,"props":1197,"children":1198},{"style":381},[1199],{"type":52,"value":1096},{"type":47,"tag":332,"props":1201,"children":1202},{"style":344},[1203],{"type":52,"value":1204},".tar.gz\n",{"type":47,"tag":332,"props":1206,"children":1207},{"class":334,"line":457},[1208],{"type":47,"tag":332,"props":1209,"children":1211},{"emptyLinePlaceholder":1210},true,[1212],{"type":52,"value":1213},"\n",{"type":47,"tag":332,"props":1215,"children":1216},{"class":334,"line":475},[1217],{"type":47,"tag":332,"props":1218,"children":1219},{"style":1120},[1220],{"type":52,"value":1221},"# transfer the .tar.gz to the air-gapped host, then:\n",{"type":47,"tag":332,"props":1223,"children":1224},{"class":334,"line":512},[1225,1229,1234,1239,1243,1247,1251,1255,1259],{"type":47,"tag":332,"props":1226,"children":1227},{"style":339},[1228],{"type":52,"value":22},{"type":47,"tag":332,"props":1230,"children":1231},{"style":344},[1232],{"type":52,"value":1233}," load",{"type":47,"tag":332,"props":1235,"children":1236},{"style":381},[1237],{"type":52,"value":1238}," \u003C",{"type":47,"tag":332,"props":1240,"children":1241},{"style":344},[1242],{"type":52,"value":1183},{"type":47,"tag":332,"props":1244,"children":1245},{"style":381},[1246],{"type":52,"value":1081},{"type":47,"tag":332,"props":1248,"children":1249},{"style":344},[1250],{"type":52,"value":1086},{"type":47,"tag":332,"props":1252,"children":1253},{"style":375},[1254],{"type":52,"value":1091},{"type":47,"tag":332,"props":1256,"children":1257},{"style":381},[1258],{"type":52,"value":1096},{"type":47,"tag":332,"props":1260,"children":1261},{"style":344},[1262],{"type":52,"value":1204},{"type":47,"tag":332,"props":1264,"children":1266},{"class":334,"line":1265},7,[1267,1271,1275,1279,1283,1287,1291,1295],{"type":47,"tag":332,"props":1268,"children":1269},{"style":339},[1270],{"type":52,"value":22},{"type":47,"tag":332,"props":1272,"children":1273},{"style":344},[1274],{"type":52,"value":1039},{"type":47,"tag":332,"props":1276,"children":1277},{"style":344},[1278],{"type":52,"value":1044},{"type":47,"tag":332,"props":1280,"children":1281},{"style":344},[1282],{"type":52,"value":1049},{"type":47,"tag":332,"props":1284,"children":1285},{"style":344},[1286],{"type":52,"value":1054},{"type":47,"tag":332,"props":1288,"children":1289},{"style":344},[1290],{"type":52,"value":1059},{"type":47,"tag":332,"props":1292,"children":1293},{"style":344},[1294],{"type":52,"value":1064},{"type":47,"tag":332,"props":1296,"children":1297},{"style":375},[1298],{"type":52,"value":437},{"type":47,"tag":332,"props":1300,"children":1302},{"class":334,"line":1301},8,[1303,1307,1311,1315,1319,1323],{"type":47,"tag":332,"props":1304,"children":1305},{"style":344},[1306],{"type":52,"value":1076},{"type":47,"tag":332,"props":1308,"children":1309},{"style":381},[1310],{"type":52,"value":1081},{"type":47,"tag":332,"props":1312,"children":1313},{"style":344},[1314],{"type":52,"value":1086},{"type":47,"tag":332,"props":1316,"children":1317},{"style":375},[1318],{"type":52,"value":1091},{"type":47,"tag":332,"props":1320,"children":1321},{"style":381},[1322],{"type":52,"value":1096},{"type":47,"tag":332,"props":1324,"children":1325},{"style":344},[1326],{"type":52,"value":1101},{"type":47,"tag":107,"props":1328,"children":1330},{"id":1329},"product-filesystem-policy",[1331],{"type":52,"value":1332},"Product Filesystem Policy",{"type":47,"tag":55,"props":1334,"children":1335},{},[1336],{"type":52,"value":1337},"The product image should run as a non-root runtime user. Only production\nimplementation paths should be non-writable. Runtime data, artifacts,\ncheckpoints, caches, and logs should remain writable.",{"type":47,"tag":55,"props":1339,"children":1340},{},[1341],{"type":52,"value":1342},"Production paths expected to be non-writable in product containers and writable\nin develop containers:",{"type":47,"tag":205,"props":1344,"children":1347},{"className":1345,"code":1346,"language":52,"meta":210},[208],"\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcosmos_predict2\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fscripts\u002Fanomaly_gen\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fscripts\u002Futilities\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002F.agents\u002Fskills\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002FREADME.md\n\u002Fworkspace\u002Fpaidf-anomalygen\u002FCLAUDE.md\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fdocker\u002FDockerfile*\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Frequirements*.txt\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcosmos-predict2-cuda128.yaml\n",[1348],{"type":47,"tag":77,"props":1349,"children":1350},{"__ignoreMap":210},[1351],{"type":52,"value":1346},{"type":47,"tag":55,"props":1353,"children":1354},{},[1355],{"type":52,"value":1356},"Runtime paths expected to be writable in both modes:",{"type":47,"tag":205,"props":1358,"children":1361},{"className":1359,"code":1360,"language":52,"meta":210},[208],"\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_configs\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_inference\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fdatasets\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcheckpoints\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Flogs\u002F\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Ftmp\u002F\n\u002Ftmp\u002F\nthe runtime user's `$HOME` (`\u002Fhome\u002Fanomalygen\u002F` in product images)\nthe runtime user's `$HOME\u002F.cache` (used by HF, torch.compile, and triton)\n",[1362],{"type":47,"tag":77,"props":1363,"children":1364},{"__ignoreMap":210},[1365],{"type":52,"value":1360},{"type":47,"tag":55,"props":1367,"children":1368},{},[1369],{"type":52,"value":1370},"In addition to the top-level directories above, the validator probes a set of\nnested paths that AnomalyGen actually writes to during training, SDG, and\nrefine. Top-level writability alone can miss ownership issues on mounted\nvolumes or pre-created subdirectories, so each of these must also be writable:",{"type":47,"tag":205,"props":1372,"children":1375},{"className":1373,"code":1374,"language":52,"meta":210},[208],"# Training output\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002Fanomaly_gen\u002F_permission_test\u002Fcheckpoints\u002Fmodel\n\n# SDG output (original and searched buckets, plus per-round refine)\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002Freconstructed_image\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002Foriginal_mask\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002Foverlay_image\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Fsearched\u002Freconstructed_image\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Frounds\u002Fround_001\u002Fsdg\u002Freconstructed_image\n\n# AMP cache\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_inference\u002F_permission_test\u002Famp\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fag_inference\u002F_permission_test\u002Fresized_masks\n\n# torch.compile \u002F triton cache\n$HOME\u002F.cache\u002Fpaidf-anomalygen\u002Ftorch_inductor\n$HOME\u002F.cache\u002Fpaidf-anomalygen\u002Ftriton\n\n# Hugging Face cache\n$HOME\u002F.cache\u002Fhuggingface\n",[1376],{"type":47,"tag":77,"props":1377,"children":1378},{"__ignoreMap":210},[1379],{"type":52,"value":1374},{"type":47,"tag":55,"props":1381,"children":1382},{},[1383,1385,1391],{"type":52,"value":1384},"The validator also probes that ",{"type":47,"tag":77,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":52,"value":1390},"SDG_result.csv",{"type":52,"value":1392}," can be created and written\nunder each of the SDG bucket roots:",{"type":47,"tag":205,"props":1394,"children":1397},{"className":1395,"code":1396,"language":52,"meta":210},[208],"\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Foriginal\u002FSDG_result.csv\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Fsearched\u002FSDG_result.csv\n\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\u002F_permission_test\u002Frounds\u002Fround_001\u002Fsdg\u002FSDG_result.csv\n",[1398],{"type":47,"tag":77,"props":1399,"children":1400},{"__ignoreMap":210},[1401],{"type":52,"value":1396},{"type":47,"tag":55,"props":1403,"children":1404},{},[1405,1407,1412,1414,1420],{"type":52,"value":1406},"This ",{"type":47,"tag":77,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":52,"value":1390},{"type":52,"value":1413}," probe exists so the validator can fail fast on\nread-only mounts where SDG would later be unable to record its index. It does\nnot mean this release skill runs SDG itself; SDG generation remains\nout-of-scope for the release workflow (see Scope above) and is handled by the\n",{"type":47,"tag":77,"props":1415,"children":1417},{"className":1416},[],[1418],{"type":52,"value":1419},"sdg-inference",{"type":52,"value":1421}," skill.",{"type":47,"tag":55,"props":1423,"children":1424},{},[1425,1427,1432],{"type":52,"value":1426},"If a product image does not set ",{"type":47,"tag":77,"props":1428,"children":1430},{"className":1429},[],[1431],{"type":52,"value":138},{"type":52,"value":1433},", runs as root, or\nleaves production code writable, treat the image as not productized.",{"type":47,"tag":107,"props":1435,"children":1437},{"id":1436},"pre-build-checklist",[1438],{"type":52,"value":1439},"Pre-Build Checklist",{"type":47,"tag":55,"props":1441,"children":1442},{},[1443],{"type":52,"value":1444},"Before building:",{"type":47,"tag":685,"props":1446,"children":1447},{},[1448,1482,1519],{"type":47,"tag":123,"props":1449,"children":1450},{},[1451,1453],{"type":52,"value":1452},"Verify these files exist:\n",{"type":47,"tag":119,"props":1454,"children":1455},{},[1456,1464,1473],{"type":47,"tag":123,"props":1457,"children":1458},{},[1459],{"type":47,"tag":77,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":52,"value":240},{"type":47,"tag":123,"props":1465,"children":1466},{},[1467],{"type":47,"tag":77,"props":1468,"children":1470},{"className":1469},[],[1471],{"type":52,"value":1472},"cosmos-predict2-cuda128.yaml",{"type":47,"tag":123,"props":1474,"children":1475},{},[1476],{"type":47,"tag":77,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":52,"value":1481},"requirements-conda-cuda128.txt",{"type":47,"tag":123,"props":1483,"children":1484},{},[1485,1487],{"type":52,"value":1486},"Verify the Docker build context does not intentionally include secrets:\n",{"type":47,"tag":119,"props":1488,"children":1489},{},[1490,1499,1504,1509,1514],{"type":47,"tag":123,"props":1491,"children":1492},{},[1493],{"type":47,"tag":77,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":52,"value":1498},".env",{"type":47,"tag":123,"props":1500,"children":1501},{},[1502],{"type":52,"value":1503},"token files",{"type":47,"tag":123,"props":1505,"children":1506},{},[1507],{"type":52,"value":1508},"SSH keys",{"type":47,"tag":123,"props":1510,"children":1511},{},[1512],{"type":52,"value":1513},"private datasets",{"type":47,"tag":123,"props":1515,"children":1516},{},[1517],{"type":52,"value":1518},"user result folders",{"type":47,"tag":123,"props":1520,"children":1521},{},[1522,1524],{"type":52,"value":1523},"Decide checkpoint strategy for product images:\n",{"type":47,"tag":119,"props":1525,"children":1526},{},[1527,1532],{"type":47,"tag":123,"props":1528,"children":1529},{},[1530],{"type":52,"value":1531},"Thin image: checkpoints mounted or downloaded at runtime.",{"type":47,"tag":123,"props":1533,"children":1534},{},[1535],{"type":52,"value":1536},"Fat image: checkpoints copied into image. This is large and should be\nexplicitly requested.",{"type":47,"tag":107,"props":1538,"children":1540},{"id":1539},"validation",[1541],{"type":52,"value":1542},"Validation",{"type":47,"tag":55,"props":1544,"children":1545},{},[1546],{"type":52,"value":1547},"After building a product image:",{"type":47,"tag":205,"props":1549,"children":1551},{"className":324,"code":1550,"language":326,"meta":210,"style":210},"bash scripts\u002Fvalidate_image_permissions.sh \\\n    --mode product \\\n    \"paidf-anomalygen:${DATE_TAG}\"\n",[1552],{"type":47,"tag":77,"props":1553,"children":1554},{"__ignoreMap":210},[1555,1571,1586],{"type":47,"tag":332,"props":1556,"children":1557},{"class":334,"line":335},[1558,1562,1567],{"type":47,"tag":332,"props":1559,"children":1560},{"style":339},[1561],{"type":52,"value":326},{"type":47,"tag":332,"props":1563,"children":1564},{"style":344},[1565],{"type":52,"value":1566}," scripts\u002Fvalidate_image_permissions.sh",{"type":47,"tag":332,"props":1568,"children":1569},{"style":375},[1570],{"type":52,"value":437},{"type":47,"tag":332,"props":1572,"children":1573},{"class":334,"line":407},[1574,1578,1582],{"type":47,"tag":332,"props":1575,"children":1576},{"style":344},[1577],{"type":52,"value":585},{"type":47,"tag":332,"props":1579,"children":1580},{"style":344},[1581],{"type":52,"value":450},{"type":47,"tag":332,"props":1583,"children":1584},{"style":375},[1585],{"type":52,"value":437},{"type":47,"tag":332,"props":1587,"children":1588},{"class":334,"line":27},[1589,1594,1598,1602,1606],{"type":47,"tag":332,"props":1590,"children":1591},{"style":381},[1592],{"type":52,"value":1593},"    \"",{"type":47,"tag":332,"props":1595,"children":1596},{"style":344},[1597],{"type":52,"value":491},{"type":47,"tag":332,"props":1599,"children":1600},{"style":381},[1601],{"type":52,"value":496},{"type":47,"tag":332,"props":1603,"children":1604},{"style":375},[1605],{"type":52,"value":378},{"type":47,"tag":332,"props":1607,"children":1608},{"style":381},[1609],{"type":52,"value":1610},"}\"\n",{"type":47,"tag":55,"props":1612,"children":1613},{},[1614],{"type":52,"value":1615},"After building a develop image:",{"type":47,"tag":205,"props":1617,"children":1619},{"className":324,"code":1618,"language":326,"meta":210,"style":210},"bash scripts\u002Fvalidate_image_permissions.sh \\\n    --mode develop \\\n    \"paidf-anomalygen-dev:${DATE_TAG}\"\n",[1620],{"type":47,"tag":77,"props":1621,"children":1622},{"__ignoreMap":210},[1623,1638,1654],{"type":47,"tag":332,"props":1624,"children":1625},{"class":334,"line":335},[1626,1630,1634],{"type":47,"tag":332,"props":1627,"children":1628},{"style":339},[1629],{"type":52,"value":326},{"type":47,"tag":332,"props":1631,"children":1632},{"style":344},[1633],{"type":52,"value":1566},{"type":47,"tag":332,"props":1635,"children":1636},{"style":375},[1637],{"type":52,"value":437},{"type":47,"tag":332,"props":1639,"children":1640},{"class":334,"line":407},[1641,1645,1650],{"type":47,"tag":332,"props":1642,"children":1643},{"style":344},[1644],{"type":52,"value":585},{"type":47,"tag":332,"props":1646,"children":1647},{"style":344},[1648],{"type":52,"value":1649}," develop",{"type":47,"tag":332,"props":1651,"children":1652},{"style":375},[1653],{"type":52,"value":437},{"type":47,"tag":332,"props":1655,"children":1656},{"class":334,"line":27},[1657,1661,1666,1670,1674],{"type":47,"tag":332,"props":1658,"children":1659},{"style":381},[1660],{"type":52,"value":1593},{"type":47,"tag":332,"props":1662,"children":1663},{"style":344},[1664],{"type":52,"value":1665},"paidf-anomalygen-dev:",{"type":47,"tag":332,"props":1667,"children":1668},{"style":381},[1669],{"type":52,"value":496},{"type":47,"tag":332,"props":1671,"children":1672},{"style":375},[1673],{"type":52,"value":378},{"type":47,"tag":332,"props":1675,"children":1676},{"style":381},[1677],{"type":52,"value":1610},{"type":47,"tag":55,"props":1679,"children":1680},{},[1681],{"type":52,"value":1682},"If validation fails, do not call the image ready for its intended mode.",{"type":47,"tag":107,"props":1684,"children":1686},{"id":1685},"running-the-container",[1687],{"type":52,"value":1688},"Running the Container",{"type":47,"tag":1690,"props":1691,"children":1692},"blockquote",{},[1693],{"type":47,"tag":55,"props":1694,"children":1695},{},[1696,1701,1703,1709,1711,1717,1719,1725],{"type":47,"tag":69,"props":1697,"children":1698},{},[1699],{"type":52,"value":1700},"Warning:",{"type":52,"value":1702}," always pass ",{"type":47,"tag":77,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":52,"value":1708},"--shm-size",{"type":52,"value":1710}," (minimum ",{"type":47,"tag":77,"props":1712,"children":1714},{"className":1713},[],[1715],{"type":52,"value":1716},"16g",{"type":52,"value":1718},"). PyTorch DataLoader\nuses ",{"type":47,"tag":77,"props":1720,"children":1722},{"className":1721},[],[1723],{"type":52,"value":1724},"\u002Fdev\u002Fshm",{"type":52,"value":1726}," for multiprocessing shared memory; the Docker default of\n64 MB causes \"Bus error\" crashes or silent hangs during training and\ninference. Remind the user of this flag whenever reporting a completed build.",{"type":47,"tag":55,"props":1728,"children":1729},{},[1730],{"type":52,"value":321},{"type":47,"tag":205,"props":1732,"children":1734},{"className":324,"code":1733,"language":326,"meta":210,"style":210},"TAG=\"paidf-anomalygen:$(date -u +%Y%m%d)\"\nREPO=\"$PWD\"\ndocker run --rm -it --gpus all --shm-size=16g \\\n    -v \"${REPO}\u002Fcheckpoints:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcheckpoints\" \\\n    -v \"${REPO}\u002Fdatasets:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fdatasets\" \\\n    -v \"${REPO}\u002Fresults:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults\" \\\n    \"${TAG}\" \\\n    bash\n",[1735],{"type":47,"tag":77,"props":1736,"children":1737},{"__ignoreMap":210},[1738,1776,1802,1837,1872,1904,1936,1956],{"type":47,"tag":332,"props":1739,"children":1740},{"class":334,"line":335},[1741,1746,1750,1755,1759,1764,1768,1772],{"type":47,"tag":332,"props":1742,"children":1743},{"style":375},[1744],{"type":52,"value":1745},"TAG",{"type":47,"tag":332,"props":1747,"children":1748},{"style":381},[1749],{"type":52,"value":384},{"type":47,"tag":332,"props":1751,"children":1752},{"style":381},[1753],{"type":52,"value":1754},"\"",{"type":47,"tag":332,"props":1756,"children":1757},{"style":344},[1758],{"type":52,"value":491},{"type":47,"tag":332,"props":1760,"children":1761},{"style":381},[1762],{"type":52,"value":1763},"$(",{"type":47,"tag":332,"props":1765,"children":1766},{"style":339},[1767],{"type":52,"value":394},{"type":47,"tag":332,"props":1769,"children":1770},{"style":344},[1771],{"type":52,"value":399},{"type":47,"tag":332,"props":1773,"children":1774},{"style":381},[1775],{"type":52,"value":404},{"type":47,"tag":332,"props":1777,"children":1778},{"class":334,"line":407},[1779,1784,1788,1792,1797],{"type":47,"tag":332,"props":1780,"children":1781},{"style":375},[1782],{"type":52,"value":1783},"REPO",{"type":47,"tag":332,"props":1785,"children":1786},{"style":381},[1787],{"type":52,"value":384},{"type":47,"tag":332,"props":1789,"children":1790},{"style":381},[1791],{"type":52,"value":1754},{"type":47,"tag":332,"props":1793,"children":1794},{"style":375},[1795],{"type":52,"value":1796},"$PWD",{"type":47,"tag":332,"props":1798,"children":1799},{"style":381},[1800],{"type":52,"value":1801},"\"\n",{"type":47,"tag":332,"props":1803,"children":1804},{"class":334,"line":27},[1805,1809,1813,1817,1821,1825,1829,1833],{"type":47,"tag":332,"props":1806,"children":1807},{"style":339},[1808],{"type":52,"value":22},{"type":47,"tag":332,"props":1810,"children":1811},{"style":344},[1812],{"type":52,"value":1039},{"type":47,"tag":332,"props":1814,"children":1815},{"style":344},[1816],{"type":52,"value":1059},{"type":47,"tag":332,"props":1818,"children":1819},{"style":344},[1820],{"type":52,"value":1054},{"type":47,"tag":332,"props":1822,"children":1823},{"style":344},[1824],{"type":52,"value":1044},{"type":47,"tag":332,"props":1826,"children":1827},{"style":344},[1828],{"type":52,"value":1049},{"type":47,"tag":332,"props":1830,"children":1831},{"style":344},[1832],{"type":52,"value":1064},{"type":47,"tag":332,"props":1834,"children":1835},{"style":375},[1836],{"type":52,"value":437},{"type":47,"tag":332,"props":1838,"children":1839},{"class":334,"line":457},[1840,1845,1850,1854,1859,1864,1868],{"type":47,"tag":332,"props":1841,"children":1842},{"style":344},[1843],{"type":52,"value":1844},"    -v",{"type":47,"tag":332,"props":1846,"children":1847},{"style":381},[1848],{"type":52,"value":1849}," \"${",{"type":47,"tag":332,"props":1851,"children":1852},{"style":375},[1853],{"type":52,"value":1783},{"type":47,"tag":332,"props":1855,"children":1856},{"style":381},[1857],{"type":52,"value":1858},"}",{"type":47,"tag":332,"props":1860,"children":1861},{"style":344},[1862],{"type":52,"value":1863},"\u002Fcheckpoints:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fcheckpoints",{"type":47,"tag":332,"props":1865,"children":1866},{"style":381},[1867],{"type":52,"value":1754},{"type":47,"tag":332,"props":1869,"children":1870},{"style":375},[1871],{"type":52,"value":437},{"type":47,"tag":332,"props":1873,"children":1874},{"class":334,"line":475},[1875,1879,1883,1887,1891,1896,1900],{"type":47,"tag":332,"props":1876,"children":1877},{"style":344},[1878],{"type":52,"value":1844},{"type":47,"tag":332,"props":1880,"children":1881},{"style":381},[1882],{"type":52,"value":1849},{"type":47,"tag":332,"props":1884,"children":1885},{"style":375},[1886],{"type":52,"value":1783},{"type":47,"tag":332,"props":1888,"children":1889},{"style":381},[1890],{"type":52,"value":1858},{"type":47,"tag":332,"props":1892,"children":1893},{"style":344},[1894],{"type":52,"value":1895},"\u002Fdatasets:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fdatasets",{"type":47,"tag":332,"props":1897,"children":1898},{"style":381},[1899],{"type":52,"value":1754},{"type":47,"tag":332,"props":1901,"children":1902},{"style":375},[1903],{"type":52,"value":437},{"type":47,"tag":332,"props":1905,"children":1906},{"class":334,"line":512},[1907,1911,1915,1919,1923,1928,1932],{"type":47,"tag":332,"props":1908,"children":1909},{"style":344},[1910],{"type":52,"value":1844},{"type":47,"tag":332,"props":1912,"children":1913},{"style":381},[1914],{"type":52,"value":1849},{"type":47,"tag":332,"props":1916,"children":1917},{"style":375},[1918],{"type":52,"value":1783},{"type":47,"tag":332,"props":1920,"children":1921},{"style":381},[1922],{"type":52,"value":1858},{"type":47,"tag":332,"props":1924,"children":1925},{"style":344},[1926],{"type":52,"value":1927},"\u002Fresults:\u002Fworkspace\u002Fpaidf-anomalygen\u002Fresults",{"type":47,"tag":332,"props":1929,"children":1930},{"style":381},[1931],{"type":52,"value":1754},{"type":47,"tag":332,"props":1933,"children":1934},{"style":375},[1935],{"type":52,"value":437},{"type":47,"tag":332,"props":1937,"children":1938},{"class":334,"line":1265},[1939,1944,1948,1952],{"type":47,"tag":332,"props":1940,"children":1941},{"style":381},[1942],{"type":52,"value":1943},"    \"${",{"type":47,"tag":332,"props":1945,"children":1946},{"style":375},[1947],{"type":52,"value":1745},{"type":47,"tag":332,"props":1949,"children":1950},{"style":381},[1951],{"type":52,"value":505},{"type":47,"tag":332,"props":1953,"children":1954},{"style":375},[1955],{"type":52,"value":437},{"type":47,"tag":332,"props":1957,"children":1958},{"class":334,"line":1301},[1959],{"type":47,"tag":332,"props":1960,"children":1961},{"style":344},[1962],{"type":52,"value":1963},"    bash\n",{"type":47,"tag":55,"props":1965,"children":1966},{},[1967],{"type":52,"value":523},{"type":47,"tag":205,"props":1969,"children":1971},{"className":324,"code":1970,"language":326,"meta":210,"style":210},"TAG=\"paidf-anomalygen-dev:$(date -u +%Y%m%d)\"\nREPO=\"$PWD\"\ndocker run --rm -it --gpus all --shm-size=16g \\\n    -v \"${REPO}:\u002Fworkspace\u002Fpaidf-anomalygen\" \\\n    \"${TAG}\" \\\n    bash\n",[1972],{"type":47,"tag":77,"props":1973,"children":1974},{"__ignoreMap":210},[1975,2010,2033,2068,2100,2119],{"type":47,"tag":332,"props":1976,"children":1977},{"class":334,"line":335},[1978,1982,1986,1990,1994,1998,2002,2006],{"type":47,"tag":332,"props":1979,"children":1980},{"style":375},[1981],{"type":52,"value":1745},{"type":47,"tag":332,"props":1983,"children":1984},{"style":381},[1985],{"type":52,"value":384},{"type":47,"tag":332,"props":1987,"children":1988},{"style":381},[1989],{"type":52,"value":1754},{"type":47,"tag":332,"props":1991,"children":1992},{"style":344},[1993],{"type":52,"value":1665},{"type":47,"tag":332,"props":1995,"children":1996},{"style":381},[1997],{"type":52,"value":1763},{"type":47,"tag":332,"props":1999,"children":2000},{"style":339},[2001],{"type":52,"value":394},{"type":47,"tag":332,"props":2003,"children":2004},{"style":344},[2005],{"type":52,"value":399},{"type":47,"tag":332,"props":2007,"children":2008},{"style":381},[2009],{"type":52,"value":404},{"type":47,"tag":332,"props":2011,"children":2012},{"class":334,"line":407},[2013,2017,2021,2025,2029],{"type":47,"tag":332,"props":2014,"children":2015},{"style":375},[2016],{"type":52,"value":1783},{"type":47,"tag":332,"props":2018,"children":2019},{"style":381},[2020],{"type":52,"value":384},{"type":47,"tag":332,"props":2022,"children":2023},{"style":381},[2024],{"type":52,"value":1754},{"type":47,"tag":332,"props":2026,"children":2027},{"style":375},[2028],{"type":52,"value":1796},{"type":47,"tag":332,"props":2030,"children":2031},{"style":381},[2032],{"type":52,"value":1801},{"type":47,"tag":332,"props":2034,"children":2035},{"class":334,"line":27},[2036,2040,2044,2048,2052,2056,2060,2064],{"type":47,"tag":332,"props":2037,"children":2038},{"style":339},[2039],{"type":52,"value":22},{"type":47,"tag":332,"props":2041,"children":2042},{"style":344},[2043],{"type":52,"value":1039},{"type":47,"tag":332,"props":2045,"children":2046},{"style":344},[2047],{"type":52,"value":1059},{"type":47,"tag":332,"props":2049,"children":2050},{"style":344},[2051],{"type":52,"value":1054},{"type":47,"tag":332,"props":2053,"children":2054},{"style":344},[2055],{"type":52,"value":1044},{"type":47,"tag":332,"props":2057,"children":2058},{"style":344},[2059],{"type":52,"value":1049},{"type":47,"tag":332,"props":2061,"children":2062},{"style":344},[2063],{"type":52,"value":1064},{"type":47,"tag":332,"props":2065,"children":2066},{"style":375},[2067],{"type":52,"value":437},{"type":47,"tag":332,"props":2069,"children":2070},{"class":334,"line":457},[2071,2075,2079,2083,2087,2092,2096],{"type":47,"tag":332,"props":2072,"children":2073},{"style":344},[2074],{"type":52,"value":1844},{"type":47,"tag":332,"props":2076,"children":2077},{"style":381},[2078],{"type":52,"value":1849},{"type":47,"tag":332,"props":2080,"children":2081},{"style":375},[2082],{"type":52,"value":1783},{"type":47,"tag":332,"props":2084,"children":2085},{"style":381},[2086],{"type":52,"value":1858},{"type":47,"tag":332,"props":2088,"children":2089},{"style":344},[2090],{"type":52,"value":2091},":\u002Fworkspace\u002Fpaidf-anomalygen",{"type":47,"tag":332,"props":2093,"children":2094},{"style":381},[2095],{"type":52,"value":1754},{"type":47,"tag":332,"props":2097,"children":2098},{"style":375},[2099],{"type":52,"value":437},{"type":47,"tag":332,"props":2101,"children":2102},{"class":334,"line":475},[2103,2107,2111,2115],{"type":47,"tag":332,"props":2104,"children":2105},{"style":381},[2106],{"type":52,"value":1943},{"type":47,"tag":332,"props":2108,"children":2109},{"style":375},[2110],{"type":52,"value":1745},{"type":47,"tag":332,"props":2112,"children":2113},{"style":381},[2114],{"type":52,"value":505},{"type":47,"tag":332,"props":2116,"children":2117},{"style":375},[2118],{"type":52,"value":437},{"type":47,"tag":332,"props":2120,"children":2121},{"class":334,"line":512},[2122],{"type":47,"tag":332,"props":2123,"children":2124},{"style":344},[2125],{"type":52,"value":1963},{"type":47,"tag":107,"props":2127,"children":2129},{"id":2128},"release-summary",[2130],{"type":52,"value":2131},"Release Summary",{"type":47,"tag":55,"props":2133,"children":2134},{},[2135],{"type":52,"value":2136},"Report:",{"type":47,"tag":205,"props":2138,"children":2141},{"className":2139,"code":2140,"language":52,"meta":210},[208],"Image: paidf-anomalygen:\u003Ctag>\nMode: product | develop\nImage ID: \u003Cdocker image id>\nDockerfile: docker\u002FDockerfile.cuda128\nANOMALYGEN_PRODUCT_MODE: set | unset | failed validation\nProduction code: non-writable | writable | failed validation\nRuntime paths: writable | failed validation\nCheckpoint strategy: thin | fat | unknown\nNotes: \u003Cwarnings, if any>\n",[2142],{"type":47,"tag":77,"props":2143,"children":2144},{"__ignoreMap":210},[2145],{"type":52,"value":2140},{"type":47,"tag":2147,"props":2148,"children":2149},"style",{},[2150],{"type":52,"value":2151},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2153,"total":27},[2154,2171,2184],{"slug":2155,"name":2155,"fn":2156,"description":2157,"org":2158,"tags":2159,"stars":23,"repoUrl":24,"updatedAt":2170},"anomalygen","generate synthetic anomaly images with AnomalyGen","PAIDF AnomalyGen pipeline — fine-tune, generate synthetic anomaly images (SDG), evaluate quality (nn_score), and per-sample search. Modes: full (train + generate), finetune_only, inference_only (from checkpoint). Invoke for any AnomalyGen \u002F SDG \u002F fine-tune \u002F synthetic-anomaly task — even if the user only mentions one phase.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2160,2163,2166,2169],{"name":2161,"slug":2162,"type":15},"Evals","evals",{"name":2164,"slug":2165,"type":15},"Image Generation","image-generation",{"name":2167,"slug":2168,"type":15},"Machine Learning","machine-learning",{"name":9,"slug":8,"type":15},"2026-07-14T05:31:18.720185",{"slug":2172,"name":2172,"fn":2173,"description":2174,"org":2175,"tags":2176,"stars":23,"repoUrl":24,"updatedAt":2183},"anomalygen-guard","perform runtime guardrails for AnomalyGen","Product runtime guardrails and preflight validation for PAIDF AnomalyGen. Use only when ANOMALYGEN_PRODUCT_MODE=1, typically inside the product container, before training, inference, evaluation, refinement, filtering, artifact edits, or release runtime validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2177,2178,2179,2182],{"name":2167,"slug":2168,"type":15},{"name":9,"slug":8,"type":15},{"name":2180,"slug":2181,"type":15},"Security","security",{"name":1542,"slug":1539,"type":15},"2026-07-14T05:31:20.483849",{"slug":4,"name":4,"fn":5,"description":6,"org":2185,"tags":2186,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2187,2188,2189,2190],{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"items":2192,"total":2347},[2193,2211,2227,2238,2250,2264,2277,2289,2302,2313,2327,2336],{"slug":2194,"name":2194,"fn":2195,"description":2196,"org":2197,"tags":2198,"stars":2208,"repoUrl":2209,"updatedAt":2210},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2199,2202,2205],{"name":2200,"slug":2201,"type":15},"Documentation","documentation",{"name":2203,"slug":2204,"type":15},"MCP","mcp",{"name":2206,"slug":2207,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2212,"name":2212,"fn":2213,"description":2214,"org":2215,"tags":2216,"stars":2224,"repoUrl":2225,"updatedAt":2226},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2217,2220,2221],{"name":2218,"slug":2219,"type":15},"Containers","containers",{"name":13,"slug":14,"type":15},{"name":2222,"slug":2223,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2228,"name":2228,"fn":2229,"description":2230,"org":2231,"tags":2232,"stars":2224,"repoUrl":2225,"updatedAt":2237},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2233,2236],{"name":2234,"slug":2235,"type":15},"CI\u002FCD","ci-cd",{"name":13,"slug":14,"type":15},"2026-07-14T05:25:59.97109",{"slug":2239,"name":2239,"fn":2240,"description":2241,"org":2242,"tags":2243,"stars":2224,"repoUrl":2225,"updatedAt":2249},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2244,2245,2246],{"name":2234,"slug":2235,"type":15},{"name":13,"slug":14,"type":15},{"name":2247,"slug":2248,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2251,"name":2251,"fn":2252,"description":2253,"org":2254,"tags":2255,"stars":2224,"repoUrl":2225,"updatedAt":2263},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2256,2259,2260],{"name":2257,"slug":2258,"type":15},"Debugging","debugging",{"name":2247,"slug":2248,"type":15},{"name":2261,"slug":2262,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2265,"name":2265,"fn":2266,"description":2267,"org":2268,"tags":2269,"stars":2224,"repoUrl":2225,"updatedAt":2276},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2270,2273],{"name":2271,"slug":2272,"type":15},"Best Practices","best-practices",{"name":2274,"slug":2275,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2278,"name":2278,"fn":2279,"description":2280,"org":2281,"tags":2282,"stars":2224,"repoUrl":2225,"updatedAt":2288},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2283,2284,2287],{"name":2167,"slug":2168,"type":15},{"name":2285,"slug":2286,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2290,"name":2290,"fn":2291,"description":2292,"org":2293,"tags":2294,"stars":2224,"repoUrl":2225,"updatedAt":2301},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2295,2298],{"name":2296,"slug":2297,"type":15},"QA","qa",{"name":2299,"slug":2300,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":2303,"name":2303,"fn":2304,"description":2305,"org":2306,"tags":2307,"stars":2224,"repoUrl":2225,"updatedAt":2312},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2308,2309],{"name":13,"slug":14,"type":15},{"name":2310,"slug":2311,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2314,"name":2314,"fn":2315,"description":2316,"org":2317,"tags":2318,"stars":2224,"repoUrl":2225,"updatedAt":2326},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2319,2322,2323],{"name":2320,"slug":2321,"type":15},"Code Review","code-review",{"name":2247,"slug":2248,"type":15},{"name":2324,"slug":2325,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2328,"name":2328,"fn":2329,"description":2330,"org":2331,"tags":2332,"stars":2224,"repoUrl":2225,"updatedAt":2335},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2333,2334],{"name":2296,"slug":2297,"type":15},{"name":2299,"slug":2300,"type":15},"2026-07-14T05:25:54.928983",{"slug":2337,"name":2337,"fn":2338,"description":2339,"org":2340,"tags":2341,"stars":2224,"repoUrl":2225,"updatedAt":2346},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2342,2345],{"name":2343,"slug":2344,"type":15},"Automation","automation",{"name":2234,"slug":2235,"type":15},"2026-07-30T05:29:03.275638",496]