Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"llm",
"vlm",
"finetuning",
"gemma3",
"llama",
"llama3",
"mistral",
"openai",
"qwen3",
"gpt-oss",
"qwen3-next",
"glm",
"kimi-k2",
"deepseek-v3-2",
"minimax-m2",
"gemma4",
"qwen3-6",
"deepseek-v4",
"agent"
],
"is_fork": false,
"size_kb": 70538,
"has_wiki": true,
"homepage": "https://docs.nvidia.com/nemo/automodel/nightly/index.html",
"languages": {
"C++": 29610,
"Shell": 194689,
"Python": 18786139,
"Makefile": 377,
"Dockerfile": 13189,
"JavaScript": 2542,
"Standard ML": 19356,
"Jupyter Notebook": 38342
},
"pushed_at": "2026-07-25T06:36:04Z",
"created_at": "2025-05-21T21:45:47Z",
"owner_type": "Organization",
"updated_at": "2026-07-25T06:36:08Z",
"description": "🚀 Pytorch Distributed native training library for LLMs/VLMs with OOTB Hugging Face support",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": "https://nvidia.com/",
"name": null,
"type": "Organization",
"login": "NVIDIA-NeMo",
"company": null,
"location": null,
"followers": 1399,
"avatar_url": "https://avatars.githubusercontent.com/u/213689629?v=4",
"created_at": "2025-05-27T19:36:58Z",
"is_verified": null,
"public_repos": 27,
"account_age_days": 423
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-07-02T19:58:31Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-04-28T20:04:37Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-03-02T18:57:42Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2025-12-04T21:22:08Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2025-10-23T19:24:10Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2025-10-08T14:18:57Z"
},
{
"tag": "v0.1.0rc0",
"kind": "other",
"published_at": "2025-09-17T13:59:00Z"
}
],
"recent_commits": [
{
"oid": "3ebd99a5e65c11ddfa73f964260bbb774827b104",
"body": "* fix(distributed): support packed CP for Llama and Qwen2\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(ci): declare node count for packed CP recipes\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* feat(models): add packed CP support for dense Qwen3\n\nS\n[…]\n\n* test(distributed): gate packed TP CP test by GPU count\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "fix(distributed): support packed CP for Llama, Qwen2, and Qwen3 (#2999)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-25T06:36:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d8c354b0662e0cc489d715e586e6e3c69fe2ab33",
"body": "… (#3192)\n\napply_submodule_checkpointing() wraps the attention submodule by searching\nattr names (\"self_attn\", \"attention\", \"attn\"), but hybrid linear-attention\nmodels (Qwen3-Next, Qwen3.5, Qwen3.5-MoE) name their Gated DeltaNet mixer\n\"linear_attn\". Those layers were therefore never checkpoint-wrapp\n[…]\nred-by: Amol Khanna <amol.khanna@crowdstrike.com>\nCo-authored-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(distributed): activation-checkpoint Qwen3-Next linear_attn layers…",
"author_name": "amolkhanna",
"author_login": "amolkhanna",
"committed_at": "2026-07-25T05:01:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bd592f8829d9fafddd95abc5fea9af9934e087e8",
"body": "Signed-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "fix(glm): size GLM5.2 release CI jobs (#3210)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-25T00:20:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35b1fcab72515236525bbeb57225cc825d1615ae",
"body": "* fix(ci): shard Nemotron Super vLLM deploy across 8 GPUs\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* test(vllm): enable expert parallel for large MoE deploys\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: bump deploy dockerfile to 26.04\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@\n[…]\nyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ci): shard Nemotron Super vLLM deploy across 8 GPUs (#3061)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-24T23:00:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "622cc24ba9206eee9cde6067ca0a50d95dcc8b25",
"body": "…(#3207)\n\nGLM-5.2 uses noaux_tc MoE load balancing: the FP32 e_score_correction_bias\nmust be updated from per-expert token counts after each optimizer step, but\nneither GlmMoeDsaModel nor GlmMoeDsaForCausalLM exposed update_moe_gate_bias,\nso the recipe-side hasattr hook never fired and the bias was \n[…]\nlayers, FakeBalancedGate, and\ngate_bias_update_factor=0 overrides); the outer CausalLM delegates.\n\nSigned-off-by: larkzhang-nv <larkz@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(glm_moe_dsa): expose update_moe_gate_bias on GLM MoE DSA models …",
"author_name": "jQizhang",
"author_login": "jQizhang",
"committed_at": "2026-07-24T18:34:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "37298f4a62e3c97274d6e6b0c6af18082937f02a",
"body": "Signed-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "fix(vlm): size qwen3.6 medpix CI configs (#3209)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-24T18:33:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dfd1401a65f1e73887dcbaa4328f0a6312b1ecb1",
"body": "…ting (#3133)\n\n* fix(dist): keep profiler record-function ops out of SAC replay accounting\n\ntorch 2.13's FSDP2 runs its pre/post-forward hooks under\ntorch.autograd.profiler.record_function, which emits dispatchable\ntorch.ops.profiler ops. When an FSDP module boundary sits inside a\nselective-activati\n[…]\ngned-off-by: HuiyingLi <willwin.lee@gmail.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(dist): keep profiler record-function ops out of SAC replay accoun…",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-24T17:45:39Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fc57de71faefcef21c558853e4618328c197f5f6",
"body": "…ath (#3122)\n\n* refactor(diffusion): migrate recipe onto typed RecipeConfig build() path\n\nAligns the diffusion training recipe with the LLM/VLM recipes: every YAML\nsection is coerced once at the recipe boundary into a typed config that owns\nconstruction via build(...), and the recipe body becomes th\n[…]\nSigned-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
"is_bot": false,
"headline": "refactor(diffusion): migrate recipe onto typed RecipeConfig build() p…",
"author_name": "Pranav Thombre",
"author_login": "pthombre",
"committed_at": "2026-07-24T17:40:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "380423c63c55f9b97cf7246504d900bb3325e287",
"body": "… (#3161)\n\n* feat(dllm): add DiffusionGemma generation via the built-in HF sampler\n\nDiffusionGemma ships its own diffusion sampler in transformers >= 5.11\n(entropy-bounded denoising with adaptive stopping; the pinned 5.12.1\nincludes generation_diffusion_gemma.py), so generation follows the model\nrat\n[…]\nards on top.\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(dllm): add DiffusionGemma generation via the built-in HF sampler…",
"author_name": "Zeyu Zhou",
"author_login": "zyzhou5",
"committed_at": "2026-07-24T16:10:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4027eb1a4972e002254bf0b00d14cf13d9b90db5",
"body": "* perf(kernels): add QuACK backend\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(packaging): sync PyTorch image lock for QuACK\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* test(perf): allow QuACK kernel warmup\n\nSigned-off-by: Alexandros Koumparoulis\n[…]\n: NeMo Bot <nemo-bot@nvidia.com>\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>\nCo-authored-by: NeMo Bot <nemo-bot@nvidia.com>\nCo-authored-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
"is_bot": false,
"headline": "feat(kernels): add QuACK backend (#3115)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-24T14:38:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d41256417b61d56f1c6dd39983de2cb36e2f4df1",
"body": "…n (#3193)\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "feat(checkpoint): preserve intrinsic fp32 during offline consolidatio…",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-24T14:27:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "104878f558471d21f6a7ea8e5c5abbcf59966576",
"body": "* build(deps): pin megatron-fsdp to 0.5.0\n\nMove the megatron-fsdp requirement from the permissive >=0.2.3 range to\nan exact 0.5.0 pin and refresh both uv lock files accordingly. Later\nreleases changed the fully_shard precision API and DTensor handling, so\nthe supported version must be explicit for t\n[…]\nBy: Claude Opus 4.8 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(distributed): Megatron-FSDP 0.5.0 compatibility (#2986)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-24T14:17:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bb9a62c892863c7250460e1ce564cfc9f66136fc",
"body": "…on (#2987)\n\n* feat(distributed): shape TPLinear/LinearLoRA graphs for async-TP fusion\n\nInductor's async tensor-parallel pass (_micro_pipeline_tp, enabled via\nenable_async_tensor_parallel) fuses collectives with matmuls by\npattern-matching the reshape-mm-reshape graph that F.linear emits for\n3-D inp\n[…]\nributed): move TP linear helpers to shared\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(distributed): shape TPLinear/LinearLoRA graphs for async-TP fusi…",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-24T14:09:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "190a2b7145b2d64ba4461bf13dc2aec3b754b549",
"body": "* fix: prefer Automodel config registry lookup\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* docs: require config registry review checks\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: annotate custom config resolver\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "fix: prefer Automodel config registry lookup (#3202)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-24T13:09:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "983bac3c44bddc8847986220a4c687de74eb10a8",
"body": "* fix(glm): apply LoRA to TileLang MLA KV projection\n\nSigned-off-by: Shahaf Wagner <shahafwg@gmail.com>\n\n* feat(glm): add GLM-5.2 LoRA finetune recipe (TileLang MLA)\n\nAdds examples/llm_finetune/glm/glm_5.2_lora.yaml, a 16-node (128-GPU, cp=1/ep=128) LoRA fine-tuning config for GLM-5.2 on the TileLan\n[…]\nludes the required ci: section (recipe_owner/nodes/time) for release CI auto-discovery.\n\nSigned-off-by: Shahaf Wagner <shahafwg@gmail.com>\n\n---------\n\nSigned-off-by: Shahaf Wagner <shahafwg@gmail.com>",
"is_bot": false,
"headline": "fix(glm): apply LoRA to TileLang MLA KV projection (#3176)",
"author_name": "Shahaf Wagner",
"author_login": "shahafwa",
"committed_at": "2026-07-24T11:57:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4cc72911e5f82f3e2014fe0f352725e6369b8c90",
"body": "* docs(retrieval): complete fine-tuning guide integration\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* fix(retrieval): align the public dataset config\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* docs(retrieval): ali\n[…]\n <oholworthy@users.noreply.github.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Oliver Holworthy <oholworthy@users.noreply.github.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "docs(retrieval): complete fine-tuning guide integration (#2306)",
"author_name": "Oliver Holworthy",
"author_login": "oliverholworthy",
"committed_at": "2026-07-24T01:13:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b0b53b0f6251ed968b6a970c69a3439728b3c1b3",
"body": "Fused bf16 SDPA is gradient-unstable for Gemma4 on Hopper (grad_norm NaN ~step 22,\nthen loss NaN, with attn_implementation=sdpa and local_batch_size>=2). Run SDPA\nwith fp32 q/k/v and install it as the sdpa attention when Gemma4 uses sdpa.\n\nSigned-off-by: Amineh Dadsetan <amineh.dadsetan@gmail.com>",
"is_bot": false,
"headline": "fix(gemma4): run SDPA in fp32 to avoid #2208 NaN on Hopper (#3141)",
"author_name": "Amineh Dadsetan",
"author_login": "aminehd",
"committed_at": "2026-07-23T18:46:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd18270430fc82d1a84b0fb5ccea7b457c55f7ee",
"body": "* feat(dllm): LoRA recipes for llada/llada2/nemotron and adapter generation\n\n- New LoRA example recipes mirroring their SFT configs plus a peft block:\n llada_lora.yaml (covers both LLaDA attention/MLP layouts; unmatched\n patterns are no-ops), llada2_lora.yaml (16B MoE: attention + dense-layer\n ML\n[…]\n state_dict.\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(dllm): add lora to dllm (#3163)",
"author_name": "Zeyu Zhou",
"author_login": "zyzhou5",
"committed_at": "2026-07-23T18:08:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bee559ddb2f54e8a9dc40e064e4d86e1c687ef15",
"body": "* fix(ci): preserve HF meta init for device-mapped loads\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: increase Qwen3 MoE parity timeout\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(ci): preserve HF meta init for device-mapped loads (#3188)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-23T18:05:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "601dbafaed8aa925210df39a6d67169df5ae3fea",
"body": "fix(ci): run coverage after successful CI summary\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
"is_bot": false,
"headline": "fix(ci): AUT-964 restore Codecov after skipped GB200 jobs (#3205)",
"author_name": "svcnemo-autobot",
"author_login": "svcnemo-autobot",
"committed_at": "2026-07-23T18:01:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66c5a8bbd98ef6500dbd477b410bf5c14387c329",
"body": "* feat: Support preemption checkpointing\n\nSigned-off-by: edjson <edisonggacc@gmail.com>\n\n* fixed typos\n\nSigned-off-by: edjson <edisonggacc@gmail.com>\n\n* fix: background srun, and added docs\n\nSigned-off-by: edjson <edisonggacc@gmail.com>\n\n* Apply docs corrections from code review\n\nCo-authored-by: jge\n[…]\nroulis <153118171+akoumpa@users.noreply.github.com>\nCo-authored-by: Abhishree Thittenamane <47577437+athitten@users.noreply.github.com>\nCo-authored-by: jgerh <163925524+jgerh@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: Support preemption checkpointing (#3007)",
"author_name": "Edison",
"author_login": "edjson",
"committed_at": "2026-07-23T17:20:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d761ae2cce1c3af97ad14894e9df27c142d53657",
"body": "…3189)\n\n* enable image+text training for vision retrieval\n\n* simplify injecting text with image logic",
"is_bot": false,
"headline": "feat: enable text inclusion alongside images in retrieval training (#…",
"author_name": "rnyak",
"author_login": "rnyak",
"committed_at": "2026-07-23T16:50:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c179031a74171981a0b57bcfb8af276c87259b06",
"body": "* fix: honor memory-efficient LoRA toggle for fused MLPs\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: disable memory-efficient LoRA in throughput recipes\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: keep memory-efficient LoRA for Qwen3.5 benchmark\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "fix(peft): honor memory-efficient LoRA opt-out (#3126)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-23T15:40:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f78e01e754ce8cbb2dc171ec37fd1a72f11452fc",
"body": "…er (#3144)",
"is_bot": false,
"headline": "fix(datasets): keep system turns in the sharegpt conversation convert…",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-23T14:03:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "025bb132e032a089c5ff580049bc2dcdc521b9f4",
"body": null,
"is_bot": false,
"headline": "feat: add checkpoint staging wait option (#3131)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-23T14:01:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "995e8d64cdc6b5134266e7a6cb3b81f107c519c3",
"body": "* ci: restore single L0 GPU unit-test job\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* test(ci): trim slow CPU L0 coverage\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* ci: reduce L0 GPU tests to two shards\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "ci: reduce L0 GPU tests to two shards (#3201)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-23T12:32:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5983424df87ba99271b074727f468f0eeb964554",
"body": "Signed-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "docs(fern): add legacy URL redirects (#3203)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-23T10:34:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70cb0869206c2c4b68547b0cb814687237de016e",
"body": "… (#2937)\n\n* refactor(distributed): introduce CPSharder, retire private CP batch keys\n\nModels that own their CP batch sharding now return a CPSharder dataclass\n(under the 'cp_sharder' batch key) from prepare_model_inputs_for_cp,\nreplacing the private batch-key side channel (_cp_make_batch_fn,\n_cp_me\n[…]\n\n\nDeferred: the cp_sharder.py contiguous-shard function docstrings are long but get\nmerged/rewritten by the follow-up shard_batch_contiguous collapse, so they are\ncompressed there rather than churned…",
"is_bot": false,
"headline": "refactor(distributed): unify CP input prep and dispatch across models…",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-23T09:28:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8918b8cd1dc0ecbbb1309878d3f9b8bb9e238dee",
"body": "* test(deepseek-v4): add random-init pretraining CI\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(ci): select H100 for DeepSeek V4 pretrain\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(ci): use synthetic data for DeepSeek V4 pretrain\n\nSigned-off\n[…]\nvidia.com>\n\n* test(ci): add DeepSeek V4 pretrain pipeline\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "test(ci): add DeepSeek V4 Flash pretrain coverage (#3128)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-23T07:52:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "81e7f01f431c31a60d607b9245f1337d8dcf9e1b",
"body": "…rt (#3199)\n\nPR #2929 added flash_attention_3 and flash_attention_4 to the set of\nflash-attention variants configure_packing patches, so flash_attention_3 is\nno longer an unsupported (no-op) backend. test_noop_for_unsupported_backends\nstill parametrized it as unsupported and asserted the FA2 shim wa\n[…]\ne\nno-op test, and parametrize test_patches_flash_attention_utils over all three\nflash-attention variants so the newly supported fa3/fa4 paths have coverage.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "test(packing): fix stale unsupported-backend test after fa3/fa4 suppo…",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-23T06:27:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "40392130e350902e3aaf4b31eb7bfdec92ada596",
"body": "Signed-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(checkpoint): add DCP CPU offload option (#3130)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-23T02:04:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59d82e3a9421493a490c873569960b1a8de2ae31",
"body": "* feat(attention): support flash_attention_3 and flash_attention_4\n\ntransformers >= 5.x dispatches attn_implementation=flash_attention_3 (dist\nflash-attn-3, module flash_attn_interface) and flash_attention_4 (dist\nflash-attn-4, module flash_attn.cute) natively. This change makes those\nselectable end\n[…]\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(attention): support flash_attention_3 and flash_attention_4 (#2929)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-22T22:39:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "92eb9fc8f489b361e9d3bffad556f64a8d8530ad",
"body": "…(#3151)\n\n* feat(examples): add CoderForge SFT data pipeline for CP validation\n\nPhase 1 of AM-492 (AM-555). Adds examples/convergence/coderforge/:\n\n- prefilter_dataset.py: load togethercomputer/CoderForge-Preview, parse and\n clean the OpenHands trajectories (JSON-string messages/tools + union-schem\n[…]\n@gmail.com>\nSigned-off-by: athitten <abhishreetm@gmail.com>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(examples): Gemma4-31B CoderForge data pipeline + CP SFT recipes …",
"author_name": "Abhishree Thittenamane",
"author_login": "athitten",
"committed_at": "2026-07-22T21:45:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5e292306f0b4c4e34daf26fe8d86b432d2aacabd",
"body": "* fix(distributed): preserve canonical activation checkpoint keys\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: extend Nemotron single-GPU timeout\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: right-size Nemotron single-GPU timeout\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(distributed): preserve canonical activation checkpoint keys (#3152)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-22T20:56:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53ef40b1f608d6fa1aebb4cbd67b997666b3129a",
"body": "* feat(distributed): add block-diagonal varlen context parallelism for packed sequences\n\nAdd a self-contained CP implementation for packed (multi-document)\nsequences where masking must stay block-causal per document, which the\nload-balanced DTensor context_parallel path cannot express:\n\n- batch: con\n[…]\ntributed): harden packed block-diagonal CP\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(distributed): block-diagonal varlen CP for packed sequences (#2989)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-22T18:04:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "79378e6261f28df02a17533e8430c230e1002e55",
"body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(checkpoint): restore adapters through DDP wrappers (#3150)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-22T15:08:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df7dcc6a372e98e99e21554f9e25e9160cb75e48",
"body": "* fix(kd): use torch adam fp32 masters\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(kd): resolve storage dtype from raw config\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(kd): scope fp32 storage fallback to KD recipes\n\nSigned-off-by: Alexandro\n[…]\nfix(kd): use recipe config accessors for dtype resolution\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "fix(kd): use fp32 master weight copy (#3019)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-22T13:31:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "829d6621849852713c7116d256a329d211765634",
"body": "* fix(checkpoint): add bounded retention window\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* fix(checkpoint): log retention policy at startup\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* fix(checkpoint): harden reten\n[…]\n final review cleanup\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n---------\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(checkpoint): add bounded retention window (#2416)",
"author_name": "Oliver Holworthy",
"author_login": "oliverholworthy",
"committed_at": "2026-07-22T09:22:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7cbae6878cf2cc55c69c416955dc66089429a912",
"body": "…#3136)\n\n* fix: make grad norm robust to finite overflow\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: repair near-zero input embedding rows\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* test: cover distributed embedding row repair\n\nSigned-off-by: A\n[…]\nli@nvidia.com>\n\n* fix: handle empty local gradient shards\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "fix: prevent damaged token embeddings from dominating grad clipping (…",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-22T08:39:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c59eba6c514074f55b3718fd566403572284782e",
"body": "* feat(models): add Laguna model implementation\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* test(models): keep Laguna smoke test on dense path\n\nKeep the causal-LM smoke test focused on Laguna wiring while the separate\nunit test continues to validate the sparse MoE layer construction and\nrou\n[…]\noreply@anthropic.com>\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(models): add Laguna model implementation (#3148)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-22T01:34:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c37f04cde41dd91e2018622cc31e07d0c1462710",
"body": "* feat(dllm): add LLaDA2 generation support\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* refactor(dllm): keep LLaDA2 options sampler-local\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* docs(dllm): address LLaDA2 inference review\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* docs(dllm): apply technical publications review\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>",
"is_bot": false,
"headline": "feat(dllm): add LLaDA2 generation support (#3092)",
"author_name": "Zeyu Zhou",
"author_login": "zyzhou5",
"committed_at": "2026-07-21T18:17:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b1b083e789a324c9697b8217093aeb92ca49cb08",
"body": "ci: gate GB200 tests and container build on DISABLE_GB200_TESTS\n\nEnable GB200 CI by default, but skip the cicd-e2e-tests-gb200 jobs and the\nGCP (GB200) container build in the build matrix when the repo variable\nDISABLE_GB200_TESTS is 'true'. The Nemo_CICD_Test summary excludes gb200_\njobs from the failure count in that case, so a disabled run stays green.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
"is_bot": false,
"headline": "ci: AUT-895 gate GB200 tests on DISABLE_GB200_TESTS variable (#3118)",
"author_name": "svcnemo-autobot",
"author_login": "svcnemo-autobot",
"committed_at": "2026-07-21T17:36:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "52e061ccebc80829bf3712c131f8ba5f5198796a",
"body": "* Add Laguna SFT recipe and docs\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: add Laguna README entry\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: use Laguna S 2.1 model id\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: link Laguna README entry to HF\n\nSigned-o\n[…]\nipe\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: add Laguna recipe CI owner\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "docs: add Laguna SFT docs and recipe (#3146)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-21T17:27:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "01d9ab0460bc299cdc5f87dd3ba9dfec03d38b3e",
"body": null,
"is_bot": false,
"headline": "fix(moe): preserve HSDP replica gradient synchronization (#3135)",
"author_name": "wangzhxg",
"author_login": "wangzhxg",
"committed_at": "2026-07-21T09:03:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2e40c6222a35efe72ed1446b655a516e0cf9b882",
"body": "* feat(bagel): make TE and fused projections configurable\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* fix(bagel): harden TE and fused projections\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* fix(bagel): support fused distributed checkpoint init\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n[…]\nned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* perf(bagel): enable TE in example recipes by default\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>",
"is_bot": false,
"headline": "feat(bagel): add TE support (#2895)",
"author_name": "Zeyu Zhou",
"author_login": "zyzhou5",
"committed_at": "2026-07-21T03:28:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "66c72a99c6a21bda5ea50dc56d7d1410528b19ef",
"body": "* fix(ci): preserve retrieval evaluation schedule\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* fix(ci): preserve retrieval release schedule\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(ci): preserve retrieval evaluation schedule (#3139)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-20T21:59:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce862ce43613ade8881bd071fe71a369a8a8436e",
"body": "* build(deps): bump base container to 26.06-cuda13.3\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* ci(install-test): keep cuda-dl-base on 26.04-cuda13.2\n\nSigned-off-by: Dong Hyuk Chang <9426164+tho\n[…]\n-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "test(vlm): add checkpoint robustness coverage (#3112)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-20T21:28:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c659a21e74988b84634d31afbf6325be10bd55ee",
"body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(checkpoint): isolate consolidation timeout from NCCL (#3108)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-20T20:17:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9005cc155e4ef26d50746346b48b318f4b03c502",
"body": "* ci: shard GPU unit tests into 5 pytest-shard chunks\n\nSplit the single L0_Unit_Tests_GPU job into five parallel matrix shards\nusing pytest-shard, plumbing --shard-id/--num-shards through the\ntest-template action and tests/run_test.sh.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>\n\n* \n[…]\nia.com>\n\n* chore(deps): regenerate uv-pytorch.lock for pytest-shard\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>\n\n---------\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
"is_bot": false,
"headline": "ci: AUT-911 shard GPU unit tests into 5 pytest-shard chunks (#3138)",
"author_name": "svcnemo-autobot",
"author_login": "svcnemo-autobot",
"committed_at": "2026-07-20T18:03:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "106bc6aacc0e65c9cfe40317b55eb9b27ba8a8d3",
"body": "…own (#3134)\n\nfix(transformers): keep custom MiniMaxM3VL config when transformers ships its own\n\ntransformers 5.12 (bumped in 14d17731) added a native minimax_m3_vl model\ntype with the same model_type string and class names as our custom\nimplementation. _register_custom_configs skips registration wh\n[…]\nitten against the native config and runs green, so\nits behavior is left unchanged.\n\nRegression test pins CONFIG_MAPPING['minimax_m3_vl'] to our class.\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "fix(transformers): keep custom M3 config when transformers ships its …",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-20T15:47:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3cd3ed2a119fbf0ea23b347d7a881be16c159af0",
"body": "* build(deps): bump base container to 26.06-cuda13.3\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* ci(install-test): keep cuda-dl-base on 26.04-cuda13.2\n\nSigned-off-by: Dong Hyuk Chang <9426164+tho\n[…]\n <yuhez@nvidia.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "build(deps): bump base container to 26.06-cuda13.3 (#2983)",
"author_name": "Dong Hyuk Chang",
"author_login": "thomasdhc",
"committed_at": "2026-07-20T14:01:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0c41f71363d940a4830ad0b142c8c6b204e67648",
"body": "* fix(checkpoint): gather PEFT adapter across PP stages so full LoRA is saved\n\nSigned-off-by: hyfine <835083304@qq.com>\n\n* fix(checkpoint): only warn on PP gather collapse when >1 rank has adapters\n\nAddresses review feedback: the degenerate-gather guard warned whenever\nmerged_n <= max(per_rank), whi\n[…]\n one non-empty rank.\n\nSigned-off-by: hyfine <835083304@qq.com>\n\n---------\n\nSigned-off-by: hyfine <835083304@qq.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(checkpoint): gather PEFT adapter across PP stages (#3096)",
"author_name": "Muqing",
"author_login": "hyfine",
"committed_at": "2026-07-20T11:51:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cdaaff9139d4b3a2aaa5b1ef03226c932f6110b2",
"body": "Add Inkling README news\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "docs: Add Inkling README news (#3129)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-19T08:51:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba4ec358fecfec3bc3524a3e8a56677a2815878b",
"body": "* feat(vlm): THD packed-sequence support for Qwen3-VL-MoE (collater, recipe, capability, tests)\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(vlm): guard THD packing to cp_size=1; document mRoPE/CP scope\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(vlm): use self.mesh_context.cp_size in T\n[…]\nen3-VL-30B-A3B with TE\nattention and packing_format=thd on MedPix: 20 healthy steps, loss 1.98->1.63.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(vlm): add THD packed-sequence support for Qwen3-VL-MoE (#3052)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-18T14:22:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e54ea84b4dc68793be900ede9c29cf98a995dcf5",
"body": "… (#2783)\n\n* ci(dllm): add dLLM SFT nightly train-to-generate launcher and recipes\n\nAdd a dLLM SFT nightly CI test folder:\n- tests/ci_tests/scripts/dllm_sft_launcher.sh: train->generate smoke. torchrun\n finetune via examples/dllm_sft/finetune.py (selects recipe class from the\n config 'recipe:' fie\n[…]\niffusionGemma to nightly SFT\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci(dllm): add dLLM SFT nightly train-to-generate launcher and recipes…",
"author_name": "Zeyu Zhou",
"author_login": "zyzhou5",
"committed_at": "2026-07-18T08:25:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a5b9283045094a1ab5cbcd19c60cdd536ea1e20a",
"body": "* feat(models): add Inkling VLM MoE support\n\nSigned-off-by: hemildesai <hemild@nvidia.com>\n\n* Update uv lock\n\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\n\n* refactor(pp): reuse centralized process group warmup\n\nSigned-off-by: hemildesai <hemild@nvidia.com>\n\n* refactor(pp): use default NCCL communi\n[…]\nmild@nvidia.com>\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: NeMo Bot <nemo-bot@nvidia.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "feat(models): add Inkling VLM MoE support (#3095)",
"author_name": "Hemil Desai",
"author_login": "hemildesai",
"committed_at": "2026-07-18T03:45:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5008ea66c33583bb3fe2f782fbffd56da4135933",
"body": "… (#3113)\n\n* fix(vlm): resolve get_rope_index from the base model for packed mRoPE\n\nTransformers defines get_rope_index on the base model, not on the\n*ForConditionalGeneration that model_parts holds, and DDP or MegatronFSDP add\nanother wrapper on top without proxying attribute reads. The recipe's pl\n[…]\nt of setup(). Fall back to the\nattribute lookups alone when the object does not carry named_children.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "fix(vlm): resolve get_rope_index from the base model for packed mRoPE…",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-18T03:04:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eb0470922bc01557fa424aea09a06b64d3578573",
"body": "* ci: add HF hub cache preflight check\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* refactor(ci): use exit code for hf_cache_check decision\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users\n[…]\nus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: add HF hub cache preflight check (#3119)",
"author_name": "Dong Hyuk Chang",
"author_login": "thomasdhc",
"committed_at": "2026-07-17T20:43:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a0d025e4ad50152960f4516dabb190a8cfcc3720",
"body": "* fix(ci): restore Ministral3 checkpoint robustness\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* fix(ci): make Ministral3 recipes blocking\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(ci): restore Ministral3 checkpoint robustness (#3111)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-17T18:48:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4827dbbaadef007fce81584e1c544d36994de641",
"body": "* feat(loss): add chunked fp32 path to MaskedCrossEntropy via chunk_size\n\nComputing masked cross-entropy on the last pipeline stage upcasts the full\n[N, V] logits to fp32 and additionally saves cross_entropy's fp32 log-softmax\nfor backward, which dominates the loss-side memory peak for large-vocabul\n[…]\nls): harden FA2 packing compatibility shim\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: bound chunked CE memory and preserve packing masks (#2996)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-17T18:37:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f02d3607ae35ef570f89ac7f7c3b54dc54918ab2",
"body": "* feat(training): add opt-in setup-time prewarms for cuBLAS, fla autotune, and NCCL groups\n\ncuBLAS/cuBLASLt workspaces, Triton autotune caches (flash-linear-attention\ngated-delta-net backward kernels), and NCCL communicators all initialize\nlazily on first use. When that first use lands in step 1 at \n[…]\nmaining technical publications suggestions\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(training): add opt-in setup-time prewarms (#2992)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-17T18:36:53Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5adfd2206a5e4cc2432b692a6bf2f2a40cd13d80",
"body": "…(#2884)\n\n* test(ci): remove deprecated 26.10 models from nightly and release CI\n\nDrop deprecated families from nightly recipe lists, exempt them from\nrelease auto-discovery, update benchmark overrides, and remove stale\ngolden convergence values.\n\n* fix(ci): keep Llama 3.2-1B and retrieval tests whi\n[…]\ncontinue to run in CI while the remaining deprecated\nfamilies (Baichuan, Qwen2.5/Seed, Mistral/Mixtral, GLM 4.5/4-9B, Kimi-VL,\nGemma 2/3, Phi, Granite, OLMo, Falcon 3, StarCoder, Cohere) stay removed.",
"is_bot": false,
"headline": "test(ci): remove deprecated 26.10 models from nightly and release CI …",
"author_name": "Abhishree Thittenamane",
"author_login": "athitten",
"committed_at": "2026-07-17T16:41:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8a83fdcee3c5025df0f64399cf771236dfb0242d",
"body": "…s (#2995)\n\n* feat(moe): safe fail-closed tensor parallelism for custom MoE models\n\nEnable tensor parallelism on the non-expert token path of custom MoE\nmodels instead of asserting tp_size == 1, with fail-closed validation:\n\n- Resolve TP plans only from an explicit tp_shard_plan or a registered\n ar\n[…]\nfactor: move tied-weight helpers to shared\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(moe): safe TP and EP/TP gradient correctness for custom MoE model…",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-17T14:20:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4364e4bd22ebbe3b64614840933a248581b2d708",
"body": "* feat(kd): support separate student and teacher meshes\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* docs(kd): add separate-mesh example configs\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* docs(kd): add VLM separate-mesh examples\n\nSigned-off-by: Alexa\n[…]\nidia.com>\n\n* test(kd): cover separate mesh recipe helpers\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "feat(kd): support separate student and teacher meshes (#2954)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-17T07:56:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "af88b008065ef77547a58377498d637271ea69b9",
"body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(test): use eager attention for Nemotron-H HF loads (#3100)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-16T19:44:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fd184099087884b0908dfd150c7f453bc436d23",
"body": "Codecov upload for pull requests from forks landed in a pending state\nbecause the PR number could not be inferred: the fork CI runs on a\nrefs/heads/pull-request/<n> branch, so codecov/codecov-action has no PR\ncontext. Pass override_pr and override_commit from the get-pr-info step\n(mirroring the existing base_sha wiring) so the coverage report is\nassociated with the correct PR and head commit.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
"is_bot": false,
"headline": "fix(ci): pass PR number and commit to Codecov for fork PRs (#3101)",
"author_name": "svcnemo-autobot",
"author_login": "svcnemo-autobot",
"committed_at": "2026-07-16T18:31:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e522eda71804bef99680e8e43baf898d66425116",
"body": "Signed-off-by: Zeyu Zhou <zezhou@nvidia.com>",
"is_bot": false,
"headline": "fix(bagel): enable periodic garbage collection (#3105)",
"author_name": "Zeyu Zhou",
"author_login": "zyzhou5",
"committed_at": "2026-07-16T17:08:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c40259786db0f36548b6efb7c4bdef60008dc0f6",
"body": "…ataloader (#2390)\n\n* wip\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(datasets): satisfy import-linter independence contract\n\nDataloaderConfig.build (the config-driven replacement for the recipe's\nbuild_dataloader) crossed the \"Components must not import each other\"\ncont\n[…]\n-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(datasets): typed Config + build per dataset, config-driven d…",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-16T16:21:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2dca34ea99e2ccb48e4c33225050cd74a4922b1d",
"body": "* feat(speculative): add DFlash validation metrics\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(speculative): skip disabled W&B metrics\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(speculative): add DFlash validation metrics (#3072)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-16T15:11:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59eca013119f9e485bf13f15bc007b8157edc13a",
"body": "…998)\n\n* refactor(models): add TieSupport enum and single tie_word_embeddings guard\n\nReplace reject_unsupported_tied/untied_word_embeddings with a single\nreject_unsupported_tie_word_embeddings(model_cls, config) driven by a per-class\nTieSupport declaration. Migrate the 30 existing guard call sites 1\n[…]\nuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Achyuthan Sivasankar <achyuthan.sivasankar@gmail.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "refactor(models): single tie_word_embeddings guard via TieSupport (#2…",
"author_name": "achyuthan.s",
"author_login": "Achyuthan-S",
"committed_at": "2026-07-16T14:52:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "90ae61715923dfacd22f0ea9fc679c8c764ceb2f",
"body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "test: clean up KD test process group (#3090)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-16T14:44:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10ee7c19f2855d6fe35f2a04daf218762d76c206",
"body": "Revert \"chore(skills): add Regent Open Plugin manifest (#3097)\"\n\nThis reverts commit af4da2e0620d1e718fc7538374bf8551404b70fe.\n\nSigned-off-by: oliver könig <okoenig@nvidia.com>",
"is_bot": false,
"headline": "chore(skills): remove Open Plugin manifest (superseded) (#3099)",
"author_name": "oliver könig",
"author_login": "ko3n1g",
"committed_at": "2026-07-16T09:43:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af4da2e0620d1e718fc7538374bf8551404b70fe",
"body": "Expose this repo's skills/ as a skills-only Regent Open Plugin so in-cluster\nCI agents (implement-author + base analyst) can activate them as $automodel:<skill>.\nAdds only .plugin/plugin.json; Regent scans ./skills/ by default. No behavior\nchange for humans or Claude Code (which reads .claude/skills).\n\nSigned-off-by: oliver könig <okoenig@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(skills): add Regent Open Plugin manifest (#3097)",
"author_name": "oliver könig",
"author_login": "ko3n1g",
"committed_at": "2026-07-16T08:24:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "29322e1e15ae705a8221a36cacbdf0b3ccff9571",
"body": "… (#3083)\n\nfix(speculative): keep DSpark target_layer_ids within [0, N-2] for SGLang servability\n\nThe standard SGLang runtime captures aux/context features via\nset_eagle3_layers_to_capture (effectively capturing the input of layer id+1), so\nit cannot produce a feature for -1 (the embedding, no captu\n[…]\nm is unchanged.\n\nvalidate_target_layer_ids now warns (not errors) when -1 or N-1 is present, since\nthose ids remain valid for AutoModel's own spec_generate.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "fix(speculative): keep DSpark target_layer_ids in [0, N-2] for SGLang…",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-16T02:59:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "49676eed612296f27c1d723495914c7fc4c3d805",
"body": "…(#3081)\n\n* test(speculative): add EAGLE-3 fp8 draft convergence smoke for SM89+\n\nAdds a turnkey harness to validate fp8 draft-training convergence on\nfp8-capable hardware (H100/Ada, sm_89+), the last open fp8 item in the\nspeculative-decoding tracking issue (#2958). The fp8 feature (#2963)\nshipped w\n[…]\n: khazic <khazzz1c@gmail.com>\n\n* chore: re-trigger CI (gb200 coverage step flaked on missing uuidgen)\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "test(speculative): add EAGLE-3 fp8 draft convergence smoke for SM89+ …",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-16T02:57:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6e5d52b5bd6136ab8e3f126dc815c17577051e14",
"body": "Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>",
"is_bot": false,
"headline": "fix(perf): use GPT-OSS head dimension in FLOPs accounting (#3091)",
"author_name": "Yu Yao",
"author_login": "yaoyu-33",
"committed_at": "2026-07-15T23:48:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc9ce776f3eda61f79e4c2ec80c8b8fd12a42ebb",
"body": "* feat(retrieval): add Ministral3 embedding distillation recipe\n\nAdd EmbeddingDistillRecipe with RetrieverStudentWithProjection /\nRetrieverTeacherEmbeddingEncoder, distillation losses (cosine / MSE /\nInfoNCE-distill), intermediate-layer distillation, cross-tokenizer\ncached-teacher support, bi-encode\n[…]\nll.yaml\n\n* Update test_infonce.py\n\n* Update test_retrieval_distill_recipe.py\n\n---------\n\nSigned-off-by: Vinay Raman <viraman@nvidia.com>\nCo-authored-by: rnyak <16246900+rnyak@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add Ministral3 embedding distillation recipe (#3058)",
"author_name": "vinay-raman",
"author_login": "vinay-raman",
"committed_at": "2026-07-15T21:40:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0a0433ded1cc35d3471948b6daca99b20f4ab44c",
"body": "chore(ci): bump claude review template to v1.8.4\n\nUpdate the FW-CI-templates _claude_review.yml pin from the v1.8.3 commit\n(7d857ec) to the equivalent v1.8.4 commit (209ac79), keeping the inline\nversion comment in sync.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
"is_bot": false,
"headline": "chore(ci): AUT-852 bump claude review template to v1.8.4 (#3087)",
"author_name": "svcnemo-autobot",
"author_login": "svcnemo-autobot",
"committed_at": "2026-07-15T15:37:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b768ada9ca1c3a0ecf23271d326765320afe09f",
"body": "* feat(speculative): add Gemma4 EAGLE-3 target support\n\nRegister Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden s\n[…]\nexpert MoE backbone is hooked and supervised\nidentically to a dense target; no code change is needed.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(speculative): add Gemma4-26B-A4B MoE EAGLE-3 example config (#3079)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-15T14:38:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ce24f7afc4b44a22426d92d8239aa0b8f20e2610",
"body": "* feat(speculative): add Gemma4 EAGLE-3 target support\n\nRegister Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden s\n[…]\n8 GiB bf16) plus the draft fits on a single 80 GB\nGPU with freeze_embeddings and expandable_segments.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(speculative): add Gemma4-31B EAGLE-3 example config (#3077)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-15T14:05:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "79bfece527396d1c77397f72890dc9b42905ff78",
"body": "* fix(test): use SDPA for Nemotron-H HF reload\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* fix(test): avoid timeout during rank-zero HF reload\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
"is_bot": false,
"headline": "fix(test): use SDPA for Nemotron-H HF reload (#3060)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-15T14:03:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a6fee931ada2ab2f501d5af458f1342a51ba84b",
"body": "* feat(speculative): add Gemma4 EAGLE-3 target support\n\nRegister Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden s\n[…]\n recipe as the E2B config; only the\ntarget path and output dirs change (E4B: 2560 hidden, 42 layers).\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(speculative): add Gemma4-E4B EAGLE-3 example config (#3073)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-15T13:58:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e8e45a1d76e947c6e6534dcb93879bef6b3d1388",
"body": "* fix(dllm): remove obsolete DiffusionGemma HF compatibility\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* docs(dllm): address DiffusionGemma review feedback\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>",
"is_bot": false,
"headline": "fix(dllm): remove obsolete DiffusionGemma HF compatibility (#3067)",
"author_name": "Zeyu Zhou",
"author_login": "zyzhou5",
"committed_at": "2026-07-15T13:45:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c144e4b7a9e2772c82e24e1592462295dc6d6667",
"body": "Register Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden states from\nthe frozen target's text backbone) with two G\n[…]\ner locates the decoder under\n`model.language_model.layers`, and `num_hidden_layers` is read from `text_config`.\n\nAdds a unit test and an E2B example config.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(speculative): add Gemma4 EAGLE-3 target support (#3071)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-15T09:57:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "395e3de6c93bafcd7cefac808c99edfbb0caf2a2",
"body": "* Fix Kimi K2 config loading without remote code\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* fix: move Kimi K2 config under Kimi package\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "fix: Kimi K2 config loading without remote code (#3065)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-15T02:31:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55a3bfbe7a2b5ecb566e5a5b2d944ff2b496c259",
"body": "Signed-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "fix(ci): use HybridEP for Step 3.5 benchmark (#3069)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-15T00:16:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e809d0de1a9f2036e0e51822109936ffcc9f6e0",
"body": "…t (#2357)\n\n* refactor(vlm-recipe): replace _target_ whitelist with marker-attribute opt-in\n\nbuild_model in recipes/vlm/finetune.py used to enumerate every accepted\nmodel _target_ inline -- the NeMoAutoModelFor* classmethods plus a\ngemma4-specific helper (_is_gemma4_joint_target) that did a lazy imp\n[…]\n\n(present via a fake module, absent via a forced ImportError) plus the\n_is_recipe_target None short-circuit, independent of installed deps.\n\n---------\n\nSigned-off-by: Abhishree <abhishreetm@gmail.com>",
"is_bot": false,
"headline": "refactor(vlm): gate build_model via recipe-side model-target allowlis…",
"author_name": "Abhishree Thittenamane",
"author_login": "athitten",
"committed_at": "2026-07-14T16:06:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "80ba6a018a0c84517855c6125560fabe02c04c82",
"body": "* fix(cp): preserve gradients when sharding VLM inputs\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* test(cp): cover padded gradients and HSDP ranks\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* test(cp): stress scaling with 200 padding rows\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
"is_bot": false,
"headline": "fix(cp): preserve gradients when sharding VLM inputs (#2931)",
"author_name": "Huiying",
"author_login": "HuiyingLi",
"committed_at": "2026-07-14T13:41:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7c7237e5f12adb2c9363b68bfcc0526c068047ec",
"body": "* feat(optim): support per-parameter-group learning rate\n\nAdd `param_group_overrides` to the optimizer config so a subset of\nparameters, matched by name, can be given its own optimizer parameter\ngroup with a learning-rate / weight-decay multiplier. This mirrors\nMegatron-LM's per-group `lr_mult` scal\n[…]\nusedAdam path needs a GPU, so it stays covered by the FSDP2 validation run\nrather than the CPU suite.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(optim): support per-parameter-group learning rate (#3046)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-14T13:04:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6c704d55ff9dd6204d1c7eab143a852c384e6987",
"body": "* fix(distributed): checkpoint canonical child modules\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* proper fix\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* revert\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* rm\n\nSigned-off-by: A\n[…]\nnvidia.com>\n\n* fix(models): preserve wrapped fp32 buffers\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "fix(models): handle checkpoint-wrapped fp32 buffers (#3059)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-14T10:12:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "55ed9becc4b65aa8a3f0e287473b3148f449ab55",
"body": "… (#3045)\n\n* feat(datasets): add optional parallel pre-tokenization before packing\n\nSequence packing first runs one full pass over the dataset, which for a\nlazily-tokenizing map-style dataset (e.g. ChatDataset) tokenizes every\nsample serially in a single process. On realistic multi-turn SFT data thi\n[…]\npply all review suggestions from jgerh on the text-dataset guide (wording, casing, table formatting).\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "feat(datasets): add optional parallel pre-tokenization before packing…",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-14T06:46:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6c47ea6681d1e9dd1361a2eb91a53302b7304bfd",
"body": "…ath (#2993)\n\n* fix(moe): checkpoint trainable vision towers on the expert-parallel path\n\nThe MoE parallelizer's apply_ac only iterates the text/MTP decoder stack,\nand the generic FSDP2/DDP activation-checkpointing scope handling does not\nrun for expert-parallel configs (ep_size > 1), so MoE VLMs wi\n[…]\n-By: Claude Fable 5 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(moe): checkpoint trainable vision towers on the expert-parallel p…",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-14T01:09:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9af3b45a8fefd817e9ff562e8e8780d54e8cf68e",
"body": "…(#2997)\n\n* fix(optim): drop zero-numel local DTensor shards before TE FusedAdam\n\nFSDP2 shards every parameter along dim-0 across the shard group; any\nparameter with dim-0 smaller than the group (e.g. the biases, norm\nweights, and class/position embeddings of a small dense vision tower\nsharded over \n[…]\n-By: Claude Fable 5 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(optim): drop zero-numel local DTensor shards before TE FusedAdam …",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-13T20:34:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "37ac2dcd565cc126fa6ed5035274d56527c2e3d0",
"body": "… (#3001)\n\nThe Tulu-3 VLM SFT recipes pointed make_meta_dataset at a local\ntulu3_train_meta.json that requires a one-time data-prep dump. That file\nis absent in Nemo-CI, so the runs failed with FileNotFoundError.\n\nAdd make_tulu3_dataset, which pulls allenai/tulu-3-sft-mixture straight\nfrom the Hub a\n[…]\nJSON path uses (_convert_sharegpt_to_conversation), keeping the data\ncomposition identical (no turn cap, system turns dropped, rows in split\norder). Point the three tulu3 recipes at it.\n\nFixes AM-628.",
"is_bot": false,
"headline": "fix(vlm): load Tulu-3 directly from HF Hub instead of local meta JSON…",
"author_name": "Abhishree Thittenamane",
"author_login": "athitten",
"committed_at": "2026-07-13T18:26:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "446b43338896f1dd31768978078cc108f59544a7",
"body": "…by version (#3025)\n\n* fix(distributed): resolve transformers-v5 module paths in VLM AC layer-group specs\n\nTransformers v5 nests the Qwen2-VL/Qwen2.5-VL towers under the shared\n`model.` backbone and flattened the Llava/Gemma3 CLIP/SigLIP vision\ntowers, so the layer-group FQNs in _get_model_layer_gro\n[…]\n-By: Claude Fable 5 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(distributed): resolve VLM AC layer-group paths structurally, not …",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-13T17:09:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d9e2557241f931407a14c95b660d811402aac8d8",
"body": "* fix(transformers): gate _tie_weights_nemo on tie_word_embeddings flag\n\n_tie_weights_nemo re-tied lm_head.weight to the input embedding for any\nmodel exposing _nemo_tied_weights_keys, without consulting\nconfig.tie_word_embeddings. For untied models this aliased away the\ntrained lm_head loaded by fr\n[…]\nmers): align nano4 source parity threshold\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(transformers): add source-load parity coverage (#2960)",
"author_name": "Yuhe Zhang",
"author_login": "yuhezhang-ai",
"committed_at": "2026-07-13T16:44:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "aaa158dc8e8f6f67a77a4f94da6a42bb0a66824e",
"body": "Signed-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "fix(dspark): omit unmeasured positional acceptance rates (#3050)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-13T15:04:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b968af6ecbee35dd22439c8a641b14d5c63b3073",
"body": "* icnldue cutlass\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* Update uv lock\n\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\nCo-authored-by: NeMo Bot <nemo-bot@nvidia.com>",
"is_bot": false,
"headline": "ci: include cutlass deps (#3056)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-13T14:50:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bf95de57386a8c58c13f82ba7ef42931ed506b9",
"body": "* fix(recipe): add Qwen3 MoE THD chat template\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(recipe): add OLMo generation chat template\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
"is_bot": false,
"headline": "fix(recipe): add generation-marked chat templates (#3051)",
"author_name": "khazzz1c",
"author_login": "khazic",
"committed_at": "2026-07-13T14:32:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6e5787d718d2ab53d6e39f85206bef5f982a51c",
"body": "add uv\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
"is_bot": false,
"headline": "docs: add uv run prefix (#3057)",
"author_name": "Alexandros Koumparoulis",
"author_login": "akoumpa",
"committed_at": "2026-07-13T13:41:52Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 7,
"commits_last_year": 1505,
"latest_release_at": "2026-07-02T19:58:31Z",
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 52,
"days_since_latest_release": 22,
"mean_days_between_releases": 48
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "nemo-automodel",
"exists": true,
"license": null,
"keywords": [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Scientific/Engineering :: Image Recognition",
"Topic :: Scientific/Engineering :: Mathematics",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Utilities"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/nemo-automodel/",
"is_deprecated": false,
"latest_version": "0.5.0",
"repository_url": "https://github.com/NVIDIA-NeMo/Automodel",
"versions_count": 7,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 19319,
"first_published_at": "2025-09-17T13:58:50.684922Z",
"latest_published_at": "2026-07-02T19:58:07.447163Z",
"latest_version_yanked": null,
"days_since_latest_publish": 22
}
]
},
"popularity": {
"forks": 231,
"stars": 766,
"watchers": 9,
"fork_history": {
"days": [
{
"date": "2025-07-08",
"count": 1
},
{
"date": "2025-07-19",
"count": 1
},
{
"date": "2025-07-28",
"count": 1
},
{
"date": "2025-08-25",
"count": 1
},
{
"date": "2025-08-26",
"count": 1
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-08-28",
"count": 2
},
{
"date": "2025-09-05",
"count": 1
},
{
"date": "2025-09-24",
"count": 1
},
{
"date": "2025-10-11",
"count": 1
},
{
"date": "2025-10-16",
"count": 1
},
{
"date": "2025-10-22",
"count": 2
},
{
"date": "2025-10-28",
"count": 2
},
{
"date": "2025-11-05",
"count": 1
},
{
"date": "2025-11-12",
"count": 1
},
{
"date": "2025-11-14",
"count": 2
},
{
"date": "2025-11-16",
"count": 1
},
{
"date": "2025-11-20",
"count": 1
},
{
"date": "2025-11-23",
"count": 1
},
{
"date": "2025-12-05",
"count": 1
},
{
"date": "2025-12-08",
"count": 2
},
{
"date": "2025-12-11",
"count": 1
},
{
"date": "2025-12-12",
"count": 1
},
{
"date": "2025-12-18",
"count": 1
},
{
"date": "2025-12-19",
"count": 2
},
{
"date": "2025-12-23",
"count": 1
},
{
"date": "2025-12-24",
"count": 1
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2025-12-31",
"count": 1
},
{
"date": "2026-01-01",
"count": 2
},
{
"date": "2026-01-03",
"count": 1
},
{
"date": "2026-01-09",
"count": 1
},
{
"date": "2026-01-12",
"count": 2
},
{
"date": "2026-01-16",
"count": 2
},
{
"date": "2026-01-17",
"count": 1
},
{
"date": "2026-01-21",
"count": 1
},
{
"date": "2026-01-25",
"count": 1
},
{
"date": "2026-01-27",
"count": 1
},
{
"date": "2026-02-04",
"count": 2
},
{
"date": "2026-02-05",
"count": 1
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-02-09",
"count": 1
},
{
"date": "2026-02-10",
"count": 3
},
{
"date": "2026-02-11",
"count": 1
},
{
"date": "2026-02-12",
"count": 3
},
{
"date": "2026-02-15",
"count": 1
},
{
"date": "2026-02-16",
"count": 2
},
{
"date": "2026-02-17",
"count": 4
},
{
"date": "2026-02-18",
"count": 2
},
{
"date": "2026-02-19",
"count": 2
},
{
"date": "2026-02-20",
"count": 1
},
{
"date": "2026-02-21",
"count": 2
},
{
"date": "2026-02-24",
"count": 2
},
{
"date": "2026-02-25",
"count": 2
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-02-27",
"count": 1
},
{
"date": "2026-02-28",
"count": 2
},
{
"date": "2026-03-02",
"count": 1
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-06",
"count": 2
},
{
"date": "2026-03-10",
"count": 1
},
{
"date": "2026-03-11",
"count": 1
},
{
"date": "2026-03-13",
"count": 1
},
{
"date": "2026-03-14",
"count": 1
},
{
"date": "2026-03-15",
"count": 1
},
{
"date": "2026-03-18",
"count": 1
},
{
"date": "2026-03-20",
"count": 1
},
{
"date": "2026-03-21",
"count": 2
},
{
"date": "2026-03-26",
"count": 2
},
{
"date": "2026-03-29",
"count": 1
},
{
"date": "2026-03-30",
"count": 2
},
{
"date": "2026-03-31",
"count": 1
},
{
"date": "2026-04-01",
"count": 1
},
{
"date": "2026-04-02",
"count": 2
},
{
"date": "2026-04-03",
"count": 2
},
{
"date": "2026-04-05",
"count": 1
},
{
"date": "2026-04-06",
"count": 3
},
{
"date": "2026-04-07",
"count": 5
},
{
"date": "2026-04-09",
"count": 2
},
{
"date": "2026-04-10",
"count": 1
},
{
"date": "2026-04-11",
"count": 1
},
{
"date": "2026-04-14",
"count": 2
},
{
"date": "2026-04-15",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-17",
"count": 1
},
{
"date": "2026-04-19",
"count": 1
},
{
"date": "2026-04-21",
"count": 2
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-04-24",
"count": 1
},
{
"date": "2026-04-25",
"count": 1
},
{
"date": "2026-04-28",
"count": 1
},
{
"date": "2026-04-29",
"count": 3
},
{
"date": "2026-04-30",
"count": 1
},
{
"date": "2026-05-02",
"count": 2
},
{
"date": "2026-05-03",
"count": 1
},
{
"date": "2026-05-04",
"count": 1
},
{
"date": "2026-05-08",
"count": 1
},
{
"date": "2026-05-10",
"count": 2
},
{
"date": "2026-05-12",
"count": 1
},
{
"date": "2026-05-13",
"count": 2
},
{
"date": "2026-05-14",
"count": 2
},
{
"date": "2026-05-15",
"count": 1
},
{
"date": "2026-05-16",
"count": 1
},
{
"date": "2026-05-17",
"count": 1
},
{
"date": "2026-05-18",
"count": 3
},
{
"date": "2026-05-20",
"count": 2
},
{
"date": "2026-05-21",
"count": 2
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-05-25",
"count": 1
},
{
"date": "2026-05-26",
"count": 1
},
{
"date": "2026-05-27",
"count": 3
},
{
"date": "2026-05-29",
"count": 1
},
{
"date": "2026-05-31",
"count": 2
},
{
"date": "2026-06-01",
"count": 1
},
{
"date": "2026-06-03",
"count": 1
},
{
"date": "2026-06-05",
"count": 3
},
{
"date": "2026-06-06",
"count": 1
},
{
"date": "2026-06-09",
"count": 1
},
{
"date": "2026-06-10",
"count": 3
},
{
"date": "2026-06-11",
"count": 1
},
{
"date": "2026-06-15",
"count": 1
},
{
"date": "2026-06-16",
"count": 1
},
{
"date": "2026-06-18",
"count": 1
},
{
"date": "2026-06-22",
"count": 1
},
{
"date": "2026-06-23",
"count": 3
},
{
"date": "2026-06-26",
"count": 1
},
{
"date": "2026-06-27",
"count": 1
},
{
"date": "2026-06-28",
"count": 1
},
{
"date": "2026-06-29",
"count": 2
},
{
"date": "2026-07-01",
"count": 2
},
{
"date": "2026-07-02",
"count": 3
},
{
"date": "2026-07-03",
"count": 1
},
{
"date": "2026-07-05",
"count": 2
},
{
"date": "2026-07-06",
"count": 2
},
{
"date": "2026-07-08",
"count": 2
},
{
"date": "2026-07-09",
"count": 2
},
{
"date": "2026-07-10",
"count": 2
},
{
"date": "2026-07-11",
"count": 2
},
{
"date": "2026-07-12",
"count": 1
},
{
"date": "2026-07-13",
"count": 3
},
{
"date": "2026-07-14",
"count": 3
},
{
"date": "2026-07-16",
"count": 2
},
{
"date": "2026-07-17",
"count": 1
},
{
"date": "2026-07-20",
"count": 1
},
{
"date": "2026-07-21",
"count": 2
},
{
"date": "2026-07-22",
"count": 3
},
{
"date": "2026-07-24",
"count": 3
}
],
"complete": true,
"collected": 225,
"total_forks": 231
},
"star_history": null,
"open_issues_and_prs": 344
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples",
"notebooks",
"recipes"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [
"docs/Makefile",
"docs/fern/Makefile",
"nemo_automodel/components/datasets/llm/megatron/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 153900,
"source_files_sampled": 1405,
"oversized_source_files": 30,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 13233
},
"dependencies": {
"manifests": [
"pyproject.toml"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 131,
"malicious_count": 0,
"assessed_package": "pypi:nemo-automodel@0.5.0",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [
{
"name": "datasets",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=4.0.0"
},
{
"name": "megatron-fsdp",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "==0.5.0"
},
{
"name": "mistral-common",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "pybind11",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "pyyaml",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "tiktoken",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "torch",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.6.0"
},
{
"name": "torchdata",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "transformers",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "==5.12.1"
},
{
"name": "wandb",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=0.28.0"
},
{
"name": "torchao",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "mlflow",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "flashoptim",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=0.1.3"
},
{
"name": "quack-kernels",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "==0.6.1"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 193,
"merged_prs": 2071,
"open_issues": 151,
"closed_ratio": 0.705,
"closed_issues": 361,
"closed_unmerged_prs": 399
},
"bus_factor": 4,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "akoumpa",
"commits": 398,
"avatar_url": "https://avatars.githubusercontent.com/u/153118171?v=4"
},
{
"type": "User",
"login": "thomasdhc",
"commits": 207,
"avatar_url": "https://avatars.githubusercontent.com/u/9426164?v=4"
},
{
"type": "User",
"login": "HuiyingLi",
"commits": 203,
"avatar_url": "https://avatars.githubusercontent.com/u/1331543?v=4"
},
{
"type": "User",
"login": "khazic",
"commits": 188,
"avatar_url": "https://avatars.githubusercontent.com/u/83893956?v=4"
},
{
"type": "User",
"login": "adil-a",
"commits": 123,
"avatar_url": "https://avatars.githubusercontent.com/u/47084919?v=4"
},
{
"type": "User",
"login": "hemildesai",
"commits": 105,
"avatar_url": "https://avatars.githubusercontent.com/u/8195444?v=4"
},
{
"type": "User",
"login": "ko3n1g",
"commits": 46,
"avatar_url": "https://avatars.githubusercontent.com/u/16716991?v=4"
},
{
"type": "User",
"login": "chtruong814",
"commits": 39,
"avatar_url": "https://avatars.githubusercontent.com/u/195193376?v=4"
},
{
"type": "User",
"login": "yuhezhang-ai",
"commits": 39,
"avatar_url": "https://avatars.githubusercontent.com/u/8109249?v=4"
},
{
"type": "User",
"login": "ZhiyuLi-Nvidia",
"commits": 31,
"avatar_url": "https://avatars.githubusercontent.com/u/195393437?v=4"
}
],
"contributors_sampled": 99,
"top_contributor_share": 0.235
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"_update_dependencies.yml",
"changelog-build.yml",
"cherry-pick-release-commit.yml",
"cicd-approve-test-queue.yml",
"cicd-main.yml",
"claude-review.yml",
"close-inactive-issue-pr.yml",
"community-bot.yml",
"copyright-check.yml",
"dependabot.yml",
"detect-secrets.yml",
"fern-docs-ci.yml",
"fern-docs-preview-build.yml",
"fern-docs-preview-comment.yml",
"install-test.yml",
"publish-fern-docs.yml",
"release-freeze.yml",
"release.yml",
"request-nvskills-ci.yml",
"semantic_pull_request.yml",
"uv-lock-generation.yml",
"validate-recipe-configs.yml"
],
"has_docs_dir": true,
"linter_configs": [
".flake8",
".pylintrc"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [
"uv.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 9,
"reason": "Found 27/30 approved changesets -- score normalized to 9",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 24 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "78 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "3ebd99a5e65c11ddfa73f964260bbb774827b104",
"ran_at": "2026-07-25T06:51:33Z",
"aggregate_score": 5.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-25T06:47:35Z",
"oldest_open_prs": [
{
"number": 393,
"created_at": "2025-08-27T18:11:04Z",
"last_comment_at": "2025-08-27T18:11:08Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 449,
"created_at": "2025-09-10T08:51:17Z",
"last_comment_at": "2025-09-10T08:51:20Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 472,
"created_at": "2025-09-17T18:03:44Z",
"last_comment_at": "2025-09-17T23:41:16Z",
"last_comment_author": "akoumpa"
},
{
"number": 476,
"created_at": "2025-09-18T15:16:51Z",
"last_comment_at": "2025-09-19T07:19:03Z",
"last_comment_author": "akoumpa"
},
{
"number": 496,
"created_at": "2025-09-23T08:37:30Z",
"last_comment_at": "2025-09-23T08:37:33Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 538,
"created_at": "2025-09-30T18:35:08Z",
"last_comment_at": "2025-10-28T03:37:57Z",
"last_comment_author": "akoumpa"
},
{
"number": 582,
"created_at": "2025-10-04T04:32:20Z",
"last_comment_at": "2025-10-04T04:32:24Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 599,
"created_at": "2025-10-07T18:29:35Z",
"last_comment_at": "2025-10-07T18:29:38Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 623,
"created_at": "2025-10-13T06:10:00Z",
"last_comment_at": "2025-10-13T06:10:03Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 643,
"created_at": "2025-10-15T07:16:22Z",
"last_comment_at": "2025-10-15T07:25:54Z",
"last_comment_author": "pablo-garay"
},
{
"number": 784,
"created_at": "2025-11-07T17:27:56Z",
"last_comment_at": "2025-11-07T17:28:00Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 787,
"created_at": "2025-11-10T00:28:09Z",
"last_comment_at": "2026-01-13T18:07:32Z",
"last_comment_author": "hemildesai"
},
{
"number": 840,
"created_at": "2025-11-20T02:12:42Z",
"last_comment_at": "2025-11-20T02:12:45Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 875,
"created_at": "2025-11-23T02:37:22Z",
"last_comment_at": "2026-03-11T18:56:16Z",
"last_comment_author": "bernardwin"
},
{
"number": 1006,
"created_at": "2026-01-02T09:18:50Z",
"last_comment_at": "2026-01-03T08:55:31Z",
"last_comment_author": "HuiyingLi"
},
{
"number": 1057,
"created_at": "2026-01-14T17:52:07Z",
"last_comment_at": "2026-01-14T20:49:26Z",
"last_comment_author": "akoumpa"
},
{
"number": 1072,
"created_at": "2026-01-16T13:16:21Z",
"last_comment_at": "2026-01-20T18:33:53Z",
"last_comment_author": "akoumpa"
},
{
"number": 1094,
"created_at": "2026-01-21T16:19:34Z",
"last_comment_at": "2026-02-26T14:03:11Z",
"last_comment_author": "akoumpa"
},
{
"number": 1101,
"created_at": "2026-01-22T16:32:35Z",
"last_comment_at": "2026-01-22T16:32:39Z",
"last_comment_author": "copy-pr-bot"
},
{
"number": 1141,
"created_at": "2026-01-30T19:04:01Z",
"last_comment_at": "2026-01-30T19:04:05Z",
"last_comment_author": "copy-pr-bot"
}
],
"last_merged_pr_at": "2026-07-25T06:36:02Z",
"ci_last_conclusion": null,
"oldest_open_issues": [
{
"number": 258,
"created_at": "2025-07-23T05:25:55Z",
"last_comment_at": "2025-09-11T02:07:13Z",
"last_comment_author": "github-actions"
},
{
"number": 679,
"created_at": "2025-07-29T19:13:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 678,
"created_at": "2025-07-29T19:14:01Z",
"last_comment_at": "2026-07-02T20:10:44Z",
"last_comment_author": "yaoyu-33"
},
{
"number": 676,
"created_at": "2025-08-04T23:32:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 395,
"created_at": "2025-08-27T18:36:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 418,
"created_at": "2025-09-03T23:37:53Z",
"last_comment_at": "2025-12-08T05:17:59Z",
"last_comment_author": "snowmanwwg"
},
{
"number": 419,
"created_at": "2025-09-04T16:29:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 495,
"created_at": "2025-09-23T00:46:44Z",
"last_comment_at": "2025-10-07T18:35:32Z",
"last_comment_author": "terrykong"
},
{
"number": 674,
"created_at": "2025-09-23T16:54:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 501,
"created_at": "2025-09-23T23:32:34Z",
"last_comment_at": "2025-09-24T00:09:44Z",
"last_comment_author": "akoumpa"
},
{
"number": 502,
"created_at": "2025-09-24T00:08:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 509,
"created_at": "2025-09-24T20:19:57Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 514,
"created_at": "2025-09-25T19:12:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 533,
"created_at": "2025-09-30T03:04:41Z",
"last_comment_at": "2026-06-24T16:21:00Z",
"last_comment_author": "huahuajhu"
},
{
"number": 535,
"created_at": "2025-09-30T06:47:44Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 536,
"created_at": "2025-09-30T17:07:53Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 543,
"created_at": "2025-10-01T16:30:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 551,
"created_at": "2025-10-01T20:51:15Z",
"last_comment_at": "2026-07-02T20:10:42Z",
"last_comment_author": "yaoyu-33"
},
{
"number": 558,
"created_at": "2025-10-02T16:43:28Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 563,
"created_at": "2025-10-03T05:55:26Z",
"last_comment_at": "2025-10-03T06:08:33Z",
"last_comment_author": "snowmanwwg"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/NVIDIA-NeMo/Automodel",
"host": "github.com",
"name": "Automodel",
"owner": "NVIDIA-NeMo"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"security": 64,
"vitality": 97,
"community": 74,
"governance": 81,
"engineering": 96
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 97,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"commits_last_year": 1505,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 52
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "52/52 weeks with commits",
"points": 36,
"status": "met",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 52
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "1505 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 1505
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 92,
"inputs": {
"releases_count": 7,
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_latest_release": 22,
"mean_days_between_releases": 48
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "7 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 7
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 22 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 22
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~48 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 48
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 0,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 0 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 0
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 74,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "good",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"forks": 231,
"stars": 766,
"watchers": 9,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "766 stars",
"points": 46.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 766
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "231 forks",
"points": 19.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 231
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "9 watchers",
"points": 5,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 9
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "good",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 71,
"inputs": {
"packages": [
"nemo-automodel"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 19319
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "19,319 downloads/month across pypi",
"points": 57.1,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 19319,
"ecosystems": "pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 81,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"bus_factor": 4,
"contributors_sampled": 99,
"top_contributor_share": 0.235
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "4 contributor(s) cover half of all commits",
"points": 43.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 4
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 24% of commits",
"points": 17.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 24
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "99 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 99
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 24 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 79,
"inputs": {
"merged_prs": 2071,
"open_issues": 151,
"closed_issues": 361,
"issue_closed_ratio": 0.705,
"closed_unmerged_prs": 399
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "70% of issues closed",
"points": 33,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 70
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "2071/2470 decided PRs merged",
"points": 32.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 2071,
"decided": 2470
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 27/30 approved changesets -- score normalized to 9",
"points": 13.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"followers": 1399,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "NVIDIA-NeMo",
"public_repos": 27,
"account_age_days": 423
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "1,399 followers of NVIDIA-NeMo",
"points": 22.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1399,
"login": "NVIDIA-NeMo"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "27 public repos, account ~1 yr old",
"points": 12.9,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 27
}
},
{
"code": "account_age_years",
"params": {
"years": 1
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"nemo-automodel"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 22
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 22 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 22
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "7 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 7
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 96,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 94,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "22 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 22
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".flake8, .pylintrc",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".flake8, .pylintrc"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"llm",
"vlm",
"finetuning",
"gemma3",
"llama",
"llama3",
"mistral",
"openai",
"qwen3",
"gpt-oss",
"qwen3-next",
"glm",
"kimi-k2",
"deepseek-v3-2",
"minimax-m2",
"gemma4",
"qwen3-6",
"deepseek-v4",
"agent"
],
"has_wiki": true,
"homepage": "https://docs.nvidia.com/nemo/automodel/nightly/index.html",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://docs.nvidia.com/nemo/automodel/nightly/index.html",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "19 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 19
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 64,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 55,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 5.5
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 27/30 approved changesets -- score normalized to 9",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 24 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "78 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:nemo-automodel@0.5.0 runtime dependency closure — what installing the published package pulls in — 131 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "pypi:nemo-automodel@0.5.0",
"assessed": 131
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 131,
"unassessed_packages": 0,
"affected_by_severity": "none",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 131,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 6
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 68,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 13233
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"uv.lock"
],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [
"docs/Makefile",
"docs/fern/Makefile",
"nemo_automodel/components/datasets/llm/megatron/Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.24,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "docs/Makefile, docs/fern/Makefile, nemo_automodel/components/datasets/llm/megatron/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "docs/Makefile, docs/fern/Makefile, nemo_automodel/components/datasets/llm/megatron/Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".flake8, .pylintrc",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".flake8, .pylintrc"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "24 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 24,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 153900,
"source_files_sampled": 1405,
"oversized_source_files": 30
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "30/1405 source files over 60KB",
"points": 53.8,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 1405,
"oversized": 30
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples",
"notebooks",
"recipes"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples, notebooks, recipes",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples, notebooks, recipes"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-25T06:52:11.429061Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/NVIDIA-NeMo/Automodel.svg",
"full_name": "NVIDIA-NeMo/Automodel",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}