在 NVIDIA DGX Spark部署 Stable Diffusion 3.5 并使用ComfyUI

在 NVIDIA DGX Spark部署 Stable Diffusion 3.5 并使用ComfyUI

📖 前言

随着 NVIDIA Blackwell 架构的问世,DGX Spark (Personal AI Supercomputer) 将桌面级 AI 算力推向了新的巅峰。这台怪兽级设备搭载了 GB200/GB10 级别的 GPU 和 NVIDIA Grace CPU (ARM64),并运行在最新的 CUDA 13 环境下。

然而,“最强硬件"往往伴随着"最难环境”。由于 Grace CPU 采用 ARM (aarch64) 架构,且 CUDA 13 过于前沿,传统的 PyTorch 安装方法极易失败。

本文将手把手教你如何在这台超级计算机上部署 Stable Diffusion 3.5 Large,并利用其 128GB 海量显存 开启高性能模式,实现秒级、零延迟的创作体验。


🛠️ 硬件环境规格 (DGX Spark Specs)

本次部署基于 NVIDIA 最新一代个人 AI 超级计算机:

  • Platform: NVIDIA DGX Spark (Personal AI Supercomputer)
  • Architecture: NVIDIA Blackwell (GB10 / GB200 Tensor Core GPU)
  • VRAM: 128GB HBM3e (Unified Memory Architecture)
  • CPU: NVIDIA Grace CPU (144-core ARM64)
  • Software Stack: NVIDIA AI Enterprise
  • CUDA Version: CUDA 13.0
💡 核心挑战与优势挑战:标准 PyPI 源的 PyTorch 通常只适配 CUDA 11/12,直接安装会导致找不到 GPU。优势:128GB 显存允许我们将 SD3.5 的 20GB 模型 + 10GB T5 编码器永久驻留显存,消除模型加载时间。

📦 第一步:构建兼容 CUDA 13 的基础环境

1.1 创建 Conda 环境

推荐使用 Python 3.11,它在 ARM 架构下的库支持最完善。

conda create -n sd-runtime python=3.11-y conda activate sd-runtime 

1.2 安装适配 ARM + CUDA 13 的 PyTorch

这是最关键的一步。由于 CUDA 13 非常新,必须使用 NVIDIA 官方 PyPI 索引 来获取正确的 wheel 包。

# 1. 确保 pip 是最新的 pip install--upgrade pip # 2. 从 NVIDIA 官方源安装 PyTorch# 注意:NVIDIA 的 index 通常会包含对最新 CUDA 版本的兼容包 pip install torch torchvision torchaudio --index-url https://pypi.nvidia.com 

1.3 验证环境 (关键)

安装完成后,务必验证 PyTorch 是否成功链接到了 Blackwell GPU。

python -c"import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}'); print(f'Device Name: {torch.cuda.get_device_name(0)}'); print(f'CUDA Version: {torch.version.cuda}')"
  • 预期输出
  • CUDA Available: True
  • Device Name: NVIDIA GB10 (或相关 Blackwell 代号)
  • CUDA Version: 13.x

📥 第二步:下载 Stable Diffusion 3.5 Large

SD3.5 是门控模型,请确保您已在 Hugging Face 签署协议并持有 Access Token。

# 1. 安装下载工具 pip install huggingface_hub # 2. 配置环境变量 (使用国内镜像加速)exportHF_ENDPOINT=https://hf-mirror.com exportHF_HUB_ENABLE_HF_TRANSFER=1exportHF_TOKEN="你的_HF_Token_粘贴在这里"# 3. 创建目录mkdir-p /home/david/workspaces/models/stabilityai/ # 4. 高速下载 (包含 Checkpoint 和 T5/CLIP 编码器) huggingface-cli download stabilityai/stable-diffusion-3.5-large \--token$HF_TOKEN\ --local-dir /home/david/workspaces/models/stabilityai/stable-diffusion-3.5-large 

🖥️ 第三步:部署 ComfyUI & 修复 ARM 依赖

3.1 克隆与安装

