【Nerfstudio踩坑合合集 -- tinycudann】
解决Nerfstudio部署的各种疑难杂症
我! 终于! 成功安装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这一条就行了). 参考
-
创建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
网上多种安装方法稍加整理:
-
上面命令直接装
-
- 分别从github上下载zip tiny-cuda-nn 下载zip fmt 下载zip cutlass, 将这两个替换到tiny-cuda-nn/ dependencies/下.
- 在Developer Command Prompt 中 (之前都是在conda prompt) 运行
cmake . -B build
、cmake --build build --config RelWithDebInfo
(一般版本对应上之后,第一个命令不会有什么报错,第二个命令原博客作者说版本对应好之后就不会报错了, 但是我疯狂报错, 遂放弃此法. - 还是在Developer Command Prompt, 切换路径tiny-cuda-nn/bindings/torch/ , 执行
python setup.py install
, 有warning还别急着慌, 等有报错再慌. - 上面没报错的话, 再 python 测试 import tinycudann 没有报错就是安装成功了. 恭喜
-
我的方法. 参考
由于上面的方法卡在第二步就失败了, 所以我猜测我下载到的三个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了…
有其他问题评论区我看到会回复.
欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。
更多推荐
所有评论(0)