Skip to content

Latest commit

 

History

History
115 lines (97 loc) · 8.98 KB

TRT-Hackathon-2022-final.md

File metadata and controls

115 lines (97 loc) · 8.98 KB

关于复赛

恭喜各位同学经过激烈角逐,顺利进入复赛!
对于参赛者,初赛的目的是通过优化同一个模型,让大家互相交流,了解TensorRT的一般用法,积累经验;复赛的目的是让大家把自己感兴趣的、认为有价值的、有一定难度的模型找出来,在英伟达专家的支持下把它优化好。
对于英伟达,初赛的目的就是选拔;复赛的目的是扩大TensorRT在业界的应用规模,并通过积累大家创作的网上资源,引导更多人把TensorRT用好。
复赛要自选题目,这样就失去了制订统一的客观评分的基础。不得不说,对于英伟达,复赛的评分公平性是个巨大的挑战。英伟达小心翼翼地制订评分规则,认真评审,可结果也许做不到让所有人都满意。对此,我们希望大家都放平心态,积极参赛,在复赛中收获知识与经验。我们会努力让所有优秀的作品都得到充分认可,即便没有足够的物质奖励分发给大家。

复赛赛题

复赛是开放赛题,各选手可自由选择公开的transformer模型,在TensorRT上优化运行。

  • 注意:为了让选手的工作可被他人参考,必须选择公开的模型,而且选手的代码也必须开源。开源协议可以视需要自行选择。

要求选手交付的内容如下:

  • 代码:从原始模型出发,直到运行优化好的TensorRT模型,全过程所需的所有脚本及代码,并且需要选手在公共的代码托管平台(建议用github)将其开源出来。特别地,要求能在选手自选的某个英伟达官方Docker镜像(在NGC里面选择)中运行。
    • 使用NGC是为了给他人提供标准的复现环境。即便开发过程中没有使用Docker,最终提交前也需要在NGC Docker中验证,并据此写报告。
    • NGC里有多种镜像可选,有的预装了TensorFlow,PyTorch或TensorRT。选手要从中选一个,然后在里面自行安装其他软件(python库安装建议写个requirement.txt)。
    • 选手一般需要从原始模型导出ONNX,有的还要做QAT,此过程可能涉及对原始模型的修改。选手既可以拷贝原模型代码到自己的代码仓库,也可以指明原模型代码位置及版本,并附上修改补丁。建议采用前者。
  • 报告:要用固定的模板、以markdown的形式发布在代码仓库根目录的README.md里面。
    • 报告的模板在本文的末尾。

评分标准

英伟达将组织专家小组评审你的优化工作。主要评分依据如下:

  • 主要得分
    • 模型本身有应用价值,暂无成熟优秀的TensorRT上的优化方案,有技术上的优化难度。20分
    • 代码干净,逻辑清晰。30分
    • 模型顺利运行,精度合格,加速良好。30分
    • 报告完整,可读性好,对TensorRT学习者有良好的参考价值。30分
  • 附加得分
    • 独立开发了CUDA代码或Plugin。20分
    • 用Nsight进行了Profiling,并进行了针对性优化。20分
    • 进行了INT8量化的工作(QAT/PTQ均可),在保证精度可接受的前提下进一步提升了性能。20分
    • 提交TensorRT bug,并得到导师确认。5分每个bug。
  • 初赛得分
    • 折算30分计入复赛。

日程表

复赛按如下日程表进行:

时间点 完成事项 建议的下一步活动
5月23日 复赛开始:分配导师 选题
5月27日 选题审查:选题完毕,github项目主页建立,发布报告的“原始模型”部分 优化模型
6月13日 中期审查:模型已经初步可以在TensorRT上运行。获得云主机访问方式 进一步优化模型,完成报告
6月27日 最终审查:完成代码和报告。请导师按文档审核、运行代码 等待比赛结果
7月6日 公布比赛结果 上网吐槽

这里列出的“建议的下一步活动”仅供参考,选手可以自行安排一种更紧凑的项目实施节奏。无论如何,请保证在给定时间点上完成给定事项。

报告的模板

大赛要求用统一模板写报告,是为了让所有报告都有共同的行文结构,方便评审。同时,本模板也尽量考虑实用性,让它可以称职地成为代码项目的主页说明书。 我们希望同学们用心打造这份报告。但愿这份报告就像一份TensorRT入门教程那样,通过一个具体的例子,详细介绍从原始模型到优化模型的全工作流程,从而传授经验,给人启发。

