five

ComPile

收藏
arXiv2024-04-30 更新2024-06-24 收录
下载链接:
huggingface.co/datasets/llvm-ml/ComPile
下载链接
链接失效反馈
官方服务:
资源简介:
ComPile数据集是由加州大学戴维斯分校等机构合作创建的一个大规模的中间表示(IR)数据集,专门从生产环境中收集的代码中提取。该数据集包含了2.8TB的文本中间表示,涵盖了Rust, Swift, Julia, 和C/C++等多种编程语言。通过直接接入语言的包管理器或编译器,ComPile从生产级程序中提取了这些中间表示。数据集的创建旨在支持编译器优化和机器学习模型的训练,特别是在编译器中间表示层面的分析和优化。ComPile的应用领域包括编译器优化、代码分析和生成,以及机器学习在编译器设计中的应用,旨在提高编译器的性能和效率。

The ComPile dataset is a large-scale intermediate representation (IR) dataset co-created by institutions including the University of California, Davis. It is specifically extracted from code sourced from production environments, containing 2.8 TB of textual intermediate representations covering multiple programming languages such as Rust, Swift, Julia, and C/C++. ComPile extracts these intermediate representations from production-grade programs by directly interfacing with the package managers or compilers of the corresponding programming languages. The dataset is developed to support compiler optimization and the training of machine learning models, particularly for analysis and optimization at the compiler intermediate representation level. Its application domains include compiler optimization, code analysis and generation, as well as the application of machine learning in compiler design, with the goal of enhancing the performance and efficiency of compilers.
提供机构:
加州大学戴维斯分校, 美国
创建时间:
2023-09-27
原始信息汇总

数据集卡片:ComPile

数据集描述

数据集摘要

ComPile 包含超过 2.7TB 的许可源代码,编译为(文本)LLVM 中间表示(IR),涵盖 C/C++、Rust、Swift 和 Julia。该数据集是通过钩入 LLVM 代码生成,通过语言的包管理器或编译器直接提取生产级程序的中间表示,使用我们的数据集收集工具创建的。

语言

数据集包含 5 种编程语言 作为 v1.0 版本:

  • "c++"
  • "c"
  • "rust"
  • "swift"
  • "julia"

数据集大小

公共发布的 ComPile 包含超过 2.7TB 的文本 LLVM-IR,使用 Llama 分词器分词后为 1.3+T 个令牌。

语言 位码大小 文本 IR 大小 Llama 令牌计数 BPE 令牌计数 (10k 词汇) BPE 令牌计数 (50k 词汇)
C 2.47GB 10.19GB 5.31B 0.91B 0.58B
C++ 28.87GB 102.76GB 46.75B 11.20B 6.27B
Julia 164.16GB 1088.39GB 547.60B 41.91B 23.49B
Rust 399.94GB 1523.84GB 735.90B 137.37B 90.01B
Swift 6.95GB 35.93GB 19.78B 3.36B 1.75B
总计 602.39GB 2761.11GB 1355.34B 194.75B 122.10B

ComPile 以位码形式分发,这是一种压缩格式,可以轻松转换为 LLVM-IR 的文本表示。为了收集令牌计数,我们将位码反汇编为文本 IR,然后对其进行分词。我们使用了标准的 Llama 分词器,然后使用在多 GB 文本 IR 样本上训练的自定义词汇运行 fastBPE,特别是 10k 和 50k 词汇大小。

数据集结构

数据字段

数据集中的每一行由一个单独的 LLVM-IR 模块和一些元数据组成。每个行有六个列:

  • content (字符串): 包含组成模块的原始位码。
  • license_expression (字符串): 包含描述模块来源项目许可证的 SPDX 表达式。
  • license_source (字符串): 描述 license_expression 的确定方式。
  • license_files: 包含许可证文件的数组。
  • package_source (字符串): 包含模块来源的包信息。
  • language (字符串): 指示模块编译的源语言。

许可证约束和去重

语言 原始大小 许可证约束 去重 + 许可证约束
C/C++ 126GB 46GB 31GB
C 16GB N/A 2GB
C++ 109GB N/A 29GB
Julia 201GB 179GB 164GB
Swift 8GB 7GB 7GB
Rust 656GB 443GB 400GB
总计 990GB 675GB 602GB

原始大小是从构建所有项目直接获得的大小。许可证约束列显示了在考虑许可证信息后的每种语言的大小。最后一列显示了在考虑许可证约束和去重后的数据集大小。

许可证

数据集中的各个模块受其来源项目的许可证约束。许可证信息在每一行中可用,包括 SPDX 许可证表达式、许可证文件以及指向包源的链接,以进一步验证许可证信息。

数据集的整理工作在 CC-BY-4.0 许可证下发布。