cd /home/david/workspaces git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 安装常规依赖 (使用 --no-deps 防止破坏 Torch 环境) pip install-r requirements.txt --no-deps # 🔥 核心修复:补齐 ARM 架构下缺失的特殊库# 如果缺少这些,ComfyUI 启动时会报错 "No module named kornia_rs" 或 "trampoline" pip install trampoline kornia_rs mako comfyui-workflow-templates sqlalchemy alembic requests 

3.2 挂载模型 (软链接方案)

为了利用 DGX Spark 的存储性能,我们使用软链接映射模型。

# 1. 链接主模型ln-s /home/david/workspaces/models/stabilityai/stable-diffusion-3.5-large/sd3.5_large.safetensors \ ./models/checkpoints/ # 2. 链接 CLIP 模型 (SD3 需要 3 个 CLIP)# 注意:我们直接使用 FP16 精度的 T5,因为显存足够大ln-s /home/david/workspaces/models/stabilityai/stable-diffusion-3.5-large/text_encoders/clip_l.safetensors ./models/clip/ ln-s /home/david/workspaces/models/stabilityai/stable-diffusion-3.5-large/text_encoders/clip_g.safetensors ./models/clip/ ln-s /home/david/workspaces/models/stabilityai/stable-diffusion-3.5-large/text_encoders/t5xxl_fp16.safetensors ./models/clip/ 

🚀 第四步:高性能启动 (High VRAM Mode)

针对 128GB 显存,我们开启"疯狗模式"——让所有模型永久驻留显存,拒绝反复加载。

创建启动脚本 run_comfy.sh

#!/bin/bashWORKDIR="/home/david/workspaces/ComfyUI"PYTHON_PATH="/root/miniconda3/envs/sd-runtime/bin/python"# 日志管理LOG_DIR="$WORKDIR/logs"mkdir-p"$LOG_DIR"LOG_FILE="$LOG_DIR/server_$(date"+%Y-%m-%d_%H-%M-%S").log"cd"$WORKDIR"||exitecho"🚀 Starting ComfyUI on DGX Spark (Blackwell)..."echo"⚡ Mode: High VRAM (Force Resident)"# --highvram: 强制模型常驻显存nohup"$PYTHON_PATH" main.py \--listen0.0.0.0 \--port8188\--highvram\>"$LOG_FILE"2>&1&echo"✅ Service PID: $!"

启动服务:chmod +x run_comfy.sh && ./run_comfy.sh


🎨 第五步:导入 SD3.5 标准工作流 (JSON)

SD3.5 采用了分离式文本编码器架构(CLIP-L + CLIP-G + T5),默认工作流无法正常出图。

请复制下方完整的 JSON 代码,保存为 sd3_workflow.json,直接拖入 ComfyUI 浏览器界面即可使用。此工作流已针对 1024x1024 分辨率和 DGX Spark 进行了优化。

