Stealing LLMs: 关于对ChatGPT进行模型窃取的一些工作

©作者 | Hebe

来自 | PaperWeekly

进NLP群—>加入NLP交流群(备注nips/emnlp/nlpcc进入对应投稿群)

很高兴能和大家分享我们组关于针对 GPT 3.5 等 ChatGPT 背后的模型窃取(Model imitation attack/ Model extraction attack)的一些研究成果,目前我们已经将文章开源到了 arvix 上,大家有兴趣的可以访问, 简单来讲,我们首次对在黑盒条件下的大模型窃取做了一系列的研究,发现通过较小模型可以在特定代码相关的任务上逼近甚至超过大模型的能力。

2d8a79ae09feb0a0691c9daa41ce1cf6.png

论文标题:

On the Feasibility of Specialized Ability Stealing for Large Language Code Models

论文链接:

https://arxiv.org/abs/2303.03012

我们研究的意义在于:我们指出了用中等规模的模型去部分窃取大模型在特定任务上的性能是可行的,为无法承担训练超大模型的公司/个人提供了解决方案,同时也对未来模型保护提供了一些见解。

写在前面

为啥要做 ChatGPT 的模型窃取?

原因有二:

1. OpenAI 并没有开源自己的模型。作为 OpenAI 的知识产权,这是他们能向公众收费的基石,但是同时也让这件事看上去没有那么公平。

2. 大模型的训练成本已经达到了无法承担的地步。几百张,几千张卡对于大部分中小公司和个人来讲,都是可望而不可即的。

为啥模型窃取能够奏效?

众所周知,OpenAI 在三月初开放了新的 API(gpt-3.5-turbo),和原有的 davinci 系列成本仅仅为原来的 1/10. 然而其模型效果,这里引用官方说法是“几乎差不多”。这说明在知道其内部细节的情况下,对模型进行剪枝/压缩/裁剪 是完全可行的。另外更多的说明可以参考我们论文的引用。

52ab55ecca76ae5d928d3b403b4a2e1b.png


背景介绍

1.1 大模型(Large language models)

原文讲了很多,我们这里主要介绍下两种范式和模型的突变能力(emergent ability)

两种范式:分别是 pretrain-finetune 以及 pretrain prompt

pretrain finetune 模式是指在一个大型数据集上进行预训练,然后在一个小型任务上进行微调。这种方法的优点是可以利用大量数据进行训练,从而学习到更加通用的特征表示,同时又可以在小型任务上进行微调,以适应具体的应用场景。

pretrain prmopt 模式是指在一个大型文本数据集上进行预训练,然后通过给定的 prompt 来生成文本。这种方法的优点是可以直接生成符合要求的文本,并且可以通过修改 prompt 来控制生成的文本的风格和内容。两种方法的区别在于 pretrain finetune 模式主要用于分类、回归等任务,而 pretrain prmopt 模式主要用于生成文本。

同时 pretrain finetune 模式会产生一个能够直接解决具体任务的模型,而 pretrain prmopt 模式则主要用于生成文本。以往以 Bert 为代表的都是 pretrain finetune 模式,而 GPT3 等大模型都是 pretrain prompt 模式。

突变能力:研究发现随着模型 size 的增加,模型的理解上下文能力也相应的增加了。

以 wei 等人从 2022 年开始的一系列研究表明 => 1. 模型大到一定程度以后,其理解能力以及在各个方面的能力都有巨大的提升 [1]

744942faa1db0968e1057a440dd1c707.png

▲ Emergent abilities of large language models

1.2 思维链(CoT)

关于思维链,知乎上已经有许多优秀的回答了,例如思维链:

https://zhuanlan.zhihu.com/p/493533589

Yao Fu [2] 总结了四种思维链的形式,我这里简单借用下:

fdb78663c12260623203949cd4057bde.png

▲ Specializing Smaller Language Models towards Multi-Step Reasoning

1.3 模型窃取攻击 

模型窃取攻击作为近些年的热点问题,也可以分为两类:

1. 灰盒攻击:这种攻击往往有预先的假定,例如数据的分布情况,模型的架构等等;

2. 黑盒攻击:攻击者什么都不知道

93ebd2424cd7949abc4eb74c05487a19.png

▲ 本文研究和以往工作的对比

以往的工作和我们主要有以下三点不同:

1. 窃取对象不同: 我们专注于用中等规模的模型去窃取大模型的部分能力,而大部分工作的 victim 和 imitation model 是相近规模的;

2. 任务不同:以往工作 [3,4] 往往关注图像分类等分类任务,针对生成任务的仅有机器翻译以及 reasoning tasks;

3. 攻击假设前提不同:如上文所说,我们不会假定攻击者有任何 Prior 知识。

我们思考一下 Chatgpt 给我们的回复,就可以发现由于采用了 Machine-Learning-as-a-Service(MLaaS),我们是没办法拿到任何和模型有关的内容的,所以黑盒攻击就成了唯一的选项。

f70144495dcdf3d98f2fd46dbaefcd42.png

攻击目标

我们选取了代码总结,代码翻译,代码生成三种任务来进行研究。

我们希望我们的攻击能达到如下效果:

1. 通过窃取到的中等模型在任务表现上接近或者超过原有大模型;

2. 窃取的成本要在可控的合理范围内。


6767f7842a699495c8fc8e069e262369.png

