使用 ChatGPT ,通过自然语言编写 eBPF 程序和追踪 Linux 系统

eBPF 是一项革命性的技术,起源于 Linux 内核,可以在操作系统的内核中运行沙盒程序。它被用来安全和有效地扩展内核的功能,而不需要改变内核的源代码或加载内核模块。今天,eBPF被广泛用于各类场景:在现代数据中心和云原生环境中,可以提供高性能的网络包处理和负载均衡;以非常低的资源开销,做到对多种细粒度指标的可观测性,帮助应用程序开发人员跟踪应用程序,为性能故障排除提供洞察力;保障应用程序和容器运行时的安全执行,等等。eBPF 已经成为了一个越来越受欢迎的技术,它可以帮助我们更加高效地对内核和用户态的几乎所有应用进行追踪和分析。

但是,eBPF 的开发,或者追踪内核产生的各类事件,需要一定的专业知识,对于一些不熟悉该技术的开发人员来说,可能会有一定的困难。这时,我们的 demo 工具 GPTtrace 所带来的一些新的思路,也许就可以帮助你解决这个问题。它使用 ChatGPT ,通过自然语言编写 eBPF 程序和追踪 Linux 内核:https://github.com/eunomia-bpf/GPTtrace

如果你是一名开发人员,想要更加高效地进行追踪和分析,那么类似的方案绝对值得尝试:这种 ChatGPT 和 eBPF 技术的结合将在未来的软件开发、调试、以及可观测性场景中发挥更加重要的作用,同时它可能也会带来一种全新的、交互式地学习范式。

我们做了哪些尝试?

GPTtrace 使用 ChatGPT 技术,允许开发人员通过自然语言编写 eBPF 程序和追踪 Linux 内核,无需事先了解该技术的专业知识。它使得开发人员可以更快、更准确地定位和解决软件中的问题。例如,根据进程名称统计 Page Faults 次数:

请添加图片描述

我们还有一个视频演示与讲解,可以在这里观看:https://www.bilibili.com/video/BV1oM411J7gp/

我们是怎样做到的?

