NVIDIA-NeMo/DataDesigner · 上手攻略
- 仓库:NVIDIA-NeMo/DataDesigner
- 链接:https://github.com/NVIDIA-NeMo/DataDesigner
- 分类:skill / 数据合成(synthetic-data-generation)
- 作者:spark
- 更新:2026-09-22
⚠️ 本文所有命令与版本基于公开 README 与 NVIDIA 技术博客 2026-07-09 复现表(PyPI 包名
data-designer,复现版本0.1.5),未经本机实跑;任何对config_builder/ModelConfigAPI 的引用若与 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 编数据」,而是下面这些工程化问题:
- 字段相关性:单纯 prompt LLM 写一堆字段,每列独立随机,分布畸形。NDD 用统计采样器(CATEGORY / NUMERIC / 等)+ 表达式依赖(
{{ product_category }}占位)锁住联合分布。 - 质量门控:生成完怎么知道没胡说八道?NDD 把 Python/SQL 表达式、自定义函数、远程 MCP validator、LLM-as-judge 全部归一到 validator 列,先于落盘打分。
- 多模态 + 工具调用:合成 agent 训练轨迹需要「图像 + 工具调用结果 + 文本回复」三元组,NDD 通过 image/audio/video 列 + MCP server 集成一条龙。
- 可复现 + 可审计:每条生成记录都带 trace(用了哪个 model、prompt、参数、validator 得分),训练侧做溯源。
- 从 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. 坑与注意
- Telemetry 默认开启:NDD 默认上报「用了哪些模型 + token 数」聚合数据到 NVIDIA。生产环境务必
export NEMO_TELEMETRY_ENABLED=false。NVIDIA Build 端点的 opt-out 不延伸到 Build 服务本身。 - NVIDIA Build 仅供评估:README 明确写「intended for evaluation and testing purposes only and may not be used in production environments」,且不要传机密或个人数据。
- 依赖 Python 版本:3.10 ~ 3.14(README badge),低于 3.10 或某些 3.15 dev 版可能装不上。
- forward arguments 安全:远程 config URL 不接受运行时参数注入,避免 supply chain 风险;本地
.pyconfig 才有这能力。 - PyPI 反爬:本攻略撰写时 PyPI 主页触发了 Cloudflare challenge(
Client Challenge),实际版本号0.1.5来自 NVIDIA 官方技术博客版本表,⚠️ 不排除博客发布后又迭代。 - 链路长度:
preview()看似免费,实际跑了 LLM 调用,预算紧张时务必显式控制num_records与 model alias(别拿 GPT-4o 跑 100 条样本预览)。 - Skill 兼容性:
data-designerskill 官方仅在 Claude Code + Codex 测试,其他 IDE agent 自带 prompt 编排可能与 schema 不兼容,建议先用纯 Python API 跑通最小例再上 skill。 - 与 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 也够用,不必上框架。
附:信源
- GitHub 仓库主页(README, 200 OK, 9,347 chars):https://github.com/NVIDIA-NeMo/DataDesigner 与 raw 版 https://raw.githubusercontent.com/NVIDIA-NeMo/DataDesigner/main/README.md
- 配套论文:arXiv:2609.17699 v1(2026-09-15, Greco 等, NVIDIA 团队)https://arxiv.org/abs/2609.17699
- 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
- 官方文档入口:https://docs.nvidia.com/nemo/datadesigner/getting-started/welcome
- 竞品定位参考: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(DataDesignerConfigBuilder、SamplerColumnConfig等)严格按 README 复述,未跑通;如 README 与 docs 站有差异,以 docs.nvidia.com/nemo/datadesigner 为准。- 「20T+ Tokens Processed」为项目自报,无第三方审计;引用时建议加 ⚠️。