docker tvm :AttributeError: module 'tvm' has no attribute 'testing'

最近在搞tvm [官网:https://tvm.ai/], 我采用的docker的方式来快速入手的, 总体来说很简单:

1. 获取docker镜像

sudo docker pull tvmai/demo-gpu

2. 运行docker镜像, 注意这里我们使用了GPU, 需要用到nvidia-docker来共享gpu设备, 由于要使用到jupyter notebook, 所以要端口, 默认的是8888, 可以自行配置, 最后就是共享了一个工作目录. 命令如下:

sudo nvidia-docker run -it -p 8888:8888 tvmai/demo-gpu -v /tvm_source:/source  --name tvmai_gpu /bin/bash

3. 运行jupyter notebook , 由于是root用户, 要加一个 --allow-root 参数

jupyter notebook --allow-root

道理就是这样, 但是好像有坑, 具体错误没有记录, 好像是socket.error bind端口出错了, 这个时候是因为没有notebook的配置.

4. 配置下jupyter notebook [参考的FQ_G的博客]

jupyter notebook --generate-config
vim ~/.jupyter/jupyter_notebook_config.py

找到下面参数, 做些修改:

c.NotebookApp.ip = '0.0.0.0' #所有的网络都可以
    # 如果你希望本机访问,可以配置为 127.0.0.1, 
    # 我试着配置了localhost, 发现不得行, 不晓得是hosts文件没有配置还是啥的, 供参考
c.NotebookApp.port = 8888   #这里可以配置运行的端口

配置了过后, 就jupyter notebook运行就没得毛病了

 

5. 另外一个坑, 跟着教程走, 遇到

AttributeError: module 'tvm' has no attribute 'testing'

这个错误网上没有找到,于是只有看源码了, 其实有个testing.py 很简单, 代码如下:

""" TVM testing utilities """
import numpy as np

def assert_allclose(actual, desired, rtol=1e-7, atol=1e-7):
    """ Version of np.testing.assert_allclose with `atol` and `rtol` fields set
    in reasonable defaults.

    Arguments `actual` and `desired` are not interchangable, since the function
    compares the `abs(actual-desired)` with `atol+rtol*abs(desired)`.  Since we
    often allow `desired` to be close to zero, we generally want non-zero `atol`.
    """
    np.testing.assert_allclose(actual, desired, rtol=rtol, atol=atol, verbose=True)

所以, 遇到这个错误, 你就可以直接把 tvm.testing 转换为 np.testing 即可, 如:

tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + b.asnumpy())

转换为:

np.testing.assert_allclose(c.asnumpy(), a.asnumpy() + b.asnumpy(), rtol=1e-7, atol=1e-7, verbose=True)

 

恩恩, 估计还会遇到不少问题, 继续慢慢看了, 有小伙伴在研究的, 可以组团 [w.w]

### 回答1: 这个错误信息表明在代码中使用了一个无效的属性或方法。在这种情况下,错误消息指出了在 "docker.types" 模块中找不到 "Port" 属性。 有几种可能的原因: - 你可能没有正确安装 docker 库,或者在代码中没有导入这个模块。 - 你可能正在使用旧版本的 docker 库,在这个版本中 "Port" 属性可能不存在。 为了解决这个问题,你可以尝试以下操作: - 确保你已经安装了最新版本的 docker 库,并在代码中正确导入了这个模块。 - 在官方文档中查看有关 "Port" 属性的信息,确保你正在使用正确的方法。 - 如果你依然无法解决问题,可以尝试在网上搜索相关信息,或者在论坛或 Q&A 网站上寻求帮助。 ### 回答2: 执行这个代码 `docker.types.Port('8080/tcp')` 时出现了 `AttributeError: 'module' object has no attribute 'Port'` 错误。 这个错误提示说明在 `docker.types` 模块中没有名为 `Port` 的属性。出现此错误的原因可能是使用了过时的代码或者模块版本。解决此问题的方法是查看当前使用的 `docker` 模块的版本,并确认该版本是否支持 `Port` 属性。 首先,确保已经正确安装了 `docker` 模块。可以通过 `pip` 命令来安装或更新 `docker` 模块,如 `pip install docker` 或 `pip install --upgrade docker`。 其次,检查所使用的 `docker` 模块的文档或官方网站,查找有关 `Port` 属性或类的详细信息。确定当前所使用的 `docker` 版本是否包含 `Port` 属性。 如果确认当前使用的 `docker` 版本不包含 `Port` 属性,可以尝试使用其他方法来实现相同的功能。可以使用 `docker.types.EndpointPort` 或其他合适的属性或类来代替 `Port`。 总结而言,错误信息 `AttributeError: 'module' object has no attribute 'Port'` 提示在 `docker.types` 模块中找不到名为 `Port` 的属性。解决此问题的方法是确认所使用的 `docker` 模块版本,并根据版本使用合适的属性或类来替代 `Port`。 ### 回答3: 这个错误是由于docker模块中没有名为'Port'的属性引起的。根据错误提示,'module'对象表示docker模块,而'Port'表示指定端口的方法或属性,但它不可用。此错误可能由以下几个原因引起: 1. 使用的docker模块版本不支持'Port'属性:检查docker模块的版本是否更新或过旧。建议使用最新版本的docker模块,并查阅相关文档确认该模块是否提供了'Port'属性或使用其他方法来指定端口。 2. 引用错误:确认代码中使用的模块名称是否正确,确保模块名称拼写正确,并且模块已正确导入。可以尝试通过重新安装docker模块来解决此问题。 3. 可能是个别情况或特殊情况:如果以上两种情况都排除了,那么可能是因为个别情况或特殊情况导致了此错误。建议参考docker模块的官方文档、开发者论坛或寻求开发者的帮助,以获取更具体的解决方案。 总之,应当首先检查docker模块的版本和使用的模块名称是否正确,然后参考相关文档进行排查解决。如问题持续存在,建议与相关开发者或社区进行讨论以获取进一步的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值