轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像
交易
充值流量¥8起我的订单
文档
工具
提交工单页面收录
ghcr.io/getainode/ainode-base

ghcr.io/getainode/ainode-base:0.5.13-c026c92

ghcr.iolinux/amd640.5.13-c026c92大小: 9.87 GB更新于 2026年10月7日
让 AI 帮你使用轩辕镜像? · 展开查看说明 · 点击收起说明

如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这段话即可:

请先阅读并遵守:https://xuanyuan.cloud/agents.md

未读文档前不要生成 pull 命令或排错方案。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

AINode

将任意 NVIDIA GPU 转化为本地 AI 平台。 直接在浏览器中完成推理与微调,仅需一条命令即可完成安装。接入节点后,各节点可自动相互发现。

ainode.dev · 文档 · 快速上手 · 截图展示 · 已测试模型 · 功能支持/不支持清单


AINode 是什么

AINode 是一款自托管 AI 设备,兼容 NVIDIA GB10(DGX Spark、ASUS GX10)以及所有搭载 NVIDIA GPU 的设备。只需一条命令即可在每台机器上安装编排器容器和 systemd 单元,该编排器将提供以下能力:

  • 现代化 Web UI,集成聊天、集群拓扑、服务器控制台、下载、训练功能
  • 兼容 OpenAI 的 API(/v1/chat/completions、/v1/completions、/v1/embeddings)与 Anthropic Messages API(/v1/messages),两类 API 均可通过模型 ID 在整个集群内路由
  • 决策端点(/v1/decide):传入结构化定义的问题,返回经过校准的概率结果,所有问题可在单次请求内得到应答
  • 自动启动 vLLM 引擎:每个加载的模型对应独立容器,使用各模型经过验证的引擎镜像与启动参数
  • 基于 RoCE 的跨节点张量并行:通过主机上的物理通信接口配置 NCCL,只需在浏览器中选择目标节点即可启动
  • UDP 节点发现机制,支持自动组建集群
  • NFS 共享模型存储:模型仅需下载一次,所有节点均可调用
  • 支持在节点本地 GPU 上通过脚本执行微调:涵盖 LoRA、QLoRA、全量微调三类模式

编排器镜像基于 python:3.12-slim 构建,打包本项目后总大小约 364 MB。镜像内未预装 vLLM 和 CUDA:引擎以独立容器形式运行,因此模型使用的引擎版本由模型自身决定,与 AINode 安装包版本无关。无需配置主机 Python 虚拟环境,无需从源码编译 vLLM,不存在脆弱的运行时依赖关联。

curl -fsSL https://ainode.dev/install | bash

截图展示

集群视图:4 个节点,聚合 VRAM 达 487 GB

“MASTER” 节点(头节点)运行 API 并负责全局编排。其余从属的轨道节点(工作节点)运行无头引擎容器,执行头节点分配的对应 rank 任务。实例卡片标注 DISTRIBUTED · TP=2,代表该模型已被分片部署到 2 张 GPU 上。

聊天界面

功能完备的聊天交互,支持令牌流输出、提示词历史记录、代码高亮、单条消息指标展示(TTFT、令牌生成速率、总令牌数),可对接集群中任意已加载模型,无论该模型是单卡运行还是多卡分片运行。

服务器:API 控制台(类 LM Studio 风格)

实时开发者控制台:可查看各节点上已加载的模型、兼容 OpenAI/LM Studio/Anthropic 的端点、带状态码和延迟信息的单请求日志,提供模型卸载按钮和可直接复制的 cURL 代码片段。

下载页:实时 HuggingFace 目录

浏览热门 HuggingFace 模型,系统会根据集群聚合 VRAM 自动计算并展示 AVAILABLE(可直接加载) / FITS GPU(显存容量足够) 标识。可将下载任务加入共享 NFS 缓存队列,任意节点都可立即加载已下载的模型。

训练页:总览

提供三种快速启动路径:LoRA(轻量模式,适合绝大多数用户)、QLoRA(4 位基模型模式,适配超大型模型)、全量微调(需单节点配备大显存 GPU)。所有训练任务均在对应节点的本地 GPU 上执行。可查看运行中与已完成的任务、GPU 耗时,还可直接跳转至数据集管理界面。

训练页:模板

提供指令微调(Alpaca)、聊天微调(ShareGPT)、分类头训练的入门示例。每个模板均附带可直接使用的数据集 schema,数分钟内即可启动训练任务。

配置页:集群

可指定节点角色(auto / master / worker),设置共享 cluster_id,仅配置相同 ID 的节点可相互发现,同时可查看当前成员列表,包含各节点角色、地址、最后在线时间。


分步快速上手

单节点模式(独立运行)

  1. 在你的 Linux 设备上 安装 Docker 和 NVIDIA 容器工具包。
  2. 拉取镜像并配置 systemd 单元:
curl -fsSL https://ainode.dev/install | bash

上述单行命令会执行以下操作:

# 解析数值最高的 GHCR 标签(不会使用浮动的 :latest 标签)
docker pull ghcr.io/getainode/ainode:
# 将标签写入 ~/.ainode/image.env 并安装可切换配置的 systemd 单元
systemctl enable --now ainode.service

该服务单元从 ~/.ainode/image.env 读取固定镜像版本(通过 EnvironmentFile 配置,Restart=always 生效),因此节点遭遇意外掉电重启后,会自动恢复此前已加载的独立模型和堆叠模型。分布式头节点状态不会自动恢复:分布式头节点需要等待其他对等节点接入,因此你需要在浏览器中手动重新启动它。

