Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated Keras and TensorFlow Task Runner and related workspaces. #1174

Merged
merged 57 commits into from
Dec 13, 2024
Merged
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
9dc4dad
keras and tf updated
tanwarsh Nov 26, 2024
9c294e1
Merge branch 'securefederatedai:develop' into keras_tf
tanwarsh Nov 26, 2024
ba9924d
skipped rebuild model for round 0
tanwarsh Nov 27, 2024
5547548
formatting issues fixed
tanwarsh Nov 27, 2024
40a869f
added keras in workflow
tanwarsh Nov 27, 2024
dadedd5
pipeline tensorflowversion check
tanwarsh Nov 27, 2024
3c18818
revert changes
tanwarsh Nov 27, 2024
bd9b6f0
revert changes
tanwarsh Nov 27, 2024
b895e18
removed extra line
tanwarsh Nov 27, 2024
b815535
workspace changes
tanwarsh Nov 27, 2024
fde7a56
removed python 3.8 for taskrunner workflow
tanwarsh Nov 27, 2024
93a6674
updated python version to 3.9
tanwarsh Nov 27, 2024
4e96c92
updated python version to 3.9
tanwarsh Nov 27, 2024
bf950ac
saved model name changes in tests
tanwarsh Nov 27, 2024
78093fc
code change to save model
tanwarsh Nov 27, 2024
a00ade2
keras_nlp workspace changes
tanwarsh Nov 27, 2024
40f465d
keras and tf updated
tanwarsh Nov 26, 2024
e493c3f
skipped rebuild model for round 0
tanwarsh Nov 27, 2024
da97430
formatting issues fixed
tanwarsh Nov 27, 2024
33b6bd2
added keras in workflow
tanwarsh Nov 27, 2024
26fdaaa
pipeline tensorflowversion check
tanwarsh Nov 27, 2024
13761c0
revert changes
tanwarsh Nov 27, 2024
89bcc58
revert changes
tanwarsh Nov 27, 2024
59996a7
removed extra line
tanwarsh Nov 27, 2024
3b0edc2
workspace changes
tanwarsh Nov 27, 2024
76653d6
removed python 3.8 for taskrunner workflow
tanwarsh Nov 27, 2024
7cfda5a
updated python version to 3.9
tanwarsh Nov 27, 2024
b59d186
updated python version to 3.9
tanwarsh Nov 27, 2024
a5c8670
saved model name changes in tests
tanwarsh Nov 27, 2024
b50760e
code change to save model
tanwarsh Nov 27, 2024
692b2c6
keras_nlp workspace changes
tanwarsh Nov 27, 2024
5e7eac6
Merge branch 'keras_tf' of https://github.com/tanwarsh/openfl into ke…
tanwarsh Nov 29, 2024
2f94d92
removed duplicate code
tanwarsh Dec 2, 2024
8c3d507
Merge branch 'develop' into keras_tf
tanwarsh Dec 2, 2024
4f81bb4
removed oython 3.8 from taskrunnner e2e workflow
tanwarsh Dec 2, 2024
6eef7c7
code changes as per comments
tanwarsh Dec 3, 2024
1e06db5
Merge branch 'develop' into keras_tf
tanwarsh Dec 3, 2024
b1aeef1
fix for formatting issue
tanwarsh Dec 3, 2024
6568333
keras cnn with compression code changes
tanwarsh Dec 3, 2024
85d1276
Merge branch 'develop' into keras_tf
tanwarsh Dec 4, 2024
25f091d
remove version changes
tanwarsh Dec 5, 2024
375a4d8
revert version changes
tanwarsh Dec 5, 2024
52d6de4
Merge branch 'develop' into keras_tf
tanwarsh Dec 5, 2024
38009f7
Merge branch 'develop' into keras_tf
tanwarsh Dec 6, 2024
919185c
Merge branch 'develop' into keras_tf
tanwarsh Dec 9, 2024
b710640
Merge branch 'develop' into keras_tf
tanwarsh Dec 10, 2024
3e77a2f
Merge branch 'develop' into keras_tf
tanwarsh Dec 11, 2024
b14d914
keep keras runner for tensorflow workspaces
tanwarsh Dec 11, 2024
94f2bc7
formatting issue
tanwarsh Dec 11, 2024
58363a4
removed keras as ke
tanwarsh Dec 11, 2024
7e379b3
comment changes
tanwarsh Dec 11, 2024
6461a8a
code changes
tanwarsh Dec 11, 2024
35d8106
Merge branch 'develop' into keras_tf
tanwarsh Dec 12, 2024
08e94ff
Merge branch 'develop' into keras_tf
tanwarsh Dec 12, 2024
8b5306b
code changes
tanwarsh Dec 12, 2024
3ad6624
code changes
tanwarsh Dec 13, 2024
d3c73d7
code changes
tanwarsh Dec 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions openfl-workspace/keras_cnn_mnist/plan/plan.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Copyright (C) 2020-2021 Intel Corporation
# Copyright (C) 2020-2024 Intel Corporation
# Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you.

