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

news2024/11/29 8:52:03

图片

本次分享论文为: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.coloradmin.cn/o/1603238.html

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

相关文章

MySQL Explan执行计划详解

Explan执行计划 首先我们采用explan执行计划 执行一条sql,发现返回了12个列,下面会详细解释每一列 1、ID列 id列的值是代表了select语句执行顺序,是和select相关联的;id列的值大的会优先执行,如果id列为空最后执行&a…

python后端相关知识点汇总(十二)

python知识点汇总十二 1、什么是 C/S 和 B/S 架构2、count(1)、count(*)、count(列名)有啥区别?3、如何使用线程池3.1、为什么使用线程池? 4、MySQL 数据库备份命令5、supervisor和Gunicorn6、python项目部署6.1、entrypoint.sh制作6.2、Dockerfile制作6…

可见光相机曝光方式

可见光摄影中的曝光方式主要包括两种:卷帘曝光和全局曝光。它们之间的区别在于曝光过程中传感器或胶片感光部分的工作方式不同,这直接影响到图像捕获的效果和特性。 卷帘曝光(Rolling Shutter): 工作原理:在…

Day 16 Linux服务管理和日志管理

服务管理 启动服务:systemctl start 服务名 停止服务:systemctl stop 服务名 重启服务:systemctl restart 服务名 重新加载配置文件:systemctl reload 服务名(期间并不停止服务进程) 查看服务运行状态…

GAN反演+老照片修复

关于老照片修复~~~~~上图为运行腾讯ARC的模型之后的效果图 其使用的模型,GFP-GAN,Towards Real-World Blind Face Restoration with Generative Facial Prior,理解记录如下: Abstract: In this work, we propose GFP-GAN that …

专业143总分428学硕第一东南大学920专业基础综合考研经验电子信息与通信工程,海洋工程,电路系统,鲁汶,真题,大纲,参考书。

24考研基本已经尘埃落定,总归要为回忆留下点什么。回想起这一年的备考之路,至今仍觉得时间过得很快,有些感到恍惚,似乎不能接受。但是仔细思考一下,这一年经历了很多,走过很多弯路也取得一些阶段性的小成功…

React【Day2】

React表单控制 受控绑定 概念:使用React组件的状态(useState)控制表单的状态 双向绑定 MVVM 报错记录: 错误代码: import { useState } from "react";const App () > {const [value, setValue] useS…

使用Android studio,安卓手机编译安装yolov8部署ncnn,频繁出现编译错误

从编译开始就开始出现错误,解决步骤: 1.降低graddle版本,7.2-bin --->>> 降低为 6.1.1-all #distributionUrlhttps\://services.gradle.org/distributions/gradle-7.2-bin.zip distributionUrlhttps\://services.gradle.org/di…

2024年五一杯数学建模B题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

工业自动化,3D视觉技术3C薄片自动化上料

随着制造业的快速发展,3C行业对薄片类零件的上料需求日益增长。传统的上料方式往往依赖于人工操作,效率低下且存在误差。为了解决这一问题,3D视觉技术应运而生,为3C薄片自动化上料提供了强大的技术支持。本文将探讨3D视觉技术如何…

「GO基础」起源与演进

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

分类算法——文章分类(五)

文章分类计算 计算结果 P(C|Chinese,Chinese,Chinese,Tokyo,Japan)-->P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C)/P(Chinese, Chinese, Chinese, Tokyo, Japan) P(Chinese|C)5/8 P(Tokyo|C) 0 P(Japan|C) 0思考:我们计算出来某个概率为0,…

HarmonyOS开发实例:【分布式数据服务】

介绍 分布式数据服务(Distributed Data Service,DDS)为应用程序提供不同设备间数据分布式的能力。通过调用分布式数据接口,应用程序将数据保存到分布式数据库中。通过结合帐号、应用和分布式数据服务对属于不同的应用的数据进行隔离,保证不同…

利用CNN-Bigru-Attention模型输电线路故障诊断(Python代码,TensorFlow框架,)

效果视频:利用CNN-Bigru-Attention模型输电线路故障诊断(Python代码,TensorFlow框架,压缩包带有数据集和代码,解压缩可直接运行)_哔哩哔哩_bilibili 售后包免费远程协助运行(用向日葵或者todesk软件协助) …

如何将低分辨率的视频变高清,使用AI工具分辨率画质增强至1080P、4K或者8K(附工具)

环境: Topaz Video AI 5.0 问题描述: 如何将低分辨率的视频变高清,使用AI工具分辨率画质增强至1080P、4K或者8K 原视频 增强1080P 解决方案: 1.打开软件,导入要处理的视频(工具在本文最后附上&#xf…

特步赞助可能“惹乱子”,北京半马进入官方调查阶段

北京半马风波的发酵超乎想象,从4月14日事件发生到现在,舆论已经从对赛事本身的质疑,上升到一些其他的层面。 从最新的信息来看,北京体育局、北京半马组委会表态称事情还在调查,舆论则大多倾向于“特步幕后操盘、外籍选…

UE5 C++ 使用TimeLine时间轴实现开关门

一.添加门头文件 和 声明 #include "Components/TimelineComponent.h" #include"Components/BoxComponent.h" UPROPERTY(EditAnywhere,BlueprintReadWrite,Category "MyCurve")UCurveFloat* MyCurveFloat;UPROPERTY(EditAnywhere, BlueprintR…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(1)——场景故事介绍

生成NPC为交互应用程序创建逼真的人类行为模拟。在这项工作中,我们通过将二十五个NPC放置在一个沙盒环境中(类似于The Sims,模拟人生),展示了生成NPC的能力。用户可以观察和干预NPC的日常计划、分享新闻、建立关系以及…

分布式光纤测温解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、方案介绍 分布式光纤测温(DTS)集光电信号检测、计算机技术等为一体,具有实时监测、测温精度高、测量距离长、可精确定位、采用光纤作为传感器和传输介质,具有抗电磁干扰、本征防…

微服务分布式缓存:无法反序列化 Cannot deserialize;

问题描述 在拆分SpringBoot项目搭建微服务的过程中,需要配置分布式缓存,对redis进行配置,配置完成后,在启动Knife4j文档界面时报错,发现是redis无法反序列化的问题,但是报错中所指出的类com.jhin.jhinoj.m…