【论文速读】| 大语言模型是边缘情况模糊测试器:通过FuzzGPT测试深度学习库

图片

本次分享论文为:Large Language Models are Edge-Case Fuzzers: Testing Deep Learning Libraries via FuzzGPT

基本信息

原文作者:Yinlin Deng, Chunqiu Steven Xia, Chenyuan Yang, Shizhuo Dylan Zhang, Shujing Yang, Lingming Zhang

作者单位:伊利诺伊大学厄巴纳-香槟分校

关键词:模糊测试、深度学习库、大语言模型、程序合成

原文链接:

https://arxiv.org/abs/2304.02014v1

开源代码:暂无

论文要点

论文简介:这篇论文提出了一种名为FuzzGPT的新方法,它利用大语言模型(LLMs)生成非常规程序来测试深度学习(DL)库。通过对历史中引发错误的程序的研究,FuzzGPT能够生成更有效的测试程序,检测出多达76个错误,其中49个被确认为新的错误,包括11个高优先级错误或安全漏洞。

研究目的:为了解决传统fuzzing技术在自动生成有效测试程序方面存在的挑战,本文通过整合大语言模型的生成能力,提出了一个新颖的方法来增强软件测试的效率和覆盖范围,尤其是针对复杂的深度学习库。

研究贡献:

1.本文首次提出利用大语言模型(LLMs)生成异常输入程序以提高模糊测试的有效性。FuzzGPT作为一种新型的自动化模糊测试工具,能够根据历史错误触发程序或直接遵循人类指令生成不寻常的测试程序,适用于多种应用领域。

2.研究者们实现了FuzzGPT的三种变体:少样本学习、零样本学习和微调,基于Codex和CodeGen等先进的GPT风格模型,并特别开发了直接利用ChatGPT指令跟随能力的零样本变体。

3.通过在PyTorch和TensorFlow两个深度学习库上的广泛测试,FuzzGPT在提高代码覆盖率方面显著优于现有的TitanFuzz工具,并成功发现了49个新错误,包括多个高优先级的安全漏洞。

引言

深度学习(DL)已在多个领域得到广泛应用。然而,由于这些应用依赖于复杂的DL库,库中的错误可能会导致严重后果,包括对安全关键应用的影响。尽管传统Fuzzing方法很有力,但在生成适用于DL库的输入程序时,它面临多个挑战。这些程序不仅需要符合编程语言的语法和语义,还必须满足构建有效计算图的张量和操作符约束。TitanFuzz是一个先前的尝试,它通过利用预训练的大语言模型来生成有效的DL程序。然而,这些模型通常只生成常规程序,不足以探索库的边缘行为。与此相对,FuzzGPT引入了一种新策略,通过对大语言模型(LLMs)进行“微调”和“上下文学习”,生成更多的异常程序,以探索DL库中未覆盖的路径。

研究背景

在开发深度学习(DL)应用时,常用的库如PyTorch和TensorFlow功能虽强大,但仍存在许多潜在错误。针对这些库的fuzzing研究通常集中在模型级和API级。然而,现有方法,无论是复用和变异现有种子模型,还是依赖手动编写的规范,均仅能覆盖有限的API和程序模式。为此,FuzzGPT被提出以通过自动化技术生成更多样化的输入程序,从而提升Fuzzing的效果和效率。

研究方法

FuzzGPT 通过结合大语言模型(LLM)的能力和历史错误触发程序的数据集,创新地生成能够发现新缺陷的非常规测试程序。首先,从开源软件库中收集和分析已知的错误触发程序,以构建一个训练数据集。然后,使用这些数据对LLM进行微调和上下文学习,以增强其生成异常测试输入的能力。通过这种方式,FuzzGPT不仅学习了编程语言的语法和语义,还学习了深度学习计算图的构建约束,从而有效地提高了软件测试的覆盖率和效率。此外,该方法还特别强调了在生成过程中利用历史错误数据的重要性,以更好地捕捉可能的错误触发模式。

图片

实现方法

FuzzGPT是基于大语言模型(LLM),如GPT和Codex,利用这些模型学习历史错误触发代码片段来自动化生成测试代码的工具。首先,从开源项目中抓取bug报告和错误代码,以建立包含错误触发代码的数据集。然后,采用微调(Fine-tuning)和上下文学习(In-context Learning)方法来调整LLM,从而使其能够生成可能触发深度学习库潜在错误的代码。在微调过程中,通过梯度下降法调整模型参数,以最大化预测错误触发代码的准确性。上下文学习则是通过分析历史错误示例来优化生成逻辑,无需更改模型权重。这两种策略共同增强了模型在寻找新bug方面的实际应用能力。

