Ubuntu20.04安裝LibTorch并完成高斯濺射環境搭建

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-sminvcc --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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36951.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

接口自動化測試-項目實戰

什么是接口自動化測試&#xff1a;使用工具或代碼代替人對接口進行測試 測試項目結構&#xff08;python包&#xff09; 1、接口api包 2、script:業務腳本 3、data:數據 4、config.py :配置文件 5、reporter:報告 錯誤問題&#xff1a; 1、未打印任何東西。添加pip ins…

走馬燈封裝

走馬燈功能需求&#xff1a; 支持定時切換&#xff1b;支持左右按鈕切換&#xff08;根據鼠標是否在切換組件內展示和隱藏左右切換按鈕&#xff09;&#xff1b;支持底部標識切換&#xff1b; 走馬燈 完整代碼如下&#xff1a; /*** class 走馬燈*/import react, { Compone…

C語言 指針——緩沖區溢出與緩沖區溢出攻擊

目錄 緩沖區溢出攻擊 緩沖區溢出攻擊實例 字符串的安全輸入方法?編輯 防止緩沖區溢出的兩個要點 緩沖區溢出攻擊 網絡黑客常針對系統和程序自身存在的漏洞&#xff0c;編寫相應的攻擊程序 ? 對緩沖區溢出漏洞的攻擊 —— 最常見 ? 幾乎占到了網絡攻擊次數的一半以上…

Android (已解決)Gradle 編譯失敗 Unsupported class file major version 61

文章目錄 一、報錯原因二、解決方法 一、報錯原因 新版本的 Android Studio 默認使用的是 Java 17 LTS&#xff0c;而這個歷史項目的 Gradle 版本很低&#xff0c;不支持高版本的 Java。 具體原因&#xff1a;Java 17 (major version 61) 編譯的 class 文件&#xff0c;如果在…

逆向學習匯編篇:指令的操作

本節課在線學習視頻&#xff08;網盤地址&#xff0c;保存后即可免費觀看&#xff09;&#xff1a; ??https://pan.quark.cn/s/660c759dea95?? 在逆向工程中&#xff0c;深入理解匯編語言的指令操作是至關重要的。匯編指令是計算機硬件與軟件之間的橋梁&#xff0c;它們直…

DevEco Studio有時會多出來.js和.map文件,導致項目不能運行

1、問題 在使用DevEco的時候有時候會出現啥都沒干&#xff0c;但是在項目的目錄下會自動生成和文件同名的.js和.js.map文件&#xff0c;至于為什么會生成目前我也不知道&#xff0c;如果想要更深了解可以到論壇討論&#xff1a;華為開發者論壇。生成.js和.js.map文件優…

Terraform基礎概念一

Terraform基礎概念一 1.Infrastructure-as-Code(IaC)概念1.1 IaC優勢1.2 IaC工具1.3 IaC的兩種方式 2.Terraform基礎概念2.1 Terraform工作原理2.2 Terraform 工作流 3.總結 1.Infrastructure-as-Code(IaC)概念 基礎設施即代碼&#xff08;Infrastructure-as-Code&#xff0c;…

SVN 的忽略(Ignore)和遞歸(Recursively)以及忽略部分

SVN中忽略大家經常用到&#xff0c;但總是似懂非懂&#xff0c;下面就詳細展開說明一下忽略如何設置。 兩個忽略 通常設置忽略都是文件夾和里面的文件都忽略&#xff0c;通常只需要鼠標右鍵點擊忽略就可以了&#xff0c;如圖&#xff1a; 第一個忽略用的最多&#xff0c;就是…

關于GPIO的上拉、下拉,無上下拉

1.GPIO_PULLUP&#xff08;上拉&#xff09; 作用和原理 作用&#xff1a;上拉模式會在GPIO引腳和電源電壓&#xff08;Vcc&#xff09;之間連接一個內部上拉電阻。原理&#xff1a;當引腳配置為輸入模式時&#xff0c;如果引腳沒有連接到其他外部電路&#xff0c;內部上拉電…

排序算法(C語言版)

前言 排序作為生產環境中常見的需求之一&#xff0c;對整個產品有舉足輕重的影響&#xff0c;可以說使用一個合適的排序算法是業務邏輯中比較重要的一部分。今天我們就來介紹常見的排序算法以及實現 排序 所謂排序無非就是按照特定的規則對一組數據就行順序化。 常見的排序有…