95e4e0235c0d83c0e411f8ec35d5fda6.png


攻击方法

结合上文所讲,我们这里设计了 3 种不同的 query 方式,分别是 zero-shot/ in-context / zero-shot CoT。

并且结合了不同的筛选方法和训练方法,完成了对于 chatgpt 在特定任务上的窃取。

7c21902e2a0ff9b77b37b39acc7e076d.png

▲ overview of the imitation attack pipeline

23449cf7c429140fb36d6c874f861193.png


实验结果

我们设计了如下四个问题来帮助我们理解模型窃取

- 问题1:在代码相关的任务中,模型窃取攻击的效果如何?

- 问题2:不同的 prompt 策略和窃取方法的选择如何影响性能?

- 问题3:应该用多少次 query 来完成模型窃取?

- 问题4:超参数如何影响攻击的性能?

问题1:在代码相关的任务中,模型窃取攻击的效果如何?

77b48c7b3184343826c1067f1afcc25b.png

我们表明通过窃取到的中等模型在任务表现上接近(CSyn)或者超过了(CSum,CT)原有大模型。

问题2:不同的 prompt 策略和窃取方法的选择如何影响性能?

通过对比我们发现:

1. 思维链在生成自然语言的任务上比较有用,在其他任务上作用很小,同时还可能导致生成的代码质量迅速下降;

2. 提供合适的上下文仍然是显著提高效果的好办法

问题 3 与问题 4 由于涉及到太多的细节,我这里就不细讲了,把结论贴出来:

在相同的训练能力下,窃取模型的性能超过了 baseline,并随着 query 次数的增加而不断提高。然而,攻击者需要平衡成本和性能,以避免边际效应。


OpenAI 采样超参数对查询结果没有太大影响,重要的是 query 的数量。我们建议在上下文学习中使用三个例子,以保持其在合理成本下的有效性。

f0ec305309d8533d0e69a28e8746ea35.png


一些声明

1. 目前我们只放出了少量的结果,关于如何在更多的 NLP 任务上进行窃取,以及如何提高窃取的性能和效率,我们暂时没有囊括到本文中;

2. 该技术仅仅用于学术研究,相关人员没有用所得到的模型进行任何形式的盈利;

3. 所有对 OpenAI 相关 API 的访问均符合法律法规。

outside_default.png

参考文献

outside_default.png

[1] Wei, Jason, et al. "Emergent abilities of large language models."arXiv preprint arXiv:2206.07682(2022).

[2] Fu, Yao, et al. "Specializing Smaller Language Models towards Multi-Step Reasoning."arXiv preprint arXiv:2301.12726(2023).

[3] Wallace, Eric, Mitchell Stern, and Dawn Song. "Imitation attacks and defenses for black-box machine translation systems."arXiv preprint arXiv:2004.15015(2020).

[4] Orekondy, Tribhuvanesh, Bernt Schiele, and Mario Fritz. "Knockoff nets: Stealing functionality of black-box models."Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.


进NLP群—>加入NLP交流群(备注nips/emnlp/nlpcc进入对应投稿群)

持续发布自然语言处理NLP每日优质论文解读、相关一手资料、AI算法岗位等最新信息。

加入星球,你将获得:

1. 每日更新3-5篇最新最优质的的论文速读。用几秒钟就可掌握论文大致内容,包含论文一句话总结、大致内容、研究方向以及pdf下载。

2. 最新入门和进阶学习资料。包含机器学习、深度学习、NLP等领域。

3. 具体细分NLP方向包括不限于:情感分析、关系抽取、知识图谱、句法分析、语义分析、机器翻译、人机对话、文本生成、命名实体识别、指代消解、大语言模型、零样本学习、小样本学习、代码生成、多模态、知识蒸馏、模型压缩、AIGC、PyTorch、TensorFlow等细方向。

4. 每日1-3个NLP、搜广推、CV等AI岗位招聘信息。可安排模拟面试。

0328826bee65f65326ddd6c65c9e7dd6.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
工作窃取线程池是一种并行计算框架,它旨在提高多线程任务执行的效率。在传统线程池中,任务通常被划分为多个小任务,由线程池中的线程进行处理。然而,当某些线程已完成其任务,而其他线程仍在处理较大的任务时,就会出现工作不均衡的情况。这种情况下,工作窃取线程池就能发挥作用。 工作窃取线程池的核心思想是将任务分成更小的任务,并将它们放入一个双端队列中,该队列由每个线程私有地维护。每个线程在执行完自己的任务后,会从队列的尾部窃取一个任务进行执行。这样,当某个线程空闲时,它可以从其他线程的队列中窃取任务来执行,以达到任务的平衡分配,提高整体的计算性能。 工作窃取线程池的好处是充分利用线程的空闲时间,减少了线程之间的竞争,提高了线程的利用率,从而提高了整个系统的并发性能。 然而,工作窃取线程池也存在一些问题。首先,任务划分成更小的任务会带来额外的开销,如任务分解和合并的开销。其次,不同线程之间的任务执行顺序可能会受到影响,这可能导致一些任务的执行时间较长。 总的来说,工作窃取线程池是一种优化多线程计算性能的有效方式,它通过平衡任务的分配和提高线程的利用率来提高整体的并发性能。但在使用时,需要考虑任务划分的开销和任务执行顺序的一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值