速度云服务器如何系统地学习配置环境?

云桌面服务器参数 我是一名软件工程的学生。从刚接触这个专业起到现在,我就一直没有弄明白如何配置环境(我也不知道配置环境这四个字用的是否恰当,大概就是安装各种东西的···

云桌面服务器参数

我是一名软件工程的学生。从刚接触这个专业起到现在,我就一直没有弄明白如何配置环境(我也不知道配置环境这四个字用的是否恰当,大概就是安装各种东西的意思,比如别人写的库、各种开源的东西以及操作系统等等),只能跟着教程一步一步走,运气好和教程描述的情况一样,就能配置成功,运气不好又要找下一个教程。两三年来,不费什么力就能配置成功的时候少之又少,有的环境甚至要配置好几天,最后还得找别人帮忙。就算配置成功了,也是试出来的,也不知道为什么成功。我自学能力还成,读源码什么的都可以,数学啊算法啊学起来也都懂。但是配置环境的时候,我就感觉自己面对的是一个巨大的黑箱,常常有一种恐惧感。我可以说是基本上不懂这方面的任何知识。我该如何改变这一现状?是否有必要系统地学习如何配置环境?如果有,应该如何学习?

前言

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。) "

市民云服务器

您好:云优数据云计算 www.yunyoushuju.cn 2核2G6M最低19.9元/月 欢迎开机

发表评论

评论列表
未查询到任何数据!