模型 / 数据集
hitsz-ids/synthetic-data-generator avatar
hitsz-ids/synthetic-data-generator

synthetic-data-generator:一个把表格数据生成拆成可插拔管线的框架

SDG is a specialized framework designed to generate high-quality structured tabular data.

2,437 个 Star390 个 ForkPythonApache-2.0
GitHub

秒懂

它是什么?
hitsz-ids/synthetic-data-generator 是一个面向结构化表格数据的合成框架,覆盖 CTGAN、GaussianCopula 与 LLM 三类模型,并用 Data Processor 管线统一了预处理与后处理。本文基于其 README 与仓库状态,说明它的设计思路、用法与适用边界。
适合谁用?
适合需要在一个框架里比较 CTGAN、GaussianCopula 与 LLM 三类合成路线的工程师,尤其是那些数据里含日期时间、空值或需要自定义列关系的场景,Data Processor 的插件化设计能省去不少格式转换的重复劳动。不适合只想要一个开箱即用、文档完备产品的团队,因为当前版本仍在快速迭代,部分能力只在 Colab 示例里出现,API 可能随版本调整。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 15 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,谁该看

合成数据要解决的核心矛盾是:原始表格里往往带着个人身份、联系方式这类敏感字段,直接共享或用于开发测试会踩隐私合规的线。SDG 的定位就是生成保留原数据统计特征、但不含敏感信息的结构化表格数据,让数据共享、模型调试和系统测试能绕开隐私限制。README 里明确提到 GDPR 和 ADPPA 的豁免,但这句话只是项目方的声明,实际能否豁免要看你所在辖区的解释,不能当作法律结论。这个框架的服务对象是那些手上有单张或多张关系表、需要批量生成模拟数据的工程团队,而不是只想要一个简单随机数生成器的人。它把生成任务拆成了数据模型、数据处理器和具体模型三个层次,这种分层在同类工具里不算罕见,但它的 Data Processor 模块确实承担了比一般预处理更重的职责。

从元数据到合成表的流水线

SDG 的工作流大致是:先用 metadata 描述单表或多表的列类型与关系,然后由 Data Processor 对原始数据做格式转换,再喂给生成模型,模型输出后由处理器反向还原成原始格式。README 特别强调,日期时间列如果不先转换,容易被模型当成离散类型处理,这正是 Data Processor 存在的理由之一。它还负责处理空值,并且支持插件系统,意味着你可以针对某种业务字段写自定义的预处理和后处理逻辑。元数据模块在 2024 年 2 月的更新中加入了自动类型推断,减少了手工标注列类型的工作量。整个流程里,metadata 是枢纽,模型只看到处理器转换后的数据,这避免了把格式问题混进生成模型的训练里。这种解耦是合理的,但也意味着你要额外维护一份 metadata,如果原始表结构频繁变动,这份描述文件就成了新的维护负担。

三类模型,能力边界各不相同

SDG 目前集成了三条生成路线,分别对应不同的数据规模与需求。第一条是 CTGAN,属于 GAN 方法,README 声称支持十亿级数据的处理,并且在与 SDV 的对比中内存占用更低、训练时不崩溃,但这个结论来自项目自己的 benchmark,不是第三方独立评测,只能当作参考。第二条是 GaussianCopula,属于统计方法,2024 年 11 月才集成进 Data Processor 系统,更新日志里提到它显著降低了离散数据的内存占用,可以在 2C4G 的配置下训练数千个类别。第三条是基于 LLM 的 SingleTableGPTModel,它有两个听起来很特别的能力:一是无需训练数据,仅凭 metadata 就能生成合成数据,二是能做表外推断,即根据已有列推断未提供的字段。这三条路线的适用场景差别很大,CTGAN 适合数据量大、列间关系复杂的场景,GaussianCopula 适合快速原型验证,LLM 路线则适合几乎没有样本、只有模式描述的情况。

安装与最小上手路径