Spring項目報錯解讀與全部報錯詳解

你好,我是Qiuner. 為幫助別人少走彎路和記錄自己編程學習過程而寫博客 這是我的 github https://github.com/Qiuner ?? ? gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章幫到了你 不妨點個贊吧~ 我會很高興的 &#x1f604; (^ ~ ^) 想看更多 那就點個關注吧 我…

圖像大模型中的注意力和因果掩碼

AIM — 圖像領域中 LLM 的對應物。盡管 iGPT 已經存在 2 年多了&#xff0c;但自回歸尚未得到充分探索。在本文中&#xff0c;作者表明&#xff0c;當使用 AIM 對網絡進行預訓練時&#xff0c;一組圖像數據集上的下游任務的平均準確率會隨著數據和參數的增加而線性增加。 要運…

uniApp獲取實時定位

通過你獲取的key放到項目manifest.json里面&#xff0c;對應填寫你所需要的key值&#xff0c;還有高德用戶名 用戶名&#xff1a; key值的位置&#xff1a; 代碼&#xff1a; html: <view class"intList pdNone"><view class"label">詳細地…

[Cocos Creator] v3.8開發知識點記錄(持續更新)

問題&#xff1a;從 cc 里找不到宏定義 CC_PREVIEW 等。 解決方案&#xff1a;找不到就自己定義&#xff0c;將 declare const CC_PREVIEW; 添加到需要的ts文件里。參考&#xff1a;creator3d 找不到宏定義如 CC_EDITOR&#xff0c;CC_PREVIEW&#xff0c;CC_JSB - Creator 3.x…

爬蟲:爬取知乎熱榜一級評論及回答2024不包含翻頁

一、先上結果&#xff08;注:本文僅為興趣愛好探究&#xff0c;請勿進行商業利用或非法研究&#xff0c;負責后果自負&#xff0c;與作者無關&#xff09; 1、爬標題及其具體內容 2、抓標題下的對應回答 3、爬取對應一級評論 二、上流程 1、獲取cookies&#xff08;相信哥哥姐姐…

靜心冥想訓練入門|流靜

在喧囂的都市中&#xff0c;我們時常被瑣事所困&#xff0c;心靈難以得到片刻的寧靜。然而&#xff0c;靜心冥想訓練如同一扇通往內心寧靜的門戶&#xff0c;引領我們踏上一段靜謐的旅程。 靜心冥想&#xff0c;并非遙不可及的高深技藝&#xff0c;而是每個人都能掌握的心靈修煉…

優思學院|「按計劃推動型」與「需求拉動型」的生產模式

針對生產架構做對比分類的用語&#xff0c;主要有按計劃推進型與需求拉動型。 「按計劃推動型」與「需求拉動型」兩者乃是生產架構上常使用、成對比的兩個用語。不過&#xff0c;有時不只用來指單純的生產現場架構&#xff0c;也有人把它應用在更廣泛的生產架構設計上。 按計劃…

【yolov8系列】ubuntu上yolov8的開啟訓練的簡單記錄

前言 yolov8的廣泛使用&#xff0c;拉取yolov8源碼工程&#xff0c;然后配置環境后直接運行&#xff0c;初步驗證自己數據的檢測效果&#xff0c;在數據集準備OK的情況下 需要信手拈來&#xff0c;以保證開發過程的高效進行。 本篇博客更注意為了方便自己使用時參考。順便也記錄…

每日一題——力扣144. 二叉樹的前序遍歷(舉一反三+思想解讀+逐步優化)五千字好文

一個認為一切根源都是“自己不夠強”的INTJ 個人主頁&#xff1a;用哲學編程-CSDN博客專欄&#xff1a;每日一題——舉一反三Python編程學習Python內置函數 Python-3.12.0文檔解讀 目錄 我的寫法&#xff1a; 代碼結構 時間復雜度 空間復雜度 總結 我要更強 代碼說明 …

C語言力扣刷題7——刪除排序鏈表中的重復元素 II——[快慢雙指針法]

力扣刷題7——刪除排序鏈表中的重復元素 II——[快慢雙指針法] 一、博客聲明二、題目描述三、解題思路1、思路說明 四、解題代碼&#xff08;附注釋&#xff09; 一、博客聲明 找工作逃不過刷題&#xff0c;為了更好的督促自己學習以及理解力扣大佬們的解題思路&#xff0c;開辟…