安装程序还会提前拉取运行时所需的 vLLM 引擎镜像(下载体积约 8.5 GB,磁盘占用约 22 GB),避免你首次启动模型时等待过长时间。设置环境变量 AINODE_NVIDIA_IMAGE=skip 可跳过该预拉取步骤。 3. 在浏览器中打开地址 http://<你的节点IP>:3000,从目录中选择任意模型。点击模型卡片后选择 Launch,即可开始聊天。系统没有配置引导向导:安装程序会自动写入 onboarded: true 配置并将 model 字段置空,因此节点启动后默认不加载任何模型,等待你的操作。 4. 如需新增节点,在当前主节点运行命令 ainode cluster token 生成令牌,然后在新设备上运行输出的 ainode join 命令即可。该命令会自动写入集群 ID、共享密钥和主节点地址,无需手动编辑 config.json。

升级操作执行 ainode update 即可,该命令会自动解析并拉取最新版本,随后重启服务。如需固定版本,可指定版本号执行 ainode update 0.5.24。请以当初安装 AINode 的用户身份运行该命令,在执行 sudo 操作前请先阅读升级 AINode 文档。

偏好手动拉取镜像? GHCR 是 AINode 唯一官方发布镜像的仓库地址:

docker pull ghcr.io/getainode/ainode:latest # 拉取最新正式版本
# 也可像安装程序一样指定固定版本,所有版本标签可在以下地址查看
# https://github.com/getainode/ainode/releases
docker pull ghcr.io/getainode/ainode:X.Y.Z

本项目没有 Docker Hub 镜像。Docker Hub 上的 argentaios/ainode 仓库版本停留在 2026 年 4 月的 0.4.7 版,该版本远早于当前的引擎后端、模型目录、堆叠部署、基准测试和嵌入功能,请勿拉取使用。

双节点模式(分布式运行)

适用于单张 GPU 无法容纳的大模型场景,例如将前沿 MoE 模型分片部署到两台 DGX Spark 设备上。官方支持通过浏览器界面完成全流程配置:

  1. 为两个节点搭建独立的高速链路:使用直连 QSFP 线缆并配置独立 /24 子网,或接入专用交换机端口。详见网络要求,该步骤对集群稳定运行至关重要。
  2. 先安装主节点:指定对等节点列表,安装程序会自动将当前 SSH 公钥复制到所有对等节点中:
AINODE_PEERS="10.0.0.2" curl -fsSL https://ainode.dev/install | bash -s -- --job master

--job master 参数为必填项。若缺少该参数,系统仅会通过 ssh-copy-id 配置对等节点免密登录,后续所有集群配置均不会生效,节点将以单机模式完成安装。 3. 将对等节点加入集群:在主节点上生成接入令牌,随后在对等节点中通过单条命令完成安装并接入集群:

ainode cluster token # 在主节点上执行,将输出下一行所需的连接配置
AINODE_JOIN="10.0.0.1:3000: " curl -fsSL https://ainode.dev/install | bash

该命令会在对等节点中写入主节点的 cluster_id、cluster_secret、服务发现端口和主节点地址,同时将本地配置设为 distributed_mode: "member",不会修改其他任何配置项。若两个节点各自独立安装,会分别生成完全独立的 cluster_secret,彼此无法识别。除上述接入流程外,你也可以在安装对等节点前预先配置 AINODE_CLUSTER_SECRET 变量为与主节点一致的值。仅添加 --job worker 参数启动安装但未执行接入操作的节点,不会加入任何集群。 4. 验证免密 SSH 连通性:确认主节点的安装用户可免密登录所有对等节点。主节点通过 SSH 远程启动对等节点上的引擎容器,如果登录过程中触发密码输入提示,节点启动会直接失败。 5. 打开主节点 Web UI:你将在界面中看到两个节点以及聚合后的系统资源总量,例如「2 个节点 · 244 GB 显存 · 2 张 GPU」。每个节点会自动检测自身挂载的 GPU 数量并上报给主节点,配备多 GPU 的主机所有 GPU 都会被计入全局聚合总量。 6. 启动分布式实例:在「启动实例」面板中选择目标模型,勾选需要跨节点调度的所有节点后点击启动。系统将携带所选节点 ID 发起一次 POST /api/sharding/launch API 请求;当前访问的节点默认为主节点,其余选中节点作为对等节点,全部通过之前配置的高速织物 IP 完成通信。若选中的对等节点未配置有效的高速织物 IP,请求会直接被拒绝,不会尝试通过管理局域网发起启动。实例启动成功后状态将显示为 DISTRIBUTED · TP=2。

多节点启动流程会在每个选中节点上运行一个独立的引擎容器:主节点上启动 rank 0 实例,所有对等节点上以 --headless 模式启动对应 rank 的实例,所有实例通过 vLLM 原生的多节点执行器,基于 --master-addr 和 --master-port 参数完成通信对齐。官方模型库中所有多节点模型都固定采用该部署架构,所有经过验证的启动场景也均使用该方案,无需在引擎镜像中额外安装除 vLLM 之外的依赖。除此之外,你也可以通过修改 config.json 设置 distributed_mode: "head" 并显式填写 peer_ips 字段,随后重启服务完成集群配置,该方案适用于无人值守的节点部署场景。

当前系统仅支持张量并行策略。尽管启动请求的请求体中包含 strategy 字段,但只要节点数量大于 1,系统将强制使用张量并行模式,无论该字段设置为何值。暂不支持流水线并行。