从仓库信息看,项目以 sdgx 为 PyPI 包名发布,支持 Python 3,但 README 没给出完整的安装命令,只提供了 Colab 示例链接。根据 Python 项目的惯例,安装大概率是 pip install sdgx,但这一点我无法从现有材料里确认。文档站是 synthetic-data-generator.readthedocs.io,里面有 API 文档和用户指南,包括单表列组合的代码示例。一个典型的上手流程应该是:先构造 metadata 描述列类型,然后初始化 DataProcessor 进行数据转换,再选择一个模型(比如 CTGAN 或 GaussianCopula)训练,最后调用合成接口生成新表。README 里的 Colab 示例覆盖了 metadata 生成、LLM 合成和 CTGAN 大数据场景,如果你想在本地复现,直接打开这些笔记本是最快的路径。需要提醒的是,仓库里没有提供命令行工具或一键脚本,所有操作都是通过 Python API 完成,这意味着你要写一点胶水代码。

隐私豁免的说法要打折看

README 开篇就写合成数据不含敏感信息,因此豁免于 GDPR 和 ADPPA,这个表述过于绝对。合成数据如果训练不当,可能泄露原始记录的细节,比如某个罕见组合被原样复制出来,这在差分隐私领域有大量讨论。SDG 的模型里没有看到任何差分隐私机制的描述,CTGAN 和 GaussianCopula 本身也不提供形式化的隐私保证。所以,如果你的场景涉及真正敏感的数据,比如医疗记录或金融交易,不能因为用了 SDG 就默认合规。项目方可能意识到了这点,所以没有在 README 里展开隐私论证,但作为技术编辑,我必须指出这个边界。反过来看,如果数据本身不敏感,只是你想扩充样本量或做格式转换,那么隐私问题就不那么关键,SDG 的价值更多体现在生成质量上。

与 SDV 的差异,不只是内存

SDG 在 README 里直接拿 SDV 做对比,声称自己的 CTGAN 实现内存占用更少,能处理十亿级数据而 SDV 会崩溃。这个对比值得关注,但要注意两点:一是基准测试的细节没有公开,二是 SDV 是一个更成熟的框架,提供模型评估、隐私度量等额外模块。SDG 的差异化在于两点:一是 Data Processor 的插件化设计,你可以针对特定列类型写自定义转换,而 SDV 的预处理相对固定;二是 LLM 集成,SDV 目前没有直接提供基于 GPT 的合成模型。如果你的核心痛点是数据量大到 SDV 跑不动,那么 SDG 的 CTGAN 值得一试,但如果你需要开箱即用的评估报告和更广的社区支持,SDV 仍然更稳妥。两个框架都基于 Python,迁移成本主要在 metadata 格式和 API 调用上,不算太高。

维护状态与采用前的检查点

仓库最后一次推送是 2026 年 8 月,最近一个正式版本是 0.2.4,发布于 2024 年 12 月,之后还有 0.2.3 和 0.2.2,说明迭代节奏比较稳定,但版本号停留在 0.x,意味着 API 可能还没冻结。项目采用 Apache-2.0 许可证,对商用友好,没有传染性义务。文档托管在 readthedocs,有 CI 和 pre-commit 检查,工程卫生看起来不错。采用前你需要确认三件事:一是 metadata 自动推断对你那些非标准日期格式是否有效,二是 LLM 模型是否需要外部 API key 或本地模型服务,三是 GaussianCopula 的内存优化是否真的在你的数据规模下成立。另外,README 里提到的多表支持还比较初步,如果你的需求是复杂的外键关系合成,可能要等后续版本。

编辑结论

适合需要在一个框架里比较 CTGAN、GaussianCopula 与 LLM 三类合成路线的工程师,尤其是那些数据里含日期时间、空值或需要自定义列关系的场景,Data Processor 的插件化设计能省去不少格式转换的重复劳动。不适合只想要一个开箱即用、文档完备产品的团队,因为当前版本仍在快速迭代,部分能力只在 Colab 示例里出现,API 可能随版本调整。采用前先做两件事:一是用你自己的数据跑一遍 metadata 自动推断,确认日期列没有被当成离散类型;二是检查 LLM 生成路径是否需要外部模型服务,以及隐私豁免声明在目标司法辖区是否成立。若你只需要最简单的单表合成,SDV 的生态更成熟,但若你关心大数据量下的内存占用,SDG 的 CTGAN 实现值得作为对照。

官方来源

  1. hitsz-ids/synthetic-data-generator on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
社区笔记

社区笔记