[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-nvflare-convert-huggingface":3,"mdc--ma9os9-key":41,"related-repo-nvidia-nvflare-convert-huggingface":1001,"related-org-nvidia-nvflare-convert-huggingface":1090},{"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":36,"sourceUrl":39,"mdContent":40},"nvflare-convert-huggingface","convert Hugging Face trainers to NVFLARE jobs","Convert existing Hugging Face Transformers Trainer or TRL SFTTrainer training code into an NVFLARE federated job using flare.patch(trainer), local validation, and job export; do not use for manual PyTorch loops, Lightning, inference-only pipelines, deployment, or experiment workflows.",{"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,19,22],{"name":13,"slug":14,"type":15},"Hugging Face","hugging-face","tag",{"name":17,"slug":18,"type":15},"Data Engineering","data-engineering",{"name":20,"slug":21,"type":15},"Machine Learning","machine-learning",{"name":9,"slug":8,"type":15},947,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNVFlare","2026-08-05T05:58:23.981616","Apache-2.0",266,[29,30,31,32,33,34,35],"decentralized","federated-analytics","federated-computing","federated-learning","pet","privacy-protection","python",{"repoUrl":24,"stars":23,"forks":27,"topics":37,"description":38},[29,30,31,32,33,34,35],"NVIDIA Federated Learning Application Runtime Environment","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNVFlare\u002Ftree\u002FHEAD\u002Fskills\u002Fnvflare-convert-huggingface","---\nname: nvflare-convert-huggingface\ndescription: \"Convert existing Hugging Face Transformers Trainer or TRL SFTTrainer training code into an NVFLARE federated job using flare.patch(trainer), local validation, and job export; do not use for manual PyTorch loops, Lightning, inference-only pipelines, deployment, or experiment workflows.\"\nlicense: Apache-2.0\nmetadata:\n  author: \"NVIDIA FLARE Team \u003Cfederatedlearning@nvidia.com>\"\n  min_flare_version: \"2.9.0\"\n  blast_radius: runs_simulator\n  category: Conversion\n  version: \"0.1.0\"\n  tags: \"nvflare, federated-learning, huggingface, transformers, trl, peft, conversion\"\n  languages: \"python\"\n  frameworks: \"huggingface, transformers, trl, pytorch, nvflare\"\n  domain: ml\n---\n\n# NVFLARE Convert Hugging Face\n\n## Use When\n\nUse when converting training code built around `transformers.Trainer`,\n`Seq2SeqTrainer`, TRL `SFTTrainer`, or another Trainer subclass. Support\nfull-model and PEFT\u002FLoRA fine-tuning, datasets\u002Ftokenizers, Trainer callbacks and\nmetrics, checkpoint continuity, and replicated `torch.distributed` training.\n\n## Do Not Use When\n\nDo not use for an `AutoModel` driven by a manual PyTorch loop without a\nHugging Face Trainer (route to `nvflare-convert-pytorch`), PyTorch Lightning\n(route to `nvflare-convert-lightning`, including Lightning modules that contain\nTransformers models), inference-only pipelines, model serving, failed jobs\n(route to `nvflare-diagnose-job`), or federated statistics without training\n(route to `nvflare-fed-stats`). Route a project with active Lightning and\nHugging Face Trainer entrypoints to `nvflare-orient` to select one training-loop\nowner or separate jobs. Route unresolved Trainer ownership, such as a Trainer\nfactory without a bound owner call, to `nvflare-orient`; do not patch either Trainer.\nOut of scope: DeepSpeed, FSDP, production\u002FPOC deployment, controller rewrites,\nexperiment search, and privacy-protection requests such as HE, encrypted\naggregation, differential privacy, or privacy filters; never substitute an\nunprotected recipe or present a disclaimer as implementation.\nIf a request combines federated statistics and model-training conversion, treat it as two independent jobs and\nworkflows: do not merge or automatically chain them, do not route the combination to `nvflare-orient`, and ask which\nworkflow to run first before generating or running either job. Recommend `nvflare-fed-stats` first only when the\nuser's purpose is to understand data distribution; handle conversion later as a separate request.\n\n## Workflow\n\n1. Load `..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md` and apply it for the\n   whole conversion; this SKILL.md states only the framework-specific deltas.\n   Load `..\u002Fnvflare-shared\u002Freferences\u002Fconversion-workflow.md` only for a non-standard\n   case that needs its detailed rerun, data-location, authorization, or\n   missing-semantics guidance.\n2. Inspect before editing with `nvflare agent inspect source \u003Cpath> --format json`\n   plus direct source reading. Load `references\u002Fhuggingface-detection.md` during\n   this phase. If inspect recommends `nvflare-orient` for unresolved Trainer\n   ownership or active Lightning\u002FHugging Face owners, stop before editing.\n   Extract the entrypoint, Trainer subclass, model constructor, tokenizer or\n   processor, datasets and collator, Trainer arguments, `compute_metrics`,\n   callbacks, checkpoint and PEFT settings, precision, local budget,\n   distributed launcher, site\u002Fround counts, data location, and aggregation\n   intent. Do not import or execute user training modules to discover them.\n3. Apply the dependency-install ordering rule in `..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md` before\n   any Python command imports user, framework, NVFLARE, or declared dependency\n   modules.\n4. Select the recipe from FL intent. For explicit FedAvg, run `nvflare recipe\n   show fedavg-pt --format json`, then immediately load\n   `..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-family-recipe-construction.md` and use\n   the returned module, class, and parameters with the required construction\n   and execution shape in `assets\u002Fjob.py`. Import `FedAvgRecipe` from\n   `nvflare.app_opt.pt.recipes.fedavg`, never from `nvflare.recipe`. Treat\n   `class_path` as the public recipe key and `path` as its normalized exported\n   representation; do not inspect Recipe source or signatures to reconcile\n   them. Do not guess adjacent symbols or add per-site recipe config unless\n   sites genuinely differ. Load\n   `..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-family-recipe-selection.md` only for\n   ambiguous, evaluation-only, or non-FedAvg requests.\n5. Convert with `references\u002Fhuggingface-conversion.md` and adapt\n   `assets\u002Fclient_with_eval.py` rather than drafting a new round loop. Preserve\n   model, tokenizer\u002Fprocessor, datasets, collator, Trainer arguments,\n   callbacks, and metrics. Partition site data per the \"Site Data Partitioning\"\n   rule in `..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md`. Import the Client API as\n   `import nvflare.client.hf as flare`, so `flare.init()`, `flare.patch()`, and\n   `flare.is_running()` resolve to `nvflare.client.hf`. Keep\n   `flare.patch(trainer)` simple with inferred `params_scope=\"auto\"` and encode\n   one per-round budget in\n   Trainer arguments: requested steps use `max_steps`, requested epochs use\n   `num_train_epochs`, and a silent prompt uses the reported default\n   `max_steps=10` unless source-budget preservation was requested. Do not\n   duplicate the budget in patch `local_steps`\u002F`local_epochs`. When the client\n   uses `HfArgumentParser`, construct it with `allow_abbrev=False`.\n6. Adapt `assets\u002Fserver_model.py` and `assets\u002Fjob.py` instead of inventing\n   server-model, packaging, export, or `SimEnv` wiring. Keep generated and\n   packaged project-local modules in the same writable source directory. Never\n   use `..` in `train_script`, `add_server_file()`, or `add_client_file()`; use\n   an existing resolved absolute path when co-location is impossible. Keep the\n   server and Trainer model factory and exchange keyspace identical, with\n   explicit model config rather than a live model. Apply only options confirmed\n   by the construction reference. Preserve the job asset's recipe-before-parser\n   ordering, `ArgumentParser(allow_abbrev=False)`, and strict `parse_args()`; do\n   not use `parse_known_args()`.\n7. Only after generated files exist, load\n   `..\u002Fnvflare-shared\u002Freferences\u002Fvalidation-evidence.md`, then\n   `references\u002Fhuggingface-validation.md`. Follow the shared compile,\n   construction, export, package-inspection, simulation, and terminal-evidence\n   ladder; apply only the standard Trainer checks from the HF reference. Stop\n   at the first failed rung. Review and exercise the maintained assets directly;\n   do not inspect NVFLARE implementation source, improvise Recipe API probes, or\n   write one-off AST programs to re-prove them. Use\n   `references\u002Fhuggingface-state-and-distributed.md`\n   only when inspection found PEFT, DDP, checkpoint\u002Frestore overrides,\n   auxiliary trainable models, or another non-default patch setting.\n8. Report the recipe, source facts, parameter scope, data partition, changed\n   files, validation status, and exact artifact paths. When validation produces\n   metrics, load `..\u002Fnvflare-shared\u002Freferences\u002Fmetrics-and-artifact-reporting.md`\n   before the final response and report each observed primary scalar with its\n   metric name, numeric value, and artifact or bounded-log source.\n\n## Requirements\n\n- Must use `flare.patch(trainer)` as the sole model-exchange owner. `receive()`\n  inside a patched loop may inspect task metadata only; it must not load a\n  second copy of the global model.\n- Must make the client entry's global `rank` argument required and pass it to\n  `flare.init(rank=rank)`; never default every process to rank zero. Resolve it\n  from an initialized process group or global `RANK`, using explicit zero only\n  for a verified single-process launch. Client API initialization order\n  otherwise follows `..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md`.\n- Must preserve source evaluation. When per-round global-model evaluation is\n  required, call `trainer.evaluate()` before `trainer.train()` on every rank.\n  Do not invent `compute_metrics`, label mappings, averaging denominators, or\n  metric direction.\n- Must follow the Best-Model Metric policy in\n  `..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-family-recipe-construction.md`; the\n  Hugging Face delta is only how the delivered key is named and produced. Must\n  preserve source metric names when practical: if the generated\n  `trainer.evaluate()` emits `accuracy`, set `key_metric=\"accuracy\"`; if Trainer\n  emits a prefixed key such as `eval_accuracy`, set the server to that exact key\n  and report the source-to-server mapping. When best-model selection is\n  requested, every lower-is-better metric, including Trainer-generated\n  `eval_loss`, is delivered as an explicitly negated companion and selected by\n  that key — never as raw loss. When selection is not requested, use\n  `key_metric=\"\"`; do not omit it and accidentally activate the recipe default.\n- Must preserve PEFT configuration exactly and verify adapter key compatibility\n  between the server model and patched Trainer. Do not infer LoRA target\n  modules, silently switch adapter\u002Ffull-model scope, or solve key mismatches\n  with non-strict loading.\n- Must verify that `trainer.model` owns all federated trainable state for\n  Trainer subclasses with reference, reward, value-head, or other auxiliary\n  models. Ask or fail closed when `params_scope=\"auto\"` would omit trainable\n  state required by the algorithm.\n- Must preserve model constructor values needed on both server and clients per\n  `..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-model-exchange.md` (State-Dict\n  Compatibility). Ask one semantic question or fail closed when required values\n  are not statically available.\n- Must patch only one Trainer per Python process. Preserve a single Trainer\n  lifecycle across rounds when `restore_state=True`.\n- Must use a positive `TrainingArguments.max_steps` budget for a length-less\n  iterable training dataset and let `flare.patch(trainer)` infer it.\n- Must reject or report DeepSpeed, FSDP, `save_only_model=True` with\n  `restore_state=True`, `load_best_model_at_end=True`, prebuilt\n  optimizer\u002Fscheduler instances with `restore_state=False`, and checkpoint paths\n  not visible to every distributed rank. Do not rewrite these settings silently.\n  `launch_once` is a framework-neutral recipe parameter owned by\n  `..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-family-recipe-construction.md`; the\n  Hugging Face delta is only that the product rejects explicit\n  `launch_once=False` together with `restore_state=True`.\n- Must initialize `torch.distributed` before patching when rank environment\n  variables declare multiple ranks. All ranks must call patched Trainer methods\n  in identical order.\n- Must not set `trust_remote_code=True`, download model\u002Fdata artifacts unless\n  requested, or recover from an offline\u002Fcache-only miss by going online. Cache\n  misses, offline errors, remote identifiers, and validation requests do not\n  authorize online retries. This narrows the authorization rules in\n  `..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md`.\n- Site partitioning, custom aggregation, the Source Of Truth Boundary, and user\n  input\u002Fauthorization follow `..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md`.\n\nAlways read this converter SKILL.md together with\n`..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md`. Complete each workflow\nphase before loading the next phase's reference. Do not preload validation,\nstate\u002FDDP, broad workflow, dependency, or reporting references. The standard\nFedAvg path loads, in order:\n`..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md`,\n`references\u002Fhuggingface-detection.md`,\n`..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-family-recipe-construction.md`,\n`references\u002Fhuggingface-conversion.md`,\n`..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-model-exchange.md`,\n`..\u002Fnvflare-shared\u002Freferences\u002Fvalidation-evidence.md`, and\n`references\u002Fhuggingface-validation.md`. Load\n`references\u002Fhuggingface-state-and-distributed.md` and other shared references\nonly under the triggers above. Do not depend on repository examples.\n",{"data":42,"body":52},{"name":4,"description":6,"license":26,"metadata":43},{"author":44,"min_flare_version":45,"blast_radius":46,"category":47,"version":48,"tags":49,"languages":35,"frameworks":50,"domain":51},"NVIDIA FLARE Team \u003Cfederatedlearning@nvidia.com>","2.9.0","runs_simulator","Conversion","0.1.0","nvflare, federated-learning, huggingface, transformers, trl, peft, conversion","huggingface, transformers, trl, pytorch, nvflare","ml",{"type":53,"children":54},"root",[55,64,71,110,116,190,196,611,617,939],{"type":56,"tag":57,"props":58,"children":60},"element","h1",{"id":59},"nvflare-convert-hugging-face",[61],{"type":62,"value":63},"text","NVFLARE Convert Hugging Face",{"type":56,"tag":65,"props":66,"children":68},"h2",{"id":67},"use-when",[69],{"type":62,"value":70},"Use When",{"type":56,"tag":72,"props":73,"children":74},"p",{},[75,77,84,86,92,94,100,102,108],{"type":62,"value":76},"Use when converting training code built around ",{"type":56,"tag":78,"props":79,"children":81},"code",{"className":80},[],[82],{"type":62,"value":83},"transformers.Trainer",{"type":62,"value":85},",\n",{"type":56,"tag":78,"props":87,"children":89},{"className":88},[],[90],{"type":62,"value":91},"Seq2SeqTrainer",{"type":62,"value":93},", TRL ",{"type":56,"tag":78,"props":95,"children":97},{"className":96},[],[98],{"type":62,"value":99},"SFTTrainer",{"type":62,"value":101},", or another Trainer subclass. Support\nfull-model and PEFT\u002FLoRA fine-tuning, datasets\u002Ftokenizers, Trainer callbacks and\nmetrics, checkpoint continuity, and replicated ",{"type":56,"tag":78,"props":103,"children":105},{"className":104},[],[106],{"type":62,"value":107},"torch.distributed",{"type":62,"value":109}," training.",{"type":56,"tag":65,"props":111,"children":113},{"id":112},"do-not-use-when",[114],{"type":62,"value":115},"Do Not Use When",{"type":56,"tag":72,"props":117,"children":118},{},[119,121,127,129,135,137,143,145,151,153,159,161,167,169,174,176,181,183,188],{"type":62,"value":120},"Do not use for an ",{"type":56,"tag":78,"props":122,"children":124},{"className":123},[],[125],{"type":62,"value":126},"AutoModel",{"type":62,"value":128}," driven by a manual PyTorch loop without a\nHugging Face Trainer (route to ",{"type":56,"tag":78,"props":130,"children":132},{"className":131},[],[133],{"type":62,"value":134},"nvflare-convert-pytorch",{"type":62,"value":136},"), PyTorch Lightning\n(route to ",{"type":56,"tag":78,"props":138,"children":140},{"className":139},[],[141],{"type":62,"value":142},"nvflare-convert-lightning",{"type":62,"value":144},", including Lightning modules that contain\nTransformers models), inference-only pipelines, model serving, failed jobs\n(route to ",{"type":56,"tag":78,"props":146,"children":148},{"className":147},[],[149],{"type":62,"value":150},"nvflare-diagnose-job",{"type":62,"value":152},"), or federated statistics without training\n(route to ",{"type":56,"tag":78,"props":154,"children":156},{"className":155},[],[157],{"type":62,"value":158},"nvflare-fed-stats",{"type":62,"value":160},"). Route a project with active Lightning and\nHugging Face Trainer entrypoints to ",{"type":56,"tag":78,"props":162,"children":164},{"className":163},[],[165],{"type":62,"value":166},"nvflare-orient",{"type":62,"value":168}," to select one training-loop\nowner or separate jobs. Route unresolved Trainer ownership, such as a Trainer\nfactory without a bound owner call, to ",{"type":56,"tag":78,"props":170,"children":172},{"className":171},[],[173],{"type":62,"value":166},{"type":62,"value":175},"; do not patch either Trainer.\nOut of scope: DeepSpeed, FSDP, production\u002FPOC deployment, controller rewrites,\nexperiment search, and privacy-protection requests such as HE, encrypted\naggregation, differential privacy, or privacy filters; never substitute an\nunprotected recipe or present a disclaimer as implementation.\nIf a request combines federated statistics and model-training conversion, treat it as two independent jobs and\nworkflows: do not merge or automatically chain them, do not route the combination to ",{"type":56,"tag":78,"props":177,"children":179},{"className":178},[],[180],{"type":62,"value":166},{"type":62,"value":182},", and ask which\nworkflow to run first before generating or running either job. Recommend ",{"type":56,"tag":78,"props":184,"children":186},{"className":185},[],[187],{"type":62,"value":158},{"type":62,"value":189}," first only when the\nuser's purpose is to understand data distribution; handle conversion later as a separate request.",{"type":56,"tag":65,"props":191,"children":193},{"id":192},"workflow",[194],{"type":62,"value":195},"Workflow",{"type":56,"tag":197,"props":198,"children":199},"ol",{},[200,222,258,270,347,487,569,598],{"type":56,"tag":201,"props":202,"children":203},"li",{},[204,206,212,214,220],{"type":62,"value":205},"Load ",{"type":56,"tag":78,"props":207,"children":209},{"className":208},[],[210],{"type":62,"value":211},"..\u002Fnvflare-shared\u002Freferences\u002Fconversion-common.md",{"type":62,"value":213}," and apply it for the\nwhole conversion; this SKILL.md states only the framework-specific deltas.\nLoad ",{"type":56,"tag":78,"props":215,"children":217},{"className":216},[],[218],{"type":62,"value":219},"..\u002Fnvflare-shared\u002Freferences\u002Fconversion-workflow.md",{"type":62,"value":221}," only for a non-standard\ncase that needs its detailed rerun, data-location, authorization, or\nmissing-semantics guidance.",{"type":56,"tag":201,"props":223,"children":224},{},[225,227,233,235,241,243,248,250,256],{"type":62,"value":226},"Inspect before editing with ",{"type":56,"tag":78,"props":228,"children":230},{"className":229},[],[231],{"type":62,"value":232},"nvflare agent inspect source \u003Cpath> --format json",{"type":62,"value":234},"\nplus direct source reading. Load ",{"type":56,"tag":78,"props":236,"children":238},{"className":237},[],[239],{"type":62,"value":240},"references\u002Fhuggingface-detection.md",{"type":62,"value":242}," during\nthis phase. If inspect recommends ",{"type":56,"tag":78,"props":244,"children":246},{"className":245},[],[247],{"type":62,"value":166},{"type":62,"value":249}," for unresolved Trainer\nownership or active Lightning\u002FHugging Face owners, stop before editing.\nExtract the entrypoint, Trainer subclass, model constructor, tokenizer or\nprocessor, datasets and collator, Trainer arguments, ",{"type":56,"tag":78,"props":251,"children":253},{"className":252},[],[254],{"type":62,"value":255},"compute_metrics",{"type":62,"value":257},",\ncallbacks, checkpoint and PEFT settings, precision, local budget,\ndistributed launcher, site\u002Fround counts, data location, and aggregation\nintent. Do not import or execute user training modules to discover them.",{"type":56,"tag":201,"props":259,"children":260},{},[261,263,268],{"type":62,"value":262},"Apply the dependency-install ordering rule in ",{"type":56,"tag":78,"props":264,"children":266},{"className":265},[],[267],{"type":62,"value":211},{"type":62,"value":269}," before\nany Python command imports user, framework, NVFLARE, or declared dependency\nmodules.",{"type":56,"tag":201,"props":271,"children":272},{},[273,275,281,283,289,291,297,299,305,307,313,315,321,323,329,331,337,339,345],{"type":62,"value":274},"Select the recipe from FL intent. For explicit FedAvg, run ",{"type":56,"tag":78,"props":276,"children":278},{"className":277},[],[279],{"type":62,"value":280},"nvflare recipe show fedavg-pt --format json",{"type":62,"value":282},", then immediately load\n",{"type":56,"tag":78,"props":284,"children":286},{"className":285},[],[287],{"type":62,"value":288},"..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-family-recipe-construction.md",{"type":62,"value":290}," and use\nthe returned module, class, and parameters with the required construction\nand execution shape in ",{"type":56,"tag":78,"props":292,"children":294},{"className":293},[],[295],{"type":62,"value":296},"assets\u002Fjob.py",{"type":62,"value":298},". Import ",{"type":56,"tag":78,"props":300,"children":302},{"className":301},[],[303],{"type":62,"value":304},"FedAvgRecipe",{"type":62,"value":306}," from\n",{"type":56,"tag":78,"props":308,"children":310},{"className":309},[],[311],{"type":62,"value":312},"nvflare.app_opt.pt.recipes.fedavg",{"type":62,"value":314},", never from ",{"type":56,"tag":78,"props":316,"children":318},{"className":317},[],[319],{"type":62,"value":320},"nvflare.recipe",{"type":62,"value":322},". Treat\n",{"type":56,"tag":78,"props":324,"children":326},{"className":325},[],[327],{"type":62,"value":328},"class_path",{"type":62,"value":330}," as the public recipe key and ",{"type":56,"tag":78,"props":332,"children":334},{"className":333},[],[335],{"type":62,"value":336},"path",{"type":62,"value":338}," as its normalized exported\nrepresentation; do not inspect Recipe source or signatures to reconcile\nthem. Do not guess adjacent symbols or add per-site recipe config unless\nsites genuinely differ. Load\n",{"type":56,"tag":78,"props":340,"children":342},{"className":341},[],[343],{"type":62,"value":344},"..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-family-recipe-selection.md",{"type":62,"value":346}," only for\nambiguous, evaluation-only, or non-FedAvg requests.",{"type":56,"tag":201,"props":348,"children":349},{},[350,352,358,360,366,368,373,375,381,383,389,391,397,399,405,407,413,415,421,423,429,431,437,439,445,447,453,455,461,463,469,471,477,479,485],{"type":62,"value":351},"Convert with ",{"type":56,"tag":78,"props":353,"children":355},{"className":354},[],[356],{"type":62,"value":357},"references\u002Fhuggingface-conversion.md",{"type":62,"value":359}," and adapt\n",{"type":56,"tag":78,"props":361,"children":363},{"className":362},[],[364],{"type":62,"value":365},"assets\u002Fclient_with_eval.py",{"type":62,"value":367}," rather than drafting a new round loop. Preserve\nmodel, tokenizer\u002Fprocessor, datasets, collator, Trainer arguments,\ncallbacks, and metrics. Partition site data per the \"Site Data Partitioning\"\nrule in ",{"type":56,"tag":78,"props":369,"children":371},{"className":370},[],[372],{"type":62,"value":211},{"type":62,"value":374},". Import the Client API as\n",{"type":56,"tag":78,"props":376,"children":378},{"className":377},[],[379],{"type":62,"value":380},"import nvflare.client.hf as flare",{"type":62,"value":382},", so ",{"type":56,"tag":78,"props":384,"children":386},{"className":385},[],[387],{"type":62,"value":388},"flare.init()",{"type":62,"value":390},", ",{"type":56,"tag":78,"props":392,"children":394},{"className":393},[],[395],{"type":62,"value":396},"flare.patch()",{"type":62,"value":398},", and\n",{"type":56,"tag":78,"props":400,"children":402},{"className":401},[],[403],{"type":62,"value":404},"flare.is_running()",{"type":62,"value":406}," resolve to ",{"type":56,"tag":78,"props":408,"children":410},{"className":409},[],[411],{"type":62,"value":412},"nvflare.client.hf",{"type":62,"value":414},". Keep\n",{"type":56,"tag":78,"props":416,"children":418},{"className":417},[],[419],{"type":62,"value":420},"flare.patch(trainer)",{"type":62,"value":422}," simple with inferred ",{"type":56,"tag":78,"props":424,"children":426},{"className":425},[],[427],{"type":62,"value":428},"params_scope=\"auto\"",{"type":62,"value":430}," and encode\none per-round budget in\nTrainer arguments: requested steps use ",{"type":56,"tag":78,"props":432,"children":434},{"className":433},[],[435],{"type":62,"value":436},"max_steps",{"type":62,"value":438},", requested epochs use\n",{"type":56,"tag":78,"props":440,"children":442},{"className":441},[],[443],{"type":62,"value":444},"num_train_epochs",{"type":62,"value":446},", and a silent prompt uses the reported default\n",{"type":56,"tag":78,"props":448,"children":450},{"className":449},[],[451],{"type":62,"value":452},"max_steps=10",{"type":62,"value":454}," unless source-budget preservation was requested. Do not\nduplicate the budget in patch ",{"type":56,"tag":78,"props":456,"children":458},{"className":457},[],[459],{"type":62,"value":460},"local_steps",{"type":62,"value":462},"\u002F",{"type":56,"tag":78,"props":464,"children":466},{"className":465},[],[467],{"type":62,"value":468},"local_epochs",{"type":62,"value":470},". When the client\nuses ",{"type":56,"tag":78,"props":472,"children":474},{"className":473},[],[475],{"type":62,"value":476},"HfArgumentParser",{"type":62,"value":478},", construct it with ",{"type":56,"tag":78,"props":480,"children":482},{"className":481},[],[483],{"type":62,"value":484},"allow_abbrev=False",{"type":62,"value":486},".",{"type":56,"tag":201,"props":488,"children":489},{},[490,492,498,500,505,507,513,515,521,523,529,530,536,538,544,546,552,554,560,562,568],{"type":62,"value":491},"Adapt ",{"type":56,"tag":78,"props":493,"children":495},{"className":494},[],[496],{"type":62,"value":497},"assets\u002Fserver_model.py",{"type":62,"value":499}," and ",{"type":56,"tag":78,"props":501,"children":503},{"className":502},[],[504],{"type":62,"value":296},{"type":62,"value":506}," instead of inventing\nserver-model, packaging, export, or ",{"type":56,"tag":78,"props":508,"children":510},{"className":509},[],[511],{"type":62,"value":512},"SimEnv",{"type":62,"value":514}," wiring. Keep generated and\npackaged project-local modules in the same writable source directory. Never\nuse ",{"type":56,"tag":78,"props":516,"children":518},{"className":517},[],[519],{"type":62,"value":520},"..",{"type":62,"value":522}," in ",{"type":56,"tag":78,"props":524,"children":526},{"className":525},[],[527],{"type":62,"value":528},"train_script",{"type":62,"value":390},{"type":56,"tag":78,"props":531,"children":533},{"className":532},[],[534],{"type":62,"value":535},"add_server_file()",{"type":62,"value":537},", or ",{"type":56,"tag":78,"props":539,"children":541},{"className":540},[],[542],{"type":62,"value":543},"add_client_file()",{"type":62,"value":545},"; use\nan existing resolved absolute path when co-location is impossible. Keep the\nserver and Trainer model factory and exchange keyspace identical, with\nexplicit model config rather than a live model. Apply only options confirmed\nby the construction reference. Preserve the job asset's recipe-before-parser\nordering, ",{"type":56,"tag":78,"props":547,"children":549},{"className":548},[],[550],{"type":62,"value":551},"ArgumentParser(allow_abbrev=False)",{"type":62,"value":553},", and strict ",{"type":56,"tag":78,"props":555,"children":557},{"className":556},[],[558],{"type":62,"value":559},"parse_args()",{"type":62,"value":561},"; do\nnot use ",{"type":56,"tag":78,"props":563,"children":565},{"className":564},[],[566],{"type":62,"value":567},"parse_known_args()",{"type":62,"value":486},{"type":56,"tag":201,"props":570,"children":571},{},[572,574,580,582,588,590,596],{"type":62,"value":573},"Only after generated files exist, load\n",{"type":56,"tag":78,"props":575,"children":577},{"className":576},[],[578],{"type":62,"value":579},"..\u002Fnvflare-shared\u002Freferences\u002Fvalidation-evidence.md",{"type":62,"value":581},", then\n",{"type":56,"tag":78,"props":583,"children":585},{"className":584},[],[586],{"type":62,"value":587},"references\u002Fhuggingface-validation.md",{"type":62,"value":589},". Follow the shared compile,\nconstruction, export, package-inspection, simulation, and terminal-evidence\nladder; apply only the standard Trainer checks from the HF reference. Stop\nat the first failed rung. Review and exercise the maintained assets directly;\ndo not inspect NVFLARE implementation source, improvise Recipe API probes, or\nwrite one-off AST programs to re-prove them. Use\n",{"type":56,"tag":78,"props":591,"children":593},{"className":592},[],[594],{"type":62,"value":595},"references\u002Fhuggingface-state-and-distributed.md",{"type":62,"value":597},"\nonly when inspection found PEFT, DDP, checkpoint\u002Frestore overrides,\nauxiliary trainable models, or another non-default patch setting.",{"type":56,"tag":201,"props":599,"children":600},{},[601,603,609],{"type":62,"value":602},"Report the recipe, source facts, parameter scope, data partition, changed\nfiles, validation status, and exact artifact paths. When validation produces\nmetrics, load ",{"type":56,"tag":78,"props":604,"children":606},{"className":605},[],[607],{"type":62,"value":608},"..\u002Fnvflare-shared\u002Freferences\u002Fmetrics-and-artifact-reporting.md",{"type":62,"value":610},"\nbefore the final response and report each observed primary scalar with its\nmetric name, numeric value, and artifact or bounded-log source.",{"type":56,"tag":65,"props":612,"children":614},{"id":613},"requirements",[615],{"type":62,"value":616},"Requirements",{"type":56,"tag":618,"props":619,"children":620},"ul",{},[621,641,676,704,763,768,788,801,813,833,897,909,928],{"type":56,"tag":201,"props":622,"children":623},{},[624,626,631,633,639],{"type":62,"value":625},"Must use ",{"type":56,"tag":78,"props":627,"children":629},{"className":628},[],[630],{"type":62,"value":420},{"type":62,"value":632}," as the sole model-exchange owner. ",{"type":56,"tag":78,"props":634,"children":636},{"className":635},[],[637],{"type":62,"value":638},"receive()",{"type":62,"value":640},"\ninside a patched loop may inspect task metadata only; it must not load a\nsecond copy of the global model.",{"type":56,"tag":201,"props":642,"children":643},{},[644,646,652,654,660,662,668,670,675],{"type":62,"value":645},"Must make the client entry's global ",{"type":56,"tag":78,"props":647,"children":649},{"className":648},[],[650],{"type":62,"value":651},"rank",{"type":62,"value":653}," argument required and pass it to\n",{"type":56,"tag":78,"props":655,"children":657},{"className":656},[],[658],{"type":62,"value":659},"flare.init(rank=rank)",{"type":62,"value":661},"; never default every process to rank zero. Resolve it\nfrom an initialized process group or global ",{"type":56,"tag":78,"props":663,"children":665},{"className":664},[],[666],{"type":62,"value":667},"RANK",{"type":62,"value":669},", using explicit zero only\nfor a verified single-process launch. Client API initialization order\notherwise follows ",{"type":56,"tag":78,"props":671,"children":673},{"className":672},[],[674],{"type":62,"value":211},{"type":62,"value":486},{"type":56,"tag":201,"props":677,"children":678},{},[679,681,687,689,695,697,702],{"type":62,"value":680},"Must preserve source evaluation. When per-round global-model evaluation is\nrequired, call ",{"type":56,"tag":78,"props":682,"children":684},{"className":683},[],[685],{"type":62,"value":686},"trainer.evaluate()",{"type":62,"value":688}," before ",{"type":56,"tag":78,"props":690,"children":692},{"className":691},[],[693],{"type":62,"value":694},"trainer.train()",{"type":62,"value":696}," on every rank.\nDo not invent ",{"type":56,"tag":78,"props":698,"children":700},{"className":699},[],[701],{"type":62,"value":255},{"type":62,"value":703},", label mappings, averaging denominators, or\nmetric direction.",{"type":56,"tag":201,"props":705,"children":706},{},[707,709,714,716,721,723,729,731,737,739,745,747,753,755,761],{"type":62,"value":708},"Must follow the Best-Model Metric policy in\n",{"type":56,"tag":78,"props":710,"children":712},{"className":711},[],[713],{"type":62,"value":288},{"type":62,"value":715},"; the\nHugging Face delta is only how the delivered key is named and produced. Must\npreserve source metric names when practical: if the generated\n",{"type":56,"tag":78,"props":717,"children":719},{"className":718},[],[720],{"type":62,"value":686},{"type":62,"value":722}," emits ",{"type":56,"tag":78,"props":724,"children":726},{"className":725},[],[727],{"type":62,"value":728},"accuracy",{"type":62,"value":730},", set ",{"type":56,"tag":78,"props":732,"children":734},{"className":733},[],[735],{"type":62,"value":736},"key_metric=\"accuracy\"",{"type":62,"value":738},"; if Trainer\nemits a prefixed key such as ",{"type":56,"tag":78,"props":740,"children":742},{"className":741},[],[743],{"type":62,"value":744},"eval_accuracy",{"type":62,"value":746},", set the server to that exact key\nand report the source-to-server mapping. When best-model selection is\nrequested, every lower-is-better metric, including Trainer-generated\n",{"type":56,"tag":78,"props":748,"children":750},{"className":749},[],[751],{"type":62,"value":752},"eval_loss",{"type":62,"value":754},", is delivered as an explicitly negated companion and selected by\nthat key — never as raw loss. When selection is not requested, use\n",{"type":56,"tag":78,"props":756,"children":758},{"className":757},[],[759],{"type":62,"value":760},"key_metric=\"\"",{"type":62,"value":762},"; do not omit it and accidentally activate the recipe default.",{"type":56,"tag":201,"props":764,"children":765},{},[766],{"type":62,"value":767},"Must preserve PEFT configuration exactly and verify adapter key compatibility\nbetween the server model and patched Trainer. Do not infer LoRA target\nmodules, silently switch adapter\u002Ffull-model scope, or solve key mismatches\nwith non-strict loading.",{"type":56,"tag":201,"props":769,"children":770},{},[771,773,779,781,786],{"type":62,"value":772},"Must verify that ",{"type":56,"tag":78,"props":774,"children":776},{"className":775},[],[777],{"type":62,"value":778},"trainer.model",{"type":62,"value":780}," owns all federated trainable state for\nTrainer subclasses with reference, reward, value-head, or other auxiliary\nmodels. Ask or fail closed when ",{"type":56,"tag":78,"props":782,"children":784},{"className":783},[],[785],{"type":62,"value":428},{"type":62,"value":787}," would omit trainable\nstate required by the algorithm.",{"type":56,"tag":201,"props":789,"children":790},{},[791,793,799],{"type":62,"value":792},"Must preserve model constructor values needed on both server and clients per\n",{"type":56,"tag":78,"props":794,"children":796},{"className":795},[],[797],{"type":62,"value":798},"..\u002Fnvflare-shared\u002Freferences\u002Fpytorch-model-exchange.md",{"type":62,"value":800}," (State-Dict\nCompatibility). Ask one semantic question or fail closed when required values\nare not statically available.",{"type":56,"tag":201,"props":802,"children":803},{},[804,806,812],{"type":62,"value":805},"Must patch only one Trainer per Python process. Preserve a single Trainer\nlifecycle across rounds when ",{"type":56,"tag":78,"props":807,"children":809},{"className":808},[],[810],{"type":62,"value":811},"restore_state=True",{"type":62,"value":486},{"type":56,"tag":201,"props":814,"children":815},{},[816,818,824,826,831],{"type":62,"value":817},"Must use a positive ",{"type":56,"tag":78,"props":819,"children":821},{"className":820},[],[822],{"type":62,"value":823},"TrainingArguments.max_steps",{"type":62,"value":825}," budget for a length-less\niterable training dataset and let ",{"type":56,"tag":78,"props":827,"children":829},{"className":828},[],[830],{"type":62,"value":420},{"type":62,"value":832}," infer it.",{"type":56,"tag":201,"props":834,"children":835},{},[836,838,844,846,851,852,858,860,866,868,874,876,881,883,889,891,896],{"type":62,"value":837},"Must reject or report DeepSpeed, FSDP, ",{"type":56,"tag":78,"props":839,"children":841},{"className":840},[],[842],{"type":62,"value":843},"save_only_model=True",{"type":62,"value":845}," with\n",{"type":56,"tag":78,"props":847,"children":849},{"className":848},[],[850],{"type":62,"value":811},{"type":62,"value":390},{"type":56,"tag":78,"props":853,"children":855},{"className":854},[],[856],{"type":62,"value":857},"load_best_model_at_end=True",{"type":62,"value":859},", prebuilt\noptimizer\u002Fscheduler instances with ",{"type":56,"tag":78,"props":861,"children":863},{"className":862},[],[864],{"type":62,"value":865},"restore_state=False",{"type":62,"value":867},", and checkpoint paths\nnot visible to every distributed rank. Do not rewrite these settings silently.\n",{"type":56,"tag":78,"props":869,"children":871},{"className":870},[],[872],{"type":62,"value":873},"launch_once",{"type":62,"value":875}," is a framework-neutral recipe parameter owned by\n",{"type":56,"tag":78,"props":877,"children":879},{"className":878},[],[880],{"type":62,"value":288},{"type":62,"value":882},"; the\nHugging Face delta is only that the product rejects explicit\n",{"type":56,"tag":78,"props":884,"children":886},{"className":885},[],[887],{"type":62,"value":888},"launch_once=False",{"type":62,"value":890}," together with ",{"type":56,"tag":78,"props":892,"children":894},{"className":893},[],[895],{"type":62,"value":811},{"type":62,"value":486},{"type":56,"tag":201,"props":898,"children":899},{},[900,902,907],{"type":62,"value":901},"Must initialize ",{"type":56,"tag":78,"props":903,"children":905},{"className":904},[],[906],{"type":62,"value":107},{"type":62,"value":908}," before patching when rank environment\nvariables declare multiple ranks. All ranks must call patched Trainer methods\nin identical order.",{"type":56,"tag":201,"props":910,"children":911},{},[912,914,920,922,927],{"type":62,"value":913},"Must not set ",{"type":56,"tag":78,"props":915,"children":917},{"className":916},[],[918],{"type":62,"value":919},"trust_remote_code=True",{"type":62,"value":921},", download model\u002Fdata artifacts unless\nrequested, or recover from an offline\u002Fcache-only miss by going online. Cache\nmisses, offline errors, remote identifiers, and validation requests do not\nauthorize online retries. This narrows the authorization rules in\n",{"type":56,"tag":78,"props":923,"children":925},{"className":924},[],[926],{"type":62,"value":211},{"type":62,"value":486},{"type":56,"tag":201,"props":929,"children":930},{},[931,933,938],{"type":62,"value":932},"Site partitioning, custom aggregation, the Source Of Truth Boundary, and user\ninput\u002Fauthorization follow ",{"type":56,"tag":78,"props":934,"children":936},{"className":935},[],[937],{"type":62,"value":211},{"type":62,"value":486},{"type":56,"tag":72,"props":940,"children":941},{},[942,944,949,951,956,957,962,963,968,969,974,975,980,981,986,987,992,994,999],{"type":62,"value":943},"Always read this converter SKILL.md together with\n",{"type":56,"tag":78,"props":945,"children":947},{"className":946},[],[948],{"type":62,"value":211},{"type":62,"value":950},". Complete each workflow\nphase before loading the next phase's reference. Do not preload validation,\nstate\u002FDDP, broad workflow, dependency, or reporting references. The standard\nFedAvg path loads, in order:\n",{"type":56,"tag":78,"props":952,"children":954},{"className":953},[],[955],{"type":62,"value":211},{"type":62,"value":85},{"type":56,"tag":78,"props":958,"children":960},{"className":959},[],[961],{"type":62,"value":240},{"type":62,"value":85},{"type":56,"tag":78,"props":964,"children":966},{"className":965},[],[967],{"type":62,"value":288},{"type":62,"value":85},{"type":56,"tag":78,"props":970,"children":972},{"className":971},[],[973],{"type":62,"value":357},{"type":62,"value":85},{"type":56,"tag":78,"props":976,"children":978},{"className":977},[],[979],{"type":62,"value":798},{"type":62,"value":85},{"type":56,"tag":78,"props":982,"children":984},{"className":983},[],[985],{"type":62,"value":579},{"type":62,"value":398},{"type":56,"tag":78,"props":988,"children":990},{"className":989},[],[991],{"type":62,"value":587},{"type":62,"value":993},". Load\n",{"type":56,"tag":78,"props":995,"children":997},{"className":996},[],[998],{"type":62,"value":595},{"type":62,"value":1000}," and other shared references\nonly under the triggers above. Do not depend on repository examples.",{"items":1002,"total":1089},[1003,1020,1033,1045,1058,1065,1079],{"slug":1004,"name":1004,"fn":1005,"description":1006,"org":1007,"tags":1008,"stars":23,"repoUrl":24,"updatedAt":1019},"autofl-nvflare","develop NVFlare Auto-FL experiments","Help coding agents work on an NVFlare-based Auto-FL harness that follows an autoresearch-style loop. Use when the user wants to create, edit, debug, or extend program.md, task folders such as tasks\u002Fcifar10\u002F and tasks\u002Fvlm_med\u002F, task-local job.py, client.py, model.py, shared custom_aggregators.py, mutation policies, results.tsv logging, or coding-agent prompts for a bounded federated-learning research loop. This skill is specifically for NVFlare harness work where the Client API loop, DIFF upload contract, and NUM_STEPS_CURRENT_ROUND metadata must stay intact unless the user explicitly asks for a protocol upgrade.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1009,1012,1015,1018],{"name":1010,"slug":1011,"type":15},"Agents","agents",{"name":1013,"slug":1014,"type":15},"Automation","automation",{"name":1016,"slug":1017,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},"2026-07-14T05:36:01.532575",{"slug":1021,"name":1021,"fn":1022,"description":1023,"org":1024,"tags":1025,"stars":23,"repoUrl":24,"updatedAt":1032},"autofl-nvflare-report","generate NVFlare experiment reports","Generate and commit a markdown report after an Auto-FL NVFlare autoresearch experiment has been manually stopped. Use when the user asks to summarize a stopped campaign, report achieved improvements, explain implemented literature-derived ideas and sources, refresh progress plots, capture pasted agent model\u002Feffort\u002Fcost context when available, or commit the final report and progress plot to the current experiment branch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1026,1027,1028,1029],{"name":1013,"slug":1014,"type":15},{"name":1016,"slug":1017,"type":15},{"name":9,"slug":8,"type":15},{"name":1030,"slug":1031,"type":15},"Reporting","reporting","2026-07-14T05:36:00.281416",{"slug":1034,"name":1034,"fn":1035,"description":1036,"org":1037,"tags":1038,"stars":23,"repoUrl":24,"updatedAt":1044},"nvflare-autofl","optimize NVFLARE training jobs","Use for agent-assisted Auto-FL optimization of an existing NVFLARE job in simulation, POC, or production. Do not use for code conversion, diagnosis-only work, or deployment setup.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1039,1040,1041],{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":1042,"slug":1043,"type":15},"Optimization","optimization","2026-08-02T05:44:44.004092",{"slug":1046,"name":1046,"fn":1047,"description":1048,"org":1049,"tags":1050,"stars":23,"repoUrl":24,"updatedAt":1057},"nvflare-autofl-report","generate NVFLARE Auto-FL campaign reports","Generate a reproducible final report, literature-outcome synthesis, JSON summary, and refreshed progress plot for a stopped or interrupted NVFLARE Auto-FL campaign.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1051,1052,1053,1054],{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":1030,"slug":1031,"type":15},{"name":1055,"slug":1056,"type":15},"Simulation","simulation","2026-07-30T05:26:14.661827",{"slug":4,"name":4,"fn":5,"description":6,"org":1059,"tags":1060,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1061,1062,1063,1064],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"slug":142,"name":142,"fn":1066,"description":1067,"org":1068,"tags":1069,"stars":23,"repoUrl":24,"updatedAt":1078},"convert PyTorch Lightning code to NVFLARE","Convert existing PyTorch Lightning training code into an NVFLARE federated job using the Lightning Client API patch, local validation, and job export; do not use for plain PyTorch, other frameworks, deployment, POC\u002Fproduction lifecycle, or experiment workflows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1070,1073,1074,1075],{"name":1071,"slug":1072,"type":15},"Data Pipeline","data-pipeline",{"name":1016,"slug":1017,"type":15},{"name":9,"slug":8,"type":15},{"name":1076,"slug":1077,"type":15},"PyTorch","pytorch","2026-08-05T05:35:03.330448",{"slug":134,"name":134,"fn":1080,"description":1081,"org":1082,"tags":1083,"stars":23,"repoUrl":24,"updatedAt":1088},"convert PyTorch code to NVFLARE","Convert existing PyTorch training code into an NVFLARE federated job using Client API model exchange, local validation, and job export; do not use for other frameworks, deployment, POC\u002Fproduction lifecycle, or experiment workflows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1084,1085,1086,1087],{"name":1071,"slug":1072,"type":15},{"name":1016,"slug":1017,"type":15},{"name":9,"slug":8,"type":15},{"name":1076,"slug":1077,"type":15},"2026-08-05T05:35:06.897127",11,{"items":1091,"total":1245},[1092,1110,1127,1138,1150,1164,1177,1189,1202,1213,1227,1236],{"slug":1093,"name":1093,"fn":1094,"description":1095,"org":1096,"tags":1097,"stars":1107,"repoUrl":1108,"updatedAt":1109},"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},[1098,1101,1104],{"name":1099,"slug":1100,"type":15},"Documentation","documentation",{"name":1102,"slug":1103,"type":15},"MCP","mcp",{"name":1105,"slug":1106,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1111,"name":1111,"fn":1112,"description":1113,"org":1114,"tags":1115,"stars":1124,"repoUrl":1125,"updatedAt":1126},"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},[1116,1119,1122],{"name":1117,"slug":1118,"type":15},"Containers","containers",{"name":1120,"slug":1121,"type":15},"Deployment","deployment",{"name":1123,"slug":35,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1128,"name":1128,"fn":1129,"description":1130,"org":1131,"tags":1132,"stars":1124,"repoUrl":1125,"updatedAt":1137},"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},[1133,1136],{"name":1134,"slug":1135,"type":15},"CI\u002FCD","ci-cd",{"name":1120,"slug":1121,"type":15},"2026-07-14T05:25:59.97109",{"slug":1139,"name":1139,"fn":1140,"description":1141,"org":1142,"tags":1143,"stars":1124,"repoUrl":1125,"updatedAt":1149},"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},[1144,1145,1146],{"name":1134,"slug":1135,"type":15},{"name":1120,"slug":1121,"type":15},{"name":1147,"slug":1148,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1151,"name":1151,"fn":1152,"description":1153,"org":1154,"tags":1155,"stars":1124,"repoUrl":1125,"updatedAt":1163},"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},[1156,1159,1160],{"name":1157,"slug":1158,"type":15},"Debugging","debugging",{"name":1147,"slug":1148,"type":15},{"name":1161,"slug":1162,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1165,"name":1165,"fn":1166,"description":1167,"org":1168,"tags":1169,"stars":1124,"repoUrl":1125,"updatedAt":1176},"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},[1170,1173],{"name":1171,"slug":1172,"type":15},"Best Practices","best-practices",{"name":1174,"slug":1175,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1178,"name":1178,"fn":1179,"description":1180,"org":1181,"tags":1182,"stars":1124,"repoUrl":1125,"updatedAt":1188},"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},[1183,1184,1187],{"name":20,"slug":21,"type":15},{"name":1185,"slug":1186,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1190,"name":1190,"fn":1191,"description":1192,"org":1193,"tags":1194,"stars":1124,"repoUrl":1125,"updatedAt":1201},"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},[1195,1198],{"name":1196,"slug":1197,"type":15},"QA","qa",{"name":1199,"slug":1200,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1203,"name":1203,"fn":1204,"description":1205,"org":1206,"tags":1207,"stars":1124,"repoUrl":1125,"updatedAt":1212},"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},[1208,1209],{"name":1120,"slug":1121,"type":15},{"name":1210,"slug":1211,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1214,"name":1214,"fn":1215,"description":1216,"org":1217,"tags":1218,"stars":1124,"repoUrl":1125,"updatedAt":1226},"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},[1219,1222,1223],{"name":1220,"slug":1221,"type":15},"Code Review","code-review",{"name":1147,"slug":1148,"type":15},{"name":1224,"slug":1225,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1228,"name":1228,"fn":1229,"description":1230,"org":1231,"tags":1232,"stars":1124,"repoUrl":1125,"updatedAt":1235},"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},[1233,1234],{"name":1196,"slug":1197,"type":15},{"name":1199,"slug":1200,"type":15},"2026-07-14T05:25:54.928983",{"slug":1237,"name":1237,"fn":1238,"description":1239,"org":1240,"tags":1241,"stars":1124,"repoUrl":1125,"updatedAt":1244},"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},[1242,1243],{"name":1013,"slug":1014,"type":15},{"name":1134,"slug":1135,"type":15},"2026-07-30T05:29:03.275638",525]