five

einbench

收藏
github2025-10-01 更新2025-10-02 收录
下载链接:
https://github.com/jcmgray/einbench
下载链接
链接失效反馈
官方服务:
资源简介:
einbench是一个用于基准测试和验证einsum实现的随机成对张量收缩生成器。它包含两个数据集:1. contractions_benchmark.txt:约1000个随机收缩,操作数范围从约10^0到10^9,其中一半包含批次索引,另一半是矩阵乘法等效形式;2. contractions_verify.txt:约1000个操作数较低(最多约10^6)的随机收缩,用于验证实现正确性,包含各种边缘情况,如平凡求和、迹或对角索引。

EinBench is a random pairwise tensor contraction generator for benchmarking and validating einsum implementations. It consists of two datasets: 1. contractions_benchmark.txt: Approximately 1000 random contractions, with operand magnitudes ranging from ~10^0 to ~10^9. Half of them include batch indices, while the other half are equivalent to matrix multiplication operations; 2. contractions_verify.txt: Approximately 1000 random contractions with smaller operands (up to ~10^6), designed to validate implementation correctness. It covers various edge cases, such as trivial summations, traces, or diagonal indices.
创建时间:
2025-10-01
原始信息汇总

einbench数据集概述

数据集简介

einbench是一个随机成对张量收缩生成器,用于基准测试和验证einsum实现。该数据集包含两个主要部分。

数据集组成

1. contractions_benchmark.txt

  • 包含约1000个随机收缩运算
  • 运算数量范围:约10^0到10^9
  • 特征:一半包含批量索引,一半不包含(相当于矩阵乘法)

2. contractions_verify.txt

  • 包含约1000个随机收缩运算
  • 运算数量上限:约10^6
  • 专门用于验证实现的正确性
  • 包含各种边缘情况:平凡求和、迹运算、对角索引等

生成方法

两个数据集均使用同一代码生成,主要函数为random_pairwise_contraction,该函数通过以下步骤生成随机收缩:

  1. 选择收缩中使用的不同索引数量(1到log2(cost)之间)
  2. 在索引间随机分配总计算成本以定义其大小
  3. 调整大小直到实际成本≤目标成本
  4. 随机分配每个索引类型(出现在左侧、右侧和/或输出中)
  5. 按要求禁止标量或纯外积
  6. 随机排列每个项上的索引
  7. 返回einsum输入和输出字符串及索引大小字典

功能参数

生成器支持多种参数配置,包括:

  • 目标计算成本控制
  • 索引类型概率分布
  • 允许的运算类型(标量、外积、批量、求和、迹运算等)
  • 索引数量分布控制
搜集汇总
数据集介绍
main_image_url
构建方式
在张量计算领域,einbench数据集通过随机成对张量收缩生成算法构建而成。该算法基于目标计算成本,动态调整索引数量与分布,利用贝塔分布控制索引中心与集中度参数,确保生成过程既覆盖广泛的计算复杂度范围,又兼顾边缘情况的多样性。生成器通过随机分配索引类型与尺寸,结合概率参数灵活调控批量、求和及迹索引的出现频率,最终形成两个子集:用于性能基准测试的高操作量收缩集与侧重实现验证的低操作量收缩集。
特点
einbench数据集的核心特征在于其全面覆盖张量收缩的复杂度谱系与边缘场景。基准测试子集包含约1000个随机收缩实例,操作数量跨越十个数量级,半数实例集成批量索引以模拟矩阵乘法等效场景;验证子集则聚焦低操作量收缩,专门设计用于检测实现正确性,涵盖迹索引、对角索引等特殊情形。这种结构设计使得数据集既能评估计算效率,又能验证算法鲁棒性,为张量运算库的开发提供多维度的测试基础。
使用方法
该数据集的使用需依托其配套的Python生成脚本einbench.py,通过调用random_pairwise_contraction函数可复现或扩展收缩实例。用户可通过调整目标计算成本、随机种子及各类概率参数,定制化生成特定场景的收缩表达式。生成的输入输出字符串与尺寸字典可直接输入einsum实现进行性能分析或正确性检验,其双数据集结构允许分别开展基准测试与算法验证,为张量计算研究提供标准化评估流程。
背景与挑战
背景概述
einbench数据集作为张量收缩计算领域的基准测试工具,由研究团队于2023年开发,旨在系统评估einsum(爱因斯坦求和约定)实现方案的性能与正确性。该数据集通过随机生成成对张量收缩运算,覆盖了从基础矩阵乘法到高维张量运算的广泛场景,其设计理念源于对数值计算库中张量操作标准化测试的迫切需求。通过精确控制计算复杂度与运算类型分布,einbench为深度学习框架、量子模拟及科学计算领域提供了可复现的评估基准,显著推动了高性能张量运算算法的优化进程。
当前挑战
在张量运算领域,einbench需应对多维索引组合爆炸带来的计算复杂度挑战,尤其在处理包含批量维度或特殊索引(如迹运算、对角化)时,需平衡运算效率与数值稳定性。数据集构建过程中,生成算法需动态调整索引分布与计算成本,确保覆盖从标量运算到十亿级操作数的全尺度测试案例,同时避免生成无效或冗余收缩模式。此外,参数化随机生成机制需维持测试案例的多样性与边缘情况覆盖率,这对验证不同硬件平台上einsum实现的通用性提出了严峻考验。
常用场景
经典使用场景
在张量计算领域,einbench数据集通过生成随机成对张量收缩表达式,为einsum实现提供标准化测试基准。其核心应用场景涵盖运算复杂度从10^0到10^9的千余种收缩模式,其中半数包含批处理索引,能够系统评估不同算法在矩阵乘法等效运算中的性能表现。该数据集通过可控的随机生成机制,有效模拟了科学计算中常见的多维数组操作场景。
衍生相关工作
基于该数据集衍生的经典研究包括Opt-Einsum项目的路径优化算法,其通过分析数据集中的收缩模式开发出高效的张量网络收缩顺序策略。此外,TensorFlow的Einsum模块改进和CuTensor的GPU加速方案均采用该数据集进行验证,推动了张量编译技术与自动微分系统的协同发展。
数据集最近研究
最新研究方向
在张量计算与高性能计算领域,einbench数据集作为随机成对张量收缩生成器,正推动einsum实现的前沿研究。其最新研究方向聚焦于优化张量网络收缩算法的性能验证与边界条件测试,通过生成覆盖从基础运算到十亿级复杂度的随机收缩案例,为深度学习框架与量子模拟中的张量运算提供标准化基准。该数据集特别关注批量索引与特殊边缘情况(如迹运算与对角化)的自动化生成,助力研究人员探索异构计算架构下的算法加速与数值稳定性问题,成为量子化学与机器学习交叉领域的重要工具。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

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

二维码
科研交流群

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

数据驱动未来

携手共赢发展

商业合作