aggregator :
defaults : plan/defaults/aggregator.yaml
template : openfl.component.Aggregator
settings :
init_state_path : save/keras_cnn_mnist_init.pbuf
best_state_path : save/keras_cnn_mnist_best.pbuf
last_state_path : save/keras_cnn_mnist_last.pbuf
init_state_path : save/init.pbuf
best_state_path : save/best.pbuf
last_state_path : save/last.pbuf
rounds_to_train : 10
tanwarsh marked this conversation as resolved.
Show resolved Hide resolved

collaborator :
Expand All @@ -19,15 +19,15 @@ collaborator :

data_loader :
defaults : plan/defaults/data_loader.yaml
template : src.tfmnist_inmemory.TensorFlowMNISTInMemory
template : src.dataloader.TensorFlowMNISTInMemory
settings :
collaborator_count : 2
data_group_name : mnist
batch_size : 256

task_runner :
defaults : plan/defaults/task_runner.yaml
template : src.keras_cnn.KerasCNN
template : src.taskrunner.KerasCNN

network :
defaults : plan/defaults/network.yaml
Expand All @@ -39,4 +39,4 @@ tasks :
defaults : plan/defaults/tasks_keras.yaml

compression_pipeline :
defaults : plan/defaults/compression_pipeline.yaml
defaults : plan/defaults/compression_pipeline.yaml
5 changes: 3 additions & 2 deletions openfl-workspace/keras_cnn_mnist/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
numpy==1.23.5
tensorflow==2.13
keras==3.6.0
tensorflow==2.18.0

tanwarsh marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@

"""You may copy this file as the starting point of your own model."""

import tensorflow.keras as ke
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Flatten
from keras.models import Sequential
kta-intel marked this conversation as resolved.
Show resolved Hide resolved
from keras.layers import Conv2D
from keras.layers import Dense
from keras.layers import Flatten

from openfl.federated import KerasTaskRunner
from openfl.federated import KerasTensorFlowTaskRunner


class KerasCNN(KerasTaskRunner):
class KerasCNN(KerasTensorFlowTaskRunner):
"""A basic convolutional neural network model."""