以下为模板具体内容。


总述

请简练地概括项目的主要贡献,使读者可以快速理解并复现你的工作,包括:

  • 原始模型的名称及链接
  • 优化效果(精度和加速比),简单给出关键的数字即可,在这里不必详细展开
  • 在Docker里面代码编译、运行步骤的完整说明
    • 请做到只要逐行运行你给的命令,就能把代码跑起来,比如从docker pull开始

原始模型

模型简介

请介绍模型的基本信息,可以包含但不限于以下内容:

  • 用途以及效果
  • 业界实际运用情况,比如哪些厂商、哪些产品在用
  • 模型的整体结构,尤其是有特色的部分

模型优化的难点

如果模型可以容易地跑在TensorRT上而且性能很好,就没有必要选它作为参赛题目并在这里长篇大论了。相信你选择了某个模型作为参赛题目必然有选择它的理由。
请介绍一下在模型在导出时、或用polygraphy/trtexec解析时、或在TensorRT运行时,会遇到什么问题。换句话说,针对这个模型,我们为什么需要额外的工程手段。

优化过程

这一部分是报告的主体。请把自己假定为老师,为TensorRT的初学者讲述如何从原始模型出发,经过一系列开发步骤,得到优化后的TensorRT模型。

建议:

  • 分步骤讲清楚开发过程
  • 最好能介绍为什么需要某个特别步骤,通过这个特别步骤解决了什么问题
    • 比如,通过Nsight Systems绘制timeline做了性能分析,发现attention时间占比高且有优化空间(贴图展示分析过程),所以决定要写plugin。然后介绍plugin的设计与实现,并在timeline上显示attention这一部分的性能改进。

精度与加速效果

这一部分介绍优化模型在云主机上的运行效果,需要分两部分说明:

  • 精度:报告与原始模型进行精度对比测试的结果,验证精度达标。
    • 这里的精度测试指的是针对“原始模型”和“TensorRT优化模型”分别输出的数据(tensor)进行数值比较。请给出绝对误差和相对误差的统计结果(至少包括最大值、平均值与中位数)。
    • 使用训练好的权重和有意义的输入数据更有说服力。如果选手使用了随机权重和输入数据,请在这里注明。
    • 在精度损失较大的情况下,鼓励选手用训练好的权重和测试数据集对模型优化前与优化后的准确度指标做全面比较,以增强说服力
  • 性能:最好用图表展示不同batch size或sequence length下性能加速效果。
    • 一般用原始模型作为参考标准;若额外使用ONNX Runtime作为参考标准则更好。
    • 一般提供模型推理时间的加速比即可;若能提供压力测试下的吞吐提升则更好。

请注意:

  • 相关测试代码也需要包含在代码仓库中,可被复现。
  • 请写明云主机的软件硬件环境,方便他人参考。

Bug报告(可选)

提交bug是对TensorRT的另一种贡献。发现的TensorRT、或cookbook、或文档和教程相关bug,请提交到github issues,并请在这里给出链接。

对于每个bug,请标记上hackathon2022标签,并写好正文:

  • 对于cookbook或文档和教程相关bug,说清楚问题即可,不必很详细。
  • 对于TensorRT bug,首先确认在云主机上使用NGC docker + TensorRT 8.4 GA仍可复现,然后填写如下模板,并请导师复核确认(前面“评分标准”已经提到,确认有效可得附加分):
    • Environment
      • TensorRT 8.4 GA
      • Versions of CUDA, CUBLAS, CuDNN used
      • Container used
      • NVIDIA driver version
    • Reproduction Steps
      • Provide detailed reproduction steps for the issue here, including any commands run on the command line.
    • Expected Behavior
      • Provide a brief summary of the expected behavior of the software. Provide output files or examples if possible.
    • Actual Behavior
      • Describe the actual behavior of the software and how it deviates from the expected behavior. Provide output files or examples if possible.
    • Additional Notes
      • Provide any additional context here you think might be useful for the TensorRT team to help debug this issue (such as experiments done, potential things to investigate).

经验与体会(可选)

欢迎在这里总结经验,抒发感慨。