研究评估

在实际测试中,FuzzGPT对两个流行的深度学习库PyTorch和TensorFlow进行了广泛评估。与现有模糊测试技术TitanFuzz相比,FuzzGPT在测试覆盖率和错误检测方面都表现出显著优势。FuzzGPT成功识别了总共76个错误,其中49个是之前未被发现的新错误,包括11个高优先级错误或安全漏洞。此外,FuzzGPT利用从大语言模型生成的测试输入,在PyTorch和TensorFlow中实现了比TitanFuzz更高的代码覆盖率。这些结果有效证实了FuzzGPT结合历史错误数据和大语言模型策略在提升软件质量和安全性方面的实用性和效率。

结果分析

FuzzGPT的测试结果不仅证实了其在深度学习库模糊测试中的有效性,还展示了其优越性。通过对两个主流深度学习库——PyTorch和TensorFlow——的广泛测试,FuzzGPT在错误检测和测试覆盖率方面均优于现有技术。它成功检测了76个错误,其中49个是新发现的,包括11个高优先级错误或安全漏洞。相比于TitanFuzz等传统模糊测试工具,FuzzGPT在发现新代码路径和触发边缘案例方面表现更为卓越。这些成果突显了FuzzGPT结合大语言模型和历史错误数据进行模糊测试的独特优势,有效地提高了深度学习库的测试深度和广度。

图片

论文结论

通过整合大语言模型和历史错误触发程序,FuzzGPT在深度学习库的模糊测试领域显著提升了效能。这项研究不仅揭示了多个之前未识别的错误,包括关键的安全漏洞,而且还显著提高了代码覆盖率,从而证明了其在探测深度学习库潜在缺陷的有效性。此外,FuzzGPT展示了大语言模型在自动生成高风险测试输入方面的巨大潜力,为该领域的未来研究和实践提供了新的方向和方法,特别是在提升软件测试的自动化和智能化水平方面。

原作者:论文解读智能体

润色:Fancy

校对:小椰风

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/554964.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

js高级 笔记02

目录 01 object提供的一些静态方法 02 词法作用域 03 作用域链 04 arguments的使用 05 开启严格模式 06 高阶函数 07 闭包 01 object提供的一些静态方法 Object.create() 对象继承 Object.assign(对象1,对象2) 对象合并 可以将对象2 里面的可枚举属性和自身的属性合并到…

C语言简单的数据结构:单链表的有关算法题(2)

题目: 4. 单链表相关经典算法OJ题3:合并两个有序链表5. 循环链表经典应⽤-环形链表的约瑟夫问题6. 单链表相关经典算法OJ题5:分割链表 接着我们介绍后面的三道题,虽然代码变多了但我们的思路更加通顺了 4. 单链表相关经典算法OJ题…

前端请求404,后端保无此方法

1、微信小程序前端路径404 2、后端报无此路径 3、查看路径下对应的方法 发现忘了在list方法前加GetMapping(“/list”),加上即可

Python用于创建和可视化环形图的工具库之pycirclize使用详解

概要 Python pycirclize库是一个用于创建和可视化环形图的工具,它提供了丰富的特性和功能,可以帮助用户展示环形结构数据的关系和比例。本文将深入探讨pycirclize库的安装、特性、基本功能、高级功能、实际应用场景等方面。 安装 安装pycirclize库非常简单,可以通过pip命令…

2024年华中杯数学建模竞赛全攻略:ABC题思路解析+代码实现+数据集+论文撰写+全程答疑

引言 (比赛后所有题目资料在文末获取呀) 华中杯数学建模竞赛是数学建模领域的一项重要赛事,它不仅考验参赛者的数学建模能力,还考验了编程技能、数据分析能力和论文撰写能力。为了帮助参赛者更好地准备2024年的竞赛,本…

记一次webshell排查但又无webshell的应急

某次应急中,客户吓坏了,说是内网流量分析设备中有很多webshell连接告警,作为一名卑微但又不失理想的安服仔,毅然直奔前线… 过程 去到现场后,直接打开客户的流量分析设备,的确看到一堆冒红的webshell连接…

【Java开发指南 | 第十二篇】Java循环结构

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 循环1、while循环2、do-while循环3、for循环 break 关键字数组for循环continue 关键字 循环 与C语言相同,Java中有三种主要的循环结构: while 循环do…while 循环for 循环 1、while循…

