Scaleway ARM64服务器:尝试在非x86架构运行DDColor
在数字档案修复的幕后,一场静悄悄的技术迁移正在发生。越来越多的老照片数字化项目不再依赖昂贵的本地工作站,而是转向云端批量处理——但这些云实例,未必再是清一色的 Intel 或 AMD 芯片。随着 ARM 架构在数据中心站稳脚跟,我们开始思考:那些原本为 x86 + GPU 环境设计的 AI 模型,能否在纯 CPU、非 x86 的服务器上稳定运行?
最近,我在Scaleway上启动了一台基于 Ampere Altra 的 ARM64 实例,试图将阿里达摩院开源的黑白图像自动上色模型DDColor部署上去,并通过ComfyUI构建可视化工作流。整个过程不仅是一次跨平台适配实验,更揭示了现代 AI 工具链对异构硬件日益增强的支持能力。
为什么选择 DDColor?
市面上的图像上色模型不少,但多数要么色彩失真(比如把人脸染成紫色),要么细节模糊。而 DDColor 的特别之处在于它采用了“双分支”结构:一个分支专注理解图像内容(语义编码器),另一个则学习常见物体的颜色规律(颜色先验编码器)。两者在解码阶段融合,使得最终输出既符合真实世界常识,又能保留清晰边缘。
举个例子,当输入一张老式建筑照片时,模型不会凭空猜测屋顶该是什么颜色,而是参考训练数据中“瓦片屋顶多为红褐色”的统计规律进行还原;同样,人物肤色也不会漂移,因为它学会了人类皮肤的大致色域范围。这种“理性着色”虽然少了些艺术发挥空间,却非常适合历史影像修复这类追求真实性的任务。
更重要的是,DDColor 模型体积适中(约1GB左右),推理时显存占用可控,这为部署到资源受限环境提供了可能——哪怕没有独立 GPU,也能靠多核 CPU 完成基本任务。
ComfyUI:让复杂模型变得“可拖拽”
如果你曾手动调用过 PyTorch 模型,就会知道那意味着写一堆加载权重、预处理、后处理的代码。而 ComfyUI 改变了这一切。它把每个功能模块拆成一个个“节点”,比如“加载图像”、“调整尺寸”、“执行 DDColor 推理”、“保存结果”,然后用连线连接起来,形成一条完整的工作流。
这听起来像图形化编程,但它背后的力量远不止“好看”。真正有价值的是:
- 可复现性:整个流程可以导出为 JSON 文件,别人只需导入就能一键复现你的配置。
- 调试直观:你可以暂停在任意节点查看中间输出,比如看看缩放后的图像是否失真,或者特征图是否有异常激活。
- 易于扩展:未来想加入超分辨率或去噪模块?只要找到对应的节点插件,拖进去就行。
我在本地测试时用了DDColor人物黑白修复.json这个工作流模板,上传一张民国时期的人像照,点击运行,十几秒后就看到了自然肤色的还原效果——眼睛、嘴唇、衣物纹理都得到了合理着色,完全没有“塑料感”。
在 ARM64 上跑通的关键挑战
真正让我捏把汗的,是在 Scaleway 的 DEV1-M 实例上部署这套系统的过程。毕竟这不是普通的 Ubuntu 机器,而是基于 aarch64 架构的 ARM 服务器,没有 NVIDIA GPU,所有计算都要靠 80 核的 Ampere Altra CPU 完成。
第一步:确认基础环境兼容性
幸运的是,PyTorch 早已提供官方支持的 ARM64 CPU 版本。我使用以下命令安装核心依赖:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu注意这里不能用默认源,否则会报错找不到合适包。必须指定 PyTorch 官方的 CPU 专用索引地址,才能正确下载 aarch64 架构的 wheel 文件。
Python 生态整体对 ARM64 的支持也已相当成熟。除了少数 C 扩展库需要重新编译外,主流工具如 Pillow、NumPy、Flask 等都能直接通过 pip 安装运行。
第二步:集成 DDColor 到 ComfyUI
ComfyUI 本身是纯 Python 实现,天然跨平台。难点在于如何让它识别 DDColor 模型。目前社区已有第三方插件(通常放在custom_nodes/目录下),只需克隆项目并放置模型文件即可:
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI/custom_nodes git clone https://github.com/s9xie/ComfyUI-DDColor.git然后将下载的ddcolor_model.pth放入models/ddcolor/目录。启动服务:
python main.py --listen 0.0.0.0 --port 8188稍等片刻,浏览器访问http://<your-ip>:8188,就能看到熟悉的界面了。
第三步:性能表现实测
由于没有 CUDA 加速,推理完全依赖 CPU。我对几张不同尺寸的照片进行了测试:
| 图像类型 | 分辨率 | 平均耗时 |
|---|---|---|
| 人像 | 640×480 | 12 秒 |
| 建筑 | 1024×768 | 26 秒 |
| 高清扫描 | 1920×1440 | 超时(OOM) |
可见,ARM 多核的优势在于并发能力强,但单核性能较弱,且内存带宽有限。因此建议控制输入尺寸,避免触发 OOM 错误。对于批量处理老旧家庭相册这类中小尺寸图像的任务,完全可行。
整体架构与实际应用场景
系统的逻辑架构其实很简单:
[用户浏览器] ←HTTP→ [Scaleway ARM64 实例] ↓ [ComfyUI + DDColor] ↓ [输出彩色图像]具体流程如下:
1. 用户上传一张黑白照片;
2. 系统根据预设工作流自动裁剪、缩放至推荐尺寸;
3. DDColor 模型执行推理;
4. 输出彩色图像并返回前端展示。
这个模式特别适合以下场景:
- 家庭用户修复老照片:无需购买高端电脑,按小时租用云实例即可完成几十张照片的修复。
- 档案馆数字化项目:结合脚本可实现自动化批处理,每天定时拉取新扫描件并上色归档。
- 教育机构教学演示:学生可通过远程访问体验 AI 图像处理全过程,无需配置复杂环境。
更重要的是,这种方式打破了对 x86 + GPU 的路径依赖。过去我们总认为 AI 必须要有“卡”,但现在发现,在某些轻量级任务中,高核心数的 ARM CPU 同样能胜任,而且成本更低、功耗更小。
设计权衡与优化建议
当然,这种方案也有明显的局限性,需要在实践中做出取舍:
性能 vs 成本
- 优势:Scaleway DEV1-M 实例每小时仅 $0.093,远低于同等算力的 GPU 实例。
- 代价:单张图像处理时间从 GPU 上的 2–3 秒延长到 10–30 秒,不适合实时交互场景。
内存管理
- 160GB 内存看似充裕,但多个工作流并行时仍可能爆内存。建议设置监控脚本,定期清理缓存。
- 可考虑启用 swap 分区作为应急缓冲,尽管会影响速度。
用户体验优化
- 直接暴露
:8188端口不够安全,建议配合 Nginx 做反向代理,并启用 HTTPS。 - 添加简单的身份验证机制(如 Basic Auth),防止未授权访问。
未来扩展方向
- 集成 ESRGAN 或 SwinIR 模块,在上色前先做一次超分,提升低清图像质量;
- 引入 OCR 提取照片上的文字信息(如日期、人名),辅助元数据标注;
- 使用 cron 定时任务+队列系统(如 Redis + Celery),实现无人值守批量处理。
技术之外的价值:绿色 AI 与普惠化
这次实践的意义,不仅仅在于“能在 ARM 上跑起来”。更深层的影响体现在两个方面:
推动绿色 AI 发展
Ampere Altra 的 TDP 仅为 250W,而同级别 x86 平台往往超过 400W。这意味着在长时间运行的批处理任务中,ARM 架构能显著降低能耗和碳排放。对于需要持续运行数天甚至数周的大型修复工程来说,这是一种更可持续的选择。
加速 AI 普惠化进程
当一个复杂的深度学习任务可以通过“拖拽节点”完成,并且运行成本降到每天几毛钱,就意味着更多普通人也能参与进来。博物馆、地方志办公室、甚至个人家庭,都可以自主开展影像修复工作,而不必依赖专业团队或昂贵设备。
这也提醒我们:AI 的终极目标不是炫技,而是服务于人。工具越简单、越便宜、越易得,就越有可能真正落地。
如今,那台远在法国的数据中心里的 ARM 服务器仍在默默运行着我的 ComfyUI 实例。每当有人上传一张泛黄的老照片,它都会耐心地逐层分析、推理、上色,最终还原因岁月褪去的色彩。
这不只是技术的胜利,更是开放生态与多元架构共存的证明。也许不久的将来,我们会习以为常地说:“哦,这个模型跑在树莓派上?”——就像今天说“跑在 Docker 里”一样自然。