{"last_node_id":10,"last_link_id":16,"nodes":[{"id":1,"type":"KSampler","pos":[960,190],"size":{"0":315,"1":262},"flags":{},"order":0,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":2},{"name":"negative","type":"CONDITIONING","link":3},{"name":"latent_image","type":"LATENT","link":4}],"outputs":[{"name":"LATENT","type":"LATENT","links":[5],"slot_index":0}],"properties":{"Node name for S&R":"KSampler"},"widgets_values":[1234567890,"randomize",30,4.5,"euler","sgm_uniform",1]},{"id":2,"type":"CheckpointLoaderSimple","pos":[50,50],"size":{"0":315,"1":98},"flags":{},"order":1,"mode":0,"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[],"slot_index":1},{"name":"VAE","type":"VAE","links":[6],"slot_index":2}],"properties":{"Node name for S&R":"CheckpointLoaderSimple"},"widgets_values":["sd3.5_large.safetensors"]},{"id":3,"type":"TripleCLIPLoader","pos":[50,200],"size":{"0":315,"1":150},"flags":{},"order":2,"mode":0,"outputs":[{"name":"CLIP","type":"CLIP","links":[7,8],"slot_index":0}],"properties":{"Node name for S&R":"TripleCLIPLoader"},"widgets_values":["clip_l.safetensors","clip_g.safetensors","t5xxl_fp16.safetensors"]},{"id":4,"type":"CLIPTextEncode","pos":[450,100],"size":{"0":425,"1":180},"flags":{},"order":3,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":7}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["a highly detailed cyberpunk city, neon lights, 8k resolution, cinematic lighting, masterpiece, sharp focus, ray tracing, nvidia blackwell style"],"color":"#233","bgcolor":"#353"},{"id":5,"type":"CLIPTextEncode","pos":[450,350],"size":{"0":425,"1":180},"flags":{},"order":4,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":8}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[3],"slot_index":0}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["low quality, blurry, ugly, bad anatomy, watermark, text, jpeg artifacts"],"color":"#332","bgcolor":"#533"},{"id":6,"type":"EmptyLatentImage","pos":[50,450],"size":{"0":315,"1":106},"flags":{},"order":5,"mode":0,"outputs":[{"name":"LATENT","type":"LATENT","links":[4],"slot_index":0}],"properties":{"Node name for S&R":"EmptyLatentImage"},"widgets_values":[1024,1024,1]},{"id":7,"type":"VAEDecode","pos":[1300,190],"size":{"0":210,"1":46},"flags":{},"order":6,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":5},{"name":"vae","type":"VAE","link":6}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"properties":{"Node name for S&R":"VAEDecode"}},{"id":8,"type":"SaveImage","pos":[1550,190],"size":{"0":500,"1":600},"flags":{},"order":7,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":9}],"properties":{"Node name for S&R":"SaveImage"},"widgets_values":["ComfyUI"]}],"links":[[1,2,0,1,0,"MODEL"],[2,4,0,1,1,"CONDITIONING"],[3,5,0,1,2,"CONDITIONING"],[4,6,0,1,3,"LATENT"],[5,1,0,7,0,"LATENT"],[6,2,2,7,1,"VAE"],[7,3,0,4,0,"CLIP"],[8,3,0,5,0,"CLIP"],[9,7,0,8,0,"IMAGE"]],"groups":[],"config":{},"extra":{},"version":0.4}

流程如下:

在这里插入图片描述

效果如下:

在这里插入图片描述

💡 工作流配置说明:

  1. TripleCLIPLoader: 这是核心。我们明确指定了 clip_l, clip_gt5xxl_fp16。如果这三个没选对,生成的图片将无法理解你的 Prompt。
  2. Scheduler: sgm_uniform: Stable Diffusion 3 必须使用 SGM Uniform 调度器,否则画面会充满噪点。
  3. Resolution: 默认设为 1024x1024。在 Blackwell 上,你可以尝试将其改为 2048x2048 进行原生 4K 生成。

📊 性能总结

DGX Spark 上完成上述部署后,性能表现如下:

  • 模型加载: 首次启动后,模型将永久驻留显存 (High VRAM Mode)。
  • 生成速度: 1024x1024 分辨率下,实现秒级出图。
  • 并发能力: 得益于 128GB 显存,你可以同时开启 Batch Size = 4 甚至更高,或者在后台同时运行一个 70B 的大语言模型而不发生 OOM。

资源占用:

在这里插入图片描述

Read more

基于FPGA的北斗导航自适应抗干扰算法的设计与实现(任务书+开题报告+文献综述+代码+仿真+实物+毕业论文)

基于FPGA的北斗导航自适应抗干扰算法的设计与实现(任务书+开题报告+文献综述+代码+仿真+实物+毕业论文)

摘   要 如今,随着卫星导航技术的飞速发展,位置信息服务已经融入到我们的日常生活中,导航目前被称为继移动互联网后第三大产业。卫星导航在维护国家的安全中也发挥着不可替代的作用。为了使导航系统不受干扰的影响,本文以北斗导航系统为平台,研究基于阵列天线的自适应抗干扰算法。 首先,文章就自适应抗干扰算法的原理和方法进行了系统介绍,并在MATLAB中建立阵列模型,对基于功率倒置算法的空域抗干扰算法和空时联合抗干扰算法进行性能仿真。然后根据系统的指标,确定了在FPGA中实现抗干扰算法的方案,包括数字下变频、权值计算、数据加权、数字上变频等模块。根据权值计算模块实现方式的不同,本文提供了两种抗干扰算法在FPGA中实现的方案:一种是基于FPGA嵌入式软核NIOS II的抗干扰实现,将权值计算的过程放在NIOS II软核中,用C语言进行实现;另一种是基于逻辑语言的抗干扰算法的实现,即用硬件描述语言Verilog HDL进行权值的计算。权值计算涉及到浮点数运算和Hermite矩阵求逆,本文给出了各模块的设计方法和仿真结果,并与MATLAB仿真结果进行对比。最后给出了两种实现方案的实测结果,表明两种实

FPGA 工程师到底有哪些方向?每个岗位都在干什么?一篇给你讲清楚

FPGA 工程师到底有哪些方向?每个岗位都在干什么?一篇给你讲清楚

很多人说“学 FPGA 就是写 Verilog”,但真正进了行业才发现—— FPGA 工程师并不是一个岗位,而是一整个岗位族群。 不同公司、不同项目,对 FPGA 工程师的要求差异非常大。 如果方向选错,可能学了半年发现岗位根本不对口。 这篇文章就系统地给你拆一拆: 👉 FPGA 工程师到底有哪些岗位? 👉 每个岗位具体干什么? 👉 需要掌握哪些能力? 👉 适合什么样的人? 一、FPGA 工程师整体岗位划分(先给结论) 从企业招聘角度来看,FPGA 岗位大致可以分为 6 类: 岗位方向关键词偏向FPGA 逻辑设计工程师Verilog / 时序 / 接口核心开发FPGA 算法 / 加速工程师图像 / AI / DSP算法落地FPGA 底层驱动工程师DDR / PCIe / SerDes硬件接口FPGA 系统应用工程师Linux + FPGA系统集成FPGA 验证 / 测试仿真 / 验证质量保障FPGA 技术支持 / FA客户 / 项目支持应用型

OpenClaw-多飞书机器人与多Agent团队实战复盘

OpenClaw-多飞书机器人与多Agent团队实战复盘

OpenClaw 多飞书机器人与多 Agent 团队实战复盘 这篇文章完整记录一次从单机安装到多机器人协作落地的真实过程: 包括 Windows 安装报错、Gateway 连通、模型切换、Feishu 配对、多 Agent 路由、身份错位修复,以及最终形成“产品-开发-测试-评审-文档-运维”团队。 一、目标与结果 这次实践的目标很明确: 1. 在 Windows 上稳定跑通 OpenClaw 2. 接入飞书机器人 3. 做到一个机器人对应一个 Agent 角色 4. 支持多模型并行(OpenAI + Ollama) 5. 最终形成可执行的多 Agent 团队 最终落地状态(已验证): * 渠道:Feishu 多账号在线 * 路由:按 accountId

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

适用读者:机器人二次开发者、科研人员 开发环境:Ubuntu 20.04(推荐) 机器人型号:Unitree G1 EDU+ 前言 宇树 G1 是一款面向科研与商业应用的高性能人形机器人,支持丰富的二次开发接口。在正式进行算法调试与功能开发之前,首要任务是建立稳定的开发连接。本文将详细介绍两种主流连接方式:有线(网线直连) 与 无线(WiFi + SSH),并附上完整的配置流程,帮助开发者快速上手。 一、有线连接(推荐新手优先使用) 有线连接通过网线直接将开发电脑与 G1 机器人相连,具有延迟低、稳定性高、不依赖外部网络的优势,是新手入门和底层调试的首选方式。 1.1 前置条件 所需物品说明开发电脑推荐安装 Ubuntu 20.04,或在 Windows 上使用虚拟机宇树 G1 机器人确保已开机且处于正常状态网线(