five

UKPLab/SLTrans

收藏
Hugging Face2024-08-23 更新2024-03-04 收录
下载链接:
https://hf-mirror.com/datasets/UKPLab/SLTrans
下载链接
链接失效反馈
官方服务:
资源简介:
该数据集包含从编程竞赛解决方案中生成并去重后的源代码和LLVM IR对。数据集按语言配置和模式划分,语言包括C、C++、D、Fortran、Go、Haskell、Nim、Objective-C、Python、Rust和Swift,模式分为Size_Optimized和Perf_Optimized。

该数据集包含从编程竞赛解决方案中生成并去重后的源代码和LLVM IR对。数据集按语言配置和模式划分,语言包括C、C++、D、Fortran、Go、Haskell、Nim、Objective-C、Python、Rust和Swift,模式分为Size_Optimized和Perf_Optimized。
提供机构:
UKPLab
原始信息汇总

数据集概述

该数据集包含源代码和LLVM IR对,这些数据是从接受的编程竞赛解决方案中生成的,并经过去重处理。数据集按语言配置和模式分割进行划分。

支持的语言

  • C
  • C++
  • D
  • Fortran
  • Go
  • Haskell
  • Nim
  • Objective-C
  • Python
  • Rust
  • Swift

模式分割

  • Size_Optimized
  • Perf_Optimized

数据集配置详情

C

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 3383884149 bytes, 341419 examples
    • Size_Optimized: 2528286566 bytes, 341785 examples
  • 下载大小: 1323447636 bytes
  • 数据集大小: 5912170715 bytes

C++

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 116351369851 bytes, 2898509 examples
    • Size_Optimized: 92572469724 bytes, 2916655 examples
  • 下载大小: 51690627847 bytes
  • 数据集大小: 208923839575 bytes

D

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 2320830137 bytes, 7000 examples
    • Size_Optimized: 3271276765 bytes, 11054 examples
  • 下载大小: 1316382832 bytes
  • 数据集大小: 5592106902 bytes

Fortran

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 357741835 bytes, 6327 examples
    • Size_Optimized: 2320830137 bytes, 7000 examples
  • 下载大小: 563853972 bytes
  • 数据集大小: 2678571972 bytes

Go

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 819560767 bytes, 3913 examples
    • Size_Optimized: 741733997 bytes, 3925 examples
  • 下载大小: 317182680 bytes
  • 数据集大小: 1561294764 bytes

Haskell

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 3838556743 bytes, 27892 examples
    • Size_Optimized: 3667186152 bytes, 28203 examples
  • 下载大小: 1736729352 bytes
  • 数据集大小: 7505742895 bytes

Nim

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Size_Optimized: 106424381 bytes, 215 examples
  • 下载大小: 22506456 bytes
  • 数据集大小: 106424381 bytes

Objective-C

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 1729045 bytes, 283 examples
    • Size_Optimized: 1433377 bytes, 283 examples
  • 下载大小: 707508 bytes
  • 数据集大小: 3162422 bytes

Python

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 13118428652 bytes, 154507 examples
    • Size_Optimized: 13118428652 bytes, 154507 examples
  • 下载大小: 6511950536 bytes
  • 数据集大小: 26236857304 bytes

Rust

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 5859467468 bytes, 38323 examples
    • Size_Optimized: 8695405064 bytes, 32720 examples
  • 下载大小: 5326634011 bytes
  • 数据集大小: 14554872532 bytes

Swift

  • 特征:
    • Source_Code: string
    • IR_Original: string
  • 分割:
    • Perf_Optimized: 260013963 bytes, 2003 examples
    • Size_Optimized: 266356839 bytes, 2015 examples
  • 下载大小: 144113584 bytes
  • 数据集大小: 526370802 bytes