模型量化(AWQ / NVFP4)

AINode 支持在浏览器中使用本地 GPU 将全精度模型压缩为 4 位格式,全程无需调用任何外部服务。打开「训练 → 量化模型」页面后按以下步骤操作:

  1. 基础模型:填写 Hugging Face 仓库 ID(例如 Qwen/Qwen3.5-4B),也可直接选择本地已安装的模型。
  2. 量化方案:选择 AWQ(W4A16 格式,已在 GB10 架构显卡上通过 awq_marlin 充分验证)或 NVFP4(Blackwell 架构原生 4 位浮点格式)。
  3. 校准样本数:默认值为 256,校准数据来自开源数据集 HuggingFaceH4/ultrachat_200k。
  4. (可选)将量化结果推送至 Hugging Face:该操作需要你提供拥有写入权限的 Hugging Face 令牌,推送后的量化模型将作为私有仓库存储在你的个人命名空间下。

[!IMPORTANT] 执行量化操作的目标节点必须处于空闲状态。量化流程需要占用全部统一显存,若当前已有模型加载运行,AINode 将直接拒绝启动量化任务。你需要先卸载已加载的运行中模型,或主动传入 force=true 参数强制启动量化。量化完成后的结果将自动加入「已安装模型」列表,名称格式为「原始模型名 - 量化方案名」,可直接对外提供服务。

[!NOTE] 节点必须预先准备任务镜像。量化、训练以及适配器合并操作全部在独立的 GPU 容器中运行,该镜像大小约为 22 GB,系统不会自动拉取。节点将按以下优先级顺序解析镜像地址:首先读取显式配置的 AINODE_QUANT_IMAGE / AINODE_TRAIN_IMAGE 变量,随后尝试拉取 ghcr.io/getainode/ainode-train: 对应版本镜像,最后查找本地构建的 ainode-quant:0.17.0-t5 标签镜像。如果以上镜像全部不存在,量化任务会在提交时直接被拒绝,同时列出全部三个候选镜像地址,避免任务运行后在日志中抛出 docker exit 125 错误。关于任务镜像的构建和指向配置,可参阅训练部分的任务镜像章节了解发布方式。

在 GB10 架构显卡上优先使用 AWQ 方案。NVFP4 量化是较新的技术路线,针对多模态模型(例如 Qwen3.5 系列)的 NVFP4 量化目前处于实验阶段,尚未经过充分验证,因此当前版本下 Qwen3.5 系列模型推荐优先选择 AWQ 量化方案。

Hugging Face 令牌说明(读权限 vs 写权限):AINode 的凭证信息存储在本地密钥库中(路径为 ~/.ainode/secrets.json,文件权限为 0600,静态存储状态下已做混淆处理),支持配置两个 Hugging Face 令牌:读权限令牌用于下载受访问限制的 gated 模型,写权限令牌用于将自定义模型推送至 Hugging Face Hub,仅拥有读权限的令牌在执行多 GB 级推送操作前就会被直接拒绝。你可以在「配置 → 密钥」页面设置这两个令牌(每个令牌旁配有「测试」按钮,可直接查看当前令牌的有效权限范围),也可以通过命令 ainode config --hf-token hf_xxx 直接设置读权限令牌。


模型微调(LoRA / QLoRA / 全参数微调)

打开「训练 → 新建运行」页面,选择基础模型和数据集后提交即可启动微调任务。任务将在独立的 GPU 容器中运行(编排器镜像中未预装 torch 依赖),每个节点同时仅能运行一个训练任务,前一个任务退出后队列会自动启动下一个排队任务。

任务镜像:训练、量化和适配器合并操作都需要依赖训练镜像。节点将按以下优先级顺序解析镜像地址,如果以上所有镜像都不存在,任务会在提交时直接被拒绝,同时列出全部三个候选镜像地址,避免旧版本中出现的任务运行后抛出 docker exit 125 错误的问题:

  1. 显式配置的 AINODE_TRAIN_IMAGE / AINODE_QUANT_IMAGE 环境变量,用于手动覆盖默认镜像地址。
  2. 官方发布镜像 ghcr.io/getainode/ainode-train:。
  3. 本地自行构建的标签镜像 ainode-quant:0.17.0-t5。

官方发布镜像由流水线 .github/workflows/publish-train-image.yml 自动构建,构建任务在自托管的 Spark 构建运行器上基于 scripts/Dockerfile.quant 生成。该镜像体积约为 22 GB,系统不会自动拉取或构建该镜像,常规版本发布流程也不会触发该镜像的重新构建。你可以通过推送带有 train-v 前缀的 Git 标签发布任务镜像(标签中的版本号必须与 pyproject.toml 中定义的版本号完全匹配,引擎将根据该版本号查找对应镜像),也可以手动触发该工作流执行构建:

gh workflow run publish-train-image.yml -f push=true -f version=0.5.27

通过该工作流的 alias_versions 输入参数,可以为同一个镜像摘要添加多个额外标签,实现一次构建多版本复用,无需重复上传。如果节点上已经存在符合要求的镜像,也可以直接通过环境变量指定本地镜像地址:

sudo systemctl set-environment AINODE_TRAIN_IMAGE=ghcr.io/getainode/ainode-train:0.5.27

数据集格式说明:你可以选用存放在 ~/.ainode/datasets/ 路径下的 .jsonl 本地文件,也可以直接填写 Hugging Face 公开数据集 ID。数据集每行支持以下四种格式,系统会自动对应不同的训练处理逻辑:

