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.mzph.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…

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;如果在…

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;就是…

排序算法(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">详细地…

爬虫:爬取知乎热榜一级评论及回答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;开辟…

好书安利 | LangChain入门指南:构建高可复用、可扩展的LLM应用程序(送PDF)轻松入门LangChain

《LangChain入门指南》 LangChain作为大模型集成框架鼎鼎大名&#xff0c;这本《LangChain入门指南》是一本很及时的书&#xff0c;值得推荐&#xff5e; 01 为什么需要LangChain 首先想象一个开发者在构建一个LLM应用时的常见场景。 当你开始构建一个新项目时&#xff0c;…

不使用canvs也能创建出点状背景

div{ height: 100%; touch-action: none; background: radial-gradient(circle, #e6e6e6 1px, transparent 1px); /* 创建一个点状背景 */ background-size: 15px 15px; /* 控制点的大小和间距 */ padding: 20px; /* 添加内边距使内容不靠边 */ position: relative; /* 让内部内…

树形DP——AcWing 323. 战略游戏

树形DP 定义 树形动态规划&#xff08;Tree Dynamic Programming&#xff0c;简称树形DP&#xff09;是一种在树形结构上应用动态规划算法的技术。它利用树的递归结构&#xff0c;通过定义状态和状态转移方程&#xff0c;来求解与树相关的最优化问题&#xff0c;如树上的最长…

不使用cmake,如何在vs2019对cpp项目进行文件夹分类?

不使用cmake&#xff0c;如何在vs2019对cpp项目进行文件夹分类&#xff1f; 1.不使用cmake的根目录指的是哪里&#xff1f;2.什么时候进行项目管理&#xff1f;3.应该分成什么样的文件夹&#xff1f;4.如何分类&#xff1f; 1.不使用cmake的根目录指的是哪里&#xff1f; 查看项…