• pytorch3d安装遇到的一些坑和解决过程


    最近为了安装pytorch3d,折腾了两天,足足两天!

    要注意,安装pytorch3d之前,必须先安装pytorch torchvision

    Pytorch3d官方 是建议用conda install的方式来安装,也可以用pip来安装:

    pip install PyTorch torchvision -c pytorch-nightly

    1.首先说一下MacOS M1 芯片安装情况,刚开始使用的是:

    conda install pytorch3d -c pytorch3d
    

    会安装完成,但是安装完以后执行.py文件跑程序时,会出现无法引用pytorch3d的问题,也尝试过用pip install pytorch3d ,这种方式会安装成最低版本:0.0.1,跑代码的时候依然出现无法应用的问题。

    也尝试过这个方法:MacBook m1安装GPU版PyTorch与简单测试 - 知乎 并且修改了项目中的device值为‘mps’,如:device='mps',但是跑程序的时候还是会出现无法引用pytorch3d异常。搜索了好久,看到一个遇到同样的问题,最终通过源码安装成功了,加上刚开始我在ubuntu18.04 系统上安装了好久pytorch3d都没成功,然后我选择了源码安装

    2.通过源码安装pytorch3d

    1. git clone https://github.com/facebookresearch/pytorch3d.git
    2. cd pytorch3d
    3. pip install -e .

    过程有点久,但是安装成功会提示:Successfully installed pytorch3d-0.7.0

    安装之前可以先使用:rm -rf build/ **/*.so 清理掉pytorch3d目录下的build文件夹,因为这个文件夹里面会生成当前设备对应的pytorch3d包。安装完成以后会生成两个文件夹:

    pytorch3d/build/temp.macosx-11.1-arm64-cpython-39

    pytorch3d/build/lib.macosx-11.1-arm64-cpython-39

    如果只看到temp文件夹,那说明还没编译完成

    但是我在macos m1上安装完成以后,跑程序时,提示异常:

    ImportError: dlopen(/Users/xx/Desktop/pytorch3d/pytorch3d/_C.cpython-39-darwin.so, 0x0002): tried: '/Users/xx/Desktop/pytorch3d/pytorch3d/_C.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))

    看起来当前有x86_64架构的pytorch3d,但是需要arm64结构的,当我用pip list 查看的时候,发现其中有一条:

    pytorch3d               0.7.0              /Users/xx/Desktop/pytorch3d

    而对应的 /Users/xx/Desktop/pytorch3d/build中也是arm64架构的,不知道什么原因,我目前没能在macos m1的设备上跑起来。接下来继续转战Ubuntu18.04

    3.在Ubuntu18.04中安装

    在这个环境我花了大部分的时间,同样遇到了和mac系统一样的无法引用pytorch3d的问题,还遇到了torch版本和cuda版本不匹配的问题,尝试过升级cuda,也按照官方文档:Start Locally | PyTorch 尝试了conda安装,会出现pytorch3d无法引用torch的问题,需要安装完torch以后,再安装pytorch3d。这个过程遇到了很多奇怪的问题,最后还是用源码安装pytorch3d解决了问题

    总结:用conda和pip直接安装pytorch3d可能比较快,但可能无法引用,用源码安装应该都能解决问题。

    cuda、pytorch、pytorch3d、torchvision、torchaudio 之间有较强的版本依赖,尤其是cuda11之前的版本不支持超过7.5算力的设备,需要先升级cuda版本到11以上,再安装pytorch相关库,再安装pytorch3d。

  • 相关阅读:
    SVA断言总结
    2023NOIP A层联测18 划分
    Spring学习(4) Spring依赖注入
    Python Prim 算法 生成迷宫
    什么是SpringMVC?简单好理解!
    酷开科技依托酷开系统推动家庭智能化加速发展
    Java代码基础算法练习-判断学生成绩等级-2024.06.28
    手把手教你Nginx常用模块详解之ngx_stream_ssl_module(七)
    LVGL---开关(lv_switch)
    Kotlin协程-select基础
  • 原文地址:https://blog.csdn.net/IT___LaDeng/article/details/127417031