0. 简介
最近受到优刻得的使用邀请,正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。暂时已经满足我的使用需求了,同时支持访问加速,独立IP等功能,能够更快的完成项目搭建。
而且在使用后可以写对应的博客,可以完成500元的赠金,完全可以满足个人对GPU的需求。
对应的环境搭建已经在《如何使用共享GPU平台搭建LLAMA3环境(LLaMA-Factory)》介绍过了。高斯溅射是最近在SLAM领域最火的一块工作,因为其和深度学习结合,这导致有一定的上手门槛。基于python的高斯溅射已经有很多了,现在我们这里来讲一下如何使用C++完成环境搭建以及代码训练。如果使用了优刻得平台我们可以省去搭建CUDA这些环境,可以直观关注算法层面的使用。
1. 检查显卡驱动
查看是否安装NVIDIA显卡
lspci | grep -i nvidia
查看显卡信息
nvidia-smi
如果出现这个样式,说明已经安装显卡驱动了。通常装好的Ubuntu中都有显卡驱动。如果在配置的过程中遇到了没有显卡驱动。如果没有驱动,那么就需要手动安装显卡驱动了。
先添加源:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
检查可安装的驱动:
ubuntu-drivers devices
找到最适合的驱动安装,安装recommended标记的,通常也是数字版本最大的那个。
sudo apt install nvidia-driver-XXX
也可以自动安装系统推荐那个
sudo ubuntu-drivers autoinstall
如果没有遇到报错,说明安装成功,此时调用nvidia-smi指令可能还是看不到显卡信息,不要担心,重启系统之后就能看到了。
2. 安装CUDA
英伟达官网(最新版):CUDA Toolkit 12.5 Update 1 Downloads | NVIDIA Developer
CUDA历史版本下载地址:CUDA Toolkit Archive | NVIDIA Developer
这里是nvidia给出的官方安装指南(遇到问题时可以查阅):
NVIDIA CUDA Installation Guide for Linux
2.1 选择 runfile 按照官网提示的输入到终端中的代码执行安装
我们在打开上面的CUDA历史版本下载地址找到CUDA 12.1版本后
然后复制命令到命令行
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
这里必须先关图形界面,如果不关,运行下面安装的命令之后会报错,装不上(我们这里不需要,这个需要带图形化界面的Ubuntu)
systemctl isolate multi-user.target
关闭图形界面之后会重启,输入如下命令(我们这里不需要,这个需要带图形化界面的Ubuntu)
modprobe -r nvidia-drm
2.2 安装驱动
sudo sh cuda_12.1.0_530.30.02_linux.run
稍等一会。会在弹出的安装界面中选“continue”,如果选了会跳出安装,就说明安装失败,给了失败日志的路径,自己查看原因,一般是gcc版本问题,降级方法如下:
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
sudo update-alternatives --display gcc //查看默认版本
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1
sudo update-alternatives --display g++
如果没问题继续安装:
之后就继续,输入accept
之后就继续,把第一个选择驱动,给他回车取消,因为我们已经有驱动了
在安装完毕后,我们再开启图形界面(我们这里不需要,这个需要带图形化界面的Ubuntu)
sudo systemctl start graphical.target
2.3 配置CUDA的环境变量
成功后需要配置一下环境变量,这步很关键。这里需要在.bashrc里配置环境变量。
sudo gedit ~/.bashrc
在打开文件的最后一行加上:
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
特别注意文件夹路径,有时候文件夹直接是/usr/local/cuda
,有时候是别的版本号,要确保文件夹存在。
source ~/.bashrc
2.4 检查是否安装成功
检查一下CUDA是否安装正确:(注意文件夹路径一定要存在,需要跟上面设置环境变量的路径保持一致)
cat /usr/local/cuda-12.1/version.txt
一开始的时候,我对CUDA不是很了解,执行这句话没有任何反应,我以为是该方法失效了。我使用
nvidia-smi
或nvcc --version
指令都看到了CUDA版本号。但是CUDA环境没有配置好,这两个也是能拿到版本号的,所以不准确。还是应该用上面的方法检查CUDA版本。
2.5 卸载cuda
先进入安装目录下的bin文件夹中
cd /usr/local/cuda-12.2/bin
然后勾选我们要卸载的12.2版本,选择done
3. 安装cuDNN
cuDNN比CUDA安装简单,下载对应版本压缩包,拷贝文件到指定目录,给予权限就好了。
下载cudnn相应版本.
最新版下载地址:Log in | NVIDIA Developer
cudnn历史版本: cuDNN Archive | NVIDIA Developer
官方安装指南: Installation Guide - NVIDIA Docs
3.1 下载
https://developer.nvidia.com/rdp/cudnn-archive
#找到https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/12.x/cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb
3.2 安装cuDNN库
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
3.3 更新APT仓库并安装cuDNN运行时库、开发库和示例库
sudo apt-get update
sudo apt-get install libcudnn8=8.9.6.50-1+cuda12.2
sudo apt-get install libcudnn8-dev=8.9.6.50-1+cuda12.2
sudo apt-get install libcudnn8-samples=8.9.6.50-1+cuda12.2
3.4 安装成功
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN
#显示“Test passed!”或类似的消息,表示cuDNN运行正常。
- 如果编译报错fatal error: FreeImage.h: No such file or directory
1 | #include "FreeImage.h"
| ^~~~~~~~~~~~~
- 解决方法:sudo apt-get install libfreeimage3 libfreeimage-dev
4. 安装libtorch GPU版
进入pytorch官网 https://pytorch.org/get-started/locally/
下载一个你想用的就行
这里我们根据12.1的下载链接
wget https://download.pytorch.org/libtorch/cu121/libtorch-cxx11-abi-shared-with-deps-2.3.1%2Bcu121.zip
4.1 解压
unzip libtorch-cxx11-abi-shared-with-deps-2.3.1+cu121.zip
解压后得到libtorch文件夹,文件夹下的内容如图
4.2 环境测试
配置CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(libtorch_test)
find_package(PythonInterp REQUIRED)
list(APPEND CMAKE_PREFIX_PATH "/home/ubuntu/libtorch")
add_executable(libtorch_test main.cpp)
find_package(Torch REQUIRED)
target_link_libraries(libtorch_test "${TORCH_LIBRARIES}")
set_property(TARGET libtorch_test PROPERTY CXX_STANDARD 17)
编辑main.cpp文件
#include <torch/script.h>
#include <torch/torch.h>
#include <iostream>
int main() {
std::cout << "检查CDUA是否可用:" << torch::cuda::is_available() << std::endl;
std::cout << "检查cudnn是否可用:" << torch::cuda::cudnn_is_available() << std::endl;
std::clock_t s, e;
s = clock();
torch::Tensor cuda_output;
for (int i=0;i<1;i++) {
cuda_output = torch::randn({ 5, 4 }, torch::device(torch::kCUDA));
}
std::cout << cuda_output << std::endl;
e = clock();
std::cout << "use time: " << (e - s) << " 微秒" << std::endl;
return 0;
}
5. OpenSplat项目运行
要在Ubuntu环境中搭建OpenSplat项目,请按照以下步骤操作:
5.1 安装依赖项:
sudo apt-get update
sudo apt-get install build-essential cmake git libeigen3-dev libopencv-dev
5.2 克隆项目:
git clone https://github.com/pierotofy/OpenSplat OpenSplat
cd OpenSplat
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch/ .. && make -j$(nproc)
5.3 下载数据集:
下载并解压数据集到某个文件夹:banana、train、truck
打开终端,进入项目目录:
cd build
运行以下命令(以banana数据集为例):
./opensplat /path/to/banana -n 2000
生成的splat.ply
文件可以在PlayCanvas Viewer中查看,cameras.json
文件也会在同一目录下生成。
运行自定义数据:选择包含稀疏点的COLMAP、OpenSfM、ODM或nerfstudio项目路径。
5.4 查看参数:
运行以下命令查看可调参数:
./opensplat --help
5.5 生成压缩splat文件:
使用以下命令生成压缩的.splat文件:
./opensplat /path/to/banana -o banana.splat
6. 参考链接
https://blog.csdn.net/ytusdc/article/details/132404002
https://blog.csdn.net/h3c4lenovo/article/details/119003405
https://blog.csdn.net/Xeon_CC/article/details/126913125
https://blog.csdn.net/qq_42864343/article/details/131728784
https://blog.csdn.net/2301_79694635/article/details/135647492