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++-7sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1sudo 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 1sudo 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 directory1 | #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