Skip to content

data-designer download personas fails on NGC CLI 3.x #708

@3mei

Description

@3mei

Priority Level

High (Major functionality broken)

Describe the bug

Summary

data-designer download personas --locale <code> shells out to ngc registry resource download-version ... --org nvidia .... On NGC CLI 3.164.0 (current release at the time of filing — likely earlier 3.x releases too), download-version does not accept --org, and --org is not a global flag either, so the subprocess exits non-zero and the persona download fails. The --org nvidia is also redundant: the resource path is already nvidia/nemotron-personas/<dataset> so NGC parses the org from the path prefix.

Environment

  • data-designer: main (since #604chore(cli): Add --org option to NGC download command)
  • NGC CLI: 3.164.0 (and probably any NGC CLI 3.x release)
  • OS: Linux (reproduced on Colab; not OS-specific)

Steps/Code to reproduce bug

# NGC CLI 3.164.0 installed and on PATH, NGC_API_KEY exported
$ data-designer download personas --locale en_US
  ────────── Download Nemotron-Persona Datasets ───────────
  💡  Datasets will be saved to: /root/.data-designer/managed-assets/datasets
  💡  NGC CLI 3.164.0
  📦 Will download 1 Nemotron-Persona dataset(s):
    • en_US (1.24 GB)
  Proceed with download? [Y/n]: y
  📦 Downloading Nemotron-Persona dataset for en_US...
usage: ngc [--debug] [--format_type <fmt>] [--version] [-h]
           {cloud-function,config,diag,pym,registry,version}
           ...
ngc: error: unrecognized arguments: --org
  ❌  ✗ Failed to download Nemotron-Persona dataset for en_US
  ❌  NGC CLI error: Command '['ngc', 'registry', 'resource',
'download-version', 'nvidia/nemotron-personas/nemotron-personas-dataset-en_us',
'--org', 'nvidia', '--dest', '/tmp/tmpyxfejaug']' returned non-zero exit status 2.

Note that the usage: line in the NGC CLI error lists the top-level flags as --debug --format_type --version -h--org is not among them, confirming it's not a global flag in 3.x.

Expected behavior

Root cause

packages/data-designer/src/data_designer/cli/services/download_service.py lines 50–60:

cmd = [
    "ngc",
    "registry",
    "resource",
    "download-version",
    f"nvidia/nemotron-personas/{locale_obj.dataset_name}",
    "--org",
    "nvidia",
    "--dest",
    temp_dir,
]
subprocess.run(cmd, check=True)

The --org nvidia flag was added in #604. It's not accepted by ngc registry resource download-version in NGC CLI 3.x.

Proposed fix

Drop the --org args; the org is already specified in the resource path:

cmd = [
    "ngc",
    "registry",
    "resource",
    "download-version",
    f"nvidia/nemotron-personas/{locale_obj.dataset_name}",
    "--dest",
    temp_dir,
]

Agent Diagnostic / Prior Investigation

No response

Additional context

This is a one-line fix. The existing unit test packages/data-designer/tests/cli/services/test_download_service.py (currently asserts the broken shape at lines 137–143) needs to be updated to drop the same args.

Why the unit test didn't catch this

The test mocks subprocess.run and asserts the exact cmd list, so it validates "we call ngc with this exact argv" rather than "the call succeeds against a real NGC CLI". Recommendation: add a CI smoke test that runs data-designer download personas --locale en_US --dry-run against a real NGC CLI install, or at least mocks the NGC CLI process to return a sample of its actual help/error output.

Checklist

  • I reproduced this issue or provided a minimal example
  • I searched the docs/issues myself, or had my agent do so
  • If I used an agent, I included its diagnostics above

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions