argilla-io/synthetic-data-generator
GitHub: argilla-io/synthetic-data-generator
基于自然语言描述快速生成LLM训练和微调用合成数据集的可视化工具。
Stars: 568 | Forks: 65
title: Synthetic Data Generator
short_description: Build datasets using natural language
emoji: 🧬
colorFrom: yellow
colorTo: pink
sdk: gradio
sdk_version: 5.8.0
app_file: app.py
pinned: true
license: apache-2.0
hf_oauth: true
#header: mini
hf_oauth_scopes:
- read-repos
- write-repos
- manage-repos
- inference-api
Build datasets using natural language
 ## 简介 Synthetic Data Generator 是一款允许你创建高质量数据集以用于训练和微调语言模型的工具。它利用 distilabel 和 LLM 的强大功能来生成针对你特定需求的合成数据。[公告博客](https://huggingface.co/blog/synthetic-data-generator)通过一个实际示例介绍了如何使用它,你也可以观看[视频](https://www.youtube.com/watch?v=nXjVtnGeEss)了解其实际运行效果。 支持的任务: - 文本分类 - 用于监督微调的聊天数据 - 检索增强生成 此工具简化了创建自定义数据集的过程,使你能够: - 描述所需应用程序的特征 - 迭代样本数据集 - 生成全规模数据集 - 将你的数据集推送到 [Hugging Face Hub](https://huggingface.co/datasets?other=datacraft) 和/或 [Argilla](https://docs.argilla.io/) 通过使用 Synthetic Data Generator,你可以快速制作原型并创建数据集,从而加速你的 AI 开发过程。 ## 安装 你可以通过以下命令简单地安装该软件包: ``` pip install synthetic-dataset-generator ``` ### 快速开始 ``` from synthetic_dataset_generator import launch launch() ``` ### 环境变量 - `HF_TOKEN`: 你的 [Hugging Face token](https://huggingface.co/settings/tokens/new?ownUserPermissions=repo.content.read&ownUserPermissions=repo.write&globalPermissions=inference.serverless.write&tokenType=fineGrained),用于将数据集推送到 Hugging Face Hub 并从 Hugging Face Inference Endpoints 生成免费补全。你可以在 [examples](examples/) 文件夹中找到一些配置示例。 你可以设置以下环境变量来自定义生成过程。 - `MAX_NUM_TOKENS`: 生成的最大 token 数,默认为 `2048`。 - `MAX_NUM_ROWS`: 生成的最大行数,默认为 `1000`。 - `DEFAULT_BATCH_SIZE`: 用于生成数据集的默认批次大小,默认为 `5`。 或者,你可以使用不同的 API 提供商和模型。 - `MODEL`: 用于生成数据集的模型,例如 `meta-llama/Meta-Llama-3.1-8B-Instruct`, `gpt-4o`, `llama3.1`。 - `API_KEY`: 用于生成 API 的 API key,例如 `hf_...`, `sk-...`。如果未提供,将默认为 `HF_TOKEN` 环境变量。 - `OPENAI_BASE_URL`: 任何 OpenAI 兼容 API 的 base URL,例如 `https://api.openai.com/v1/`。 - `OLLAMA_BASE_URL`: 任何 Ollama 兼容 API 的 base URL,例如 `http://127.0.0.1:11434/`。 - `HUGGINGFACE_BASE_URL`: 任何 Hugging Face 兼容 API 的 base URL,例如 TGI server 或 Dedicated Inference Endpoints。如果你想使用 serverless inference,只需设置 `MODEL`。 - `VLLM_BASE_URL`: 任何 VLLM 兼容 API 的 base URL,例如 `http://localhost:8000/`。 要专门使用特定模型生成补全,请在前面提到的环境变量后附加 `_COMPLETION` 来设置相应的环境变量。例如,你可以使用 `MODEL_COMPLETION` 和 `OPENAI_BASE_URL_COMPLETION`。 OpenAI Endpoints 不支持 SFT 和 Chat Data 生成。此外,你需要根据其提示模板使用正确的 `TOKENIZER_ID` 和 `MAGPIE_PRE_QUERY_TEMPLATE` 环境变量,针对每个模型家族进行配置。 - `TOKENIZER_ID`: 用于 magpie pipeline 的 tokenizer ID,例如 `meta-llama/Meta-Llama-3.1-8B-Instruct`。 - `MAGPIE_PRE_QUERY_TEMPLATE`: 强制为 Magpie 设置预查询模板,这仅受 Hugging Face Inference Endpoints 支持。开箱即支持 `llama3` 和 `qwen2`,将分别使用 `"<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\n"` 和 `"<|im_start|>user\n"`。对于其他模型,你可以传递自定义的预查询模板字符串。 或者,你也可以通过设置以下环境变量将数据集推送到 Argilla 以进行进一步管理: - `ARGILLA_API_KEY`: 你的 Argilla API key,用于将数据集推送到 Argilla。 - `ARGILLA_API_URL`: 你的 Argilla API URL,用于将数据集推送到 Argilla。 要将生成的数据集保存到本地目录而不是推送到 Hugging Face Hub,请设置以下环境变量: - `SAVE_LOCAL_DIR`: 保存生成数据集的本地目录。 你可以使用我们的环境模板作为起点: ``` cp .env.local.template .env ``` ### Argilla 集成 Argilla 是一款用于数据管理的开源工具。它允许你标注和审查数据集,并将管理后的数据集推送到 Hugging Face Hub。你可以按照[快速入门指南](https://docs.argilla.io/latest/getting_started/quickstart/)轻松开始使用 Argilla。  ## 自定义合成数据生成? 每个 pipeline 都基于 distilabel,因此你可以轻松更改 LLM 或 pipeline 步骤。 查看 [distilabel 库](https://github.com/argilla-io/distilabel)了解更多信息。 ## 开发 安装依赖: ``` # 创建虚拟环境 python -m venv .venv source .venv/bin/activate # 安装依赖 pip install -e . # pdm install ``` 运行应用: ``` python app.py ``` ## 🐳 Docker 设置 容器化工具使用 Ollama 进行本地 LLM 推理,并使用 Argilla 进行数据管理。架构如下:  快速设置所有服务(App + Ollama + Argilla): ``` # 复制环境模板 cp docker/.env.docker.template .env # Add your HF_TOKEN in .env # 构建所有服务 (这可能需要几分钟) docker compose -f docker-compose.yml -f docker/ollama/compose.yml -f docker/argilla/compose.yml build # 启动所有服务 docker compose -f docker-compose.yml -f docker/ollama/compose.yml -f docker/argilla/compose.yml up -d ```标签:AI风险缓解, Apex, Argilla, AutoML, Chat数据, Distilabel, DLL 劫持, Gradio, Hugging Face, LLM, NLP, Petitpotam, Python, RAG, SFT, Unmanaged PE, 二进制发布, 人工智能, 低代码开发, 分布式搜索, 合成数据生成, 大语言模型, 对话系统, 开源工具, 数据增强, 数据集构建, 文本分类, 无后门, 机器学习, 检索增强生成, 深度学习, 用户模式Hook绕过, 监督微调, 训练数据, 请求拦截, 逆向工具