差分隐私直方图重采样过滤合成指令:dp_instructions 模块实战指南
差分隐私直方图重采样过滤合成指令dp_instructions 模块实战指南【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research本指南围绕dp_instructions/resample_with_dp_histogram模块展开系统讲解如何将并行生成的原始合成指令.txt合并为 .pkl、计算 Sentence-T5 嵌入并通过差分隐私DP直方图重采样从海量合成指令中筛选出与真实指令分布更一致的子集。读完本文你将掌握该模块三个脚本的完整调用链、全部命令行参数的真实语义、DP 加噪与重采样的底层实现原理以及它与整个隐私指令对齐流水线的衔接方式。一、模块定位与整体流水线resample_with_dp_histogram是 dp_instructions对应论文Privacy-preserving Instructions for Aligning Large Language Models流水线中的第 3 步。完整流水线为对 LLaMA 7B/13B 做 DP 微调见 dp_finetuning/README.md从微调后的模型采样生成初始合成指令使用 DP 直方图重采样初始合成指令本模块调用 OpenAI API 为真实/合成指令标注见 query_gpt35_for_annotation/README.md用指令回答对做监督微调。本模块的核心动机是直接从 DP 微调模型中采样出的合成指令往往存在分布偏差需要以真实指令的分布为参照做一次“过滤”并且过滤过程本身要满足差分隐私防止从重采样结果反推真实指令。模块由三个脚本组成脚本输入输出作用get_instructions_from_generations.py并行进程生成的多个文本文件.pklPython 字符串列表合并、去重并序列化合成指令get_embeddings.py.pkl文件embeddings/*.npy用 Sentence-T5 计算每条指令的语义嵌入resample_with_embeddings.py.pkl 真实/合成嵌入.npy重采样后的.pkl与.npy聚类建直方图、DP 加噪、按比例重采样二、步骤一合并并行进程输出为 .pkl可选这一步是可选的只要你的.pkl文件内容是“Python 字符串列表”每个元素是一条指令字符串就可以跳过该脚本自行准备数据。脚本用于处理dp_finetuning中并行 1 GPU 任务生成的多份文本文件。期望的目录结构从 get_instructions_from_generations.py 的源码可以看出脚本会遍历--generation_folder下的每个子目录并读取其中的generations_gpu0.txtgeneration_folder/ ├── job_0/ ── generations_gpu0.txt ├── job_1/ ── generations_gpu0.txt └── ...默认情况下该文件夹即dp_finetuning的推理输出目录inference_outputs/[job_sess]Type B 实验的输出即保存于此参见 dp_finetuning/README.md。命令与参数README 给出的示例命令为python get_instructions_from_generations.py --generation_folder [path to the folder, by default is inference_outputs/[job_sess]] --output_file [path to the output .pkl file]注意对照 源码参数解析脚本实际接收的参数名是--generation_folder与--output_pathREADME 中写的--output_file并不存在且两者均为必填参数类型必填说明--generation_folderstr是存放各并行进程输出子目录的文件夹--output_pathstr是输出.pkl路径必须以.pkl结尾源码中有assert校验按代码修正后的命令python get_instructions_from_generations.py --generation_folder inference_outputs/debug --output_path syn_instructions.pkl解析与去重逻辑脚本对每个generations_gpu0.txt的解析规则为源码 L29-L45将包含Generated:的行视为指令分隔符分隔符之间的连续文本被拼接为一条指令随后对所有指令做字符串级精确去重源码 L75-L88最终用pickle.dump写入 .pkl并打印指令总数。三、步骤二计算 Sentence-T5 嵌入脚本会自动下载 Sentence-T5 模型通过sentence_transformers库。README 给出的示例命令python get_embeddings.py --instruction_file [path to the .pkl file] --output_file [path to the output embedding .npy file] --num_targets 1000000重要README 中的--output_file同样不是真实参数。查看 get_embeddings.py 的参数定义实际支持的参数如下参数类型默认值说明--instruction_filestr必填输入.pkl文件--start_indexint0从第几条指令开始嵌入--num_targetsint180000处理多少条指令README 示例用 1000000--model_namestrsentence-transformers/sentence-t5-baseSentence-T5 模型名--batch_sizeint16编码批大小输出路径是自动生成的脚本不接收输出路径参数而是按固定规则自动拼出输出文件名源码 L70-L76embeddings/embeddings_{model_type}_{start_index}_{start_indexnum_targets}_{原文件名去.pkl换.npy}其中model_type根据模型名自动判定模型名包含base则为base否则为xxl。例如python get_embeddings.py --instruction_file syn_instructions.pkl --num_targets 1000000会生成embeddings/embeddings_base_0_1000000_syn_instructions.npy若工作目录下不存在embeddings/子目录np.save会因目录缺失而失败需提前创建。批量编码过程脚本先把指令列表切片为instructions[start_index : start_index num_targets]源码 L37-L40再按batch_size分批调用model.encode(batch)每处理 100 批打印一次进度与耗时最后沿轴 0 拼接为矩阵并保存源码 L55-L68。以默认的sentence-t5-base为例输出嵌入维度为 768。四、步骤三使用 DP 直方图重采样这是本模块的核心。README 给出的示例命令python resample_with_embeddings.py --real_embeddings_path [path to a .npy file] --syn_embeddings_path [path to a .npy file] --syn_instructions_path [path to a .pkl file] --output_name [a string] --num_buckets 1000 --histogram_sigma 10全部参数对照 resample_with_embeddings.py 的参数解析参数类型默认值说明--real_embeddings_pathstr必填真实指令嵌入.npy形状(N, 768)--syn_embeddings_pathstr必填合成指令嵌入.npy形状(M, 768)--syn_instructions_pathstr必填合成指令文本.pkl字符串列表--output_namestr必填输出文件名的自定义标识--num_bucketsint必填聚类桶数即 KMeans 聚类数--seedint0随机种子重采样、下采样、聚类均使用--num_samplesint180000参与聚类与作为目标规模的合成/真实样本数--histogram_sigmafloat10DP 加噪的高斯噪声标准差--sampling_methodstruniform脚本会assert其取值必须在[uniform, distance]内算法流程源码级解析整个过程可在 resample_with_embeddings.py 中逐段对应1. 载入数据并对齐规模L128-L136 载入真实嵌入(N, 768)、合成嵌入(M, 768)与合成指令列表。由于可能生成了多于 M 条指令而只为前 M 条计算了嵌入脚本会把指令列表截断为前 M 条确保文本与嵌入一一对应。2. 下采样合成嵌入用于聚类L142-L144 为了降低聚类计算开销只从合成嵌入中无放回随机抽取num_samples默认 180000条参与聚类全量嵌入仍保留用于最终重采样。3. PCA 降维 FAISS KMeans 聚类clustering_with_features 先对嵌入做 L2 归一化再用 PCA 保留累计解释方差达到 90%的维度打印实际使用的降维维度最后用 FAISS 的Kmeans聚成num_buckets个桶其中niter500、nredo5种子为seed2。4. 为真实与合成嵌入分别构建直方图build_histogram 对全量嵌入分批做 PCA 投影用 KMeans 索引查询得到每个样本的桶标签再以np.histogram统计各桶密度并归一化得到真实直方图p_bins与合成直方图q_bins。5. 对真实直方图做 DP 加噪privitize_p_bins 对真实直方图的计数逐桶添加高斯噪声N(0, histogram_sigma)默认 σ10再归一化并将负值截断为 0得到noisy_p_bins—— 这就是“DP 直方图”差分隐私保护的体现真实指令的分布信息被高斯噪声扰动后才用于后续采样。6. 计算比例并排序L184-L196 计算ratio noisy_p_bins / q_bins即每个桶上真实分布与合成分布的比值并按比值降序排序比值大的桶意味着合成指令在该区域供不应求、需要优先补充。7. 按桶重采样L199-L221 目标样本总数取num_samplesnum_target_samples num_samples即与真实样本数量一致。对每个桶按int(num_target_samples * noisy_p_bins[idx])计算应抽取条数从该桶的合成指令中无放回随机抽取若桶内样本不足会打印警告并取用桶内全部样本提示需要生成更多初始合成样本。8. 保存结果L230-L239 输出文件命名包含关键信息最大比例值、重采样后数量、自定义名称与种子max{max_ratio}_subsampled_instructions_n{数量}_{output_name}_seed{seed}.pkl max{max_ratio}_subsampled_instruction_embeddings_n{数量}_{output_name}_seed{seed}.npy两个值得留意的源码细节--sampling_method参数在脚本中只做了合法性校验assert从当前源码看后续流程统一按上述直方图比例路径实现尚未看到该参数对采样分支的实际影响L165-L170 对全量合成嵌入构建直方图时调用build_histogram(kmeans, pca_params, ...)将聚类器与 PCA 对象作为前两个位置参数传入对应签名中的features、kmeans与函数签名预期不符运行前建议对照函数定义features, kmeans, pca核对该处调用。五、输出命名与下游衔接重采样结果.pkl指令列表 .npy嵌入可直接进入第 4 步标注环节query_gpt35_for_annotation接收.pkl文件并批量调用 GPT-3.5-Turbo 标注见 query_gpt35_for_annotation/README.md标注后的数据集再用于dp_finetuning的 Type C 监督微调。值得注意的衔接证据在 dp_finetuning/README.md 的 Type C 示例中数据集名为labelled_syn300k_13b_eps594_uncond_syn_clip05_13b_selected_sigma10_1000bins其中sigma10、1000bins与本模块 README 示例的--histogram_sigma 10、--num_buckets 1000一一对应说明该重采样配置是论文实验中的典型取值重采样后的数据集以 “selected” 语义进入下游标注与微调。六、依赖与运行注意事项本模块依赖numpy、scikit-learnPCA 与归一化以及faissKMeans 聚类、sentence-transformers嵌入模型注意 dp_instructions/requirements.txt 中并未包含后两者运行前需手动安装pip install faiss-cpu sentence-transformers三个脚本均以相对路径读写输出文件建议在resample_with_dp_histogram目录下运行get_embeddings.py需要先创建embeddings/子目录。README 与代码的参数名差异汇总以代码为准脚本README 中的写法代码中的真实参数get_instructions_from_generations.py--output_file--output_pathget_embeddings.py--output_file无此参数输出路径自动生成真实嵌入与合成嵌入的维度需一致默认 Sentence-T5-base 为 768重采样以合成嵌入数量 M 为基准截断指令列表务必保证.pkl与.npy的对应关系。若桶内合成样本不足以满足目标采样数脚本会打印警告并取用全部可用样本此时建议扩大初始合成指令的生成规模num_samples或生成批次数。综上resample_with_dp_histogram以“PCA KMeans 建桶 → 高斯噪声扰动真实直方图 → 按比例重采样”的方式为合成指令提供了一条可复现、带隐私保护的分布对齐路径是 dp_instructions 隐私指令流水线中承上启下的关键一环。【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PyPTO 算子开发快速入门:CANNBot 7 阶段编排工作流实战指南

PyPTO 算子开发快速入门:CANNBot 7 阶段编排工作流实战指南

PyPTO 算子开发快速入门:CANNBot 7 阶段编排工作流实战指南 【免费下载链接】pypto-gym PyPTO-Gym 是基于 PyPTO 编程框架构建的算子与模型样例仓库 项目地址: https://gitcode.com/cann/pypto-gym 本指南面向希望在 CANN 平台上使用 PyPTO 框架快速开发自定义…

2026/9/20 1:19:20 阅读更多 →
uni-app Android UTS 扩展开发环境配置指南:Gradle、JDK 与 Android SDK 真机运行全解析

uni-app Android UTS 扩展开发环境配置指南:Gradle、JDK 与 Android SDK 真机运行全解析

示例工程前端移动开发跨平台 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 点击查看 免费下载 uni-app 的 UTS 插件允许开发者使用 TypeScript 风格的 UTS 语言编写 Android 原生能力&a…

2026/9/20 1:19:20 阅读更多 →
数值优化(Numerical Optimization)学习系列-02-信赖域方法

数值优化(Numerical Optimization)学习系列-02-信赖域方法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 1:18:20 阅读更多 →

最新新闻

飞机燃油系统仿真:Flowmaster一维CFD稳态与瞬态分析实战

飞机燃油系统仿真:Flowmaster一维CFD稳态与瞬态分析实战

简介:这份PDF白皮书聚焦Flowmaster在飞机燃油系统仿真中的基础应用,面向航空燃油系统设计人员、热流体仿真工程师及航空院校相关专业学习者,帮助读者理解如何用一维CFD工具在系统级别评估压力、温度与流量等关键性能。内容以典型客机燃油系统…

2026/9/20 1:59:36 阅读更多 →
Page Assist 上手指南:三步用本地 AI 模型辅助网页浏览

Page Assist 上手指南:三步用本地 AI 模型辅助网页浏览

Page Assist 上手指南:三步用本地 AI 模型辅助网页浏览 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist 想总结一篇长网页&#xff0c…

2026/9/20 1:59:36 阅读更多 →
VC++与DirectX运行库原理与精准安装指南

VC++与DirectX运行库原理与精准安装指南

1. 这不是“装个补丁”那么简单:为什么90%的玩家和办公用户反复踩坑在VC与DirectX运行库上 你有没有遇到过这样的场景:刚下载完一款期待已久的游戏,双击启动,弹出一行红色错误提示——“MSVCP140.dll 丢失”;或者打开…

2026/9/20 1:59:36 阅读更多 →
QuickRecorder:macOS 轻量录屏工具的安装、7种录制模式与进阶完整指南

QuickRecorder:macOS 轻量录屏工具的安装、7种录制模式与进阶完整指南

QuickRecorder:macOS 轻量录屏工具的安装、7种录制模式与进阶完整指南 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode…

2026/9/20 1:59:36 阅读更多 →
BrewUI 使用指南:给 Homebrew 套上图形界面,告别命令行门槛

BrewUI 使用指南:给 Homebrew 套上图形界面,告别命令行门槛

最近在折腾开发环境的时候,发现身边不少朋友开始用起了 BrewUI 这个工具。先简单交代一下背景,BrewUI 是一款专门给 Homebrew 做图形化包装的开源软件,目前主要在 macOS 上用,也有针对 Linux 的版本在推进。简单说,它是…

2026/9/20 1:59:36 阅读更多 →
彻底卸载360壁纸:三层驻留机制与清理实战

彻底卸载360壁纸:三层驻留机制与清理实战

1. 360壁纸为什么这么难缠:先搞懂它的三层驻留机制很多人以为卸载360壁纸就是打开控制面板点一下“卸载”按钮的事,结果重启之后发现壁纸还在换、屏保还在跳、右下角还时不时弹个小窗。我前后帮同事处理过不下二十台被这类壁纸软件“绑架”的Win10机器&a…

2026/9/20 1:58:36 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →