处理 TVM 错误#
当运行 TVM 时,你可能会遇到如下错误信息:
---------------------------------------------------------------
An error occurred during the execution of TVM.
For more information, please see: https://tvm.apache.org/docs/errors.html
---------------------------------------------------------------
祝贺你找到了这个页面。下面提供了一些关于如何解读这些错误信息以及当它们出现时你可以采取的措施的提示。
这些错误源于何处?#
这个错误是由 TVM 执行过程中违反内部不变性(internal invariant)引起的。从技术层面来说,该消息是由 ICHECK
宏生成的,该宏可以在 include/tvm/runtime/logging.h
中找到。在 TVM 代码的许多地方都使用了 ICHECK
宏来断言执行期间某个条件为真;任何时候断言失败,TVM 都会以上述错误信息退出。
有关如何处理和生成 TVM 错误的更多详细信息,请参阅 error-handling-guide。
当遇到这样的错误时,你应该做什么?#
首先,不要惊慌。你可以惊慌,但它不会有帮助。
遇到问题时,最佳的做法是搜索 Apache TVM 讨论论坛,查看是否已有其他用户遇到过相同的错误以及可能的解决方案。如果这个错误是由已在较新版本中修复的 bug 引起的,你可能需要更新到 TVM 的新版本。
如果在讨论论坛上找不到相关的讨论主题,你可以在论坛上开始新的议题,详细描述你的问题。请 在你的帖子中包含以下关键信息:
你正在使用的 TVM 版本(例如,你的源代码树的 git 提交哈希)。
你正在运行 TVM 的硬件和操作系统版本。
你正在为你的 TVM 编译目标的硬件设备和操作系统。
关于模型、输入或其他与工作负载相关的信息,可以用于重现你的问题。
没有这些细节,TVM 开发人员很难对你做太多的帮助。