搜集汇总
数据集介绍
main_image_url
构建方式
在程序自动编译与代码优化领域,高质量的数据集是推动模型发展的基石。UKPLab/SLTrans数据集通过收集来自编程竞赛的已通过审核且经过去重的解答代码,并利用LLVM编译器框架将其编译为对应的中间表示(IR),构建了源代码与LLVM IR的成对数据。该数据集覆盖C、C++、Python、Rust等11种主流编程语言,每种语言下均按编译优化模式划分为“Perf_Optimized”(性能优化)和“Size_Optimized”(体积优化)两个子集,从而为跨语言代码分析与优化研究提供了丰富且对偶的数据基础。
特点
该数据集的核心特色在于其多语言覆盖与双优化视角的独特设计。它横跨从系统级语言(如C、C++)到函数式语言(如Haskell)的广泛谱系,每个语言配置下均包含数十万至数百万不等的样本对,总样本量超过六百万。尤为突出的是,数据集同时提供了性能优化与体积优化两种编译路径下的IR,使得研究者能够对比不同优化目标对代码表达的影响,为探索编译优化策略、代码生成与迁移学习等任务提供了极具价值的平行语料。
使用方法
使用该数据集需先通过Hugging Face平台提交访问申请并获得批准。加载时,用户可通过Hugging Face的`datasets`库,调用`load_dataset`函数,并指定语言配置名称(如“C”)与优化模式分割(如“Size_Optimized”),即可便捷地获取所需子集。例如,`load_dataset("UKPLab/SLTrans", "C", split="Size_Optimized")`将返回C语言在体积优化模式下的全部数据,每条记录包含源代码字段与对应的原始LLVM IR字段,便于直接用于模型训练与评估。
背景与挑战
背景概述
在编译器优化与代码生成领域,将高级语言源代码与底层中间表示(如LLVM IR)进行对齐是理解程序语义与提升编译效率的关键环节。由UKPLab团队创建的SLTrans数据集,旨在构建一个大规模、多语言的源代码与LLVM IR配对语料库,其数据源自编程竞赛中已通过验证并去重的解决方案。该数据集涵盖了C、C++、Python、Rust等11种主流编程语言,并依据编译优化模式划分为性能优化与体积优化两个子集,为研究代码表示学习、跨语言编译优化及自动化代码转换等课题提供了宝贵的资源。自发布以来,SLTrans凭借其丰富的语言覆盖与规模化的配对数据,显著推动了程序理解与生成领域的研究进展。
当前挑战
SLTrans数据集所面对的挑战首先体现在领域问题的复杂性上:如何从海量异构的编程语言中提取统一的语义特征,并建立源代码与LLVM IR之间的稳健映射关系,仍是代码智能领域亟待突破的瓶颈。在构建过程中,数据集面临多重困难,包括不同语言编译器版本差异导致的IR生成不一致、编程竞赛代码中隐含的算法多样性带来的标注噪声,以及优化模式(性能优先与体积优先)下配对数据质量的控制。此外,数据规模庞大(如C++子集包含近300万样本),对存储与处理效率提出了严峻考验,同时需确保数据合规性与伦理使用,避免生成恶意代码的风险。
常用场景
经典使用场景
在程序语言与编译器优化领域,SLTrans数据集以其独特的源代码与LLVM中间表示(IR)配对结构,成为研究跨语言代码转换与编译优化的理想基准。该数据集涵盖C、C++、Python、Rust等十余种主流编程语言,并分别提供面向性能优化与代码体积优化的编译模式子集,为探究不同编译目标下的代码表征差异提供了丰富素材。研究者可借此训练神经网络模型,学习从高级语言到中间表示的映射关系,进而实现自动化的代码翻译、编译优化策略推荐,乃至面向特定硬件平台的代码生成任务。这种多语言、多模态的设定,使得SLTrans在代码智能领域独树一帜,尤其适合用于验证和提升生成式模型在程序理解与合成方面的泛化能力。
实际应用
在实际工程应用中,SLTrans数据集展现出巨大的赋能潜力。软件开发者可利用基于该数据集训练的模型,实现遗留系统代码的自动化现代化迁移,例如将Fortran或Objective-C代码转换为更现代的C++或Rust语言,同时保持编译后的IR行为一致。编译器工程师则可以借助数据集中的优化模式划分,训练智能代理来预测特定代码片段在性能或体积约束下的最佳编译选项,从而在嵌入式系统或云计算环境中实现资源效率的自动调优。此外,该数据集还支持构建代码审查与安全分析工具,通过比对源代码与IR的语义一致性,自动检测编译优化引入的潜在漏洞或未定义行为,显著提升软件供应链的可靠性与安全性。
衍生相关工作
SLTrans数据集的发布催生了一系列具有影响力的后续研究工作。基于其多语言IR配对特性,学界涌现出若干针对跨语言代码翻译的神经架构,例如利用Transformer模型学习从Python到C++的语义等价变换,并借助LLVM IR作为中间表征来确保翻译的正确性。同时,该数据集也被用于训练编译器优化预测器,相关工作在程序合成与自动调优领域取得了显著进展,如通过图神经网络建模IR结构来推荐最优的优化编译序列。此外,SLTrans还促进了代码表征学习领域的基准构建,衍生出如CodeBERT与GraphCodeBERT在IR层面的扩展模型,这些模型在代码克隆检测、缺陷定位等任务上展现出超越纯文本方法的性能,进一步验证了中间表示在程序理解中的核心价值。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务