【论文速读】| 大语言模型是边缘情况模糊测试器:通过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.mzph.cn/news/825439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学建模--蒙特卡罗法MATLAB代码保姆式解析

1.简单介绍 2.思想的实际运用 我们利用蒙特卡罗法的思想求解圆周率π的值,这里求得的肯定是近似值,我们是通过大量的模拟实验,利用概率求解的,但是这个值和我们的精确值之间还是有一定的误差的; 我们的思想就是在半径为…

npm怎么迁移到pnpm

下载的vue3模板用到了pnpm,就安装了一下 但是安装之后使用pnpm install 就发现包全被移动到ignored文件夹下面了,还报错 PS G:\Projects\gitProeject\TS_front> pnpm installWARN  Moving commitlint/config-conventional that was installed by a different …

基于springboot+vue+Mysql的论坛管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

清晰讲明 BFS实现的拓扑排序

前提: 图:就是结点和边组成的数据结构 有向无环图:就是每一个边都有方向,且无法构成一个环,只有没有环的图才能进行拓扑排序,所以拓扑排序也能用来证明该图有没有环 在有向无环图中有两个概念&#xff1…

原生支付宝小程序 - 获取“dom“元素

在支付宝中是不能获取到dom元素的&#xff0c;但是我门可以借助my.createSelectorQuery来实现 Page({data:{sq:{}},onLoad(){},onShow(){this.setData({sq: my.createSelectorQuery()})} })通过axml来查看 <view>{{sq}} </view>会发现它只是一个Object&#xff0…

面试算法-177-二叉搜索树中第K小的元素

题目 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1 解 class Solution…

鸿蒙TypeScript学习第19天【命名空间】

1、TypeScript 命名空间 命名空间一个最明确的目的就是解决重名问题。 假设这样一种情况&#xff0c;当一个班上有两个名叫小明的学生时&#xff0c;为了明确区分它们&#xff0c;我们在使用名字之外&#xff0c;不得不使用一些额外的信息&#xff0c;比如他们的姓&#xff0…

低成本的云MES更合适中小企业

长期以来&#xff0c;面对激烈的竞争压力&#xff0c;我国传统的制造企业逐渐从大规模、低成本向多品种、小批量、定制化转型&#xff0c;逐步由粗放式管理向精益化管理靠拢&#xff0c;如ERP、CAD、PLM、OA等多个信息化系统已在我国制造企业中得到了较为广泛的应用&#xff0c…

python 无处不在的二分搜索

我们知道二分查找算法。二分查找是最容易正确的算法。我提出了一些我在二分搜索中收集的有趣问题。有一些关于二分搜索的请求。我请求您遵守准则&#xff1a;“我真诚地尝试解决问题并确保不存在极端情况”。阅读完每个问题后&#xff0c;最小化浏览器并尝试解决它。 …

【个人博客搭建】(8)全局异常处理

1、net 8 webapi 全局异常处理: 在 .NET 8 WebAPI 中&#xff0c;全局异常处理可以通过实现**IExceptionHandler接口或使用IAsyncExceptionFilter接口来完成**。 首先&#xff0c;关于IExceptionHandler接口&#xff0c;它是ASP.NET Core中用于全局异常处理的新抽象。这个接口有…

【C++】priority_queue(优先级队列介绍、仿函数控制大堆小堆、模拟实现)

一、优先级队列 1.1介绍 优先级队列&#xff08;Priority Queue&#xff09;是一种特殊的数据结构&#xff0c;其并不满足队列先进先出的原则&#xff0c;它结合了队列和堆的特点&#xff0c;允许我们在其中插入元素&#xff0c;并且能够保证任何时候提取出的元素都是当前队列…

不同性能压测工具对比

阿里云PTS 性能测试PTS&#xff08;Performance Testing Service&#xff09;是阿里云一款商业化的性能测试工具。支持按需发起压测任务&#xff0c;可支持百万并发、千万TPS流量发起能力&#xff0c;100%兼容JMeter。PTS支持的场景编排、API调试、流量定制、流量录制等功能&am…

【论文解读系列】从RNN/CNN到大模型全解析

论文&#xff1a;A Survey of Neural Code Intelligence: Paradigms, Advances and Beyond 地址&#xff1a;GitHub&#xff1a;https://github.com/QiushiSun/NCISurvey 文章目录 一、代码模型的发展 1.神经语言建模&#xff08;Neural Language Modeling&#xff09;时代 …

初识 React:安装和初步使用指南

文章目录 前言一、React 是什么&#xff1f;1.组件化开发2.虚拟 DOM3.单向数据流4.生态系统丰富 二、安装1.准备工作2.下载react 三、探索 React 应用总结 前言 在当今的 Web 开发领域&#xff0c;React 已经成为了一个备受推崇的技术。它的组件化、灵活性和高效性使得它成为了…

bugku-web-都过滤了

别说&#xff0c;页面还挺帅&#xff0c;这里所有链接点都是假的 账号密码错误的弹窗 这里几乎没有其他线索&#xff0c;现在能想到的有两种&#xff0c;SQL注入和爆破 开始爆破 得到账号为admin 得到最终密码bugkuctf 进入系统内部 发现这里过滤空格 可以用{}来代替空格作用…

K8s: 关于Kubernetes中的Pod的创建,实现原理,Job调度pod以及pod网络

Pod 概述 Pod 是最小部署的单元&#xff0c;Pod里面是由一个或多个容器组成&#xff0c;也就是一组容器的集合一个pod中的容器是共享网络命名空间&#xff0c;每个Pod包含一个或多个紧密相关的用户业务容器Pod 是 k8s 系统中可以创建和管理的最小单元是资源对象模型中由用户创…

Python介绍(未完)

文章目录 Python 背景知识Python 是谁创造的&#xff1f;Python 可以用来干什么&#xff1f;Python 的优缺点 搭建 Python 环境安装 Python搭建 PyCharm 环境新工具到手&#xff0c;赶紧试试中文设置第一个Python程序 Python基础语法基础语法&#xff08;1&#xff09;常量和表…

python复制文件夹内容

参考博客 https://blog.csdn.net/itfans123/article/details/133710731 案例1 import os import shutildef copy_folder(source_folder, destination_folder):# 创建目标文件夹os.makedirs(destination_folder, exist_okTrue)# 遍历源文件夹中的所有文件和文件夹for item in …

[docker] 核心知识 - 概念和运行

[docker] 核心知识 - 概念和运行 之前 docker 学了个开头就去搞项目去了&#xff0c;不过项目也开展了好久了&#xff0c;前端差不多吃透了&#xff0c;有些新功能需要用 docker 和 k8s……是时候重新学习一下了。 这一部分简单的过一下概念和讲一下怎么运行 docker 镜像和启…

论文复现《SplaTAM: Splat, Track Map 3D Gaussians for Dense RGB-D SLAM》

前言 SplaTAM算法是首个开源的基于RGB-D数据&#xff0c;生成高质量密集3D重建的SLAM技术。 通过结合3DGS技术和SLAM框架&#xff0c;在保持高效性的同时&#xff0c;提供精确的相机定位和场景重建。 代码仓库&#xff1a;spla-tam/SplaTAM: SplaTAM: Splat, Track & Map 3…