def __init__(self, **kwargs):
Expand Down Expand Up @@ -50,7 +49,7 @@ def build_model(self,
num_classes (int): The number of classes of the dataset

Returns:
tensorflow.python.keras.engine.sequential.Sequential: The model defined in Keras
keras.models.Sequential: The model defined in Keras

"""
model = Sequential()
Expand All @@ -72,14 +71,8 @@ def build_model(self,

model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=ke.losses.categorical_crossentropy,
optimizer=ke.optimizers.legacy.Adam(),
metrics=['accuracy'])

# initialize the optimizer variables
opt_vars = model.optimizer.variables()

for v in opt_vars:
v.initializer.run(session=self.sess)
model.compile(loss="categorical_crossentropy",
optimizer="adam",
metrics=["accuracy"])

return model
10 changes: 5 additions & 5 deletions openfl-workspace/keras_cnn_with_compression/plan/plan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ aggregator :
defaults : plan/defaults/aggregator.yaml
template : openfl.component.Aggregator
settings :
init_state_path : save/keras_cnn_mnist_init.pbuf
best_state_path : save/keras_cnn_mnist_best.pbuf
last_state_path : save/keras_cnn_mnist_last.pbuf
init_state_path : save/init.pbuf
best_state_path : save/best.pbuf
last_state_path : save/last.pbuf
db_store_rounds: 2
rounds_to_train : 10

Expand All @@ -21,15 +21,15 @@ collaborator :

data_loader :
defaults : plan/defaults/data_loader.yaml
template : src.tfmnist_inmemory.TensorFlowMNISTInMemory
template : src.dataloader.TensorFlowMNISTInMemory
settings :
collaborator_count : 2
data_group_name : mnist
batch_size : 256

task_runner :
defaults : plan/defaults/task_runner.yaml
template : src.keras_cnn.KerasCNN
template : src.taskrunner.KerasCNN

network :
defaults : plan/defaults/network.yaml
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
tensorflow==2.13
keras==3.6.0
tensorflow==2.18.0
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@

"""You may copy this file as the starting point of your own model."""

import tensorflow.keras as ke
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Flatten
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import Dense
from keras.layers import Flatten

from openfl.federated import KerasTaskRunner
from openfl.federated import KerasTensorFlowTaskRunner


class KerasCNN(KerasTaskRunner):
class KerasCNN(KerasTensorFlowTaskRunner):
"""A basic convolutional neural network model."""

def __init__(self, **kwargs):
Expand Down Expand Up @@ -72,14 +71,8 @@ def build_model(self,

model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=ke.losses.categorical_crossentropy,
optimizer=ke.optimizers.legacy.Adam(),
metrics=['accuracy'])

# initialize the optimizer variables
opt_vars = model.optimizer.variables()

for v in opt_vars:
v.initializer.run(session=self.sess)
model.compile(loss="categorical_crossentropy",
optimizer="adam",
metrics=["accuracy"])

return model
10 changes: 5 additions & 5 deletions openfl-workspace/keras_nlp/plan/plan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ aggregator :
defaults : plan/defaults/aggregator.yaml
template : openfl.component.Aggregator
settings :
init_state_path : save/keras_nlp_init.pbuf
best_state_path : save/keras_nlp_best.pbuf
last_state_path : save/keras_nlp_last.pbuf
init_state_path : save/init.pbuf
best_state_path : save/best.pbuf
last_state_path : save/last.pbuf
rounds_to_train : 10

collaborator :
Expand All @@ -21,7 +21,7 @@ collaborator :

data_loader :
defaults : plan/defaults/data_loader.yaml
template : src.nlp_dataloader.NLPDataLoader
template : src.dataloader.NLPDataLoader
settings :
collaborator_count : 2
batch_size : 64
Expand All @@ -30,7 +30,7 @@ data_loader :

task_runner :
defaults : plan/defaults/task_runner.yaml
template : src.nlp_taskrunner.KerasNLP
template : src.taskrunner.KerasNLP
settings :
latent_dim : 256

Expand Down
3 changes: 2 additions & 1 deletion openfl-workspace/keras_nlp/requirements.txt
tanwarsh marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
tensorflow==2.13
keras==3.6.0
tensorflow==2.18.0
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
license agreement between Intel Corporation and you.
"""
from logging import getLogger
from typing import Iterator
from typing import List
from typing import Optional
from typing import Tuple
from typing import Union
Expand Down Expand Up @@ -57,7 +55,7 @@ def get_feature_shape(self) -> Tuple[int, ...]:
"""Get the shape of an example feature array."""
return self.X_train[0].shape

def get_train_loader(self, batch_size: Optional[int] = None) -> Iterator[List[np.ndarray]]:
def get_train_loader(self, batch_size: Optional[int] = None):
"""
Get training data loader.

Expand All @@ -68,7 +66,7 @@ def get_train_loader(self, batch_size: Optional[int] = None) -> Iterator[List[np
return self._get_batch_generator(X1=self.X_train[0], X2=self.X_train[1],
y=self.y_train, batch_size=batch_size)

def get_valid_loader(self, batch_size: Optional[int] = None) -> Iterator[List[np.ndarray]]:
def get_valid_loader(self, batch_size: Optional[int] = None):
tanwarsh marked this conversation as resolved.
Show resolved Hide resolved
"""
Get validation data loader.

Expand Down Expand Up @@ -100,7 +98,7 @@ def get_valid_data_size(self) -> int:
def _batch_generator(X1: np.ndarray, X2: np.ndarray,
y: np.ndarray, idxs: np.ndarray,
batch_size: int,
num_batches: int) -> Iterator[List[np.ndarray]]:
num_batches: int):
"""
Generate batch of data.

Expand All @@ -116,11 +114,11 @@ def _batch_generator(X1: np.ndarray, X2: np.ndarray,
for i in range(num_batches):
a = i * batch_size
b = a + batch_size
yield [X1[idxs[a:b]], X2[idxs[a:b]]], y[idxs[a:b]]
yield (X1[idxs[a:b]], X2[idxs[a:b]]), y[idxs[a:b]]

def _get_batch_generator(self, X1: np.ndarray, X2: np.ndarray,
y: np.ndarray,
batch_size: Union[int, None]) -> Iterator[List[np.ndarray]]:
batch_size: Union[int, None]):
"""
Return the dataset generator.

Expand Down
73 changes: 0 additions & 73 deletions openfl-workspace/keras_nlp/src/nlp_taskrunner.py

This file was deleted.

Loading
Loading