在 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

我用Claude Code + GLM4.7修前端Bug的翻车现场,1小时烧光5小时限额

本来想体验一把“vibe coding 省时间”,结果变成“vibe coding 省不了、还很贵”:折腾将近一小时,GLM 额度直接打满,Bug 还在。 背景:事情是怎么开始的 最近遇到一个前端 Bug,属于那种看起来不大、但很烦的类型:页面运行时报错,提示动态导入某个模块失败(报错里能看到类似 Failed to fetch dynamically imported module .../router/index.ts 这种信息)。 我想着正好试试工具链:Claude Code + GLM4.7。理想情况是:它读代码、跑命令、给修改方案,我负责点确认就行。 现实是另一回事。 结果:时间花了,额度没了,Bug 还没修好 简单总结一下这次的“

实战演练:基于快马平台快速构建一个支持tokenp钱包登录的DApp前端

今天想和大家分享一个实战项目:如何快速构建一个支持TokenP钱包登录的DApp前端。这个项目特别适合想学习Web3开发的初学者,整个过程在InsCode(快马)平台上完成,省去了本地环境配置的麻烦。 1. 项目准备 首先需要明确几个核心功能:钱包连接、用户信息展示、链上数据查询和退出登录。选择Next.js框架是因为它既支持服务端渲染,又能很好地与各种Web3库集成。Wagmi和Viem这两个库是目前最流行的以太坊开发工具组合,能大大简化钱包交互流程。 2. 钱包连接实现 在首页添加"使用钱包登录"按钮后,通过Wagmi提供的useConnect钩子就能轻松实现钱包连接功能。这里需要注意处理用户拒绝连接的情况,以及不同钱包提供商的兼容性问题。TokenP钱包作为移动端主流钱包,通过WalletConnect协议可以很好地与网页应用交互。 3. 用户信息展示 连接成功后,使用Wagmi的useAccount钩子获取用户的钱包地址。为了提升用户体验,我做了地址缩写处理(显示前4位和后4位),并在页面顶部显示欢迎信息。这里还添加了一个复制地址的小功能,方便用户操作。 4. 链上数

前端——问卷系统评分题保存草稿报错的解决方案

问题背景 在开发问卷调查/满意度调查功能时,通常支持多种问题类型: * 单选题 * 多选题 * 评分题 当用户创建调查问卷,选择评分题类型后,点击保存草稿时出现报错。 问题复现 操作步骤: 1. 进入满意度调查功能 2. 点击"创建调查" 3. 添加一个问题,类型选择"评分" 4. 填写问题内容 5. 点击"保存草稿" 6. 结果:提示报错,保存失败 问题分析 通过代码分析,发现问题根源: 1. 数据模型不完整 评分题的数据结构只定义了 maxScore(最大分值),缺少 minScore(最小分值): // 错误的数据结构{questionContent:"

AI编程实战 : 使用 TRAE CN 将 MasterGo 设计稿转化为前端代码

AI编程实战 : 使用 TRAE CN 将 MasterGo 设计稿转化为前端代码

文章目录 * 什么是 MCP * 前置条件 * 1. 账号权限 * 2. 环境要求 * 3. 设计稿准备 * MasterGo AI Bridge 支持的能力 * 操作步骤 * 第一步: 安装/升级 TRAE CN IDE * 第二步: 获取 MasterGo 的 Personal Access Token * 第三步: 添加 MCP Server * 第四步: 创建自定义智能体(可选) * 第五步: 调用 MCP 生成前端代码 * 5.1 复制 MasterGo 设计稿链接 * 5.2 在 TRAE CN IDE