章节 01
导读 / 主楼:Hivemind:支持实时故障恢复的分布式LLM推理系统
Hivemind通过流水线并行将Transformer模型分层分布在多个工作节点上,实现逐token的完整管道推理,并支持实时故障恢复和可验证正确性。
正文
Hivemind通过流水线并行将Transformer模型分层分布在多个工作节点上,实现逐token的完整管道推理,并支持实时故障恢复和可验证正确性。
章节 01
Hivemind通过流水线并行将Transformer模型分层分布在多个工作节点上,实现逐token的完整管道推理,并支持实时故障恢复和可验证正确性。
章节 02
章节 03
原作者与来源
\n┌─────────────────────────────────────────────────────────┐\n│ 客户端层 │\n│ ┌─────────────┐ ┌─────────────────────────────────┐ │\n│ │ CLI │ │ React Dashboard :5173 │ │\n│ └──────┬──────┘ └───────────────┬───────────────┘ │\n└─────────┼─────────────────────────────┼─────────────────┘\n │ POST /api/infer │ POST /api/infer/stream\n ▼ ▼\n┌─────────────────────────────────────────────────────────┐\n│ 协调器服务层 :8000 │\n│ ┌─────────────────┐ ┌─────────────────────────────┐ │\n│ │ FastAPI协调器 │◄──►│ 调度器 │ │\n│ │ (分词器+采样器) │ │ (层分配与故障恢复) │ │\n│ └─────────────────┘ └─────────────────────────────┘ │\n└─────────────────────────────────────────────────────────┘\n │ assigns layers\n ▼\n┌─────────────────────────────────────────────────────────┐\n│ 工作节点池 │\n│ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐│\n│ │ Worker 1 │──► │ Worker 2 │──►│ Worker 3 ││\n│ │ :8001 │ │ :8002 │ │ :8003 ││\n│ │ Layers 0-11 │ │ Layers 12-23 │ │ Layers 24-35││\n│ └──────────────┘ └──────────────┘ └─────────────┘│\n└─────────────────────────────────────────────────────────┘\n\n\nToken生成流程\n\n每个输出token的生成需要经历一次完整的流水线传递:\n\n1. 嵌入层(Worker 1): 将输入token ID转换为隐藏状态\n2. 中间层传递: 隐藏状态依次流经Worker 2、Worker 3等中间节点\n3. 输出层(最后一个Worker): 计算下一个token的logits\n4. 协调器采样: 使用贪婪解码或温度采样选择下一个token\n5. 迭代循环: 将生成的token追加到上下文,重复上述流程\n\n这种设计使得每个token的生成成本与模型深度成正比,但通过流水线并行,多个token可以在不同层上并行处理。\n\n---\n\n故障恢复机制\n\nHivemind最具特色的功能之一是实时故障恢复能力。当某个工作节点在推理过程中宕机时:\n\n1. 故障检测: 协调器捕获到对故障节点的调用失败\n2. 节点驱逐: 将故障节点从调度器的活跃池中移除\n3. 层重新分配: 在剩余存活节点上重新计算连续的层块分配\n4. 请求重试: 使用新的拓扑结构重新执行当前的流水线传递\n5. 事件通知: 通过SSE流发送reshard事件,Dashboard可实时显示拓扑变化\n\n这种机制确保了即使在部分节点故障的情况下,推理服务仍能继续运行,仅牺牲部分并行度而非可用性。\n\n---\n\nAPI与接口设计\n\nRESTful API\n\n| 方法 | 端点 | 说明 |\n|------|------|------|\n| POST | /api/infer | 阻塞式推理,返回完整结果+工作节点追踪 |\n| POST | /api/infer/stream | SSE流式推理,支持实时token输出 |\n| GET | /api/workers | 查询工作节点列表及调度器统计 |\n| POST | /api/workers/register | 工作节点注册,返回层分配信息 |\n| POST | /api/workers/heartbeat | 工作节点心跳检测 |\n| DELETE | /api/workers/{id} | 驱逐指定工作节点(用于故障恢复演示) |\n| GET | /api/jobs | 查询近期任务历史及reshard事件 |\n| GET | /api/health | 服务健康检查 |\n| GET | /metrics | Prometheus指标暴露 |\n\nSSE流事件类型\n\n流式API支持以下事件类型:\n\n- start: 推理开始\n- token: 生成的新token及其来源工作节点\n- reshard: 拓扑变更事件(故障恢复时触发)\n- done: 推理完成\n- error: 错误信息\n\n---\n\n技术栈与部署\n\n技术选型\n\n| 层级 | 技术 |\n|------|------|\n| 协调器 | FastAPI, HTTPX, PyTorch(分词器+采样器) |\n| 工作节点 | FastAPI, PyTorch, Transformers(GPT-2) |\n| CLI | Click, Rich |\n| Dashboard | React 18, TypeScript, Vite, Tailwind CSS |\n| 编排 | Docker Compose |\n| 监控 | Prometheus |\n\n快速启动\n\nbash\n启动完整集群\ndocker compose up --build\n\n运行推理\npython cli/main.py infer -p \"the quick brown fox\" -d\n\n流式推理演示\ncurl -N -X POST localhost:8000/api/infer/stream \\\n -H 'content-type: application/json' \\\n -d '{\"prompt\": \"once upon a time\", \"max_tokens\": 80}'\n\n\n---\n\n应用场景与价值\n\nHivemind的设计目标是为LLM推理提供一种高可用、可验证、易扩展的分布式解决方案。其主要应用场景包括:\n\n- 边缘部署: 将大模型分散到多个资源受限的边缘设备\n- 高可用服务: 通过故障恢复机制确保推理服务的连续性\n- 可验证AI: 在金融、医疗等对输出一致性要求严格的领域,确保分布式与单节点输出一致\n- 教学演示: 直观展示流水线并行的工作原理和故障恢复机制\n\n---\n\n关键要点总结\n\n- 流水线并行将模型层分布在多个节点,实现内存效率和扩展性\n- 贪婪解码确保分布式输出与单节点输出逐位一致\n- 实时故障恢复在节点宕机时自动重新分配层并继续推理\n- SSE流式API支持实时token输出和拓扑变更通知\n- Prometheus指标便于监控吞吐量和延迟\n- 模块化架构便于扩展至其他模型架构\n