行数据格式训练处理规则
{"text": "..."}直接将文本内容作为训练语料
{"instruction": "...", "output": "..."}按 Alpaca 风格拼接为「指令+响应」格式训练
{"prompt": "...", "completion": "..."}将提示词和补全内容直接拼接训练
{"conversations": [{"from": "human", "value": "..."}, ...]}调用目标模型自身的对话模板渲染后训练

最后一种格式是 AutoData 实际写入、同时也是 sharegpt-chat 模板所声明的格式:采用 role/content 交替的对话结构,messages 列的行为与该逻辑完全一致。渲染出的完整对话序列会被全部纳入监督范围(当前未实现仅对助手回复做掩蔽的功能,因此本产品不提供该特性),填充位永远不会被设为标签。

任务记录可在重启后保留。 每个作业每次状态切换时,都会在自身的作业目录中写入一份 status.json;服务启动时会基于 ~/.ainode/training/jobs/ 目录重建作业注册表,因此重启前已存在的作业,对应的运行记录表格、统计卡片、日志、产物下载、合并与恢复功能都可正常使用。该机制存在两点值得注意的特性:

  • AINode 停止时处于 RUNNING 状态的作业会被恢复为失败状态:对应的进程已随重启一同终止。
  • AINode 0.5.26 及更早版本写入的作业目录不包含状态文件,这类作业的状态会通过磁盘上的现有内容重建:如果目录中留存了权重文件则判定为已完成,否则判定为失败。这类作业的记录会被标记为 restored,附带的 note 字段会明确说明该情况,同时不会显示运行时长,因为此前从未记录过该数据。

恢复运行。 POST /api/training/jobs/{id}/resume 接口(或作业详情页上的对应按钮)会基于最新检查点启动一个全新作业:新作业拥有独立的输出目录,源作业目录会以只读方式挂载到容器内的 /src 路径,同时检查点路径会被重写以匹配新的挂载规则。恢复操作绝对不会向被恢复的原有运行记录目录写入任何内容。


功能特性