python二级题目-仅使用 Python 基本语法,即不使用任何模块,编写 Python 程序计算下列数学表达式的结果并输出,小数点后保留 3 位。

x(((3**4)5*(6**7))/8)**0.5 .format 用法一: print({}.format(1)) 1 print(这个是format的用法{}。。。.format(3)) 这个是format的用法3 ’大括号1:{},大括号2:{},大括号3:{}‘.format(3,4,5) print(’大括号1:{},大括号2:{},大括号3:{}‘.form…

内业减少80%人工操作,林地地形轻松测!

林业作为维护生态平衡和保护环境的关键领域,其科学管理和合理利用是当前林业工作的重中之重。林业调查旨在全面了解当前林业资源的状况,其中林地地形测量是林业调查的基础工作。通过对林地地形的准确测量,可获取森林的地理位置、面积、地貌、…

(CVPR,2024)CAT-Seg:基于成本聚合的开放词汇语义分割

文章目录 摘要引言方法计算成本与嵌入空间成本聚合类别成本聚合CAT-Seg框架 实验 摘要 开放词汇的语义分割面临着根据各种文本描述对图像中的每个像素进行标记的挑战。在这项工作中,我们引入了一种新颖的基于成本的方法,以适应视觉语言基础模型&#xf…

设计模式———单例模式

单例也就是只能有一个实例,即只创建一个实例对象,不能有多个。 可能会疑惑,那我写代码的时候注意点,只new一次不就得了。理论上是可以的,但在实际中很难实现,因为你无法预料到后面是否会脑抽一下~~因此我们…

RocketMQ顺序消息消费重试DEMO

Producer - 加入了id为key,msg为bean的json字符 public class AddProducer {public static void main(String[] args) throws Exception {DefaultMQProducer producer new DefaultMQProducer("a-group");producer.setNamesrvAddr("192.168.0.211:9…

损失函数:Cross Entropy Loss (交叉熵损失函数)

损失函数:Cross Entropy Loss (交叉熵损失函数) 前言相关介绍Softmax函数代码实例 Cross Entropy Loss (交叉熵损失函数)Cross Entropy Loss与BCE loss区别代码实例 前言 由于本人水平有限,难免出现错漏&am…

密码学 | 椭圆曲线密码学 ECC 入门(二)

目录 4 椭圆曲线:更好的陷门函数 5 奇异的对称性 6 让我们变得奇特 ⚠️ 原文地址:A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面:本文属搬运博客,自己留着学习。如果你和我一样…

【Linux】应用层协议:HTTP

URL 在之前的文章中我们实现了一个网络版本的计算器,在那个计算器中揉合了协议定制以及序列化反序列化的内容,我们当时也自己定制了一套协议标准,比如请求和响应的格式应该是什么?如何读到一个完整的报文?支持的运算符…

【XR806开发板试用】在 xr806 上移植 LVGL

本文参与极术社区的《基于安谋科技STAR-MC1的XR806开发板试用》活动。 不多废话,直接开搞,先上效果图 准备 开发环境啥的,已经有很多文章了,这里就不再提搭建开发环境的相关内容了。 一个屏幕(1.8’ 128x160) LVGL源码(v8.0.2…

京东微服务microApp使用总结

前言 基于现有业务门户进行微服务基础平台搭建 主应用框架:vue3vite 子应用框架:vue2webpack / vue3vite在这里插入代码片 本地调试即可:主应用子应用进行打通(注意:两者都是vue3vite) 问题总结 1.嵌入…

压缩感知的概述梳理(3)

参考文献 Adaptive embedding: A novel meaningful image encryption scheme based on parallel compressive sensing and slant transform 文献内容 梳理 列表形式 并行压缩感知核心元素与流程 信号 x 长度:N表示:(x \sum_{i1}^{N} a_i\psi_i \su…

密码学 | 椭圆曲线密码学 ECC 入门(三)

目录 7 这一切意味着什么? 8 椭圆曲线密码学的应用 9 椭圆曲线密码学的缺点 10 展望未来 ⚠️ 原文地址:A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面:本文属搬运博客,自己留…

Argus DBM 一款开源的数据库监控工具,无需部署Agent

开箱即用 无需部署Agent,开箱即用。我们使用JDBC直连您的数据库,输入IP端口账户密码即可。 全平台支持 Argus目前支持对Mysql, PostgreSQL, Oracle等数据库类型的监控,我们也会尽快适配其它数据库,致力于监控所有数据库。我们提…