Microsoft FrameworkController 使用手册详解
2025-06-19 23:00:19作者:秋泉律Samson
概述
Microsoft FrameworkController 是一个 Kubernetes 控制器,专门用于管理各种计算框架(如 TensorFlow、PyTorch 等)的工作负载。它通过自定义资源定义(CRD)的方式扩展了 Kubernetes API,为用户提供了更高级别的抽象来管理分布式训练作业。
核心概念
框架执行类型(ExecutionType)
FrameworkController 提供了三种执行类型来控制框架的生命周期:
-
Create:仅创建框架对象但不启动
- 适用于需要依赖框架对象执行预处理操作的场景
- 框架会保持在 AttemptCreationPending 状态
-
Start:启动已创建的框架
- 将框架从 Create 状态转为运行状态
-
Stop:停止运行中的框架
- 框架会开始完成流程,但对象不会被删除
这种设计允许用户在框架启动前后执行必要的准备工作,提高了灵活性。
框架互操作性
FrameworkController 支持多种客户端交互方式:
- kubectl:通过命令行工具直接操作
- Kubernetes 客户端库:支持各种编程语言
- HTTP 客户端:直接调用 REST API
支持的 API 操作包括:
- 框架的创建、删除、查询、列表、监视
- 框架的启动、停止、扩展(增加/删除任务角色)
- ConfigMap 和 Pod 的查询操作
关键功能详解
框架扩展(ScaleUp/ScaleDown)
FrameworkController 提供了灵活的框架扩展能力:
-
添加任务角色:
- 通过 PATCH 操作添加新的任务角色
- 需要提供完整的 TaskRoleSpec 配置
-
删除任务角色:
- 建议先删除角色中的所有任务
- 删除操作会触发 Pod 的优雅终止
-
调整任务数量:
- 可以动态修改某个任务角色的任务数量
- 通常需要同步调整完成策略
安全保证:
- 扩展操作是原子性的
- 控制器会确保扩展过程中的一致性
- 支持优雅终止,避免数据丢失
大规模框架支持
FrameworkController 针对大规模框架进行了优化:
- 高效的任务调度机制
- 优化的资源监控
- 支持数千个任务的并行管理
- 智能的重试和恢复策略
失败处理机制
-
Pod 失败分类:
- 可重试失败
- 不可重试失败
- 系统错误
-
预定义完成代码:
- 标准化错误代码体系
- 便于自动化处理
-
重试策略:
- 可配置最大重试次数
- 支持智能重试逻辑
最佳实践
框架生命周期管理
- 预处理示例:
apiVersion: frameworkcontroller.microsoft.com/v1
kind: Framework
metadata:
name: prestart
spec:
executionType: Create
taskRoles:
- name: worker
taskNumber: 4
task:
pod:
spec:
serviceAccountName: custom-sa
- 后处理示例:
apiVersion: frameworkcontroller.microsoft.com/v1
kind: Framework
metadata:
name: poststop
spec:
executionType: Stop
删除框架注意事项
- 始终使用 Foreground 删除策略:
{
"propagationPolicy": "Foreground"
}
- 确保完成所有后处理操作后再删除框架
- 监控删除过程,确保资源完全释放
高级功能
控制器扩展
-
FrameworkBarrier:
- 实现任务间的同步屏障
- 确保所有任务达到特定状态后再继续
-
HiveDScheduler:
- 高级调度器扩展
- 支持复杂的任务调度策略
状态机设计
FrameworkController 实现了精细的状态机:
- 框架级别状态机
- 任务级别状态机
- 确保状态转换的原子性和一致性
总结
Microsoft FrameworkController 为 Kubernetes 上的计算框架管理提供了强大的解决方案。通过灵活的 API 设计、可靠的扩展机制和智能的错误处理,它大大简化了分布式训练作业的管理复杂度。无论是小规模实验还是生产级的大规模训练,FrameworkController 都能提供稳定高效的支持。
掌握本文介绍的核心概念和最佳实践,您将能够充分发挥 FrameworkController 的潜力,构建更健壮的机器学习平台。
登录后查看全文
热门项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0150- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111
项目优选
收起
暂无描述
Dockerfile
731
4.74 K
Ascend Extension for PyTorch
Python
610
794
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1 K
1.01 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
433
392
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
145
237
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.16 K
150
暂无简介
Dart
983
252
Oohos_react_native
React Native鸿蒙化仓库
C++
348
401
昇腾LLM分布式训练框架
Python
166
198
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.67 K
987