【云服务器GPU】Blender高性能渲染 GPUGEEK RTX4090 A5000显卡

一、云端环境创建与检查

1.直接使用别人的镜像不测试会有大问题

先对环境进行测试

# 检查dpkg状态
sudo apt update

仔细观察 apt update 命令的输出。不应该再看到之前那样大量的 dpkg: warning: files list file for package '…' missing; 警告。 如果偶尔有一两条可能还好,但如果还是很多,那说明这个官方镜像可能也有问题。

安装一个小工具测试

sudo apt install nano

或者任何你熟悉的小命令行工具。观察安装过程是否顺利,是否有 dpkg 相关的错误或警告。

检查 NVIDIA 驱动和 CUDA

nvidia-smi

这个命令应该能正确显示你的 RTX A5000 GPU 信息以及驱动版本和 CUDA 版本。确保显示的 CUDA 版本与镜像名称中的 (例如 12.1) 大致匹配或兼容。

2.安装blend程序与环境

  • 确认云实例支持 GPU(运行 nvidia-smi 检查 NVIDIA 驱动和 CUDA 版本)。
  • 若需特定版本(如 4.3.2),手动安装:(注意版本一定要对齐4.3.4,不然会报警告
# 0. (可选) 如果已经通过 apt 安装过 Blender,先移除
# sudo apt remove blender

# 1. 下载 Blender 安装包 (假设你当前在用户主目录 ~)
# 如果之前已经通过 FinalShell 上传了,可以跳过此步
# 确保在用户主目录或一个你知道的临时目录
cd ~ 
# 如果没有上传,可以使用 wget 下载:
wget https://download.blender.org/release/Blender4.3/blender-4.3.2-linux-x64.tar.xz

# 2. 创建 Blender 的安装目录
sudo mkdir -p /opt/blender

# 3. 解压 Blender 到指定目录
# 注意:这里假设 blender-4.3.2-linux-x64.tar.xz 在你当前目录下 (例如 ~)
sudo tar -xvf blender-4.3.2-linux-x64.tar.xz -C /opt/blender/
# 解压后,Blender 的程序文件会在 /opt/blender/blender-4.3.2-linux-x64/ 目录下

# 4. 创建软链接,方便直接运行 Blender 命令
sudo ln -s /opt/blender/blender-4.3.2-linux-x64/blender /usr/local/bin/blender
# 安装必要的库
## 安装第一批基础依赖 (这些是常见的图形和界面库) 
sudo apt-get update
sudo apt install -y libgl1 libxi6 libxrender1 libfontconfig1 libxfixes3 libxcursor1 libxinerama1 libxrandr2 
## 安装之前发现 Blender 缺少的特定库 
sudo apt install -y libxxf86vm1 
sudo apt install libxkbcommon0
# 5. 验证安装
blender --version

正确安装应该显示:
image.png|1200

3. 安装 FFmpeg(用于合成视频)

# 更新源是必要的
sudo apt-get update
sudo apt install ffmpeg

二、blender文件配置与上传

1.在 Blender 中执行 Pack All into .blend

把贴图,材质,纹理都打包在blend文件中,上传文件只上传这个blend文件

操作流程

  • 打开您的 .blend 文件。
  • 点击顶部菜单 File。
  • 选择 External Data。
  • 点击 Pack All into .blend。
  • 保存文件(File > Save 或 Save As)。
    image.png|800

2.上传文件

  • 确认本地的blender版本和安装的版本一致。
  • 上传至/gz-fs文件夹,上传方法:[[gz-cli GPUGEEK命令行工具]]
  • 上传和下载的数据,共享的都存在在gz-fs
    image.png|800|800

3. 配置输出目录

  • 创建输出目录:
mkdir -p /gz-fs/output

三、开始渲染

  • nohup … &: 这会将整个渲染命令放到后台运行,即使您关闭SSH连接,渲染也不会中断。渲染的日志输出会默认保存到当前目录下的 nohup.out 文件中
  • 输出为帧序列:每帧一张图片(如 frame_0001.pngframe_0002.png),不是视频。

1. 定制渲染命令

需要考虑以下内容:(帧率和渲染指令关系不大,最后帧率是合成ffmpeg决定的)

- Blender 文件路径: /gz-fs/fangjian.blend
- 输出路径: /gz-fs/output/
- 分辨率: 1920x1080
- 采样数: 256
- 帧范围: 1-100
- 帧率: 30 
- 输出格式: PNG
- 降噪: CUDA
- 自适应采样: 否
- 光线反弹次数: 6
- 瓦片大小: 2048
- 渲染设备: CUDA
- 帧步长: 1
- 最大渲染时间: 0
- blender版本 4.3.2
- 显卡RTXA5000

1.基础渲染指令

需要修改的参数:
1.第几帧到第几帧2.输入输出地址 3.采样数 4.瓦片数

blender -b /gz-fs/fangjian.blend -o /gz-fs/output/ -x 1 -F PNG -s 1 -e 100 -a -- --cycles-device CUDA --cycles-max-samples 128 --cycles-bounces 6 --cycles-tile-size 2048 --cycles-adaptive-sampling 0 -t 0

没有明确指定分辨率,Blender 默认通常是 1920x1080
[[nohup关闭ssh保持运行,链接继续输出]]
2. 断开ssh的后台运行方式

nohup blender -b /gz-fs/fangjian.blend -o /gz-fs/output/ -x 1 -F PNG -s 1 -e 100 -a -- --cycles-device CUDA --cycles-max-samples 128 --cycles-bounces 6 --cycles-tile-size 2048 --cycles-adaptive-sampling 0 -t 0 > render.log 2>&1 &

2. 给显卡上压力

1.加强渲染指令

大幅增加采样数 (--cycles-max-samples):128->1024
略微增加光线反弹次数 (--cycles-bounces):6->10
分辨率提高:1080p->2K (2560x1440),-xres 2560 -yres 1440更改为 --render-resolution-x 2560 --render-resolution-y 1440lender 命令行中设置渲染分辨率的正确参数是 --render-resolution-x 和 --render-resolution-y(长格式),或者简单的 -x 和 -y(短格式,但如上所述,-x 容易与覆盖参数冲突)

unknown argument, loading as file: --render-overwrite 错误表明 Blender 仍然将 --render-overwrite 视为一个文件路径,而不是一个命令行参数。这通常是由于参数的顺序或位置不符合 Blender 命令行解析器的预期。Blender 的命令行参数顺序有时比较严格。像 --render-overwrite--render-resolution-x 这样的渲染选项,通常应该放在 -b(背景渲染)和 .blend 文件路径之后,但在 -o(输出路径)或 -a(渲染动画)之前,或者在所有核心渲染选项之后,但在引擎特定选项之前。

相比上面指令
我将 -x 1更改为 --render-overwrite Blender 的命令行参数中,-x 这个短参数既可以表示"覆盖现有文件"(当后面跟数字时),也可以表示"渲染宽度"(当后面跟分辨率数值时)

分辨率在参数里设置不了,只能windows先改,Blender 的 .blend 文件包含了项目的所有信息,包括渲染设置。当您在 Windows 本地使用 Blender 打开 .blend 文件并修改分辨率,然后保存文件后,这些新的分辨率设置就永久地存储在了 .blend 文件内部

加强的指令:(分辨率自己去blender设置2560* 1440)

blender -b /gz-fs/fangjian.blend -o /gz-fs/output/ -x 1 -F PNG -s 1 -e 100 -a -- --cycles-device CUDA --cycles-max-samples 1024 --cycles-bounces 10 --cycles-tile-size 2048 --cycles-adaptive-sampling 0 -t 0
2.NVIDIA RTX A5000 显卡确定支持 OptiX——但是驱动可能不兼容

命令行里可以尝试将 --cycles-device CUDA 更改为 --cycles-device OPTIX
经过测试:RTX A5000 硬件上支持 OptiX,但软件层面(Blender、驱动、OptiX SDK 之间的兼容性)可能存在一些障碍。

3.怎么看是否用上了optix

检查 Blender 控制台输出 (最直接) 这是最直接的确认方式。当您使用命令行运行 Blender 渲染时,它会在控制台打印出正在使用的渲染设备信息。
预期输出:您应该会看到类似以下的信息:

Fra:XXX Mem:XXXX.XXM (Peak XXXX.XXM) | Time:00:00.XX | Mem:XXXX.XXM, Peak:XXXX.XXM | Scene, ViewLayer | Initializing
Fra:XXX Mem:XXXX.XXM (Peak XXXX.XXM) | Time:00:00.XX | Mem:XXXX.XXM, Peak:XXXX.XXM | Scene, ViewLayer | Waiting for render to start
Info: OptiX device 'NVIDIA RTX A5000' selected.

或者在初始化阶段,可能会直接显示:

Info: Using OptiX device 'NVIDIA RTX A5000'.

只要看到明确提到 "OptiX device" 和您的 "NVIDIA RTX A5000" 的信息,就表明 Blender 已经成功识别并选择了 OptiX 作为渲染后端3。

3.命令参数意义说明

参数/符号 意义
blender 调用 Blender 程序
-b 后台模式运行,无界面
/gz-fs/fangjian.blend 指定渲染的 .blend 文件路径
-o /gz-fs/output/ 设置输出路径
-x 1 启用文件覆盖,允许覆盖已有输出文件
-F PNG 设置输出格式为 PNG
-s 1 设置起始帧为 1
-e 100 设置结束帧为 100
-a 渲染整个动画
-- 分隔符,后面为 Cycles 渲染引擎参数
--cycles-device CUDA 指定使用 CUDA 设备渲染
--cycles-max-samples 128 设置最大采样数为 128
--cycles-bounces 6 设置光线最大反弹次数为 6
--cycles-tile-size 2048 设置渲染瓦片大小为 2048
--cycles-adaptive-sampling 0 禁用自适应采样
-t 0 设置线程数为 0(使用所有可用线程)
  • 若需自定义命名,可添加 -o //gz-fs/output/custom_name_##(## 表示帧序号)。

-r 30设置帧率,--cycles-denoising CUDA启用CUDA降噪。若.blend文件中帧率或降噪设置不兼容(如已禁用降噪),可能导致冲突或路径解析错误。检查文件设置。 冲突也可能是因为文件配置不兼容 帧率-r 30被误解析为文件路径/root/-r,因Blender命令行对-r处理异常。移除-r 30,改为在.blend文件内设置帧率,避免冲突。
指令中 #### 是可选的占位符,用于自定义输出文件名。如果不指定,Blender 默认使用 .blend 文件名加帧编号。两种方式都可以,取决于是否需要自定义输出文件名。

4.其他可选参数

参数/符号 意义
-f 指定输出格式(如 -f IMAGE
-t <threads> 设置线程数(替代 -t 0
-j <jobs> 并行渲染任务数
--cycles-samples <n> 覆盖总采样数(替代 --cycles-max-samples
--cycles-denoising <type> 指定降噪类型(如 CUDA、OptiX)
--cycles-use-cpu 启用 CPU 渲染(替代 CUDA)
-E <engine> 切换渲染引擎(如 CYCLES、BLENDER_EEVEE)
-y 强制覆盖现有文件
--debug 启用调试模式
-o <path/prefix_##> 修改输出文件名(如 -o /gz-fs/output/custom_#### 表示帧序号)
  • -o <path/prefix_##> 参数可用于自定义输出文件名,例如 -o /gz-fs/output/custom_## 会生成 custom_0001.png 等。
  • 您的指令未修改,仍使用默认命名规则(0001.png 等)。

2.过程中验证GPU使用

  • 渲染时再开一个窗口运行 nvidia-smi,确认 Blender 占用 GPU 显存。确认GPU确实使用
  • 动态监控:watch -n 1 nvidia-smi
  • [[watch -n 1 nvidia-smi 命令]]
  • 或者使用nvtop进行监控(需要先安装)
  • [[nvtop安装查看GPU内存使用]]

3. 合成视频

1.ffmpeg合成指令

  • 使用 FFmpeg 将帧序列合成视频,需要修改参数:1.起始帧2.帧率3.总帧数4.输出位置5.画质
  • blend渲染后,默认文件名格式为 0001.png,所以这里就不做更改了
ffmpeg -framerate 30 -start_number 100 -i /gz-fs/output/%04d.png -vframes 30 -c:v libx264 -crf 18 -pix_fmt yuv420p /gz-fs/output/output.mp4
  • 说明-i /gz-fs/output/%04d.png 按顺序读取帧图片,-c:v libx264 编码为 MP4 视频。

2.参数意义

以下是补充完整后的参数表格,包含 -crfb:v-preset 的意义:

3.指令中的参数说明

参数/符号 意义
ffmpeg 调用 FFmpeg 程序
-framerate 30 设置帧率为 30 帧每秒
-start_number 100 指定起始帧序号为 100
-i /gz-fs/output/%04d.png 输入文件路径,使用 %04d 匹配 0100 格式帧文件
-vframes 30 限制总帧数为 30
-c:v libx264 指定视频编解码器为 H.264 (libx264)
-crf <value> 设置恒定质量因子,0-51(0 无损,18 高画质,23 默认,28 较低画质,51 最差)
-pix_fmt yuv420p 设置像素格式为 YUV420P
/gz-fs/output.mp4 输出文件路径,生成 MP4 视频

4.其他参数

-b:v <bitrate> 设置视频比特率(如 5M 表示 5Mbps)
-preset <value> 编码速度与质量平衡(ultrafastveryslowveryslow 质量最高但最慢)
  • 如果未指定 -preset 参数,FFmpeg 默认使用 medium 作为预设值,平衡编码速度和质量。

5.说明

  • -crf 18-crf 28 是示例值,当前指令使用默认值 23。
  • -b:v 5M-preset veryslow 是可选参数,未在当前指令中启用,但可根据需求添加。

4.合成结束,下载预览

下载视频到本地预览即可

四、心跳程序,防止断开链接

[[保持云服务器不掉线脚本]]

4.1新开终端:在云服务器上打开一个新的 SSH 会话或终端窗口

运行脚本:

while true; do sleep 60; echo "Keep alive"; done

后台运行(上下二选一):若需释放终端,可添加 & 或使用 nohup:适合需要长期会话管理的场景

nohup while true; do sleep 60; echo "Keep alive"; done &

4.2还有一种可能,finalshell断开链接(好像开了智能加速会断,之前都不断)

image.png|1000

开了心跳脚本的窗口保持活跃 没有断开 但是另一正在渲染的 断开了。
Finalshell 免费版可能对会话管理有限制,渲染任务无输出易超时,而心跳脚本每 60 秒输出保持活跃。
确实,更换了powershell智能加速就不会断开链接了


五、注意

错误1:不要关闭finalshell 不然看不见输出了

错误2:考虑装的镜像的显卡驱动和显卡是否不匹配,镜像是CUDA12.6 但3090显卡好像不是一个架构

注意3:哪些量是能加载在blend文件中,可以不用定义的?

参数名称 描述
帧率 (Frame Rate) 控制动画播放速度,在"输出属性"中设置
分辨率 (Resolution) 设置渲染图像的宽度和高度,在"输出属性"中调整
采样数 (Samples) 影响渲染质量和速度,在"渲染属性"中配置
动画时长 (Length) 通过起始帧和结束帧定义,在"时间线"或"输出属性"中
光线反弹次数 (Bounces) 控制光线反弹次数,在"渲染属性"的"光路"中调整
瓦片大小 (Tile Size) 优化渲染性能,在"渲染属性"的性能设置中
降噪设置 (Denoising) 启用或禁用降噪功能,在"渲染属性"中配置
自适应采样 (Adaptive Sampling) 自动调整采样,在"渲染属性"中设置
运动模糊 (Motion Blur) 模拟运动模糊效果,在"渲染属性"中开启
环境光遮蔽 (Ambient Occlusion) 增强阴影和深度,在"渲染属性"或"世界属性"中
透明度反弹 (Transparent Bounces) 控制透明物体反弹次数,在"光路"设置中

注意4:帧率-r 30被误解析为文件路径/root/-r

避免在指令中用-r 直接在blend文档里设置帧率

注意5:显卡没显示用量,但确实又好像用了显卡

image.png|1000

image.png|1000

上面现象是 CPU 和 GPU 协同工作 的结果。CPU 正在努力地准备和管理渲染任务,而 GPU 则在幕后默默地进行着大量的光线追踪计算。虽然监控工具的"利用率"数字可能具有误导性,但 功耗、温度和核心/显存频率的显著升高 明确无误地表明您的 NVIDIA RTX A5000 GPU 正在被有效利用进行 Blender Cycles 渲染。
image.png|1000

这些输出表示确实,用了GPU

Copying Transformations to device
Copying Attributes to device
Copying BVH to device
Copying Mesh to device
Updating Device | Writing constant memory 在 Blender Cycles 渲染的上下文中,“device”指的就是您选择的渲染设备,也就是您的 NVIDIA RTX A5000 GPU。这些日志条目表明 Blender 正在将渲染所需的几何体数据、材质属性、光线追踪加速结构(BVH)等从系统内存传输到 GPU 的显存中,以便 GPU 进行计算13。
Mem:X.XXM, Peak:Y.YYM 字段:
在每行日志中,| Time:00:00.XX | Mem:1310.91M, Peak:1310.91M 这一部分,第二个 Mem: 字段和 Peak: 字段很可能报告的是 GPU 显存的使用情况。它显示在渲染过程中,GPU 显存被分配并使用了大约 1.3GB (1310.91M),并且峰值也达到了这个数值。这与您之前 nvidia-smi 中看到的 0MiB 形成对比,说明 Blender 内部能够正确报告其对 GPU 显存的实际占用。

总结:虽然nvtop,和nvidia-smi没显示出,但不代表没有用上GPU

posted @ 2025-06-13 16:58  Comets9224  阅读(141)  评论(0)    收藏  举报