我们目前的思路是通过预训练 eBPF 程序,让 ChatGPT 学会如何编写各种 eBPF 程序或 bpftrace 的 DSL。大概分为这几步:

  1. 预训练 ebpf 程序,利用一些 ebpf 的开发资料,先和 ChatGPT 对话多次,让 ChatGPT 通过对话上下文如何写各种 eBPF 程序或者 bpftrace 的 DSL(其实我们在十二月份就做过一些类似的实践,产出了一份教程文档,但没有把它变成一份工具:https://github.com/eunomia-bpf/bpf-developer-tutorial);
  2. 调用 ChatGPT api,并把返回的结果解析之后作为命令输入 shell 执行,或者将 eBPF 程序写到文件里面编译运行
  3. 如果编译和加载报错,把对应的报错信息返回给 ChatGPT,让它再生成一个新的 eBPF 程序或者命令

我们使用了 ChatGPT 的 Python API,花了一个下午简单实现了这个小玩具,它可以使用中文或者英文等多种语言输入任意自然语言的描述,例如 “追踪进程打开的文件” “Show per-second syscall rates” 等等,正确率不是 100%,不过十次里面大概已经可以有七八次可以正确进行追踪了,遇到报错还会自行进行修正和调整。

进一步的优化?

这个玩具项目本身只是想展示一下可能性,很快应该会有更好的类似 ChatGPT 这样的的 api,和更通用的训练/执行框架出来的,希望它能起到抛砖引玉的效果。目前看起来还有很多可以优化的空间:

  1. 能联网搜索之后,让这个工具去获取 bcc/bpftrace 仓库里面的示例程序学习,效果应该还会好很多;
  2. 或者让这个应用自己能联网搜索 Stack Overflow 之类的结果,查询如何编写 eBPF 程序,类似新 Bing 的搜索方式;
  3. 提供更多高质量的文档和教程,看起来输出的准确度和教程、代码示例的质量密切相关;
  4. 其实还可以多次调用其他工具执行命令返回结果,比如说 ChatGPT 输出命令,用 bpftrace 查询一下当前内核版本和支持的 tracepoint,然后返回输出(这也是一次对话),再给出程序,效果应该还要好不少

短期来看,我们希望尝试基于这个工具构建一个交互式的、带有提示的内核追踪工具和学习 eBPF 程序的教程,帮助用户在编写 eBPF 程序时更快地了解语法和调试错误,并且可以根据用户的反馈调整提示和建议的质量;以及提供一个结构化的学习 eBPF 程序的教程,从基础的语法和 API 开始,结合通过用户最终想编写的 eBPF 程序的需求,逐步向用户介绍常用的 eBPF 应用场景和编写技巧。

某种意义上来说,它甚至可以不仅仅是一种语言模型,借助简单的对话的交互模式,以及能操控各类工具、访问网络的手段,它也许可以起到一个巨大的、前无古人的知识库的作用:连接各行各业,根据自然语言输入而非关键词,给出综合概括的、无法被搜索引擎简单获取到的思考和答案。

在当今信息爆炸的时代,我们可以轻易地获得各种海量的信息,但这也带来了另一个问题,就是信息的分散和碎片化,很难将这些信息整合起来,形成有价值的知识。而 ChatGPT 可以通过自然语言交互的方式,将各种信息和知识整合起来,乃至主动去获取知识和接收反馈(就像我们在 GPTtrace 中做的一样),形成一个巨大的知识库,为人们提供综合的思考和答案。

这种方式可以连接各行各业,不受特定领域或行业的限制,根据自然语言输入而非关键词,给出更加准确、综合的概括。此外,由于 ChatGPT 可以操控各类工具和访问网络,它可以更加深入地了解各种知识和信息,并为用户提供更加全面和深入的解答。

这种革命性的变化可能已经站在人类文明变革的前夜,我们获取知识和思考的方式将被颠覆,类似的大模型的出现将成为这个变革的重要推手。

未来在何方?

其实这个模型本身的效果,并不算惊艳,甚至可以说还有非常多的成长空间。对于我这样的非 AI 专业研究人员(AI工具和模型的消费者)来说,和传统的训练深度学习模型的方式比起来:

  • 训练模型不需要整理数据集和清洗数据集,仅仅需要几篇高质量的文档和教程,数量非常少,使用自然语言描述即可;极大地减少了非专业人士的准备工作;
  • 只需要对话上下文即可直观和方便地进行训练,任何人都可以轻松理解(或者尝试类比)AI 是怎么进行学习的;
  • 可以适应非常多种不同领域的任务,只要任何任务能被转换成一段文本或指令;

正如哈尔滨工业大学车万翔先生在青源Workshop中提及的,ChatGPT 时代,NLPer 的危与机中所说的那样:

ChatGPT时代,为了应对当前的挑战,自然语言领域的研究者可以借鉴信息检索研究者的经验。首先,学术界可能不再进行系统级别的研究,主要集中在相对边缘的研究方向上;其次,使用工业界巨头提供的数据进行实验,并不一定能得出可靠的结论,由于存在隐私问题,数据的真实性存疑;通过调用公司提供的 API 进行研究,一旦模型被调整,其结论有可能也会改变。

当使用 AI 解决特定问题的门槛变得足够的低廉,反而是 AI 更进一步普及、更进一步解决更多细分场景下的问题的巨大机会。另一方面可能是支撑 AI 的基础设施:当生成的内容(例如代码,文本,算法,音频视频)的成本变得更廉价,也许可编程、低代码的平台也会变得相对原先巨大的单体应用来说,变得更加具有可扩展性和可复用性。例如,从一段描述或交互式地对话中直接生成一个 FaaS 的接口发布,直接生成一个网页前端并部署,或使用 ChatGPT 生成的代码直接作为可观测的采集和数据处理程序,部署到大型的可观测性平台中。

我们现在也在探索一些 eBPF 和 Wasm 结合的编译工具链和运行时,希望实现从内核态到用户态的可编程扩展效果:https://github.com/eunomia-bpf/wasm-bpf

一些参考链接

  • ChatGPT:https://chat.openai.com/chat
  • GPTtrace:https://github.com/eunomia-bpf/GPTtrace
  • ChatGPT Python API: https://github.com/mmabrouk/chatgpt-wrapper
  • 基于 CO-RE (一次编写,到处运行) libbpf 的 eBPF 开发者教程:通过 20 个小工具一步步学习 eBPF(尝试教会 ChatGPT 编写 eBPF 程序):https://github.com/eunomia-bpf/bpf-developer-tutorial
  • ChatGPT类工具如何实现「降维打击」| 聊天机器人闭门研讨观点总结:https://mp.weixin.qq.com/s/fB9rguy26ej-alm7l_i8iQ
  • eunomia-bpf 开源社区:https://github.com/eunomia-bpf

注:本文使用 ChatGPT 进行辅助写作完成。

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

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

相关文章

ChatGPT三个关键技术

情景学习(In-context learning) 对于一些LLM没有见过的新任务,只需要设计一些任务的语言描述,并给出几个任务实例,作为模型的输入,即可让模型从给定的情景中学习新任务并给出满意的回答结果。这种训练方式能…

论文分享-- From RankNet to LambdaRank to LambdaMART: An Overview

博客内容将首发在微信公众号"跟我一起读论文啦啦",上面会定期分享机器学习、深度学习、数据挖掘、自然语言处理等高质量论文,欢迎关注! 严格来说,这并不是一篇论文,只是一个 r e p o r t report report &a…

ChatGPT的一小步,NLP范式转变的一大步

作者:符尧,yao.fued.ac.uk,爱丁堡大学 (University of Edinburgh) 博士生,本科毕业于北京大学;与Tushar Khot,彭昊在艾伦人工智能研究院 (Allen Institute for AI) 共同完成英文原稿;与李如寐&a…

4月最新编程排行出炉,第一名ChatGPT都在用~

作为一名合格的(准)程序员,必做的一件事是关注编程语言的热度,编程榜代表了编程语言的市场占比变化,它的变化更预示着未来的科技风向和机会! 快跟着一起看看本月排行有何看点: 4月Tiobe排行榜前…

虚幻4蓝图通信

本案例的功能为让玩家控制小白人,并按E让选中的物体旋转 立方体蓝图 小白人蓝图 选人设置 运行结果

虚幻引擎之相机控制

通过本节学习,我们可以在虚幻引擎中按照特定时间来切换摄像机视角,我们可以很方便的进行观看不同摄像机的视野。 首先打开虚幻,在这里我是用的是虚幻4.19,打开虚幻之后,我们首先新建一个工程,在这里我们不使…

虚幻引擎5亮点整理,5大核心一目了然

由EPIC研发的UE5,于2022年4月正式发布。作为全新的实时工作平台,UE5有以下亮点值得关注! Nanite 可以制作海量细节的地图,通过nanite不需要手动贴图,也不需要手动创建LOD Lumen光照系统 为了获得最佳的光照效果&#x…

虚幻引擎C++开发学习(一)

文章内容来自于Udemy课程。第一章为设置C和虚幻环境,直接略过。 第二章内容为一个小游戏,名字叫Triple X,是个简单的数字益智游戏。它基于三个未知数字。你将侵入某种计算机锁。游戏的想法是找到一个有效的三个数字组合。 比如关卡1&#x…

虚幻引擎的控制台命令(长期更新)

小标题前如果标注具体虚幻的版本号,则仅在特定版本中有效 若没标注,则代表全版本通用 局内 【UE5】世界分区(World Partition) 显示世界分区加载网格 2D&3D wp.Runtime.ToggleDrawRuntimeHash3D 3D显示世界分区的加载网格 …

下载虚幻引擎提示错误代码MD-DL

先放结论:因为已经下载过UE4版本的引擎,再下载其它版本引擎的时候默认会放到UE4版本的引擎的同级目录下,改下路径就行了。 把UE4改成UE5就好了,把他俩分开。UE4是我自己之前分给4.26版本的文件夹。 我在下载时遇到了这个问题&am…

虚幻商城模型转MetaHuman

一、导入虚幻商城的模型到UE 1.去虚幻商城下载一个人物模型,这里以SchoolGirl为例 2.导入UE,并找到模型,这里是SkeletalMesh 二、启动MetaHuman插件 1.通过Edit->Plugins启用MetaHuman和MetaHumanSDK插件,这里MetaHuman插件是用于创建MetaHuman的,MetaHumanSDK插件…

Unreal虚幻源代码的编译

很多小伙伴在做开发的时候都用Epic管理的UE引擎,可是在企业实际开发中,需要用到虚幻的源代码。UE和Unity相比的优势也是开源,所以使用引擎的源码很有必要,便于了解底层和修改底层逻辑很有帮助。很多小伙伴不清楚如何编译&#xff…

虚幻4基础知识——编辑器

一、前言 最近将虚幻4的知识点进行梳理了一遍,算作是初学者的角度学习该引擎时遇到的问题的汇总。包括UI、编辑器以及蓝图部分,不过都是挑了我自己需要记录的东西,没有涵盖所有内容。 二、编辑器知识 2.1、视口和模式面板 视口是观察和编辑…

虚幻引擎外部模型及动画导入

运行效果: 首先在底部素材文件加下右键选择导入 导入后选中小白人,右侧菜单栏选中细节,找到网格体,选择你要渲染的人物 动画绑定,在右侧找到动画类,选择要导入的动画

虚幻批量修改贴图

修改之前的属性为512*512. 批量选择贴图,右键。 找到Asset Actions(资产操作)的Bulk Edit via Property Materix(批量编辑属性材料) 选中所有后输入Bias。 修改LOD Bias的值(这里我改为256) 再打…

虚幻4 光照需要重建

在项目中添加新的物体时出现 光照需要重建的提示 解决办法1: 构建光照 解决方法2: 在世界大纲中搜索light,将所有光照设置成实时的

虚幻基础之编译

虽然不像Unity3D那样以多平台支持作为宣传点,虚幻本身依然是多平台支持的,如Windows,IOS,安卓等等。同时为了应对开发和部署的需要,编译的配置也是一个花样繁多的过程。 本篇文章就初步得从概念和工具的角度对虚幻的编…

全面了解虚幻引擎 5

Incredibuild 与 Epic 合作密切,并与虚幻引擎深度集成,因此对于虚幻引擎 5 的发布,我们也是既期待又兴奋。不得不说,虚幻引擎 5 没有辜负我们的期待,在技术上达到了真正的“虚幻”级别! 虚幻引擎 4 的进步…

虚幻引擎5安装踩坑记录

1、The required library hostfxr. dll could not be found. 通过以下链接下载并安装 Download .NET Core 3.1 (Linux, macOS, and Windows) 以我的安装路径为例,将以下hostfxr.dll (也就是报错的未找到文件)复制到虚幻引擎对应的文件夹中…

虚幻浏览器插件 中文输入

WebView 输入法设置 如上所示,在Switch Input Method 项勾选。然后运行项目即可效果如下。 git下载地址: https://github.com/aSurgingRiver/WebView 上一篇 虚幻浏览器插件 页面跳转 目录 下一篇 虚幻浏览器插件 加载透明网页