AI绘画

绘制江湖儿女,绘制世间万物

IBM开源了5亿行代码数据集,里面最多的编程谈话却不是Python

谷歌服务包罗 20 亿行代码,一辆汽车的系统包罗 1 亿行代码——写代码、debug 这么大的工作量不交给 AI 来做能行?

让 AI 自动生成代码,是很多开发者的梦想,近些年来,有关这一方面的研讨屡见不鲜。但要想训练一个好用的 AI,最重要的工作或许就是找到优质数据。近日,IBM 研讨院发布了一个名为 CodeNet 的数据集,该数据集包罗 1400 万个代码样本,用于训练面向编程使命的呆板进修模型。该数据集的主要特点包罗:

迄今为止最大的编码数据集,其中包罗 4000 个问题,1400 万个代码样本,50 + 种编程谈话;

该数据集添加了解释,包罗问题描绘、内存 / 时间限制、谈话、代码通过 / error 等。

IBM 希望 CodeNet 仿效大型图像数据集 ImageNet,并成为教软件理解软件开发蓝图的领先数据集。IBM 希望 CodeNet 可以用于训练具有如下功能的开发工具:

从一种编程谈话转换到另一种编程谈话;

代码推荐与补全;

代码优化;

搜索应用程序和库来源以查找所需例程;

将一种谈话转换成另一种谈话;

识别错误 / 正确的实现机制。

利用深度进修进行自动化编程近年来,呆板进修领域取得了令人瞩目的进步,AI 让多种工作使命实现了自动化,包罗编程。但是 AI 在软件开发中的渗透却遇到了极大的困难。人们在编程时通常会运用大量的有意识和潜意识思维机制发现新的问题并探索不同的解决方案。相比之下,大多数呆板进修算法都必要定义明确的问题和大量带有解释的数据才能够开发出解决相同编程问题的模型。为了解决这一难题,研讨者与开发者们已经做出了很多努力,包罗创设数据集和基准,以开发和评估「用于编程的 AI」系统。但是,鉴于软件开发的创造性和开放性,很难为编程创设完美的数据集。

IBM 的研讨人员试图创设一个多用途的数据集,可用于训练各种使命的呆板进修模型。CodeNet 的创设者将其描绘为「非常大规模,多样且高质量的数据集,能够加快运用 AI 编程的步伐」。该数据集包罗 1400 万个代码样本,共有用 55 种编程谈话编写的 5 亿行代码,其中 C++ 是样本中运用最多的谈话,Python 位居第二。这些代码样本是从提交给在线编程平台 AIZU 和 AtCoder 上的近 4,000 项应战的提交中获得的,代码样本包罗这些应战的正确答案和错误答案。

CodeNet 项目地址:https://github.com/IBM/Project_CodeNetCodeNet 的主要特点之一是代码样本中添加了解释。数据集中包罗的每个编程应战都有一个文本说明以及 CPU 时间和内存限制。每个代码提交都包罗十几条信息,包罗谈话,提交日期,内存占用大小,执行时间,接受和 error 类型。为了确保该数据集在编程谈话,接受和 error 类型等多个维度上保持平衡,IBM 的研讨人员付出了巨大的努力。呆板进修编程使命CodeNet 并不是训练呆板进修模型来执行编程使命的唯一数据集。相比于其他数据集,CodeNet 具有以下特点:首先是数据集的规模,包罗样本数量和谈话的多样性;但更重要的是编码样本附带的元数据。CodeNet 中添加的丰富解释使其能够适用于多种使命,不再只是用于特定编程使命。运用 CodeNet 开发用于编程使命的呆板进修模型包罗以下方式:

CodeNet 可以用来进行谈话翻译使命。由于数据集中包罗的每个编程应战都包罗不同编程谈话的提交,因此数据科学家们可以用它来创设呆板进修模型,将代码从一种谈话转换成另一种谈话。对于希望将旧代码移植成新谈话、使新一代程序员能够访问并运用新型开发工具进行维护的人们而言,这可能很方便;

CodeNet 还可以用来开发完成代码推荐使命的呆板进修模型开发。推荐工具既可以像完成当前代码行的自动完成样式模型一样简单,也可以是编写完整函数或代码块的更复杂系统。

由于 CodeNet 拥有大量关于内存和执行时间指标的元数据,数据科学家也可以运用它来开发代码优化系统。或者,可以运用 error 类型的元数据来训练呆板进修系统,以标记源代码中的潜在缺陷。CodeNet 更高级的用例是代码生成。CodeNet 是一个丰富的问题文本描绘库,并包罗对应的源代码。已经有开发人员运用高级谈话模型(如 GPT-3)从自然谈话描绘生成代码,CodeNet 或许能够帮助微调这些谈话模型,使其在代码生成中更加一致。IBM 的研讨人员已经对 CodeNet 进行了一些实验,这些实验包罗代码分类、代码相似性评估和代码补全。运用的深度进修体系架构包罗简单的多层感知器、卷积神经网络、图神经网络、Transformer。IBM 和 MIT-IBM Watson AI 实验室团队联合开发了该数据集,研讨中的实验结果显示大多数使命都能获得90%以上的准确率。

论文地址:https://github.com/IBM/Project_CodeNet/blob/main/ProjectCodeNet.pdf建立高效的呆板进修系统,需付出巨大努力IBM 的工程师们进行了大量的工作来管理 CodeNet 数据集并开发其辅助工具。首先,研讨团队必要从 AIZU 和 AtCoder 收集代码样本。二者中只有一个平台有应用程序接口(API),可以很容易地获取代码,而另一个平台没有易于访问的接口,研讨团队必要开发新工具,从平台的网页上抓取数据,并将其分解成表格格式。然后研讨者们必要手动将两个数据集合并到一个统一的模式中。接下来,研讨团队必要开发用于识别和删除重复代码和样本(包罗大量无效代码,运行时未执行的源代码)的工具,以清除无用数据。此外,该研讨团队还开发了预处理工具,使得在 CodeNet 语料库上训练呆板进修模型变得更容易,包罗用于不同编程谈话的 tokenizer、分析树(parse tree)和用于图神经网络的图表征生成器。所有这些都提醒我们,要创设高效的呆板进修系统,必要付出巨大的努力。人工智能要取代程序员还有很长的路要走。参考链接:https://bdtechtalks.com/2021/05/17/ibms-codenet-machine-learning-programming/https://news.51cto.com/art/202105/662376.htm

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注