我! 终于! 成功安装tinycudann了!
成功截图

1. 碎碎念

最近在尝试NeRF, 来来回回十几天想尝试一下Nerfstudio. 之前有试过instant-ngp的NeRF复现, 跟的这位大佬的教程, 也贴个链接, 有想尝试的朋友可以看看, 可以配合小破站视频食用, 复现自己的数据集 (感觉比Nerfstudio部署简单多了, 但是很难拓展).

希望有研究NeRF的朋友可以一起交流交流.

进入正题 – Nerfstudio部署的踩坑合集 – 首先主要是tinycudann的安装. 当然, 本人也是小白, 只是踩坑太多, 在csdn各位大佬的帮助下一步步成功的, 以下内容如有错误敬请指出 (以及有些内容我不是特别确定, 能保证成功, 但不保证必要).

第一次写博客, 见谅.

2. 前几步

环境: win11 + cuda11.8 + PyTorch 2.0.1 with CUDA 11.8 + vs2022community + RTX3080

官网教程在这里. 前几步跟下来基本上没问题, 但是为了防止有比我还白的小白, 简单说几句:

  • 安装vs2022community, 对就是那个傻大个, 不是vscode. 我知道vscode也可以, 但是这样的大佬应该不会看这篇小教程. 记得勾选Desktop Development with C++.
    这里也有注意点, 可以在环境变量中加上MSVC的路径, 很多教程都写了. 我个人因期间各种报错是把 x86 和 x64 两条都加了 (实际上我之后怀疑这一步可能会导致后面报错, 所以我建议看到的朋友只加x64这一条就行了). 参考
    vs环境变量

  • 创建conda虚拟环境, 这一步不会的话建议移步anaconda的教程
    conda create --name nerfstudio -y python=3.8
    conda activate nerfstudio
    python -m pip install --upgrade pip

  • 安装pytorch, 官方建议是PyTorch 2.0.1 with CUDA 11.8或PyTorch 2.0.1 with CUDA 11.7, 像我没啥特殊需求就别搞幺蛾子了, 老老实实一步步来.
    pip uninstall torch torchvision functorch tinycudann
    pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
    conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
    这里会有个可能出现的问题: cuda检测不到, 或者后续出现奇奇怪怪的报错. 出现的话我建议小白和我一样重新去系统里装cuda11.8以及cudnn (移步cuda教程, 有很多).
    这个命令是把cuda安装到虚拟环境里的, 之前看到有篇博客说实际上系统里不需要装cuda, 只要装在虚拟环境里, 我个人是没懂怎么操作, 保险起见直接装系统里了.
    虽然这样会影响以后其他环境的搭建, 至少解决了燃眉之急… 评论区要是有大佬可以教我一下, 谢谢!

3. tiny- cuda-nn 安装

接下来是重头戏, 搞得我头疼欲裂痛不欲生. tinycudann是一个python包, 但它的安装非常复杂 (不知道是不是我环境的问题)

官网只有这样一条小命令, 头疼不? 根本解决不了任何问题 (如果你靠着这条命令就成功了那大概不会看到这篇博客).

pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

在手动安装的时候ninja与tiny cuda nn可以分开装, 可以先pip install ninja
网上多种安装方法稍加整理:

  1. 上面命令直接装

  2. 参考

    • 分别从github上下载zip tiny-cuda-nn 下载zip fmt 下载zip cutlass, 将这两个替换到tiny-cuda-nn/ dependencies/下.
    • 在Developer Command Prompt 中 (之前都是在conda prompt) 运行 cmake . -B buildcmake --build build --config RelWithDebInfo (一般版本对应上之后,第一个命令不会有什么报错,第二个命令原博客作者说版本对应好之后就不会报错了, 但是我疯狂报错, 遂放弃此法.
    • 还是在Developer Command Prompt, 切换路径tiny-cuda-nn/bindings/torch/ , 执行python setup.py install, 有warning还别急着慌, 等有报错再慌.
    • 上面没报错的话, 再 python 测试 import tinycudann 没有报错就是安装成功了. 恭喜
  3. 我的方法. 参考
    由于上面的方法卡在第二步就失败了, 所以我猜测我下载到的三个zip文件仍然是不对应的版本. 所以我直接克隆了原项目
    git clone --recursive https://github.com/nvlabs/tiny-cuda-nn
    为什么不是一开始就克隆这个项目? 虽然我能科学上网去github, 但是一开始就是奇怪没法clone, 一clone就subprocess报错, 心里想着不如直接zip省事. 实在没办法之后找了国内没法直接clone的原因, 参考了这篇博客的方法二, 成功clone项目. 于是再也没出现有关这行命令cmake --build build --config RelWithDebInfo的报错. 以下是完整步骤:

    • 按上面的方法设置好端口和系统代理, 运行git clone --recursive https://github.com/nvlabs/tiny-cuda-nn
    • 在Developer Command Prompt中, 切换到tiny-cuda-nn目录, 仍然是 cmake . -B build cmake --build build --config RelWithDebInfo -j, 但是现在不会报错了.
    • 切换到bindings/torch目录, 执行python setup.py install. 此时你多半已经成功, 但如果你遇到和我一样的问题, 即在最后一步出现报错, 并有error: invalid redeclaration of type name "size_t"之类的字样, 请使用 “x64 Native Tools Command Prompt for VS 2022”(也是命令行, 在Developer Command Prompt for VS 2022的快捷方式文件夹的子文件夹VC内可找到), 而不要使用Developer Command Prompt for VS 2022. 因为这一步是有关x64 or x86的,所以我合理怀疑(但懒得验证)可能与上面环境变量多加了一行x86的路径有关.

可能会遇到的问题(本来还有几个, 但是忘记了):

  • RuntimeError: Could not locate a supported Microsoft Visual C++ installation – 可能是前几步的vs环境变量没加或者cuda版本不匹配. 我自己出现过这样的情况: 系统cuda12.3, 虚拟环境cuda11.8, 虚拟环境里nvcc -V显示cuda11.8, 但是真正运行的时候却显示cuda12.3, 导致出错, 所以最后我把系统的cuda也改成11.8了…

有其他问题评论区我看到会回复.

Logo

欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