私有合成数据生成变得简单:开箱即用,支持 Docker、Argilla 和 Ollama
为组织提供在私有环境中生成合成数据集的交钥匙解决方案。
人工智能解决方案在各行各业的日益普及,对高质量训练数据的需求达到了前所未有的程度。随着组织扩展其人工智能计划,它们面临着生成大量特定领域数据集并同时确保数据隐私和安全的双重挑战。传统方法通常需要妥协:要么使用可能无法完全满足特定需求的公共数据集,要么在定制数据生成基础设施上投入巨资。
监管要求、资源限制以及对专业知识的需求加剧了这一挑战的复杂性。组织必须遵守 GDPR、CCPA 和行业特定法规,同时保持高效的数据生成管道。这使得对能够完全在私有基础设施中运行并保持企业级功能的解决方案产生了迫切需求。
挑战
人工智能模型的开发需要大量的训练数据,但组织在数据生成和管理方面面临着重大障碍。隐私法规和安全要求通常会阻止使用公共数据集或基于云的生成服务。此外,现有解决方案通常需要复杂的 Infrastructure 设置和大量的技术专业知识,这增加了实施时间和成本。
现代企业需要一个能够解决以下几个关键方面的解决方案:
- 数据隐私:完全控制数据生成和存储
- 基础设施灵活性:适应现有系统的部署选项
- 质量保证:用于数据验证和整理的工具
- 可扩展性:随着数据需求的增长而扩展的能力
- 成本效益:降低基础设施和维护成本
解决方案
这种开箱即用的合成数据集生成器方法利用三种技术的力量,创建了一个无缝、私有的数据生成管道。其核心是合成数据集生成器,一个用于数据集创建的工具。Ollama通过Distilabel集成确保安全的本地 LLM 推理,而Argilla的数据整理功能则完善了工作流,所有这些都在您的安全基础设施中运行。
此架构提供关键技术优势:
- 通过容器化本地部署实现完全数据主权
- 从生成到验证的端到端管道
- 用于系统集成的模块化设计
以下是它们的协同工作方式:
让我们探讨一下这些组件如何在实际工作流中协同工作。
1. 安装与设置
1.1 克隆仓库
git clone https://github.com/argilla-io/synthetic-data-generator
cd synthetic-data-generator
1.2 环境设置
# Copy environment template
cp docker/.env.docker.template .env
在您的 .env
文件中配置以下变量:
# Model configuration (if using Ollama)
MODEL="deepseek-r1:1.5b" # Must match Ollama model name
TOKENIZER_ID="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" # Must match Huggin Face Hub model name
MAGPIE_PRE_QUERY_TEMPLATE="<|begin▁of▁sentence|>User: " # Custom query template
1.3 构建并部署服务
专家提示:即使您最初只计划使用一个组件,我们也建议构建所有服务,以便在将来无需重新构建即可启用功能。有关详细的部署选项,请查阅 Docker 文档。
注意:Ollama 在 Docker 中的 Linux/Windows 上运行 CPU/GPU。对于 macOS,Docker 中仅支持 CPU - 对于 GPU 支持,请单独安装 Ollama(详情)。
# Build all services
docker compose -f docker-compose.yml -f docker/ollama/compose.yml -f docker/argilla/compose.yml build
# Start all services
docker compose -f docker-compose.yml -f docker/ollama/compose.yml -f docker/argilla/compose.yml up -d
要查看日志,可选择:
- 使用 Docker Desktop 的界面
- 运行上述命令时移除
-d
标志 - 或执行以下命令查看特定服务日志:
# Core App logs docker compose logs -f app # Ollama logs docker compose -f docker-compose.yml -f docker/ollama/compose.yml logs -f ollama # Argilla logs docker compose -f docker-compose.yml -f docker/argilla/compose.yml logs -f argilla
2. 数据集生成
该工具目前支持文本分类、聊天和RAG数据集。这些任务将决定您将生成的数据集类型:分类需要类别,聊天数据需要对话格式,RAG 需要问答对与相关上下文,提供检索和重排数据生成选项,以增强信息检索系统的不同方面。
有关生成过程的详细概述,请查看合成数据生成器简介。
2.1. 数据集描述
让我们来创建RAG 数据集。
A dataset to retrieve information from information security policies
2.2. 任务配置与样本生成
系统自动分析并生成系统提示和最优参数。然后,生成样本进行验证(如果需要,手动修改系统提示或参数,然后点击保存以生成样本数据):
2.3. 完整数据集生成
验证样本数据质量后,继续生成完整数据集。配置以下参数:
- 仓库所有者:您用于托管数据集的 Hugging Face 用户名
- 数据集名称:遵循标准命名约定的描述性名称
- 示例数量:定义数据集大小(推荐:初始部署为 100-1000)
- 温度:控制生成创造力(默认 0.7 平衡连贯性和多样性)
- 隐私设置:用于 Hugging Face Hub 的可选数据集隐私配置
温度参数显著影响输出质量:
- 0.5-0.7:最适合技术文档和事实内容
- 0.7-0.8:适用于通用数据集
- 0.8-1.0:增加创造力,适用于对话数据
系统启动生成管道,利用 Distilabel 进行结构化输出:
通过 Hugging Face Hub 界面访问您生成的数据集。
3. 使用 Argilla 进行数据整理
与 Argilla 的集成通过全面的审查系统提供企业级数据集整理功能。此阶段对于确保数据质量并保持训练数据集的高标准至关重要。
环境配置
在访问 Argilla 功能之前,请确保在您的 .env
文件中进行正确配置。
整理工作流
数据集集成 数据集生成完成后,会自动导入 Argilla。系统在整个过程中保持数据完整性和版本控制。所有数据集和进度在 Docker 重启后都会保留,除非您明确删除 Argilla 服务和卷。
质量保证流程 Argilla 的界面提供全面的数据集验证工具:
- 生成内容的语义分析
- 条目间的一致性检查
- 元数据验证和丰富
- 协作审查功能
数据集发布 经过彻底审查后,将您整理好的数据集导出到 Hugging Face Hub
注意:考虑使用新的仓库名称,以便将原始数据集和整理过的数据集分开保存。
- 配置仓库设置
- 设置可见性和访问控制
- 添加数据集卡片和文档
整理后的数据集保持完整的来源跟踪和质量指标。
🎉 完成!
恭喜!您已成功完成端到端的数据集生成和整理过程。您整理后的数据集现在已可用于模型训练。
体验解决方案
要亲身体验合成数据集生成器的功能,请探索托管空间。这使您可以在部署自己的实例之前评估界面和功能。
通过复制此空间来创建您自己的部署。
后续工作?
成功生成第一个数据集后,还有几种高级实施路径可供选择:
扩展数据集生成能力
- 对合成数据上的模型进行微调以执行特定领域任务
- 创建专用推理数据集以进行高级模型训练
结论
合成数据集生成器代表了私有数据生成技术的一项重大进步,解决了对高质量训练数据日益增长的需求,同时保持了安全性和控制。通过利用容器化架构和本地 LLM 推理,组织现在可以生成自定义数据集,而不会损害数据隐私或质量。
该解决方案的模块化设计使其能够与现有 ML 管道无缝集成,同时提供企业级功能,如持久存储、全面的监控和可扩展的基础设施。通过协作验证工作流和结构化质量控制流程,团队可以高效地创建和整理符合其特定需求的数据集。
安全性、效率和灵活性的结合使合成数据集生成器成为希望加速其 AI 开发同时保持对其数据生成管道的完全控制的组织必不可少的工具。
参考资料与文档
- 合成数据集生成器:使用自然语言生成数据集的开源工具
- Distilabel 框架:高级数据集生成框架
- Docker 最佳实践:容器优化指南
- Argilla 文档:数据整理平台文档
- Ollama 集成:本地 LLM 部署指南