云桌面服务器参数
我是一名软件工程的学生。从刚接触这个专业起到现在,我就一直没有弄明白如何配置环境(我也不知道配置环境这四个字用的是否恰当,大概就是安装各种东西的意思,比如别人写的库、各种开源的东西以及操作系统等等),只能跟着教程一步一步走,运气好和教程描述的情况一样,就能配置成功,运气不好又要找下一个教程。两三年来,不费什么力就能配置成功的时候少之又少,有的环境甚至要配置好几天,最后还得找别人帮忙。就算配置成功了,也是试出来的,也不知道为什么成功。我自学能力还成,读源码什么的都可以,数学啊算法啊学起来也都懂。但是配置环境的时候,我就感觉自己面对的是一个巨大的黑箱,常常有一种恐惧感。我可以说是基本上不懂这方面的任何知识。我该如何改变这一现状?是否有必要系统地学习如何配置环境?如果有,应该如何学习?
前言
UniScene 作为一个整合了语义占据栅格(Semantic Occupancy)、视频生成和激光雷达点云生成的统一框架,其环境配置极其复杂。特别是在 AutoDL 等云服务器环境下,受限于系统盘空间、网络环境及预设的编译器版本,直接遵循官方 README 往往会遭遇依赖冲突或编译失败。
本文档旨在提供一套经过验证的标准化部署流程,通过绕过 Poetry 的依赖锁定机制、手动管理编译器版本以及优化数据存储策略,确保环境能够稳定构建。
0. 前置准备与注意事项
实例状态:必须确保 AutoDL 实例处于开机状态。严禁使用无卡模式进行环境配置,因为 CUDA 扩展的编译(如lidar_gen)依赖于对物理 GPU 架构的检测。镜像选择:推荐选择Miniconda / Python 3.9 / CUDA 12.1的基础镜像。存储规划:AutoDL 系统盘(/root)空间有限,所有数据集与模型权重必须存储在数据盘(/root/autodl-tmp),并通过软链接映射。
1. 系统级编译器修复(无错误状态下不需要)
AutoDL 默认环境可能存在 GCC 版本与 CUDA 12.1 不兼容,或gcc与g++版本不一致(Split Brain)的问题,这会导致驱动调用失败或 C++ 扩展编译错误。我们需要强制统一使用GCC-11。
在终端执行以下命令:
更新软件源并安装 GCC-11 完整工具链
sudo apt-get update
sudo apt-get install -y gcc-11 g++-11 build-essential
使用 update-alternatives 建立版本管理组,并将 GCC-11 优先级设为最高 (100)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
验证编译器版本(预期输出应为 11.x.x)
gcc --version
g++ --version
2. 数据存储策略与数据集准备
鉴于 AutoDL 系统盘(/root)空间有限,我们制定了数据盘存储 (/root/autodl-tmp) + 软链接映射的部署策略。请先完成 2.1 节的基础架构搭建,随后根据需求在 2.2 节(全量)或 2.3 节(Mini)中二选一。
2.1 基础架构:目录映射与环境隔离
深圳云主机云服务器公司
无论选择何种数据集,首先必须构建物理存储目录并将其链接至代码工程中。
1. 切换至数据盘并创建统一存储命名空间
cd /root/autodl-tmp
mkdir -p UniScene_Storage
cd UniScene_Storage
2. 创建符合 UniScene 要求的物理目录结构
mkdir -p data/nuscenes
mkdir -p data/nuscenes_mmdet3d-12Hz
mkdir -p ckpt/Occupancy
mkdir -p ckpt/LiDAR
mkdir -p ckpt/Video
3. 切换回代码根目录(假设位于 /root 下)
cd /root/UniScene-Unified-Occupancy-centric-Driving-Scene-Generation
4. 清理旧目录并建立软链接分发
注意:此步骤将数据盘路径映射至项目根目录及各子模块,避免路径硬编码问题
rm -rf data ckpt
ln -s /root/autodl-tmp/UniScene_Storage/data ./data
ln -s /root/autodl-tmp/UniScene_Storage/ckpt ./ckpt
子模块数据分发
ln -s $(pwd)/data ./occupancy_gen/data
ln -s $(pwd)/data ./lidar_gen/data
ln -s $(pwd)/data ./video_gen/data
2.2 方案 A:部署全量数据集 (v1.0-trainval)
适用场景:复现论文精度、完整训练。硬件要求:数据盘 > 300GB (生成 GT 需 > 3TB)。
步骤 1:中转准备
请访问以下链接下载对应文件(NuScenes 官网需注册账号):
1.基础数据集 (v1.0-trainval)
下载地址:所需文件:Metadata:v1.0-trainval_meta.tgzSamples & Sweeps:v1.0-trainval01_blobs.tgz至v1.0-trainval10_blobs.tgz(共10个压缩包)
2.CAN Bus 扩展数据
下载地址: (页面下方 CAN bus expansion)所需文件:can_bus.zip
3.地图扩展包 (Map Expansion)
下载地址: (页面下方 Map expansion)所需文件:nuScenes-map-expansion-v1.3.zip
4.UniScene 专用元数据 (12Hz 插值)
下载地址:所需文件:nuscenes_interp_12Hz_infos_train.pkl和nuscenes_interp_12Hz_infos_val.pkl
5.上传:登录 Hugging Face,创建一个Dataset仓库(例如命名为UniScene_Full),将上述文件全部上传。
步骤 2:极速拉取与解压在 AutoDL 终端执行(请替换链接中的用户名和仓库名):
cd /root/autodl-tmp
1. 批量下载(利用 hf-mirror.com 加速)
示例:wget -c [https://hf-mirror.com/datasets/YourName/Repo/resolve/main/v1.0-trainval_meta.tgz](https://hf-mirror.com/datasets/YourName/Repo/resolve/main/v1.0-trainval_meta.tgz)
请自行编写脚本下载所有分卷
2. 解压归位
cd UniScene_Storage/data
tar -xf /root/autodl-tmp/v1.0-trainval*.tgz -C nuscenes/
unzip -o /root/autodl-tmp/can_bus.zip -d nuscenes/
unzip -o /root/autodl-tmp/nuScenes-map-expansion-v1.3.zip -d nuscenes/maps/
3. 部署元数据
mv /root/autodl-tmp/nuscenes_interp_12Hz_infos_*.pkl nuscenes_mmdet3d-12Hz/
2.3 方案 B:部署 Mini 数据集 (推荐用于 Demo 实操)
适用场景:快速跑通流程、环境测试。硬件要求:数据盘 > 10GB。
此方案最为推荐。我们将处理三个核心文件:Mini 数据集本体、地图包、以及插值处理后的元数据包。
步骤 1:中转准备 (本地 -> Hugging Face)
请在本地电脑下载以下 3 个文件:
云服务器 测评
1.NuScenes Mini 数据集
下载地址:所需文件:v1.0-mini.tgz
2.地图扩展包 (Map Expansion)
下载地址: (页面下方 Map expansion)所需文件:nuScenes-map-expansion-v1.3.zip
3.UniScene 专用元数据 (验证集)
下载地址:所需文件:nuscenes_interp_12Hz_infos_val.pkl(Demo 仅需 val 即可)
4.上传:将这三个文件上传至您的 Hugging Face Dataset 仓库。这里作者已经建好仓库并且上传了相应文件。
步骤 2:云端极速部署请在 AutoDL 终端中严格按照以下顺序执行。
2.3.1 下载文件
cd /root/autodl-tmp
这里坐着已经给出可以直接使用的地址
1. 下载 Mini 数据集
wget -c https://hf-mirror.com/datasets/Kevinwjw/Uniscene_mini_dataset/resolve/main/v1.0-mini.tgz
2. 下载地图包
wget -c https://hf-mirror.com/datasets/Kevinwjw/Uniscene_mini_dataset/resolve/main/nuScenes-map-expansion-v1.3.zip
3. 下载插值元数据包
wget -c https://hf-mirror.com/datasets/Kevinwjw/Uniscene_mini_dataset/resolve/main/interp_12Hz.tar
2.3.2 解压与文件归位 (避坑关键)由于压缩包内部结构复杂,请直接使用以下命令进行外科手术式归位:
A. 部署 Mini 数据集本体
直接解压到目标目录,会自动生成 v1.0-mini, samples, sweeps 文件夹
tar -xf v1.0-mini.tgz -C UniScene_Storage/data/nuscenes/
B. 部署地图扩展包
必须解压到 maps 子目录
unzip -o nuScenes-map-expansion-v1.3.zip -d UniScene_Storage/data/nuscenes/maps/
C. 部署 12Hz 插值数据 (最易出错步骤)
先解压 tar 包(通常会解压出一个临时 data 文件夹)
tar -xf interp_12Hz.tar
c1. 移动 pkl 索引文件 (核心)
mv data/nuscenes_mmdet3d-12Hz/*.pkl UniScene_Storage/data/nuscenes_mmdet3d-12Hz/
c2. 移动 json 元数据文件夹 (防止代码依赖报错)
mv data/nuscenes/interp_12Hz_trainval UniScene_Storage/data/nuscenes/
c3. 清理临时文件
rm -rf data
步骤 3:核心配置文件适配必须修改配置文件,否则代码会默认寻找全量数据而报错。
2.4 最终自检
在开始运行代码前,请运行以下命令检查目录结构是否达标:
echo ">>> 检查 pkl 文件:"
ls -lh /root/autodl-tmp/UniScene_Storage/data/nuscenes_mmdet3d-12Hz/
应包含: nuscenes_interp_12Hz_infos_val.pkl
echo ">>> 检查地图文件:"
ls -F /root/autodl-tmp/UniScene_Storage/data/nuscenes/maps/
应包含: expansion/ 和 singapore-hollandvillage.png 等图片
echo ">>> 检查数据集本体:"
ls -F /root/autodl-tmp/UniScene_Storage/data/nuscenes/
应包含: v1.0-mini/, samples/, sweeps/, interp_12Hz_trainval/
如果上述检查全部通过,恭喜你,最艰难的数据部署环节已经完美解决!
2.4 模型权重下载 (通用步骤)
无论选择何种数据集方案,模型权重都是通用的。为解决官方 CLI 工具可能出现的 401 鉴权超时问题,采用 `wget` 结合镜像站直链下载。
```bash
进入权重存储目录
cd /root/autodl-tmp/UniScene_Storage/ckpt
1. 下载 Occupancy 模块权重
cd Occupancy
wget -c https://hf-mirror.com/Arlolo0/UniScene/resolve/main/Occupancy_Generation_ckpt_AE_eval_epoch_196.pth
wget -c https://hf-mirror.com/Arlolo0/UniScene/resolve/main/Occupancy_Generation_ckpt_DiT_0600000.pt
cd ..
2. 下载 LiDAR 模块权重
cd LiDAR
wget -c https://hf-mirror.com/Arlolo0/UniScene/resolve/main/occ2lidar.pth
cd ..
3. 下载 Video 模块权重 (大文件,务必确保下载完整)
cd Video
wget -c https://hf-mirror.com/Arlolo0/UniScene/resolve/main/video_pretrained.safetensors
cd ..
3. Python 核心环境构建
我们放弃官方推荐的 Poetry 安装方式,因为 Poetry 会强制将 GPU 版 PyTorch 降级为 CPU 版,且依赖解析速度极慢。我们将采用 Conda + Pip 手动管理的方式。
3.1 创建环境与安装 PyTorch
为了解决 Intel MKL 库符号缺失(undefined symbol: iJIT_NotifyEvent)的问题,必须使用 Pip 安装包含静态链接库的 PyTorch 版本,而非 Conda 版本。
克隆代码库
git clone git@github.com:Arlo0o/UniScene-Unified-Occupancy-centric-Driving-Scene-Generation.git --recursive
cd UniScene-Unified-Occupancy-centric-Driving-Scene-Generation
接下来的所有操作请确保都在这个根目录下进行!
创建并激活环境
conda create -n uniscene python=3.9 -y
conda activate uniscene
安装 PyTorch 2.5.1 (CUDA 12.1)
--no-cache-dir 用于节省系统盘空间
pip install torch==2.5.1 torchvision==0.20.1 --index-url https://download.pytorch.org/whl/cu121 --no-cache-dir
验证 PyTorch 安装
python -c "import torch; print(fTorch: {torch.__version__} | CUDA: {torch.cuda.is_available()})"
预期输出必须包含:2.5.1+cu121 和 True
系统依赖检查
sudo apt-get update && sudo apt-get install -y xvfb libxcb-cursor0 libxcb-xinerama0
3.2 依赖安装(依赖隔离策略)
为了防止某些库(如xformers或pandas)因版本依赖关系自动卸载我们已安装的 PyTorch,我们需要分步安装,并锁定关键库版本。
步骤 A:创建基础依赖清单
在项目根目录下创建requirements.txt:
cat > requirements.txt <=1.9.1
scikit-image
tqdm>=4.65.0
pyyaml==6.0.1
einops>=0.6.1
omegaconf>=2.3.0
configobj==5.0.8
natsort==8.4.0
fsspec>=2023.6.0
fire
threadpoolctl
retrying
smmap
tensorboardx==2.6
transformers==4.19.1
tokenizers==0.12.1
diffusers==0.27.2
accelerate==0.20.3
timm==0.9.2
deepspeed==0.10.1
pytorch-lightning==2.0.1
kornia==0.6.9
jaxtyping>=0.2.36
matplotlib==3.7.5
plotly==6.0.0
streamlit>=0.73.1
pyopengl==3.1.0
pyvirtualdisplay==3.0
xvfbwrapper>=0.2.9
vtk==9.0.2
PyQt5==5.15.10
mayavi==4.7.3
openmim
openxlab
awscli
array-record
astunparse
EOF
步骤 B:执行批量安装
1. 安装基础依赖
pip install -r requirements.txt
2. 安装 OpenMMLab 组件
使用 mim 安装可自动匹配 CUDA 版本,避免手动编译失败
mim install mmcv==2.1.0
mim install mmengine==0.8.4
mim install mmdet==3.3.0
mim install mmdet3d==1.4.0
3. 安装版本敏感库
使用 --no-deps 参数强制安装,忽略对 PyTorch 版本的检查,防止环境被破坏
pip install xformers==0.0.22 --no-deps
pip install open-clip-torch==2.20.0 --no-deps
pip install git+https://github.com/openai/CLIP.git --no-deps
4. 安装 SpConv (LiDAR 核心库)
pip install spconv-cu120
4. 编译 CUDA 扩展
这是最容易出错的环节。我们需要显式指定环境变量,确保setup.py脚本能够找到正确的编译器和 CUDA 路径,并强制开启 GPU 编译模式。
1. 设置编译环境变量
export CUDA_HOME=/usr/local/cuda-12.1
export PATH=PATH
export LD_LIBRARY_PATH=LD_LIBRARY_PATH
2. 编译 LiDAR Gen
cd lidar_gen
rm -rf build/ dist/ *.egg-info/ 清理可能存在的缓存
--no-build-isolation 至关重要,防止 pip 创建无法访问 PyTorch 的隔离环境
pip install -e . -v --no-build-isolation
cd ..
3. 编译 Video Gen (Gaussian Splatting 渲染器)
cd video_gen/gs_render/diff-gaussian-rasterization
pip install ./ -v --no-build-isolation
cd ../../../
4. 编译 ChamferDist (评估指标计算)
cd third_party/chamferdist
pip install .
cd ../../
5. 环境终极验证
完成上述所有步骤后,请运行以下 Python 脚本进行最终的集成测试。只有当所有模块均成功加载时,环境才算配置完成。
python -c "
import sys
print(正在进行环境自检...)
1. 检查 PyTorch 与 CUDA
import torch
print(f PyTorch: {torch.__version__})
if not torch.cuda.is_available():
print( CUDA 不可用!)
sys.exit(1)
print(f CUDA: Available (Device: {torch.cuda.get_device_name(0)}))
2. 检查 MMCV
try:
import mmcv
from mmcv.ops import voxel_layer
print(f MMCV: {mmcv.__version__} (CUDA Ops Loaded))
except ImportError as e:
print(f MMCV 加载失败: {e})
3. 检查 LiDAR Gen (pcdet)
try:
import pcdet
print(f LiDAR Gen (pcdet): Loaded successfully at {pcdet.__file__})
except ImportError as e:
print(f LiDAR Gen 加载失败: {e})
4. 检查 Video Gen (Gaussian Splatting)
try:
from diff_gaussian_rasterization import _C
print(f Video Gen (GS Rasterizer): C++ Backend Loaded)
except ImportError as e:
print(f Video Gen 加载失败: {e})
5. 检查 SpConv
try:
import spconv
print(f SpConv: Loaded successfully)
except ImportError as e:
print(f SpConv 加载失败: {e})
print(
环境配置全部完成!可以开始运行 Demo。)
"
市民云服务器
发表评论
最近发表
标签列表