功能状态
一键安装✅
轻量编排器镜像,各模型以独立容器作为运行引擎✅ 从 v0.5.0 版本开始支持
自动检测 GPU 与内存✅
浏览器端 Chat UI✅
OpenAI 兼容 API✅
Embeddings 端点(/v1/embeddings),自动路由至集群内的池化引擎✅ 从 v0.5.25 版本开始支持
实时 Hugging Face 模型目录,包含热门内容排行与下载管理器✅
跨集群 NFS 共享模型存储✅
多节点自动发现(UDP 广播)✅
跨节点分布式张量并行推理✅(v0.5.x 版本支持 TP=2;原定于 2026 年 6 月的 0.4.x 版本支持 TP=4)
集群拓扑 UI(展示集群成员、显存总量、实例标签)✅
浏览器端微调(LoRA / QLoRA / 全参微调,单节点运行)✅
通过 API 获取并下载训练产物✅
将 LoRA 适配器合并到底层模型✅
检查点断点续训(使用独立输出目录;源运行目录以只读方式挂载至 /src)✅ 从 v0.5.28 版本开始支持
训练任务重启不丢失(每个任务生成独立 status.json,服务启动后从磁盘重建任务注册表)✅ 从 v0.5.28 版本开始支持
训练镜像发布至 GHCR(镜像名为 ainode-train:),附带命名化预检查机制✅ 从 v0.5.28 版本开始支持
支持 Chat / ShareGPT / AutoData conversations 格式数据集训练(使用模型原生对话模板)✅ 从 v0.5.28 版本开始支持
评估循环(可配置训练/验证集划分比例)✅
W&B 日志集成✅
自定义训练模板持久化✅
Prometheus 指标端点(/metrics)✅
ainode role master|worker|solo CLI 命令✅
工作节点启动时无需预先加载模型✅
服务启动后立即可用 Web 门户✅
通过主节点 UI 实现全集群更新(提供 ⬆ Update all 按钮)✅
拓扑加载动画 + 节点逐位淡入效果✅
GB10(sm_12.1)架构下的 AWQ 模型支持,修复了 awq_marlin 内核问题✅
浏览器端量化(AWQ W4A16 / NVFP4),量化后可直接部署或推送至 Hugging Face✅ 从 v0.4.44 版本开始支持
将量化/微调后的模型推送至 Hugging Face(需配置写入令牌)✅
密钥存储库(支持 HF 读权限 + HF 写权限 + NGC + W&B + OpenAI),密钥展示时自动脱敏且支持可用性测试✅
联邦主路由:/v1/* 请求根据模型名在集群内自动路由✅
通过主节点 UI 加载/卸载任意节点上的任意模型✅
模型堆叠:单节点可同时运行 N 个并发模型,配置持久化且服务重启后自动恢复✅
基于本地磁盘权重文件提供推理服务(路径为 ~/.ainode/models/)✅
GB10 架构默认启用 fp8 KV 缓存(预留长上下文处理余量)✅
单次加载参数覆盖(served_model_name / max_model_len / kv_cache_dtype / quantization / trust_remote_code),配置持久化且重启不丢失✅ 从 v0.5.0 版本开始支持
指定目标节点加载模型(POST /api/cluster/load {node_id})✅ 从 v0.5.1 版本开始支持
堆叠加载准入防护:要求显式指定 gpu_memory_utilization 参数,拒绝预估总显存占用超过 0.9 的加载请求(错误码 409)✅ 从 v0.5.1 版本开始支持
VLM(多模态视觉)支持:GB10 架构下自动跳过 fp8 KV 缓存,支持单次加载时通过 kv_cache_dtype=auto 手动覆盖✅ 从 v0.5.1 版本开始支持
LoRA / QLoRA 训练及适配器合并操作均在独立启动的 GPU 容器中运行(轻量编排器镜像未预装 PyTorch)✅ 从 v0.5.0 版本开始支持
部署流水线:基于发布标签,通过自托管 Spark 运行器执行 CI 流程,推送至 GHCR 后可执行 ainode update 或全集群更新(实现真正的镜像拉取与运行时切换)✅ 从 v0.5.0 版本开始支持
可取消、绑定提交哈希、支持并行的模型下载功能✅ 从 v0.5.2 版本开始支持
从磁盘删除已下载模型(命令 delete-repo,可释放 GB 级存储空间)✅
AutoData:基于 Δ 过滤的合成数据生成(目标是 v2.2 版本验证集效果提升)✅ 从 v0.5.0 版本开始支持
ainode doctor:节点状态检查,每项问题对应单行修复命令,支持 --json、--peer、--fix 参数✅ 从 v0.5.27 版本开始支持
仪表盘可使用 API 密钥鉴权(通过单个封装层实现,启用后密钥存储在浏览器本地)✅ 从 v0.5.27 版本开始支持
启用 trust_remote_code 需要提供有效 API 密钥,或由目录内的配方文件显式声明该配置✅ 从 v0.5.27 版本开始支持
监控 AINode 主目录与模型目录的磁盘可用/总容量,剩余空间低于 15% 时触发警告状态✅ 从 v0.5.27 版本开始支持
通过集群端点提供 /v1/responses、/tokenize、/detokenize、/v1/rerank、/v1/score 接口✅ 从 v0.5.27 版本开始支持
将转发请求固定至指定实例(通过 X-AINode-Node / X-AINode-Port 头实现),响应中返回 X-AINode-Served-By 标识实际处理节点✅ 从 v0.5.28 版本开始支持
以 cluster_secret 为密钥的 HMAC 签名 UDP 发现机制,密钥可在不重启服务的情况下轮换✅ 从 v0.5.28 版本开始支持
网络传输报文携带 ainode_version 字段,集群版本分裂时显示提示横幅,且 /api/version/check 接口返回 cluster_split 状态✅ 从 v0.5.28 版本开始支持
ainode update 命令会验证节点是否成功在新版本上重启,若验证失败将返回非零退出码✅ 从 v0.5.28 版本开始支持
提供 ainode prune-images 命令,且更新后自动执行镜像清理,保留指定数量的可回滚历史版本✅ 从 v0.5.28 版本开始支持
多 GPU 节点会在声明消息中上报全部 GPU 数量(通过 gpu_count 字段)✅ 从 v0.5.28 版本开始支持
一键集群加入功能(ainode cluster token、ainode join、环境变量 AINODE_JOIN)✅ 从 v0.5.29 版本开始支持
全新安装时自动生成 cluster_secret,默认禁用未认证节点发现✅ 从 v0.5.29 版本开始支持
GET /api/cluster/endpoint 接口与 endpoint_hint 字段返回集群全部节点地址,无需鉴权,客户端可在主节点故障后自动切换存活节点✅ 从 v0.5.29 版本开始支持
分布式头部节点在启动时自动接管正在运行的引擎,若检测到集群状态降级会记录异常状态并标记异常对等节点✅ 从 v0.5.29 版本开始支持
指标数据本地持久化:保留 48 小时原始数据、30 天分钟级聚合数据,提供 GET /api/metrics/history 接口查询✅ 从 v0.5.29 版本开始支持
GET /metrics 接口可正常提供采集数据(v0.4 版本之前返回错误码 500),指标附带 node / node_id 标签,内置已验证的采集配置✅ 从 v0.5.29 版本开始支持
支持独立端口启用 TLS(命令 ainode tls enable,端口 3443),可使用自签名证书或 tailscale cert 签发证书,原 HTTP 端口不受影响✅ 从 v0.5.29 版本开始支持
/v1 接口支持单客户端速率与并发限制(通过 rate_limit 配置块定义,触发限制时返回 429 状态码并标注对应限制规则)✅ 从 v0.5.29 版本开始支持
通过集群端点提供语音转文字服务(接口 /v1/audio/transcriptions、/v1/audio/translations)✅ 从 v0.5.29 版本开始支持
全新安装时自动生成 API 密钥并默认启用鉴权(可通过设置 AINODE_AUTH=off 关闭),在已有配置上重新安装不会修改原有密钥与鉴权设置✅ 从 v0.5.30 版本开始支持
集群启用鉴权后,所有节点间调用都会携带 HMAC-SHA256(cluster_secret, "ainode-fleet-key-v1") 签名,接收端验证通过后将请求识别为集群内部调用✅ 从 v0.5.30 版本开始支持
提供 ainode auth key create --name/list/revoke 密钥管理命令,修改 auth.json 后无需重启即可在运行节点上即时生效✅ 从 v0.5.30 版本开始支持
GET /api/config 接口会脱敏 hf_token 字段,auth.json 与 config.json 文件权限设为 0600✅ 从 v0.5.30 版本开始支持
ainode tls enable --tailscale 命令可为当前节点的 MagicDNS 域名申请有效证书,ainode-tls-renew.timer 定时任务会在证书到期前 14 天内自动续期✅ 从 v0.5.30 版本开始支持
当节点启用 TLS 服务时,/api/cluster/endpoint 接口与 endpoint_hint 字段会携带 tls、tls_port 字段与对应的 https 访问地址✅ 从 v0.5.30 版本开始支持
服务重启或更新时自动接管所有仍在运行的引擎(包括主引擎、头部引擎、堆叠部署引擎),无需重新加载,/api/status 接口会返回 engine_adopted 状态✅ 从 v0.5.30 版本开始支持
磁盘空间不足无法完成下载时返回 507 状态码,明确标注所需空间、当前可用空间、以及检测的目标路径✅ 从 v0.5.30 版本开始支持
新增指标视图面板,可展示 6 组监控图表,时间范围支持 1 小时至 7 天,通过集群端点可调用 GET /api/metrics/history?node= 查询任意节点的历史指标✅ 从 v0.5.30 版本开始支持
已验证 openai/whisper-large-v3-turbo 模型的效果,附带语音基准测试记录(词错率、延迟、实时系数)✅ 从 v0.5.30 版本开始支持
qwen3.8-flash-next-nvfp4-v100:通过目录支持在 4 台 Tesla V100 显卡上以 TP=4 模式运行 Qwen3.8-Flash-Next 模型✅ 从 v0.5.x 版本开始支持

与社区的关系

AINode 基于 DGX Spark 生态中的优秀开源项目构建。https://github.com/eugr/spark-vllm-docker 及其经过补丁修改的 NCCL(位于 dgxspark-3node-ring 分支)是 AINode 多节点能力的起点:0.4.x 版本运行的正是 eugr 的 launch-cluster.sh 脚本及其基础镜像,该仓库中记录的相关参数与拓扑经验也均源自该项目。

目前 AINode 的运行机制已有所不同,此处将进行精确说明:AINode 0.5.x 会自行启动引擎,基于模型配方指定的镜像为每个实例启动一个 vLLM 容器,多节点运行通过 vLLM 原生多节点执行器实现,而非依赖 Ray。从 eugr 的代码树构建的 ainode-base 镜像已不再是正式发布产品的依赖项。尽管如此,我们仍对该项目的贡献深表认可,且 eugr 的项目仍是在 Spark 硬件上直接部署原始 vLLM 集群的首选方案。

非常感谢 eugr 以及所有让多节点 Spark 部署落地成为可能的贡献者。

在 AINode 上完成测试的模型

下表中的每一行均代表我们在自有硬件上通过 AINode 完成部署并实测的模型。每次运行的完整 JSON 记录均存放在 bench/results/ 目录下,该表格由 scripts/render-bench-table.py 脚本基于上述文件自动生成,因此表格内容与实测数据完全一致,不会出现文字描述与实际数据不符的情况。如果某个模型没有对应的实测记录,我们会如实标注,绝不会发布未经实测的数值。

模型总参数量 / 激活参数量量化方式部署环境单流 tok/s16 流 tok/s评测结果测试日期运行记录
Qwen3.8-Flash-Next125B / 6B 激活NVFP4(混合精度,FP8 PLE)castor,4× Tesla PG500-216,TP=449.6104.2未运行2026-09-20https://github.com/getainode/ainode/blob/main/bench/results/20260920-***-qwen3_8-flash-next-nvfp4-v100-ainode-0_5_29-castor-tp-4-four-v100-32-gb-onecat-vllm-1_5_0-mm-mtp-4-via-the-fleet-endpoint.json
Qwen3.6 35B-A3B35B / 3B 激活NVFP4pollux,1× Tesla PG500-216,TP=197.4343.9未运行2026-09-19https://github.com/getainode/ainode/blob/main/bench/results/20260919-040456-qwen3_6-35b-a3b-nvfp4-pollux-v100-solo-onecat-src-full.json
Spark-X2.5 4B4B 稠密参数BF16Spark-4-GX10,1× GB10,TP=1(堆叠部署)18.9283.8未运行2026-09-18https://github.com/getainode/ainode/blob/main/bench/results/20260918-***-spark-x2_5-4b-spark-4-stacked-beside-nemotron-bf16.json
Qwen3.8-Flash-Next (NVFP4)125B / 6B 激活NVFP4(混合精度,FP8 PLE)Spark-2-DGX,2× GB10,TP=226.2207.6未运行2026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-204216-qwen3_8-flash-next-nvfp4-tp2-mp-nightly.json
DeepSeek V4 Flash (DSpark, FP8)284B / 13B 激活FP8(专家层使用 FP4)Spark-2-DGX,2× GB10,TP=234.594.0未运行2026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-033415-deepseek-v4-flash-dspark-fp8-tp2-mp.json
Nemotron 3.5 Lightning 30B-A3B30B / 3B 激活NVFP4Spark-4-GX10,1× GB10,TP=1(堆叠部署)52.6未实测未运行2026-09-13https://github.com/getainode/ainode/blob/main/bench/results/20260913-***-nvidia-nemotron-3_5-lightning-30b-a3b-nvfp4-smoke.json
Ornith 1.5 35B-A3B35B / 3B 激活NVFP4Spark-1-DGX,1× GB10,TP=1(堆叠部署)40.0269.219/192026-09-13https://github.com/getainode/ainode/blob/main/bench/results/20260913-***-ornith-1_5-35b-a3b-nvfp4-text-only-mtp.json
Qwen3.8 27B27B 稠密参数NVFP4Spark-3-DGX,1× GB10,TP=119.0147.023/232026-08-15https://github.com/getainode/ainode/blob/main/bench/results/20260815-000000-qwen3_8-27b-nvfp4-mtp-vision.json
Nemotron 3.5 Lightning 30B-A3B30B / 3B 激活NVFP4Spark-4-GX10,1× GB10,TP=1104.5504.319/192026-08-13https://github.com/getainode/ainode/blob/main/bench/results/20260813-000000-nvidia-nemotron-3_5-lightning-30b-a3b-nvfp4-dspark-recipe.json
Qwen3 235B-A22B235B / 22B 激活NVFP4Spark-1..4,4× GB10,TP=416.5未实测未运行2026-06-17https://github.com/getainode/ainode/blob/main/bench/results/20260617-000000-qwen3-235b-a22b-nvfp4-tp4-frontier-moe.json

代码评测框架运行记录

上述同一批模型由各自的代码代理驱动完成测试。下表每一行代表一个模型在某一评测框架(aider、dsh……、claude)上的运行结果,同样由 scripts/render-bench-table.py 脚本基于上述表格所用的基准记录自动生成,内容与实测数据完全一致。对于同一模型-框架组合,表格展示的是最新一次的运行结果,如果某次运行标记为"未实测",表格中将直接显示该标注而非数值。

镜像名称:ghcr.io/getainode/ainode-base 参考标签:latest

模型测试框架pass@1pass@2平均耗时(s)部署位置测试日期运行记录
DeepSeek V4 Flashaider aider 0.86.29/1010/1047.3Spark-1-DGX, TP=22026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-deepseek-v4-flash-dspark-four-harnesses-10-exercism-harness.json
DeepSeek V4 Flashdsh 0.1.5-rc.110/1010/1016.4Spark-1-DGX, TP=22026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-deepseek-v4-flash-dspark-four-harnesses-10-exercism-harness.json
DeepSeek V4 Flashopencode 1.18.3110/1010/1023.4Spark-2-DGX, TP=22026-09-17https://github.com/getainode/ainode/blob/main/bench/results/20260917-***-deepseek-v4-flash-dspark-deepseek-v4-flash-tp-2-opencode-after-the-pwd-fix-10-exercism-tasks-harness.json
DeepSeek V4 Flashpi 0.73.19/1010/1013.8Spark-1-DGX, TP=22026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-deepseek-v4-flash-dspark-four-harnesses-10-exercism-harness.json
Nemotron 3.5 Lightning 30B-A3Baider aider 0.86.28/1010/10389.5Spark-4-GX10, TP=12026-09-18https://github.com/getainode/ainode/blob/main/bench/results/20260918-042104-nvidia-nemotron-3_5-lightning-30b-a3b-nvfp4-spark-4-solo-thinking-default-harness.json
Nemotron 3.5 Lightning 30B-A3Bclaude 2.1.274 (Claude Code)8/109/10239.5Spark-4-GX10, TP=12026-09-18https://github.com/getainode/ainode/blob/main/bench/results/20260918-042104-nvidia-nemotron-3_5-lightning-30b-a3b-nvfp4-spark-4-solo-thinking-default-harness.json
Nemotron 3.5 Lightning 30B-A3Bdsh 0.1.5-rc.17/1010/10108.9Spark-4-GX10, TP=12026-09-18https://github.com/getainode/ainode/blob/main/bench/results/20260918-053315-nvidia-nemotron-3_5-lightning-30b-a3b-nvfp4-spark-4-solo-thinking-default-dsh-rerun-after-pytest-preflight-harness.json
Nemotron 3.5 Lightning 30B-A3Bpi 0.73.17/1010/10119.2Spark-4-GX10, TP=12026-09-18https://github.com/getainode/ainode/blob/main/bench/results/20260918-042104-nvidia-nemotron-3_5-lightning-30b-a3b-nvfp4-spark-4-solo-thinking-default-harness.json
Ornith 1.5 35B-A3Baider9/1010/10116.3Spark-1-DGX, TP=12026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-ornith-1_5-35b-a3b-nvfp4-ornith-1_5-35b-a3b-on-spark-1-three-harnesses-10-exercism-tasks-harness.json
Ornith 1.5 35B-A3Bclaude 2.1.272 (Claude Code)8/1010/1050.8Spark-1-DGX, TP=12026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-ornith-1_5-35b-a3b-nvfp4-ornith-1_5-on-spark-1-claude-code-harness-10-exercism-tasks-harness.json
Ornith 1.5 35B-A3Bdsh 0.1.5-rc.17/109/1051.2Spark-1-DGX, TP=12026-09-17https://github.com/getainode/ainode/blob/main/bench/results/20260917-022907-ornith-1_5-35b-a3b-nvfp4-ornith-1_5-on-spark-1-thinking-off-by-default-dsh-10-exercism-tasks-harness.json
Ornith 1.5 35B-A3Bpi 0.73.15/1010/1043.2Spark-1-DGX, TP=12026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-ornith-1_5-35b-a3b-nvfp4-ornith-1_5-35b-a3b-on-spark-1-three-harnesses-10-exercism-tasks-harness.json
Qwen3.8 27Baider aider 0.86.27/109/10455.6Spark-1-DGX, TP=12026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-qwen3_8-27b-nvfp4-three-harnesses-10-exercism-harness.json
Qwen3.8 27Bdsh 0.1.5-rc.110/1010/10269.9Spark-1-DGX, TP=12026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-qwen3_8-27b-nvfp4-three-harnesses-10-exercism-harness.json
Qwen3.8 27Bpi 0.73.19/1010/10205.6Spark-1-DGX, TP=12026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-***-qwen3_8-27b-nvfp4-three-harnesses-10-exercism-harness.json
Qwen3.8-Flash-Nextaider9/1010/10319.8Spark-1-DGX, TP=22026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-201023-qwen3_8-flash-next-nvfp4-qwen3_8-flash-next-tp-2-spark-2-spark-3-four-harnesses-10-exercism-tasks-harness.json
Qwen3.8-Flash-Nextclaude 2.1.272 (Claude Code)8/1010/1046.1Spark-1-DGX, TP=22026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-205159-qwen3_8-flash-next-nvfp4-flash-next-tp-2-claude-code-harness-effort-medium-10-exercism-tasks-harness.json
Qwen3.8-Flash-Nextdsh 0.1.5-rc.110/1010/1096.2Spark-1-DGX, TP=22026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-201023-qwen3_8-flash-next-nvfp4-qwen3_8-flash-next-tp-2-spark-2-spark-3-four-harnesses-10-exercism-tasks-harness.json
Qwen3.8-Flash-Nextpi10/1010/10139.6Spark-1-DGX, TP=22026-09-16https://github.com/getainode/ainode/blob/main/bench/results/20260916-201023-qwen3_8-flash-next-nvfp4-qwen3_8-flash-next-tp-2-spark-2-spark-3-four-harnesses-10-exercism-tasks-harness.json
Spark-X2.5 4Baider aider 0.86.23/106/10923.4Spark-4-GX10, TP=12026-09-18https://github.com/getainode/ainode/blob/main/bench/results/20260918-***-spark-x2_5-4b-spark-4-stacked-beside-nemotron-first-run-harness.json
Spark-X2.5 4Bclaude 2.1.274 (Claude Code)4/107/10636.7Spark-4-GX10, TP=12026-09-18https://github.com/getainode/ainode/blob/main/bench/results/20260918-***-spark-x2_5-4b-spark-4-stacked-beside-nemotron-first-run-harness.json

[!NOTE] 本次提供的原始测试数据末尾内容已截断,仅保留上述完整有效基准测试记录。

轩辕镜像配置手册

按平台快速找到配置文档

一键安装

一键安装 Docker

Linux Docker 一键安装

AI

用 AI 使用轩辕镜像

agents.md · AI 对话 · 提示词

Docker

登录仓库拉取

登录认证 · 私有仓库

专属域名拉取

免登录 · 高速拉取

Linux

Docker 镜像配置

Windows / Mac

Docker Desktop 配置

MacOS OrbStack

OrbStack 容器

Apple Container

macOS 原生容器

Docker Compose

Compose 项目配置

NAS

群晖

Synology 配置

飞牛

fnOS 镜像配置

绿联

绿联 NAS

威联通

QNAP 配置

极空间

极空间 NAS

Unraid

Unraid NAS

企业仓库

其他仓库

ghcr · Quay · nvcr

Harbor 镜像源

Proxy Repository 对接

Portainer 镜像源

Registries 配置

Nexus 镜像源

Docker Proxy 缓存

开发工具

Dev Containers

VS Code 开发容器

Podman

Podman 配置指南

Singularity / Apptainer

HPC 科学计算容器

Kubernetes

K8s Containerd

Kubernetes · Containerd

K3s

轻量级集群

面板 / 网络

爱快路由

爱快 4.0 · iKuai 镜像加速

宝塔面板

一键配置镜像源

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

功能

版本功能对比

功能对比 · 版本选择

支持的镜像仓库

Docker Hub · GCR · GHCR

专属域名用法

专属域名 · 开启停用 · 多仓库

新手拉取配置

登录 · 专属域名 · 配置

docker search 限制

专属域名 · Hub 搜索

不支持 push

仅支持 pull · 不支持

拉取速度原因

带宽 · 缓存 · 冷热镜像

错误码

402 与流量用尽

402 · 流量包 · 充值

401 认证失败

401 · docker login

manifest unknown

标签错误 · 镜像不存在

410 Gone 排查

410 · Docker 升级

429 限流

免费版 · 专业版 · 企业版 · 请求频率

其他报错

DNS 超时

DNS 解析 · 网络超时

TLS 证书失败

no matching manifest(架构)

docker.sock / daemon

账号

失败是否计费

manifest · blob · 计费

申请开票(企业 / 个人)

开票 · 发票 · 工单

修改登录密码

网站 · 仓库 · 重置

注销账户

工单 · 数据 · 注销

原理

mirrors 不生效

daemon.json · 重启

去掉域名前缀

docker tag · 重命名

指定架构拉取

ARM64 · AMD64 · 多架构

latest 与「最新」

digest · 版本号 · 标签

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
ghcr.io/getainode/ainode-base
定价查看流量套餐与价格
博客Docker 镜像公告与技术博客
官方技术交流群:|问题咨询请:提交工单
服务号:轩辕镜像|公众号:源码跳动|小程序:轩辕镜像|官方技术交流群:|问题咨询请:提交工单
专业版 · 高速稳定拉取镜像
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
50GB 仅 ¥8/年
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
用户协议·隐私政策·增值电信业务经营许可证:浙B2-20261007·©2024-2026 源码跳动©2024-2026 杭州源码跳动科技有限公司·商务合作:点击复制邮箱