处理 TVM 错误
概述
在运行 TVM 时,你可能会遇到如下的错误信息:
---------------------------------------------------------------
An error occurred during the execution of TVM.
For more information, please see: https://tvm.apache.org/docs/errors.html
---------------------------------------------------------------
恭喜!你找到了这篇文档。下面是一些关于如何理解这些错误信息以及遇到错误时可以采取哪些措施的提示。
这些错误从哪里来?
这个错误是由于 TVM 执行过程中某个内部不变量被破坏引起的。从技术层面来说,这条信息是由 include/tvm/runtime/logging.h
文件中的 ICHECK
宏生成的。
ICHECK
宏在 TVM 代码的很多地方用于断言某个条件在执行期间必须为真;一旦该断言失败,TVM 就会终止并显示上述错误信息。
关于 TVM 如何处理和生成错误的更多细节,请参考错误处理指南。
遇到这种错误我应该怎么办?
首先,别慌。当然,你可以慌一下,但这并不会有帮助。
最好的做法是先在 Apache TVM 讨论论坛 搜索你遇到的错误,看看是否有其他人遇到过同样的问题,以及可能的解决方法。如果这是一个已在新版 TVM 中修复的 bug,你可能需要升级到更新版本。
如果你没有找到相关的问题帖子,可以在论坛上发起一个新的讨论帖,详细说明你遇到的问题。请务必在帖子中包含以下关键信息:
- 你使用的 TVM 版本(例如源码树的 git 提交哈希值)。
- 你运行 TVM 所使用的硬件和操作系统版本。
- 你在 TVM 编译时的目标硬件设备和操作系统。
- 有关模型、输入或其他可以复现问题的工作负载的详细信息。
如果没有这些信息,TVM 开发者很难帮助你解决问题。