graph pp_topology { rankdir=BT; subgraph cluster_node0 { style=filled; color=lightgrey; node [style=filled, color=white, shape=box]; label = "机器0" pserver0 [label="Parameter \n Server 0"] trainer0 [label="Trainer 0"] } subgraph cluster_node1 { style=filled; color=lightgrey; node [style=filled, color=white, shape=box]; label = "机器1" pserver1 [label="Parameter \n Server 1"] trainer1 [label="Trainer 1"] } subgraph cluster_node2 { style=filled; color=lightgrey; node [style=filled, color=white, shape=box]; label = "机器2" pserver2 [label="Parameter \n Server 2"] trainer2 [label="Trainer 2"] } subgraph cluster_node3 { style=filled; color=lightgrey; node [style=filled, color=white, shape=box]; label = "机器3" pserver3 [label="Parameter \n Server 3"] trainer3 [label="Trainer 3"] } data [label="数据", shape=hexagon] trainer0 -- pserver0 trainer0 -- pserver1 trainer0 -- pserver2 trainer0 -- pserver3 trainer1 -- pserver0 trainer1 -- pserver1 trainer1 -- pserver2 trainer1 -- pserver3 trainer2 -- pserver0 trainer2 -- pserver1 trainer2 -- pserver2 trainer2 -- pserver3 trainer3 -- pserver0 trainer3 -- pserver1 trainer3 -- pserver2 trainer3 -- pserver3 data -- trainer0 data -- trainer1 data -- trainer2 data -- trainer3 }