NVIDIA-NeMo/DataDesigner · 上手攻略

⚠️ 本文所有命令与版本基于公开 README 与 NVIDIA 技术博客 2026-07-09 复现表(PyPI 包名 data-designer,复现版本 0.1.5),未经本机实跑;任何对 config_builder / ModelConfig API 的引用若与 README 冲突,以官方 docs.nvidia.com/nemo/datadesigner 为准。


1. 是什么

NeMo Data Designer(下称 NDD)是 NVIDIA 2025 年开源的多模态合成数据生成(Synthetic Data Generation, SDG)编排框架,Apache-2.0 协议。它不是单一模型,而是一套声明式 schema 驱动的生成管线:你用 Python 描述每列的「类型 + 参数 + 依赖」,NDD 帮你把 LLM 调用、采样器、图像/音频/视频模型、校验器、MCP 工具调用串起来,跑批量、重试、监控,最终吐出一份生产可用的合成数据集。

要点提炼:

  • 声明式 + 可检查:配置本身是 artifact,可以版本化、共享、复现——这是它区别于「散装脚本 + LangChain」的关键。
  • 多模态:text / code / structured / image / embedding / 统计采样器六类列类型;MCP 工具调用可捕获交互轨迹喂给 agent 训练。
  • 预览-修订闭环(preview-and-revision loop):先 preview() 出 5~50 条样本肉眼/校验器检查 → 改 schema → create() 全量生成,迭代成本低。
  • 依赖解析与重试:运行时自动拓扑排序、按并行度调度 LLM 调用、失败重试,掉一个 endpoint 不会全盘崩。
  • 可插拔:自定义列类型、seed reader、processor 都通过 plugin 接口加,不改主干。

⚠️ 截至 2026-09,PyPI 公开复现版本为 data-designer 0.1.5(NVIDIA 2026-07-09 财务金融合成数据博客的版本表),20T+ tokens 处理量是项目自报的累计口径。NDD 团队 2026-09-15 投了配套论文 arXiv:2609.17699(Greco 等,《An Extensible Framework for Multimodal Synthetic Data Generation》),方法学描述与 README 一致,可作二级源核验。

2. 解决什么问题

合成数据生成的痛点从来不是「能不能让 LLM 编数据」,而是下面这些工程化问题:

  1. 字段相关性:单纯 prompt LLM 写一堆字段,每列独立随机,分布畸形。NDD 用统计采样器(CATEGORY / NUMERIC / 等)+ 表达式依赖({{ product_category }} 占位)锁住联合分布。
  2. 质量门控:生成完怎么知道没胡说八道?NDD 把 Python/SQL 表达式、自定义函数、远程 MCP validator、LLM-as-judge 全部归一到 validator 列,先于落盘打分。
  3. 多模态 + 工具调用:合成 agent 训练轨迹需要「图像 + 工具调用结果 + 文本回复」三元组,NDD 通过 image/audio/video 列 + MCP server 集成一条龙。
  4. 可复现 + 可审计:每条生成记录都带 trace(用了哪个 model、prompt、参数、validator 得分),训练侧做溯源。
  5. 从 PoC 到生产:preview(5 条)→ 迭代 → create(百万条)的同一个 config_builder,不用重写。

典型适用:训练数据合成(SFT/RLAIF/DPO 用)、评测集构造(覆盖长尾分布)、agent 轨迹生成、跨模态对齐数据、消融研究控制变量。

3. 快速安装

3.1 PyPI 装包(推荐起步)

# 需 Python 3.10 ~ 3.14
pip install data-designer

⚠️ pip install data-designer 会拉取额外的开源依赖(README 原话),生产环境前先 review license。

3.2 源码装(贡献或尝鲜 main 分支)

git clone https://github.com/NVIDIA-NeMo/DataDesigner.git
cd DataDesigner
make install

3.3 三选一配置模型 endpoint

NDD 默认带三种 provider,按需选:

# NVIDIA Build(自带免费额度,仅评估 / 测试)
export NVIDIA_API_KEY="nvapi-xxx"
# OpenAI(gpt-4o / gpt-4.1 / o-series)
export OPENAI_API_KEY="sk-xxx"
# OpenRouter(聚合)
export OPENROUTER_API_KEY="sk-or-xxx"

或者自己跑本地 vLLM / NIM,参照 NVIDIA 2026-07-09 博客的 ModelConfig 写法:

from data_designer.config import ModelConfig, InferenceParameters
local_nemotron = ModelConfig(
    alias="local-nemotron",
    model="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8",
    provider="local-vllm",
    inference_parameters=InferenceParameters(
        max_parallel_requests=448,
        temperature=0.95,
        top_p=0.95,
    ),
)

4. 核心用法

4.1 最小可跑示例(产品评论合成)

import data_designer.config as dd
from data_designer.interface import DataDesigner

data_designer = DataDesigner()
config_builder = dd.DataDesignerConfigBuilder()

# 列 1:统计采样器,固定类目分布
config_builder.add_column(
    dd.SamplerColumnConfig(
        name="product_category",
        sampler_type=dd.SamplerType.CATEGORY,
        params=dd.CategorySamplerParams(
            values=["Electronics", "Clothing", "Home & Kitchen", "Books"],
        ),
    )
)

# 列 2:LLM 文本生成,依赖列 1 的值
config_builder.add_column(
    dd.LLMTextColumnConfig(
        name="review",
        model_alias="nvidia-text",   # 或 "openai-text" / alias 名
        prompt="Write a brief product review for a {{ product_category }} item you recently purchased.",
    )
)

# 预览 10 条,零成本迭代
preview = data_designer.preview(config_builder=config_builder)
preview.display_sample_record()

# 满意后全量生成
dataset = data_designer.create(
    config_builder=config_builder,
    num_records=10_000,
    output_path="./out/synthetic_reviews.parquet",
)

4.2 CLI 配置管理

data-designer config providers   # 交互式配置 provider + key
data-designer config models      # 配置 model alias
data-designer config list        # 查当前生效配置

4.3 Agent Skill 模式(Claude Code / Codex)

NDD 提供了 skills.sh 注册的 data-designer skill,让 coding agent 直接用自然语言驱动:

npx skills add NVIDIA-NeMo/DataDesigner

装完后在 Claude Code / Codex 里说「我要 1000 条金融客服多轮对话,附情绪标签」,skill 会自动设计 schema、validator、生成。⚠️ skill 仅在 Claude Code 与 Codex 测试过,其他 agent(Cursor / Aider / Cline)理论兼容但未官方验证。

4.4 配置持久化(YAML / JSON / 远程 URL)

config_builder 可以 .to_yaml() / .to_json() / 上传远程 URL,团队协作时把 schema 当 artifact 评审。⚠️ forward arguments(CLI 参数注入)只对本地 .py config 模块生效,YAML/JSON/远程 URL 拒绝接收——这是 NDD 的安全设计,避免远程配置被任意参数劫持。

4.5 校验器三件套

# 1) Python 表达式
config_builder.add_validator(
    dd.PythonValidator(
        name="len_check",
        expression="len(review) > 20 and len(review) < 500",
    )
)
# 2) SQL(对生成结果执行 SQL 过滤)
config_builder.add_validator(
    dd.SQLValidator(
        name="category_balance",
        query="SELECT product_category, COUNT(*) FROM self GROUP BY product_category HAVING COUNT(*) > 100",
    )
)
# 3) LLM-as-judge
config_builder.add_validator(
    dd.LLMJudgeValidator(
        name="coherence",
        prompt="Rate the coherence of this review from 1-5.",
        model_alias="nvidia-text",
    )
)

5. 典型适用场景

  • Nemotron 系列训练数据:arXiv:2609.17699 案例研究里 NDD 直接喂 Nemotron-CL / Nemotron-Personas 流水线;GitHub README badge 也写「20T+ Tokens Processed」(YTD 1/1/2026–8/4/2026 聚合)。
  • 金融领域合成数据:NVIDIA 2026-07-09 博客《Synthetic Data Generation for Financial AI Research》演示 DataDesigner + NeMo Curator + Nemotron-3-Nano-30B-A3B-FP8 的生成-去重循环,端到端版本表已固化(见上文)。
  • Agent 轨迹合成:通过 MCP server 接入工具,捕获 trace → 训练用。
  • 评测集构造:用 validator 锁分布、补长尾,比纯人工写评测省 10× 工时。
  • 红队 / 安全评测:Nemotron-Personas 的日本老年人 profile → APTO 红队,把 attack success 6% → 0%(论文 §X,⚠️ 未亲自复现)。

