第一部分:使用deepseek
使用deepseek获得下面的流程图代码(GraphvizOnline形式):
digraph G {
rankdir=LR;
node [shape=box, style=rounded, fontname="Arial"];A [label="开始"];
B [label="初始化配置"];
C [label="加载/生成数据索引"];
D [label="创建参数服务器"];
E [label="创建数据工作节点"];
F [label="进入全局训练循环"];
G [label="是否达到总epoch数?", shape=diamond];
H [label="随机选择客户端"];
I [label="遍历选中客户端"];
J [label="客户端下载全局模型"];
K [label="客户端本地训练"];
L [label="客户端上传参数更新"];
M [label="所有客户端完成上传?", shape=diamond];
N [label="服务器聚合参数"];
O [label="更新全局模型"];
P [label="是否评估轮次?", shape=diamond];
Q [label="在训练客户端评估"];
R [label="在新客户端评估"];
S [label="记录评估结果"];
T [label="保存最终结果"];
U [label="结束"];A -> B -> C;
C -> D;
C -> E;
D -> F;
F -> G [label="否"];
G -> H;
H -> I;
I -> J -> K -> L -> I;
I -> M [label="是"];
M -> N -> O -> P;
P -> Q [label="是"];
Q -> R -> S -> F;
P -> F [label="否"];
G -> T [label="是"];
T -> U;subgraph cluster_client_training {
label="客户端本地训练过程";
K1 [label="加载本地数据集"];
K2 [label="初始化本地模型参数"];
K3 [label="多轮本地迭代"];
K4 [label="前向传播计算损失"];
K5 [label="反向传播更新梯度"];
K6 [label="参数更新"];
K7 [label="计算参数变化量"];
K -> K1 -> K2 -> K3;
K3 -> K4 -> K5 -> K6 -> K3;
K3 -> K7;
}subgraph cluster_server_aggregation {
label="服务器聚合过程";
N1 [label="初始化空权重字典"];
N2 [label="遍历所有客户端更新"];
N3 [label="加权平均计算"];
N4 [label="合并全局基准参数"];
N5 [label="更新全局模型"];
N -> N1 -> N2 -> N3 -> N4 -> N5;
}
}
第二部分:使用GraphvizOnline
粘贴之后效果如下: