[Tools: tiny-cuda-nn] Linux安装

official repo: https://github.com/NVlabs/tiny-cuda-nn

该包可以显著提高NeRF训练速度,是Instant-NGPThreestudioNeRFstudio等框架中,必须使用的。

1. 命令行安装

最便捷的安装方式,如果安装失败考虑本地编译。

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

2. 本地编译

2.1 git下载

git clone --recursive https://github.com/nvlabs/tiny-cuda-nn

该命令中的recursive,是用于下载tiny-cuda-nn中的两个依赖包:cutlass和fmt。

如果服务器上recursive下载失败,考虑本地下载zip包,上传至服务器并解压。但注意:此时两个依赖包是需要自己下载的:

cd tiny-cuda-nn/dependencies
git clone https://github.com/NVIDIA/cutlass.git
git clone https://github.com/fmtlib/fmt.git

2.2 本地编译

一定是确保GCC、CUDA、CMake版本符合:

cd bindings/torch
python setup.py install

其中,如果GCC版本过老,同时没有root权限,可以考虑:

# 下载源码包并解压
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz
tar -zxvf gcc-11.2.0.tar.gz

# 下载依赖及配置文件
cd gcc-11.2.0
./contrib/download_prerequisites

# 配置,prefix指向存储路径
mkdir build
cd build/
../configure --prefix=/path/to/install/gcc --enable-checking=release --enable-languages=c,c++ --disable-multilib

# 编译,后面的速度用来提速,与CPU相关
make -j 64

# 安装
make install 

将新版gcc路径添加至~/.bashrc,如果能正确输出gcc版本,则安装成功。

vim ~/.bashrc

# 添加以下内容
export PATH="/path/to/gcc-11.2.0/bin:$PATH"
export LD_LIBRARY_PATH="/path/to/gcc-11.2.0/lib64:$LD_LIBRARY_PATH"

# 添加后,执行下列命令
source ~/.bashrc
gcc -v
### 关于分布式训练脚本 `dist_train.sh` 的参数说明 运行分布式训练脚本时,通常会涉及多个配置文件和参数设置。以下是针对您提到的命令以及相关参数的具体解释: #### 命令结构解析 ```bash tools/dist_train.sh \ configs/faster_rcnn/faster-rcnn_r50-caffe_fpn_fcos-rpn_1x_coco.py \ 8 \ --work-dir ./work_dirs/faster-rcnn_r50-caffe_fpn_fcos-rpn_1x_coco ``` 1. **`tools/dist_train.sh`**: 这是一个用于启动分布式训练的 shell 脚本。它通过 PyTorch 提供的工具实现多 GPU 或多节点上的模型并行化训练。 2. **第一个参数 (配置文件路径)**: 配置文件指定了模型架构、数据集路径以及其他超参数等内容。例如,在您的例子中使用的配置文件为: `faster-rcnn_r50-caffe_fpn_fcos-rpn_1x_coco.py`[^1]。此文件定义了一个基于 Faster R-CNN 的目标检测器,其骨干网络为 ResNet-50 和 FPN 结构,并使用 COCO 数据集进行训练。 3. **第二个参数 (GPU 数量)**: 表示参与训练的 GPU 总数。在此处指定的是 8 个 GPU。如果硬件资源不足或者需要调整规模,则可以修改该数值以适应实际需求。 4. **可选参数 (`--work-dir`)**: 它用来设定保存实验结果的工作目录位置。在这个实例里,默认工作目录被设为了当前项目根目录下的子文件夹 `./work_dirs/...`. --- ### BEV Fusion 及 Mask R-CNN 参数详解 对于更复杂的框架如 BevFusion 或者 Mask R-CNN 使用 DB-Swin Transformer 作为主干网的情况,同样遵循类似的逻辑来调用上述脚本执行分布式的预处理与学习过程。不过具体到这些高级模块上还需要额外关注几个方面: 1. **BevFusion 特殊选项**: - 如果涉及到 LiDAR 点云融合操作, 则可能需要引入更多自定义层支持三维特征提取. 2. **Mask R-CNN 中 Backbone 替换注意事项**: - 当采用 Swin-Tiny(Fused)代替传统 CNNs 后端部分时候要注意初始化权重加载方式变化. 下面给出一段 Python 实现片段展示如何动态导入不同类型的 backbone 并完成相应适配: ```python from mmdet.models import build_detector import torch.nn as nn def get_model(config_path): cfg = Config.fromfile(config_path) model = build_detector(cfg.model) # Example of replacing the default backbone with a custom one like SwinTransformer if 'swin' in config_path.lower(): from mmcv.cnn.bricks.transformer import SwinTransformer new_backbone = SwinTransformer(pretrained='path/to/swin_t.pth') # Replace original backbone module inside detector instance setattr(model.backbone, 'body', new_backbone.body) return model.cuda() model_instance = get_model('mask_rcnn_dbswin-t_fpn_config_file.py') print(f'Model successfully loaded! {type(model_instance)}') ``` 以上代码展示了根据给定配置创建对应模型对象的同时还能灵活替换其中某些组件的功能。 --- ###
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值