Skip to content

Commit e110ac7

Browse files
authored
Merge pull request #116 from XinYao1994/main
[Enhancement Request] Integrate Plato into Sedna as a backend for supporting federated learning - Phase one
2 parents e61f6f8 + 2488b3f commit e110ac7

File tree

22 files changed

+1017
-14
lines changed

22 files changed

+1017
-14
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
apiVersion: sedna.io/v1alpha1
2+
kind: FederatedLearningJob
3+
metadata:
4+
name: yolo-v5
5+
spec:
6+
pretrainedModel: # option
7+
name: "yolo-v5-pretrained-model"
8+
transmitter: # option
9+
ws: { } # option, by default
10+
s3: # option, but at least one
11+
aggDataPath: "s3://sedna/fl/aggregation_data"
12+
credentialName: mysecret
13+
aggregationWorker:
14+
model:
15+
name: "yolo-v5-model"
16+
template:
17+
spec:
18+
nodeName: "sedna-control-plane"
19+
containers:
20+
- image: kubeedge/sedna-example-federated-learning-mistnet-yolo-aggregator:v0.4.0
21+
name: agg-worker
22+
imagePullPolicy: IfNotPresent
23+
env: # user defined environments
24+
- name: "cut_layer"
25+
value: "4"
26+
- name: "epsilon"
27+
value: "100"
28+
- name: "aggregation_algorithm"
29+
value: "mistnet"
30+
- name: "batch_size"
31+
value: "32"
32+
resources: # user defined resources
33+
limits:
34+
memory: 8Gi
35+
trainingWorkers:
36+
- dataset:
37+
name: "coco-dataset-1"
38+
template:
39+
spec:
40+
nodeName: "edge-node"
41+
containers:
42+
- image: kubeedge/sedna-example-federated-learning-mistnet-yolo-client:v0.4.0
43+
name: train-worker
44+
imagePullPolicy: IfNotPresent
45+
args: [ "-i", "1" ]
46+
env: # user defined environments
47+
- name: "cut_layer"
48+
value: "4"
49+
- name: "epsilon"
50+
value: "100"
51+
- name: "aggregation_algorithm"
52+
value: "mistnet"
53+
- name: "batch_size"
54+
value: "32"
55+
- name: "learning_rate"
56+
value: "0.001"
57+
- name: "epochs"
58+
value: "1"
59+
resources: # user defined resources
60+
limits:
61+
memory: 2Gi
62+
- dataset:
63+
name: "coco-dataset-2"
64+
template:
65+
spec:
66+
nodeName: "edge-node"
67+
containers:
68+
- image: kubeedge/sedna-example-federated-learning-mistnet-yolo-client:v0.4.0
69+
name: train-worker
70+
imagePullPolicy: IfNotPresent
71+
args: [ "-i", "2" ]
72+
env: # user defined environments
73+
- name: "cut_layer"
74+
value: "4"
75+
- name: "epsilon"
76+
value: "100"
77+
- name: "aggregation_algorithm"
78+
value: "mistnet"
79+
- name: "batch_size"
80+
value: "32"
81+
- name: "learning_rate"
82+
value: "0.001"
83+
- name: "epochs"
84+
value: "1"
85+
resources: # user defined resources
86+
limits:
87+
memory: 2Gi

examples/build_image.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
cd "$(dirname "${BASH_SOURCE[0]}")"
1818

1919
IMAGE_REPO=${IMAGE_REPO:-kubeedge}
20-
IMAGE_TAG=${IMAGE_TAG:-v0.3.0}
20+
IMAGE_TAG=${IMAGE_TAG:-v0.4.0}
2121

2222
EXAMPLE_REPO_PREFIX=${IMAGE_REPO}/sedna-example-
2323

2424
dockerfiles=(
25+
federated-learning-mistnet-yolo-aggregator.Dockerfile
26+
federated-learning-mistnet-yolo-client.Dockerfile
2527
federated-learning-surface-defect-detection-aggregation.Dockerfile
2628
federated-learning-surface-defect-detection-train.Dockerfile
2729
incremental-learning-helmet-detection.Dockerfile
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
FROM tensorflow/tensorflow:1.15.4
2+
3+
RUN apt update \
4+
&& apt install -y libgl1-mesa-glx git
5+
6+
COPY ./lib/requirements.txt /home
7+
8+
RUN python -m pip install --upgrade pip
9+
10+
RUN pip install -r /home/requirements.txt
11+
12+
ENV PYTHONPATH "/home/lib:/home/plato:/home/plato/packages/yolov5"
13+
14+
COPY ./lib /home/lib
15+
RUN git clone https://github.com/TL-System/plato.git /home/plato
16+
17+
RUN pip install -r /home/plato/requirements.txt
18+
RUN pip install -r /home/plato/packages/yolov5/requirements.txt
19+
20+
WORKDIR /home/work
21+
COPY examples/federated_learning/yolov5_coco128_mistnet /home/work/
22+
23+
CMD ["/bin/sh", "-c", "ulimit -n 50000; python aggregate.py"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
FROM tensorflow/tensorflow:1.15.4
2+
3+
RUN apt update \
4+
&& apt install -y libgl1-mesa-glx git
5+
6+
COPY ./lib/requirements.txt /home
7+
8+
RUN python -m pip install --upgrade pip
9+
10+
RUN pip install -r /home/requirements.txt
11+
12+
ENV PYTHONPATH "/home/lib:/home/plato:/home/plato/packages/yolov5"
13+
14+
COPY ./lib /home/lib
15+
RUN git clone https://github.com/TL-System/plato.git /home/plato
16+
17+
RUN pip install -r /home/plato/requirements.txt
18+
RUN pip install -r /home/plato/packages/yolov5/requirements.txt
19+
20+
WORKDIR /home/work
21+
COPY examples/federated_learning/yolov5_coco128_mistnet /home/work/
22+
23+
ENTRYPOINT ["python", "train.py"]

examples/federated_learning/surface_defect_detection/training_worker/train.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14-
1514
import os
1615

1716
import numpy as np
@@ -74,6 +73,7 @@ def main():
7473
learning_rate=learning_rate,
7574
validation_split=validation_split
7675
)
76+
7777
return train_jobs
7878

7979

0 commit comments

Comments
 (0)