我尝试运行Graphcore的一个GitHub代码示例,即使用--replication-factor 16
的README之后的Tensorflow简单复制示例,但引发了以下错误:
tensorflow.python.framework.errors_impl.InternalError: Failed to attach to any of the device(s) with matching configs for ordinal 0
我不确定它为什么无法连接:我曾尝试使用gc-info -l
作为调试工具,它正确地显示了机箱上可用的所有IPU配置。它以前运行得很好,而且似乎很有脾气。我试过重新启动,但过了一段时间错误又随机出现了。任何帮助都将不胜感激。
此故障可能是由于IPU忙于运行其他进程或环境配置不正确造成的。
1.IPU正忙
当您执行Poplar程序(或使用IPU库的特定框架模型(时,您需要一定数量的IPU。例如,如果您请求运行一个具有2个IPU的程序,但其他人已经在使用机箱上的所有IPU,那么您的程序将无法连接,并引发与您看到的错误类似的错误。对于这种情况,只需等待所需数量的IPU可用。您可以使用gc-monitor
命令行工具验证设备是否繁忙(请参阅IPU命令行工具指南以获取参考信息(。这就是繁忙机器的样子:
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-----------------+
| Attached processes | IPU | Board |
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------+----+----------+--------+--------+--------+
| PID | Command | Time | User | ID | Clock | Temp | Temp | Power |
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------+----+----------+--------+--------+--------+
| 32778 | python | 7m34s | User_Name | 0 | 1300MHz | 37.1 C | 41.5 C |104.7 W |
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------+----+----------+--------+--------+--------+
这就是闲置机器的样子:
+--------------------------------------------------------------------------------------------------+
| No attached processes |
+--------------------------------------------------------------------------------------------------+
2.gc-driver
未激活
您可以通过运行gc-info -l
来检查驱动程序是否已激活。如果不是,则gc信息将输出:
gc-info: command not found
否则,如果您正在运行例如TensorFlow应用程序,您可能会遇到以下错误(或类似错误(:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Target configuration failed: model disabled and no hardware IPU found. (Are you sure you enabled the Poplar driver?)
另一方面,如果驱动程序被激活,gc-info -l
输出通常会列出硬件平台中可用的所有IPU。
要激活gc-driver
,您应该确保按如下方式获取gc-driver
启用脚本:
source <path_to_sdk>/gc_drivers-ubuntu_<ubuntu_version>-<sdk_version> <hash>/enable.sh
在您的情况下,gc-info -l
运行良好,因此您似乎达到了情况1。
3.gc-driver
未安装
要检查gc驱动程序是否安装正确,可以运行:
$ modinfo ipu_driver
这应该会输出类似于您的控制台的内容:
filename: /lib/modules/4.15.0-58-generic/updates/dkms/ipu_driver.ko
version: 1.0.41