搜集汇总
数据集介绍
构建方式
在编译器与编程语言研究领域,高质量中间表示数据的稀缺制约了机器学习模型的深入应用。ComPile数据集通过系统化流程,从基于LLVM基础设施的生产级源代码中提取中间表示。构建过程始于从Rust、Swift、Julia及C/C++等语言的集中式软件包仓库中筛选高质量项目,随后利用定制化的构建工具链,在编译过程中嵌入或直接生成LLVM位码。关键步骤包括通过修改构建系统以捕获未优化的中间表示,利用MLGO等工具从目标文件中提取位码,并应用基于模块级结构哈希的去重策略以消除语义重复的代码片段。整个流程确保了数据集的规模与质量,最终形成了涵盖多语言、可编译的中间表示语料库。
使用方法
ComPile数据集为编译器导向的机器学习研究提供了丰富资源。研究者可将其用于训练大规模语言模型,特别是在中间表示层面的代码生成、优化启发式学习等任务。使用前,需通过LLVM工具链将位码转换为文本IR,并可利用内置的标记化工具进行预处理,以适配不同词汇表规模的模型输入。数据集支持模块级与函数级的分析,例如通过LLVM的FunctionPropertiesAnalysis等工具提取代码特征,进行统计建模或跨语言比较。此外,其去重后的结构允许直接用于模型预训练或微调,同时配套的构建工具链也支持用户扩展数据源或自定义提取流程,以适应特定的研究需求。
背景与挑战
背景概述
在编程语言与编译器研究领域,随着机器学习技术的深度融合,代码作为一种核心数据模态正日益受到重视。ComPile数据集于2024年由劳伦斯利弗莫尔国家实验室、加州大学戴维斯分校、慕尼黑工业大学及谷歌等机构的研究团队联合创建,旨在构建首个基于LLVM中间表示的大规模数据集。该数据集聚焦于解决编译器优化、程序分析及代码生成等核心研究问题,通过整合Rust、Swift、Julia和C/C++等多种语言的生产级代码,为机器学习模型提供了高质量的中间表示训练资源,显著推动了编译器智能化与跨语言代码理解的研究进程。
当前挑战
ComPile数据集面临的挑战主要体现在两个方面:其一,在解决编译器优化与代码分析领域问题时,如何有效利用中间表示的结构化信息以提升机器学习模型的性能,而非依赖传统的词元化代码表示,这要求模型能够深入理解程序的语义层次;其二,在数据集构建过程中,研究团队需克服多语言生态系统集成、构建系统异构性以及即时编译语言(如Julia)的代码提取难题,同时确保数据质量与去重策略的严谨性,以应对生产级代码的复杂性与规模性带来的技术障碍。
常用场景
经典使用场景
在编译器优化与程序分析领域,ComPile数据集为基于中间表示(IR)的机器学习模型提供了前所未有的训练资源。该数据集通过提取Rust、Swift、Julia及C/C++等生产级代码库的LLVM IR,构建了一个规模达1.4万亿Llama 2令牌的标准化表示库。其经典应用场景集中于编译器启发式替换、优化通道排序以及端到端编译管道的性能建模,使得研究者能够在统一的IR层面上进行跨语言的程序行为分析与模式挖掘。
解决学术问题
ComPile有效解决了编译器研究中高质量IR数据稀缺的核心瓶颈。传统方法依赖小规模合成基准或有限的生产代码片段,难以支撑基于大语言模型的编译器组件训练。该数据集通过系统化采集多语言生产代码的未优化IR,为机器学习模型提供了充分反映真实编程习惯与优化模式的数据基础,从而推动编译器启发式学习、跨语言代码转换、以及编译时性能预测等前沿课题的实证研究。
实际应用
在实际工业场景中,ComPile为集成机器学习技术的编译器开发提供了关键数据支撑。基于该数据集训练的模型可应用于LLVM编译基础设施中的启发式优化决策,例如内联决策、循环展开策略以及寄存器分配算法。这些学习到的优化策略能够直接集成至主流编译器工具链,提升C/C++、Rust等语言在生产环境中的执行效率,同时为跨平台代码迁移与硬件特定优化提供数据驱动的解决方案。
数据集最近研究
最新研究方向
在编译器与机器学习交叉领域,ComPile数据集正推动着基于中间表示(IR)的模型研究迈向新前沿。该数据集通过整合Rust、Swift、Julia及C/C++等生产级代码的LLVM IR,为编译器优化、代码生成与程序分析任务提供了前所未有的规模化训练资源。当前研究热点聚焦于利用此类结构化IR数据训练专用大语言模型,以替代传统编译器启发式方法,实现自动化优化策略生成与跨语言代码转换。这一方向不仅有望显著提升编译器的智能化水平,也为构建能够直接理解与操作底层代码表示的AI系统奠定了数据基础,对高性能计算、程序语言设计及软件工程自动化产生深远影响。
相关研究论文
  • 1
    ComPile: A Large IR Dataset from Production Sources加州大学戴维斯分校, 美国 · 2024年
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作