6. 坑与注意

  1. Telemetry 默认开启:NDD 默认上报「用了哪些模型 + token 数」聚合数据到 NVIDIA。生产环境务必 export NEMO_TELEMETRY_ENABLED=false。NVIDIA Build 端点的 opt-out 不延伸到 Build 服务本身。
  2. NVIDIA Build 仅供评估:README 明确写「intended for evaluation and testing purposes only and may not be used in production environments」,且不要传机密或个人数据。
  3. 依赖 Python 版本:3.10 ~ 3.14(README badge),低于 3.10 或某些 3.15 dev 版可能装不上。
  4. forward arguments 安全:远程 config URL 不接受运行时参数注入,避免 supply chain 风险;本地 .py config 才有这能力。
  5. PyPI 反爬:本攻略撰写时 PyPI 主页触发了 Cloudflare challenge(Client Challenge),实际版本号 0.1.5 来自 NVIDIA 官方技术博客版本表,⚠️ 不排除博客发布后又迭代。
  6. 链路长度preview() 看似免费,实际跑了 LLM 调用,预算紧张时务必显式控制 num_records 与 model alias(别拿 GPT-4o 跑 100 条样本预览)。
  7. Skill 兼容性data-designer skill 官方仅在 Claude Code + Codex 测试,其他 IDE agent 自带 prompt 编排可能与 schema 不兼容,建议先用纯 Python API 跑通最小例再上 skill。
  8. 与 Gretel 的关系:Gretel.ai 已 2026-02-18 archive 其 GitHub 组织并重定向到 NVIDIA;其能力拆分为 NDD(schema-driven 生成)+ NeMo Safe Synthesizer(DP-SGD 隐私合成)。如果是从 Gretel 迁过来的用户注意:NDD 不替代 Safe Synthesizer 的差分隐私能力。

7. 与同类对比

维度 NeMo Data Designer Gretel.ai (旧, archived) Mostly AI / Synthesized Hugging Face datasets + 脚本
协议 Apache-2.0 开源 闭源(已归档) 闭源 Apache-2.0 开源
范式 声明式 schema + 编排 Tabular 中心 + DP Tabular 中心 + DP 全手写,靠开发者
多模态 text/code/image/audio/video/embedding 主要 tabular 主要 tabular 取决于脚本
校验器 Python/SQL/LLM/MCP 有限 有限 全靠开发者
隐私 DP 不内置(→ Safe Synthesizer) 内置 内置
与 NVIDIA 栈整合 原生(NeMo Curator / Nemotron / NIM) 收购后整合
上手成本 中(要懂 schema) 低(GUI) 低(GUI) 高(自己撸)

⚠️ SynthForge 2026-09 的对比页面把 NDD 定位为「Gretel Tabular DP-SGD 之外的 schema-driven 路径」,定位偏正;但 SynthForge 本身是竞品营销页面,引用时建议交叉验证。

8. 一句话推荐

如果你的合成数据需求是「多模态 + 有 schema + 要 LLM/工具/校验器编排 + 跑在 NVIDIA 生态上」,NeMo Data Designer 是当下最完整的开源编排器;如果只是 tabular + 隐私合成,跳去 NeMo Safe Synthesizer;如果需求很轻量,几个 prompt 加 Pandas 也够用,不必上框架。


附:信源

  1. GitHub 仓库主页(README, 200 OK, 9,347 chars):https://github.com/NVIDIA-NeMo/DataDesigner 与 raw 版 https://raw.githubusercontent.com/NVIDIA-NeMo/DataDesigner/main/README.md
  2. 配套论文:arXiv:2609.17699 v1(2026-09-15, Greco 等, NVIDIA 团队)https://arxiv.org/abs/2609.17699
  3. NVIDIA 技术博客(2026-07-09):《Synthetic Data Generation for Financial AI Research with NVIDIA NeMo》https://developer.nvidia.com/blog/synthetic-data-generation-for-financial-ai-research-with-nvidia-nemo
  4. 官方文档入口:https://docs.nvidia.com/nemo/datadesigner/getting-started/welcome
  5. 竞品定位参考:SynthForge Gretel 替代品页(2026-09):https://synthforge.io/alternatives/gretel

不确定处

  • PyPI 当前 latest 版本:fetch 被 Cloudflare 拦截,按 NVIDIA 官方博客版本表推断为 0.1.5(2026-07-09 时点),⚠️ 撰写时实际 PyPI 版本可能更高。
  • Apache-2.0 是仓库 LICENSE 标注,但 Apache-2.0 + NVIDIA 内部专利的「NVIDIA Open Model License」是否冲突未交叉验证,常规合成数据用法下应无虞。
  • data_designer.config / interface 的具体 API(DataDesignerConfigBuilderSamplerColumnConfig 等)严格按 README 复述,未跑通;如 README 与 docs 站有差异,以 docs.nvidia.com/nemo/datadesigner 为准。
  • 「20T+ Tokens Processed」为项目自报,无第三方审计;引用时建议加 ⚠️。