Sedna联合推理、联邦学习控制器优化-v1.1

date
Jan 1, 2025
slug
sedna-ji-fl-controller-optimization-v1.1
status
Published
tags
云原生
KubeEdge
summary
改了一些代码,但应该不会提到pr中。
type
Post
在联邦学习实现修改自定义资源更改配置(kubectl edit FederatedLearningJob **)的时候,更新逻辑是pod没办法像修改联合推理自定义资源的deployment那样直接更新配置参数(可以看这个issue这个博客),所以只能把pod全部删除了(因为没办法获取到单独的pod),利用新的配置再创建pod。在联合推理控制器的做法中,因为创建deployment时,名字是固定的,所以可以通过
来获取特定的deployment直接修改参数并更新。但是目前生成pod取名后面有5个随机字符,没有办法做到通过名字来获取pod ,而且我还发现,在控制器中对pod的取名方法是没有起作用的(以下代码)
这行代码其实没起作用,所以其实是kubernetes给pod自动起的名字。
然后寻找原因,原因是在pkg/globalmanager/runtime/worker.go 中的injectWorkerParam 函数中缺少对pod.ObjectMeta.Name 变量的赋值,我觉得应该这样赋值
然后就可以通过修改"WORKER_NAME" 来确定pod的名字,确定了pod的名字,再确定是修改了自定义资源具体哪个worker下的字段就可以删除单独的pod更新配置,创建出单独的pod了,而不用像之前一样全都删掉。
 
之后唐明老师提到,区别于推理任务,对于联邦学习这种训练任务,其实就相当于kubernetes中Job的概念。因为Job本身就是一次性的任务,所以不如直接禁止修改,如果想要修改参数直接删掉任务重新部署,我觉得说的也很有道理的。因此,再加上我认为pod本身就不支持更新,用这样的方式其实感觉是有点违背kubernetes意图的…所以其实下一个优化目标就是限制对资源的访问,这个还在搜集资料…
 
这个相比开源之夏的办法是一些微小的改动所以是v1.1,接下来因为和v1思路不同所以会是v2。所以这个也不会提pr。
 
 
 

© Shemol 2022 - 2025