From 9182bd83e552269eec989651a7a13ba7446d9eee Mon Sep 17 00:00:00 2001 From: Vinh Pham Date: Fri, 1 Aug 2025 15:53:59 +0700 Subject: [PATCH 1/7] initial commit: need to modify configs and process imbalance data --- requirements.txt | 8 ++ src/datasets/news20.py | 109 ++++++++++++++++++++ src/models/distilbart.py | 80 +++++++++++++++ train_distilbart_20news.py | 201 +++++++++++++++++++++++++++++++++++++ 4 files changed, 398 insertions(+) create mode 100644 requirements.txt create mode 100644 src/datasets/news20.py create mode 100644 src/models/distilbart.py create mode 100644 train_distilbart_20news.py diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..eeef431 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +torch>=1.9.0 +transformers>=4.11.0 +numpy>=1.20.0 +scikit-learn>=0.24.2 +tqdm>=4.62.0 +pandas>=1.3.0 +matplotlib>=3.4.0 +tensorboard>=2.6.0 diff --git a/src/datasets/news20.py b/src/datasets/news20.py new file mode 100644 index 0000000..cae6998 --- /dev/null +++ b/src/datasets/news20.py @@ -0,0 +1,109 @@ +import os +import numpy as np +import torch +from torch.utils.data import Dataset, DataLoader, Subset +from sklearn.datasets import fetch_20newsgroups +from sklearn.model_selection import train_test_split +from sklearn.feature_extraction.text import TfidfVectorizer +from transformers import DistilBertTokenizerFast + +class News20Dataset(Dataset): + def __init__(self, texts, labels, tokenizer, max_length=128): + self.texts = texts + self.labels = labels + self.tokenizer = tokenizer + self.max_length = max_length + + def __len__(self): + return len(self.texts) + + def __getitem__(self, idx): + text = str(self.texts[idx]) + label = self.labels[idx] + + encoding = self.tokenizer( + text, + max_length=self.max_length, + padding='max_length', + truncation=True, + return_tensors='pt' + ) + + return { + 'input_ids': encoding['input_ids'].flatten(), + 'attention_mask': encoding['attention_mask'].flatten(), + 'labels': torch.tensor(label, dtype=torch.long) + } + +def load_20newsgroups(data_dir, num_clients=10, test_size=0.2, random_state=42): + """Load 20 Newsgroups dataset and split it into multiple clients. + + Args: + data_dir (str): Directory to store/load the dataset + num_clients (int): Number of clients to split the data into + test_size (float): Fraction of data to use for testing + random_state (int): Random seed for reproducibility + + Returns: + tuple: (train_datasets, test_datasets, num_classes, tokenizer) + """ + # Create directory if it doesn't exist + os.makedirs(data_dir, exist_ok=True) + + # Load 20 Newsgroups dataset + newsgroups_train = fetch_20newsgroups(subset='train', remove=('headers', 'footers', 'quotes')) + newsgroups_test = fetch_20newsgroups(subset='test', remove=('headers', 'footers', 'quotes')) + + # Combine train and test for custom split + all_texts = np.concatenate([newsgroups_train.data, newsgroups_test.data]) + all_labels = np.concatenate([newsgroups_train.target, newsgroups_test.target]) + + # Split into train and test + train_texts, test_texts, train_labels, test_labels = train_test_split( + all_texts, all_labels, test_size=test_size, random_state=random_state, stratify=all_labels + ) + + # Initialize tokenizer + tokenizer = DistilBertTokenizerFast.from_pretrained('distilbert-base-uncased') + + # Create datasets + train_dataset = News20Dataset(train_texts, train_labels, tokenizer) + test_dataset = News20Dataset(test_texts, test_labels, tokenizer) + + # Split into clients using a simple approach (for demonstration) + # In a real federated learning scenario, you might want to use more sophisticated splitting + def split_into_clients(dataset, num_clients, random_state=None): + if random_state is not None: + np.random.seed(random_state) + + indices = np.random.permutation(len(dataset)) + client_indices = np.array_split(indices, num_clients) + + client_datasets = [] + for client_idx in range(num_clients): + client_dataset = Subset(dataset, client_indices[client_idx]) + client_datasets.append(client_dataset) + + return client_datasets + + # Split training and test data among clients + train_datasets = split_into_clients(train_dataset, num_clients, random_state) + test_datasets = split_into_clients(test_dataset, num_clients, random_state) + + # Get number of classes + num_classes = len(np.unique(all_labels)) + + return train_datasets, test_datasets, num_classes, tokenizer + +if __name__ == "__main__": + # Example usage + data_dir = "./data/20newsgroups" + train_datasets, test_datasets, num_classes, tokenizer = load_20newsgroups( + data_dir, num_clients=10, test_size=0.2, random_state=42 + ) + + print(f"Number of classes: {num_classes}") + print(f"Number of training clients: {len(train_datasets)}") + print(f"Number of test clients: {len(test_datasets)}") + print(f"Sample training data size for client 0: {len(train_datasets[0])}") + print(f"Sample test data size for client 0: {len(test_datasets[0])}") diff --git a/src/models/distilbart.py b/src/models/distilbart.py new file mode 100644 index 0000000..6d69994 --- /dev/null +++ b/src/models/distilbart.py @@ -0,0 +1,80 @@ +import torch +from transformers import DistilBertModel, DistilBertConfig, DistilBertForSequenceClassification + +class DistilBART(torch.nn.Module): + def __init__(self, num_classes, num_embeddings, embedding_size, hidden_size, dropout, use_pt_model, is_seq2seq=False): + super(DistilBART, self).__init__() + self.is_seq2seq = is_seq2seq + + if use_pt_model: # fine-tuning + self.model = DistilBertForSequenceClassification.from_pretrained( + 'distilbert-base-uncased', + num_labels=num_classes, + output_attentions=False, + output_hidden_states=False, + ) + self.num_embeddings = self.model.config.vocab_size + self.embedding_size = self.model.config.dim + self.num_hiddens = self.model.config.hidden_size + self.dropout = self.model.config.dropout + else: # from scratch + self.num_classes = num_classes + self.num_embeddings = num_embeddings + self.embedding_size = embedding_size + self.num_hiddens = hidden_size + self.dropout = dropout + + config = DistilBertConfig( + vocab_size=self.num_embeddings, + dim=self.embedding_size, + hidden_dim=4 * self.embedding_size, # As per original BERT + n_layers=6, # DistilBERT has 6 layers vs BERT's 12 + n_heads=8, # 8 attention heads + max_position_embeddings=512, + attention_dropout=self.dropout, + dropout=self.dropout, + num_labels=self.num_classes + ) + self.model = DistilBertForSequenceClassification(config) + + def forward(self, input_ids, attention_mask=None, labels=None): + outputs = self.model( + input_ids=input_ids, + attention_mask=attention_mask, + labels=labels + ) + + return outputs # Returns (loss, logits) if labels provided, else just logits + + def get_embeddings(self): + """Get the word embedding layer.""" + return self.model.distilbert.embeddings.word_embeddings + + def get_classifier(self): + """Get the classifier head.""" + return self.model.classifier + + def save_pretrained(self, save_directory): + """Save the model and tokenizer to a directory.""" + self.model.save_pretrained(save_directory) + + @classmethod + def from_pretrained(cls, pretrained_model_name_or_path, **kwargs): + """Load a pretrained model from a directory or HF model hub.""" + model = DistilBertForSequenceClassification.from_pretrained( + pretrained_model_name_or_path, + **kwargs + ) + + # Create a new instance and replace its model with the loaded one + instance = cls( + num_classes=model.num_labels, + num_embeddings=model.config.vocab_size, + embedding_size=model.config.dim, + hidden_size=model.config.hidden_size, + dropout=model.config.dropout, + use_pt_model=True, + is_seq2seq=False + ) + instance.model = model + return instance diff --git a/train_distilbart_20news.py b/train_distilbart_20news.py new file mode 100644 index 0000000..f79dcb7 --- /dev/null +++ b/train_distilbart_20news.py @@ -0,0 +1,201 @@ +import os +import sys +import torch +import numpy as np +from torch.utils.data import DataLoader +from torch.optim import AdamW +from torch.nn import CrossEntropyLoss +from tqdm import tqdm + +# Add parent directory to path +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from src.models.distilbart import DistilBART +from src.datasets.news20 import load_20newsgroups + +def train(): + # Configuration + num_clients = 10 + num_rounds = 2 + epochs_per_client = 3 + batch_size = 16 + learning_rate = 2e-5 + max_seq_length = 128 + data_dir = "./data/20newsgroups" + model_save_path = "./saved_models/distilbart_20news" + + # Set device + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + + # Load data + print("Loading 20 Newsgroups dataset...") + train_datasets, test_datasets, num_classes, tokenizer = load_20newsgroups( + data_dir, + num_clients=num_clients, + test_size=0.2, + random_state=42 + ) + + # Initialize global model + print("Initializing DistilBART model...") + model = DistilBART( + num_classes=num_classes, + num_embeddings=tokenizer.vocab_size, + embedding_size=768, # DistilBERT base dimension + hidden_size=768, + dropout=0.1, + use_pt_model=True, # Use pre-trained weights + is_seq2seq=False + ).to(device) + + # Define loss function and optimizer + criterion = CrossEntropyLoss() + + # Federated training loop + print("Starting federated training...") + for round_num in range(1, num_rounds + 1): + print(f"\nRound {round_num}/{num_rounds}") + + # Randomly select clients for this round + selected_clients = np.random.choice( + num_clients, + size=max(1, int(num_clients * 0.5)), # 50% participation rate + replace=False + ) + + # Client update phase + client_models = [] + client_sizes = [] + + for client_idx in selected_clients: + print(f"\nTraining client {client_idx}...") + + # Create local model copy + local_model = DistilBART( + num_classes=num_classes, + num_embeddings=tokenizer.vocab_size, + embedding_size=768, + hidden_size=768, + dropout=0.1, + use_pt_model=True, + is_seq2seq=False + ).to(device) + local_model.load_state_dict(model.state_dict()) + + # Get client data + train_dataset = train_datasets[client_idx] + train_loader = DataLoader( + train_dataset, + batch_size=batch_size, + shuffle=True, + num_workers=4, + pin_memory=True + ) + + # Local training + optimizer = AdamW(local_model.parameters(), lr=learning_rate) + local_model.train() + + for epoch in range(epochs_per_client): + total_loss = 0 + correct = 0 + total = 0 + + for batch in tqdm(train_loader, desc=f"Epoch {epoch+1}/{epochs_per_client}"): + input_ids = batch['input_ids'].to(device) + attention_mask = batch['attention_mask'].to(device) + labels = batch['labels'].to(device) + + # Forward pass + outputs = local_model( + input_ids=input_ids, + attention_mask=attention_mask, + labels=labels + ) + + loss = outputs.loss + logits = outputs.logits + + # Backward pass and optimize + optimizer.zero_grad() + loss.backward() + optimizer.step() + + # Calculate metrics + total_loss += loss.item() + _, predicted = torch.max(logits, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + # Print epoch statistics + avg_loss = total_loss / len(train_loader) + accuracy = 100 * correct / total + print(f"Client {client_idx} - Epoch {epoch+1}: Loss: {avg_loss:.4f}, Acc: {accuracy:.2f}%") + + # Store updated model and data size + client_models.append(local_model.state_dict()) + client_sizes.append(len(train_dataset)) + + # Aggregate model updates (Federated Averaging) + print("\nAggregating model updates...") + global_state = model.state_dict() + total_size = sum(client_sizes) + + # Initialize averaged model parameters + for key in global_state.keys(): + global_state[key] = torch.zeros_like(global_state[key]) + + # Weighted average of client models + for i, client_state in enumerate(client_models): + weight = client_sizes[i] / total_size + global_state[key] += weight * client_state[key] + + # Update global model + model.load_state_dict(global_state) + + # Evaluate global model on test set + print("\nEvaluating global model...") + model.eval() + test_correct = 0 + test_total = 0 + + with torch.no_grad(): + for client_idx in range(min(3, num_clients)): # Evaluate on first 3 clients for efficiency + test_loader = DataLoader( + test_datasets[client_idx], + batch_size=batch_size, + shuffle=False, + num_workers=4, + pin_memory=True + ) + + for batch in test_loader: + input_ids = batch['input_ids'].to(device) + attention_mask = batch['attention_mask'].to(device) + labels = batch['labels'].to(device) + + outputs = model( + input_ids=input_ids, + attention_mask=attention_mask + ) + + _, predicted = torch.max(outputs.logits, 1) + test_total += labels.size(0) + test_correct += (predicted == labels).sum().item() + + test_accuracy = 100 * test_correct / test_total + print(f"Global model test accuracy: {test_accuracy:.2f}%") + + # Save model checkpoint + os.makedirs(model_save_path, exist_ok=True) + torch.save({ + 'round': round_num, + 'model_state_dict': model.state_dict(), + 'test_accuracy': test_accuracy, + }, os.path.join(model_save_path, f'model_round_{round_num}.pt')) + + print(f"Model checkpoint saved to {model_save_path}") + +if __name__ == "__main__": + train() From e66b176f708b7f09a51fe4e52344d16c5c604699 Mon Sep 17 00:00:00 2001 From: Vinh Pham Date: Fri, 1 Aug 2025 17:07:10 +0700 Subject: [PATCH 2/7] Update readme --- README.md | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/README.md b/README.md index ecb52ce..cb2c202 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,100 @@ # Federated Learning in PyTorch + Implementations of various Federated Learning (FL) algorithms in PyTorch, especially for research purposes. +## Federated Text Classification with DistilBART + +This repository contains an implementation of Federated Learning with DistilBART for text classification on the 20 Newsgroups dataset. The implementation includes support for non-IID data distribution across clients using Dirichlet distribution. + +## Features + +- Federated Learning with DistilBART (distilled version of BART) +- Support for 20 Newsgroups text classification (20 classes) +- Non-IID data partitioning using Dirichlet distribution +- Client-side model training with local updates +- Centralized model aggregation (FedAvg) +- Comprehensive evaluation metrics (accuracy, F1, precision, recall) +- Progress tracking with tqdm +- GPU acceleration support + +## Getting Started + +### Prerequisites + +- Python 3.8+ +- PyTorch 1.12.0+ +- Transformers 4.18.0+ +- scikit-learn +- tqdm +- numpy +- pandas +- matplotlib +- tensorboard + +### Installation + +1. Clone the repository: +```bash +git clone https://github.com/yourusername/FED-OPT-BERT.git +cd FED-OPT-BERT +``` + +2. Install the required packages: +```bash +pip install -r requirements.txt +``` + +### Usage + +#### Training + +To train the federated DistilBART model on the 20 Newsgroups dataset: + +```bash +python train_distilbart_20news.py \ + --num_clients 3 \ + --num_rounds 5 \ + --epochs_per_client 1 \ + --batch_size 16 \ + --learning_rate 2e-5 \ + --max_grad_norm 1.0 \ + --data_dir "./data/20news" \ + --model_save_path "./saved_models/distilbart_20news" +``` + +#### Arguments + +- `--num_clients`: Number of clients in federated learning (default: 3) +- `--num_rounds`: Number of federated learning rounds (default: 5) +- `--epochs_per_client`: Number of local training epochs per client (default: 1) +- `--batch_size`: Training batch size (default: 16) +- `--learning_rate`: Learning rate for AdamW optimizer (default: 2e-5) +- `--max_grad_norm`: Maximum gradient norm for gradient clipping (default: 1.0) +- `--data_dir`: Directory to store/load the dataset (default: "./data/20news") +- `--model_save_path`: Path to save the trained model (default: "./saved_models/distilbart_20news") + +## Implementation Details + +### Model Architecture +- Based on DistilBART (distilled version of BART) from Hugging Face +- Custom classification head for 20 Newsgroups classification +- Tokenizer: DistilBERT tokenizer with a maximum sequence length of 128 tokens + +### Training Process +1. The global model is initialized with pre-trained DistilBART weights +2. In each federated round: + - A subset of clients is selected + - Each client trains the model on its local data + - Model updates are sent to the server + - The server aggregates the updates using FedAvg + - The global model is updated with the aggregated weights + +### Evaluation +- Accuracy, Precision, Recall, F1 Score +- Confusion matrix +- Per-class metrics + ## Implementation Details ### Datasets * Supports all image classification datasets in `torchvision.datasets`. @@ -54,6 +147,34 @@ Implementations of various Federated Learning (FL) algorithms in PyTorch, especi ## Example Commands * See shell files prepared in `commands` directory. +## Performance Optimization + +### Class Imbalance +- The 20 Newsgroups dataset has relatively balanced classes +- Consider implementing class weights if needed for specific non-IID scenarios + +### Hyperparameter Tuning +- Experiment with different learning rates and scheduling strategies +- Try different batch sizes based on available GPU memory +- Adjust the number of local epochs and federated rounds + +## Future Work + +- [ ] Implement learning rate scheduling with warmup +- [ ] Add support for more text classification datasets +- [ ] Implement model compression techniques for edge deployment +- [ ] Add support for cross-silo federated learning + +## Acknowledgements + +- [HuggingFace Transformers](https://github.com/huggingface/transformers) +- [PyTorch](https://pytorch.org/) +- [scikit-learn](https://scikit-learn.org/) + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + ## TODO - [ ] Support another model, especially lightweight ones for cross-device FL setting. (e.g., [`EdgeNeXt`](https://github.com/mmaaz60/EdgeNeXt)) - [ ] Support another structured dataset including temporal and tabular data, along with datasets suitable for cross-silo FL setting. (e.g., [`MedMNIST`](https://github.com/MedMNIST/MedMNIST)) From 470bccfdb9a95ba1a25fdfebf6f537f563381ea7 Mon Sep 17 00:00:00 2001 From: Vinh Pham Quang Date: Fri, 1 Aug 2025 18:52:29 +0700 Subject: [PATCH 3/7] Update: metrics for training --- train_distilbart_20news.py | 89 +++++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 11 deletions(-) diff --git a/train_distilbart_20news.py b/train_distilbart_20news.py index f79dcb7..0628149 100644 --- a/train_distilbart_20news.py +++ b/train_distilbart_20news.py @@ -2,10 +2,13 @@ import sys import torch import numpy as np +import pandas as pd +from datetime import datetime from torch.utils.data import DataLoader from torch.optim import AdamW from torch.nn import CrossEntropyLoss from tqdm import tqdm +from sklearn.metrics import precision_recall_fscore_support, accuracy_score # Add parent directory to path sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) @@ -16,14 +19,26 @@ def train(): # Configuration num_clients = 10 - num_rounds = 2 - epochs_per_client = 3 + num_rounds = 22 + epochs_per_client =3 batch_size = 16 learning_rate = 2e-5 max_seq_length = 128 data_dir = "./data/20newsgroups" model_save_path = "./saved_models/distilbart_20news" + # Create results directory + os.makedirs("results", exist_ok=True) + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + results_file = f"results/training_metrics_{timestamp}.csv" + + # Initialize metrics storage + metrics_columns = [ + 'round', 'client_id', 'epoch', 'phase', + 'loss', 'accuracy', 'precision', 'recall', 'f1' + ] + metrics_data = [] + # Set device device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(f"Using device: {device}") @@ -128,10 +143,25 @@ def train(): total += labels.size(0) correct += (predicted == labels).sum().item() - # Print epoch statistics + # Calculate metrics avg_loss = total_loss / len(train_loader) accuracy = 100 * correct / total - print(f"Client {client_idx} - Epoch {epoch+1}: Loss: {avg_loss:.4f}, Acc: {accuracy:.2f}%") + + # Store training metrics + metrics_data.append({ + 'round': round_num, + 'client_id': client_idx, + 'epoch': epoch + 1, + 'phase': 'train', + 'loss': avg_loss, + 'accuracy': accuracy / 100, # Convert to 0-1 range + 'precision': np.nan, # Will be calculated during evaluation + 'recall': np.nan, # Will be calculated during evaluation + 'f1': np.nan # Will be calculated during evaluation + }) + + print(f"Client {client_idx} - Epoch {epoch+1}: " + f"Loss: {avg_loss:.4f}, Acc: {accuracy:.2f}%") # Store updated model and data size client_models.append(local_model.state_dict()) @@ -157,8 +187,11 @@ def train(): # Evaluate global model on test set print("\nEvaluating global model...") model.eval() - test_correct = 0 - test_total = 0 + + # Initialize metrics for validation + all_preds = [] + all_labels = [] + val_loss = 0.0 with torch.no_grad(): for client_idx in range(min(3, num_clients)): # Evaluate on first 3 clients for efficiency @@ -177,15 +210,44 @@ def train(): outputs = model( input_ids=input_ids, - attention_mask=attention_mask + attention_mask=attention_mask, + labels=labels ) + val_loss += outputs.loss.item() _, predicted = torch.max(outputs.logits, 1) - test_total += labels.size(0) - test_correct += (predicted == labels).sum().item() + + all_preds.extend(predicted.cpu().numpy()) + all_labels.extend(labels.cpu().numpy()) + + # Calculate validation metrics + val_loss /= len(all_preds) # Average loss per sample + accuracy = accuracy_score(all_labels, all_preds) + precision, recall, f1, _ = precision_recall_fscore_support( + all_labels, all_preds, average='weighted', zero_division=0 + ) - test_accuracy = 100 * test_correct / test_total - print(f"Global model test accuracy: {test_accuracy:.2f}%") + # Store validation metrics + metrics_data.append({ + 'round': round_num, + 'client_id': -1, # -1 indicates global model evaluation + 'epoch': epochs_per_client, # Last epoch of the round + 'phase': 'validation', + 'loss': val_loss, + 'accuracy': accuracy, + 'precision': precision, + 'recall': recall, + 'f1': f1 + }) + + print(f"Round {round_num} - Validation: " + f"Loss: {val_loss:.4f}, Acc: {accuracy*100:.2f}%, " + f"Precision: {precision:.4f}, Recall: {recall:.4f}, F1: {f1:.4f}") + + # Save metrics to CSV after each round + metrics_df = pd.DataFrame(metrics_data, columns=metrics_columns) + metrics_df.to_csv(results_file, index=False) + print(f"Metrics saved to {results_file}") # Save model checkpoint os.makedirs(model_save_path, exist_ok=True) @@ -196,6 +258,11 @@ def train(): }, os.path.join(model_save_path, f'model_round_{round_num}.pt')) print(f"Model checkpoint saved to {model_save_path}") + + # Final metrics summary + print("\nTraining completed. Final metrics summary:") + metrics_df = pd.read_csv(results_file) + print(metrics_df.groupby(['phase']).mean(numeric_only=True)[['loss', 'accuracy', 'precision', 'recall', 'f1']]) if __name__ == "__main__": train() From 9da27b5d35ad65590f5840281696f7cb8897fd59 Mon Sep 17 00:00:00 2001 From: Vinh Pham Quang Date: Sun, 3 Aug 2025 16:25:30 +0700 Subject: [PATCH 4/7] Update: metrics & WanDB --- train_distilbart_20news.py | 114 +++++++++++++++++++++++++++++++++---- 1 file changed, 102 insertions(+), 12 deletions(-) diff --git a/train_distilbart_20news.py b/train_distilbart_20news.py index 0628149..ed5e99c 100644 --- a/train_distilbart_20news.py +++ b/train_distilbart_20news.py @@ -9,6 +9,7 @@ from torch.nn import CrossEntropyLoss from tqdm import tqdm from sklearn.metrics import precision_recall_fscore_support, accuracy_score +import wandb # Add parent directory to path sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) @@ -18,14 +19,38 @@ def train(): # Configuration - num_clients = 10 - num_rounds = 22 - epochs_per_client =3 - batch_size = 16 - learning_rate = 2e-5 - max_seq_length = 128 - data_dir = "./data/20newsgroups" - model_save_path = "./saved_models/distilbart_20news" + config = { + 'num_clients': 10, + 'num_rounds': 22, + 'epochs_per_client': 1, + 'batch_size': 16, + 'learning_rate': 2e-5, + 'max_seq_length': 128, + 'model_name': 'distilbart-20news', + 'project_name': 'federated-distilbart-20news', + 'data_dir': "./data/20newsgroups", + 'model_save_path': "./saved_models/distilbart_20news" + } + + # Initialize wandb + wandb.init( + project=config['project_name'], + name=f"fed-{datetime.now().strftime('%Y%m%d-%H%M%S')}", + config=config + ) + + # Update config with wandb config (useful for hyperparameter sweeps) + config = wandb.config + + # Unpack config + num_clients = config['num_clients'] + num_rounds = config['num_rounds'] + epochs_per_client = config['epochs_per_client'] + batch_size = config['batch_size'] + learning_rate = config['learning_rate'] + max_seq_length = config['max_seq_length'] + data_dir = config['data_dir'] + model_save_path = config['model_save_path'] # Create results directory os.makedirs("results", exist_ok=True) @@ -147,6 +172,40 @@ def train(): avg_loss = total_loss / len(train_loader) accuracy = 100 * correct / total + # Get predictions and labels for this epoch + all_preds = [] + all_labels = [] + with torch.no_grad(): + for batch in train_loader: + input_ids = batch['input_ids'].to(device) + attention_mask = batch['attention_mask'].to(device) + labels = batch['labels'].to(device) + + outputs = model( + input_ids=input_ids, + attention_mask=attention_mask + ) + _, predicted = torch.max(outputs.logits, 1) + all_preds.extend(predicted.cpu().numpy()) + all_labels.extend(labels.cpu().numpy()) + + # Calculate precision, recall, f1 for training + precision, recall, f1, _ = precision_recall_fscore_support( + all_labels, all_preds, average='weighted', zero_division=0 + ) + + # Log metrics to wandb + wandb.log({ + 'round': round_num, + 'client': client_idx, + 'epoch': epoch + 1, + 'train/loss': avg_loss, + 'train/accuracy': accuracy / 100, + 'train/precision': precision, + 'train/recall': recall, + 'train/f1': f1 + }, step=round_num) + # Store training metrics metrics_data.append({ 'round': round_num, @@ -155,9 +214,9 @@ def train(): 'phase': 'train', 'loss': avg_loss, 'accuracy': accuracy / 100, # Convert to 0-1 range - 'precision': np.nan, # Will be calculated during evaluation - 'recall': np.nan, # Will be calculated during evaluation - 'f1': np.nan # Will be calculated during evaluation + 'precision': precision, + 'recall': recall, + 'f1': f1 }) print(f"Client {client_idx} - Epoch {epoch+1}: " @@ -227,6 +286,16 @@ def train(): all_labels, all_preds, average='weighted', zero_division=0 ) + # Log validation metrics to wandb + wandb.log({ + 'round': round_num, + 'val/loss': val_loss, + 'val/accuracy': accuracy, + 'val/precision': precision, + 'val/recall': recall, + 'val/f1': f1 + }, step=round_num) + # Store validation metrics metrics_data.append({ 'round': round_num, @@ -254,11 +323,32 @@ def train(): torch.save({ 'round': round_num, 'model_state_dict': model.state_dict(), - 'test_accuracy': test_accuracy, + 'accuracy': accuracy, + 'loss': val_loss, + 'f1': f1, + 'precision': precision, + 'recall': recall }, os.path.join(model_save_path, f'model_round_{round_num}.pt')) print(f"Model checkpoint saved to {model_save_path}") + + # Save model checkpoints to wandb + checkpoint_path = os.path.join(model_save_path, f'model_round_{round_num}.pt') + wandb.save(checkpoint_path) + + # Save final metrics to a CSV file + metrics_df = pd.DataFrame(metrics_data) + metrics_file = os.path.join("results", f"training_metrics_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv") + metrics_df.to_csv(metrics_file, index=False) + wandb.save(metrics_file) + # Log the final metrics as a table + metrics_table = wandb.Table(dataframe=metrics_df) + wandb.log({"metrics_table": metrics_table}) + + # Finish the wandb run + wandb.finish() + # Final metrics summary print("\nTraining completed. Final metrics summary:") metrics_df = pd.read_csv(results_file) From 8504946a163075647e693bc304af80a847a7bc12 Mon Sep 17 00:00:00 2001 From: Vinh Pham Quang Date: Mon, 4 Aug 2025 09:47:25 +0700 Subject: [PATCH 5/7] Update training result to README --- README.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cb2c202..a84e8bf 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,10 @@ This repository contains an implementation of Federated Learning with DistilBART - Client-side model training with local updates - Centralized model aggregation (FedAvg) - Comprehensive evaluation metrics (accuracy, F1, precision, recall) -- Progress tracking with tqdm +- Progress tracking with tqdm and Weights & Biases - GPU acceleration support +- Experiment tracking and visualization +- Model checkpointing and versioning ## Getting Started @@ -30,7 +32,7 @@ This repository contains an implementation of Federated Learning with DistilBART - numpy - pandas - matplotlib -- tensorboard +- Weights & Biases (`wandb`) ### Installation @@ -45,6 +47,12 @@ cd FED-OPT-BERT pip install -r requirements.txt ``` +3. Log in to Weights & Biases (if you haven't already): +```bash +wandb login +``` + Follow the instructions to authenticate with your Weights & Biases account. If you don't have an account, you can create one at [wandb.ai](https://wandb.ai). + ### Usage #### Training @@ -74,6 +82,42 @@ python train_distilbart_20news.py \ - `--data_dir`: Directory to store/load the dataset (default: "./data/20news") - `--model_save_path`: Path to save the trained model (default: "./saved_models/distilbart_20news") +## Experiment Tracking with Weights & Biases + +This project uses Weights & Biases (wandb) for experiment tracking, visualization, and model management. Each training run is automatically logged to your wandb account, where you can: + +- Track training and validation metrics in real-time +- Compare different runs and hyperparameters +- Monitor system resource usage (CPU/GPU/memory) +- Save and version model checkpoints +- Visualize model predictions + +### Logged Metrics + +- **Training Metrics** (per client, per epoch): + - Loss + - Accuracy + - Precision (weighted) + - Recall (weighted) + - F1 Score (weighted) + +- **Validation Metrics** (per round): + - Loss + - Accuracy + - Precision (weighted) + - Recall (weighted) + - F1 Score (weighted) + +### Viewing Results + +1. During or after training, visit your [Weights & Biases dashboard](https://wandb.ai/) +2. Select your project (`federated-distilbart-20news` by default) +3. Explore the different tabs: + - **Charts**: Interactive plots of all metrics + - **System**: Resource utilization + - **Models**: Saved model checkpoints + - **Files**: Logs and artifacts + ## Implementation Details ### Model Architecture @@ -94,6 +138,8 @@ python train_distilbart_20news.py \ - Accuracy, Precision, Recall, F1 Score - Confusion matrix - Per-class metrics +- Real-time tracking with Weights & Biases +- Automatic logging of all metrics and model checkpoints ## Implementation Details ### Datasets @@ -147,6 +193,34 @@ python train_distilbart_20news.py \ ## Example Commands * See shell files prepared in `commands` directory. +## Experiment Results + +### Latest Training Run (2025-03-08) +- **Model**: DistilBART-base +- **Dataset**: 20 Newsgroups +- **Configuration**: + - Number of clients: 10 + - Federated rounds: 22 + - Epochs per client: 1 + - Batch size: 16 + - Learning rate: 2e-5 + - Max sequence length: 128 tokens + +### Performance Metrics (Final Round) +| Metric | Training | Validation | +|--------|----------|------------| +| Loss | 0.644 | 0.062 | +| Accuracy | 0.798 | 0.724 | +| Precision | 0.835 | 0.727 | +| Recall | 0.830 | 0.724 | +| F1 Score | 0.829 | 0.720 | + +### Performance Trends +- The model shows consistent improvement over federated rounds +- Training metrics show good convergence +- Validation metrics indicate the model generalizes well +- The gap between training and validation metrics suggests some overfitting, which is expected with local training + ## Performance Optimization ### Class Imbalance @@ -157,6 +231,12 @@ python train_distilbart_20news.py \ - Experiment with different learning rates and scheduling strategies - Try different batch sizes based on available GPU memory - Adjust the number of local epochs and federated rounds +- Use Weights & Biases Sweeps for automated hyperparameter optimization + +### Memory Management +- Gradient accumulation for large batch sizes +- Mixed precision training (FP16) support +- Gradient checkpointing for memory efficiency ## Future Work @@ -164,12 +244,17 @@ python train_distilbart_20news.py \ - [ ] Add support for more text classification datasets - [ ] Implement model compression techniques for edge deployment - [ ] Add support for cross-silo federated learning +- [ ] Add support for federated learning with differential privacy +- [ ] Implement model distillation for better client-side efficiency +- [ ] Add support for federated learning with secure aggregation ## Acknowledgements - [HuggingFace Transformers](https://github.com/huggingface/transformers) - [PyTorch](https://pytorch.org/) - [scikit-learn](https://scikit-learn.org/) +- [Weights & Biases](https://wandb.ai/) +- [FedML](https://fedml.ai/) for federated learning inspiration ## License From 9f40a7665ddd9b5c950892a4fcf3d413bc9e6658 Mon Sep 17 00:00:00 2001 From: Vinh Pham Quang Date: Mon, 4 Aug 2025 09:52:53 +0700 Subject: [PATCH 6/7] Update training result & visualization --- .../accuracy_over_rounds.png | Bin 0 -> 38487 bytes .../all_metrics.png | Bin 0 -> 105230 bytes .../client_accuracy.png | Bin 0 -> 18855 bytes .../client_f1.png | Bin 0 -> 16178 bytes .../client_loss.png | Bin 0 -> 21740 bytes .../client_precision.png | Bin 0 -> 19379 bytes .../client_recall.png | Bin 0 -> 17883 bytes .../f1_over_rounds.png | Bin 0 -> 32915 bytes .../loss_over_rounds.png | Bin 0 -> 33391 bytes .../metrics_correlation.png | Bin 0 -> 39006 bytes .../precision_over_rounds.png | Bin 0 -> 35332 bytes .../recall_over_rounds.png | Bin 0 -> 33745 bytes .../train_distilbart_20news.csv | 133 ++++++++++++++++++ visualize_metrics.py | 102 ++++++++++++++ 14 files changed, 235 insertions(+) create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/accuracy_over_rounds.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/all_metrics.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/client_accuracy.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/client_f1.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/client_loss.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/client_precision.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/client_recall.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/f1_over_rounds.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/loss_over_rounds.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/metrics_correlation.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/precision_over_rounds.png create mode 100644 results_train_distilbart_20news/plots_train_distilbart_20news/recall_over_rounds.png create mode 100644 results_train_distilbart_20news/train_distilbart_20news.csv create mode 100644 visualize_metrics.py diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/accuracy_over_rounds.png b/results_train_distilbart_20news/plots_train_distilbart_20news/accuracy_over_rounds.png new file mode 100644 index 0000000000000000000000000000000000000000..70668ad06b604ebd72960e430a188da3300daeff GIT binary patch literal 38487 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 W^GH7>zF?6ZiM_6PE&b}f$NvxS#3pk9 literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/all_metrics.png b/results_train_distilbart_20news/plots_train_distilbart_20news/all_metrics.png new file mode 100644 index 0000000000000000000000000000000000000000..41121066b8e549d2c8b2aeffbc6f57b18f8bd7dd GIT binary patch literal 105230 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 PJcI4&>gTe~DWM4fF7?qY literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/client_accuracy.png b/results_train_distilbart_20news/plots_train_distilbart_20news/client_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..62fc2c27856184839f52e375b0dd04a535fb075f GIT binary patch literal 18855 zcmeHv2UOJew)LP<6YEWk5-Twx7Fq-WK?M`9g>I zUpb$_U@THR@K+56V|F`(G3(H$bMcqHwdEV|kDTM)Lynqu=8i5$?9CXeM;uRD+c{dF zIQq4-nZ3gaJ6lPyt>21CihOW62Tv zkMFiZ+zAFlajD{8ztcJ$(fz_TBFO25!gND9W961jKHQ&#CBF9gp80ydMvvmAmY;-V zn6WyyvdxDQPhQN(kl5Pr<;a&0!&MD!YYZPJiCo!Mu`I;kGyYGmUkx3YcyM9BY1Y-& zliZ`H(+f^Lu8d=qrtEL^VwPg;*b6lsc!U+E|zK)sAVC-J^Dejwb zkTFXR|9t7~y%_(@dH)pOfBC81K9VP2-COO_bgIH=-%`$4rHcd}3q7~AvKmMC|}oh;Ah4CT_Y`(J9;M{HbyM)jx& zi)at&{Q@3?N^9nMFWVS1``{@_i^}q5KZPh7w!-LdOK5x%j@63GlCNLCzD~gX-FNke zj$OIrn|<615WryP1Cdueifc1*v>sd+JPgjB-U;*=`p_uuj#S)#6&B5Ya1JzO1Z8im5A+ICwf_4XGVG==dC^cwW58Uwr=a= zJxeNlcl2D7_ZT-V`DIkyFPjeRZvt}k(J}*Y5 zCwi;iy?#(b>)+KNK2N~?WI&WqsmaWE!)k}}t&N@&-RUo!pSRwdy`=o<-D9hw75Yoo zJG5NgFJ|8}lW#j7q-(5*+epdnOrVXjV%zb9bQ^6^ZemVOPGha&UZLyuoNsZ6o-oXM zZkxB-bM&<<-o0GbZqJ@QMZRmoXD`|LZGqcJrP_|}z^m)`b4xcytN1Szkl#t$a{0ti zPr=B`6|(j%aWY#=&n}U_c6PDcCVD*v7LwPKo7l(1{<@Ww<$RaT!pbScWo1bRY*e3q z=)iGmFmfI5h;x|iD;EEvGQhMuv!QZxTtwQ#@!*ln0c=UUOQHs_SjxL{GPQ_!kNB(de^n@5x+y}hLCM5My~E(Te`-j>FRpl?ca1IXB$gnodruX z8;rw$oIQ_A>w(4kWwYk3mT=Cbxme!Yw71N*s4K-@Z96!;H_}XD%5B!Vy}i2{|M|Fk zU{zTX)=%$fX=}Is%X;4f7Z$JSpWw{Mb0%JnNVxPg#p+wS_ZEzB5hALvGomXacUaKQ z#&NcP_2WG0#$GHU+l4jp!n$CnUbZKvISm`QB|a{y4D0wfr+3eiU4hNMJH&9-J$>am zZ##C@ZpQI8?8)mbbRSAIF-qud^vdnddfwmbHM8Tv`9;c@zUo4ciSo!DGTATBSS{ZE z${R6j+W@zMjo8qind%`*e?K$W{^a!JNa099lk;<%Ml6d%$+`mt_S;=s?fCdR z_R|9OtfbUP;gpSKPp>P=bUwz=`V>qKKa71_{RoDh8m-=o+@6WD>wLf&nkhL;cS+uO?riNY-75GjBU82g<8BFr!e;V zo(sXtMGie~8O8l*ATc7k-r0r}Rqf3;Td5c4;poU_-0kZJ7edZ25hy&c#vz7zMn z`L6g`R7U7^)+Zapo3K1pEys>0VI4WDSp|q(vC~r%A(cA^%8P7j;?%`)ypkP<8!f~o zUhbEw2$hVh&2#CkR`(jO5vqztiiyPrOW9`kGJmh{R1V+lx$p09pmN8mY(x{cSR?1g z*lnlZy(+Si;kY}*8)VzYdQA^RUwPiy*{QUnC+AqlWy#7zZ@xM^Z;6;kk3+P<8+n0| z=mL=-CHB-a3SYdX>BgQ`JtOb@_9<^VXGV(^R%WlEgLZkr?yY)n7VqAxitQ6A=Tt^< zTrfT%p^Tzdyk^`j>|4dO8nqo}I7aN+c+FLQZX+*T2HrhbB2yW)u{7gEOH}wSzDNH%>jLqwG4sZAHd1YSHH=BqRuya%QGS^83q#Wjk-*s7^7;d(@M@vvBm0 z_^mw`7OQ5})z)rHIeq;2@sb_A`2pt^@ZZu+HC8?2+F;}on~-36cVx}z?ORUudK+mc z-%<(n*NDeG;CSye9T02&co^T$he|i)`R`|&gU1ds5T8M-LKqDn<*=oaeK9L6W{G? zKtC#>5*uh~ja^%Vin=|<2TScd2f|gN<#!>ASm|e428nz2`GoFtwZ|r?zNH%8g!D1? z>gQYSSsb;=mglJ_a zr=f4!Myv9wSVQ#&NKk5?6VEx^Y}Qow(PB45^W}L{>nZb42w%JF%r<6Jj(W6w=(ZCY zzT4mYi(n~RoE0J1h%lniXDBcy(@%V<_yzUO)}KFH+K*^2B%c57d->59{WPZUN|bsUqF#v9r{Yys7B{X)TlSCMkU7FF z57p$&E8iOLOJnWF9?&`>35oPi66V7ogcOH4UNe&j5ET@O7p~m4spgg{JJ`TBwC6>h zOb_Sr<6mrFcGoo;CBQw>TMLYLRkgZysJGpd)$e%|pkYCfTWp z5fiS1Xz8op&Pv)m%a{ayR71eDr_6Zg!D3~nA%Fgrw#?SxG33su1{1Gct88;#&u_T9 zGc{5@q3?$FJVuf}K=>AOK;;ggCeL?g1w{IrUbt{xoIaK#)nF)zDDFYiPq6^uj$(>E zV2X^ad5x+}MUA>bWTeYWS7wM6$F(g|@7NV7f`n3fTXuR*jtWiKWIWk-0>?}^HNSfM zg7BNA3tjvj+aIr^Oodqr7CzuP__-qjK-KVbJ5CD|u{gqWyo0t^A@-^TK10=i=fvCe z=uz2zfjMIqQLg3}hcfIqo_E)cWBVF(KI_dNsH9Yge0eIMw-^|<)|90x^I{u?3mk*U z4VAw()Yi6m&t6=DU1|U9L|ki>TTkhoBM*Yd9UhpR>4*(fiWSPF)T>y1`s_WyMw{#x z)yNN&QVEuDtD;$2>4O3l`Rc&G#eg~*bs2)f zYG`ZMncf-&Xw_?3Um+jX$m%Ov6>iO%9`E9pd1bE6)uOws3O_s0a7k=5=Q|A~BXKT~SX%mWxAL zV-8j;4~#bZiT6)7F&zd5qG#OWyNsSRRBjwAw~!COtL&J*b7IoUQCxjakGK`#BNwB8 z%Ln9-MNALfe(LD4zi?bQ9u6;@8d`t#5mUlJpwuKK%Z)j^xQqa*!1TKdu7gkZ*QA=T zY8x8b#@eE*kihI)gLH4X^uAP1vZ8XSPS+$d)uY==_LcW+2}IB)EKj3jjp_i-{f$#B zqPkRI5o?-5f}Hg`DH@T<7jEj7LV&yu1Vz>%awt z$=6G}Xlnx^_FYuIHE;3iYw1<;JMe-7RZ+VffCRZXr=E*tTYgy$7<8f`#V87=L4-=F zNEhRT#KeIc0#lm^l2iCZxk8icIz84lP~|l(scYn>(;WsX zWGEAd%Gka9!fo^_Aiku_3nyK*oqZ1piX+kJuB__olTmiY=^)(5?8)uwuT~Z}%YNak zjQWRH0bu7_+cy{3WHkx_y;Bm`p*SFlD3dRwU?Lfn$X(JznMwd2NqKVwtQ zZ)fMVA>^}f_{oO>N7%$yasc8C-TNM`*n0G@fL6Rx8$ebWTVeoc(7eB;6u15&&U5*A zadL@OTfpGkMoG#+?N4sh06%5eJg>L7KKsi+ZvYo6Nh#G5B7P)qVq_FacNZX}T879K ziJT@*82S7v+iM7a9#1&*0K~*QHxxUtJ#4;s9MFQWqa3FeDPdL?*o1uF!C`rM;`o3H7(S7< zvk>ED;?uFV*XU_x$F1-*OzJHxgYrTz+7mc-(Nxbx=Trf5+5;t8AiQ?~rk-ECCd_xu z4lXig)rJs5f1PA~0$A4lu8lZ422_l0Jyz5r!x~dniq*(2=1ZU!Sv1D;45#7dVVI zS3TT@I)jq4U&^7JYLcj^w##ZXXCf-0=x%61;ZQk)I^z~tkZ_wUJ-SuQx_zjn@ymuv ze_qwy86Ri=+$Os<%qpc6RDnp$>@T&nOO5`@ILzFIGe%I0Hx|u1$2zX8*&&U6R*4Xs zS7O9wp8$<=f>Y>$Im)XpVt8*jwMdR35<6$Xa*;F}l&$e8DaI}5Z3FkmYn7pDOQUF6 zdvdxZKwY}9aTcTE(HAa^LrPR0q4;2##YH+Rsj8}a0^hfdux308`-4&gTaRUpdcE|T znQB7GL-Aw)HF1l-vY6iHW&~u((5=Vz0kLuDaQYMk&SGrYyL+B@Y%Q3Jov2BecxgXs zR*MIVWXf@5@=JAIY`yA*L;mx~!*12{zSEaf5#HZSQX>=WeM>ICgXEnV>m z_Z;si)7SUUx%QWC49{DLSLl1cEO3hh(ZqI-@Q&J6nEnI@4FuOV2Px%Ltu1Di5waLr zWa!NN$Gv6MAN@S(`u(B4_Jom%Ni@nud!~8SQodb^D_O6lq@)rJcc-SLsHv(}Y#I91 zNV~(u?4zI7cBkJTCU;I5zYKdJNOv=T_wIQNhWD($yuU>N6b54xgKy3M>{B}5g&5i^ z(gsx)W8P#c^OgM-!}8WH2PtJg(VZQKEsV0njjG6|4SZ(Am>yhi?kH@5nFZ)M;1BMO zX1T)f^Mi|tToo?AEOzhGQry*{Bj%2LIuYKBl}pohF&Kxi^g@ywWtZFWo>{OAOnSD|T+V3Vrq=-0JccKr?l0DqFx^q@oz6@~`KrLhK>n--<~+|`|smh z$``H|t?SHB`fQT|OPueJ_NVQMnYVG4Vcgk1OYWX!rE10&Wfq^e`ZqDNlekTPO-vhH#TXU*dp!4-5;2^U4;HQ1 ze)2G}fbWj}z-XhK!74v>ikT`9qE?v$gfJ*mXrkmp}@6=g)dF?K_ zjZvqM3aMQC1;v9!OUc#HU2eliN1~DM#d2Q#MC5O%oReiGf}%>KoD{$D=_BWaX`8p= z5}reKx)#6ab5fML5=tSPBp3cOj zn+N#{Qc}bSM}SgYm94F-8|O7M?FyXE@1}xiNFk(Xx4Z+lya{2e5roVZ4N1H+a8Dvv z>{atiloY^2amR{%RkK{)KHXZSFf)17Pxjrt*#lVoHWd5nh?n=zEpTYRet`>^X2R`L zj@3|#t+uZ-J~5-$mY_9}aDXMO{L#<;)ZZUkY4?m=s@J>iUAS|t$KVq~WNKd31p2Y1 zHN>P60ECy$z|tGuasWxPv99i%zSg^ofOripeG#$_8YU(jmAVY~aU;Eteq_&lc$jF< zTD5YePW$Nha|S8nBkK4x{l#|pZDU7me9cim9=R*-(V+Ib8n1qBaAmP|QxVBDNL?&uVn@NCTTM{!ul51XPxoC{MFWPhmnZlGe?i%)!J72n=B{c% zNw4a^@T+gX1_A7ZbQ@l@p@%iuDlU2Wp0~ES^lA#6{EtU~i1IN%Oz>wCR`p3BD%Vq{ zYyM&c*r=fN^4Mn^BYpvW0(ON}vdS+1>f$wWrl`4PTLU%2x|DGhZ!;aF4nY)bGY>a( zgDx=&C{EVTEK}SV85p1@7ym^p;=(n@@}${w|=nc=C*XfQ^$5 zlf3I5F0d;Mk2CQ|WU>#`-OtUKdD?7Y;A>b`~S5)iQWEcw+Fg!$aJ;(Mh(SIC`5O)_GMEx(vgUnI*Sd za;q?AxmZu;Q_S(dr_>3Ky=zVybsYcX&Y1zXS2Z1pHvGH`FPFE^!iyyir7rppZsEW2DXoL?xpJ{u9;3Zlv0B}_TN&@xc`ak? z-k_bWWYpHPId+RvWZuTQRhIgK_ek6 zXFfw`|9>>pEu|($7>RkEI`LgiyJEFsQyfNaK6A@vFe-k-6Q-UaYa}p>q{-g1tbi8v z&&$gq-+i=RqWkXJpEkqR5m9tXtaa*%!sr^9ZW=EVn8LrF>o3Dr8vSx0@9i&RM$X53 zB#yrZO8{N_pBAroubVwiDm3IO;sGd2kQlR}M*-w4rD7spDFCC&*a3ak3%S26S<5I= zBSC)B1v4eq;TSECgk|mRCJ+pu9o>C*4L{vGEP&r$qS$N#ae4wJx<9xc>GYe)An#(8m}|i z2t}7RYwb>j+zV#i9_lQ#U*K~92Oj@2d<{j7490Clg6||0Av-z8_FrZ%-u`v*Y6lfi zQ^6-DL5FL^4_>U&)z%iR8Pl;)?rg5E?v0J(1jX`xG<}UXju&JM=B43h@-1bxqzyxE zds+PF=C|9irkp#wy7=|VUfw-cyb}c~@+2rx9<>NHiC6X#txOXLgelu`GXS3{>%hG^ zzBI)tIX=D=BTH9lGl;B!lr=Oo#P-Pd6kqirkwz@*cKVgW{+@?L*i}7LpXh76M+i;$ zeD)2kEwO+)vY-`-Vg;eo3KKzzwysfTIbVTMo-=!ASLK^zu=*87_bvB+z%+jVn)fKj zN^#2giOj48%N{pC_yBq^1>R820wuBoLW=&|t&uxi)Dm@)!#?Q}&2ExNH?L4KGBSFW zaU#988S|$1><6LoLx13zKf%m-MC{!rsy@Vbh)s3e4dBAZ2v7KO@toEabP z&U<=ne5flV#Ke`@@wDaudW){GB+$0QYmq$+7%)&)xQ64 zpo7D2bNILQcs)IGp%ol%Dd8}n(siKqOh}|%ed^)o6+`5LxhEl9`^AW0BUY}z-oTF7 zwX!6=^lB8|hTx8_C^wmSO$`aj*gpq^b^!lt252!>9a0zwg8u9MYn-%vWx3b5<6q!f zheMZ%#cV8vk}v5#`tFfDc&G-^v}8zfps5XXob~XUJJny>BCw(u^8I8`TZz!`hlJD9<3mQV`S1w(Pm&E%DAvf(mq;&UF~} z<0dnPnd#iWEp?A<&iQ-+LnM?F#1O7jS39)Q_TemsGS_9pz4-$HON0Ga-DTYKA2a&w z&e8v5;QQO52X2U2vU>ZsM5G%-__B|ny`;0l?6Y=SLL$m|;>5noC4rkYHFR}#eKiqg z?^#|K;hQ4c%nS&%7VM7-9Rr&nA~q>(QWPn_w)Mv9J-FCzADw!u$KX^$dD1ryyZxJs z8@cqJbr)9qlMkS|=!!Db*tU~+`QxJ*TiQxVKH^bmB*vo@v7n$zFNZH=h7IC#fV44w z!;|01UibvzZ8^r{QFM6)6R(#5^`)h&YXMeB7R(GWWKul?=fvIde)|Km=P`co<#8B4 zm{LUwfyA$#ox4a0TqJ*^1;S@3m>Lt`*BDLAqs_{@Sz!0mK*funiq5imZjOE4`V~!+ zeneW6AXOY=T_!WRCBsCt5xc_PiXkyFj$;xnBAs-MaZdJT5tlEE5LSjKakf6%E9`MT zX#fhdG0`EAkFntEeXM&y*zlB3bO}?S6D>w z3>~xQE@+IZwpEs*VD^ZDv?~jED#FD{o_oPhX ztmpmDHr@ndq}YGO&V7Aqe!mjwr&NxQy&Ngj{bS}Ajzb=)AMLG>el9|4Bni|oa>=|b zrI;{kD!lXTG}*X7o|Z!YsWF`Z86X^iX}hPP|JwT{xOMBC*XI$FY3j{%gRLI>flf5U zz@de?l$|0JcBnhBb>$$mz;)sUgBl=hv#m*}!x{y&ZB)5-(Dw*l6!U0{@@@f`gJjic zQ4*8WJ{hDMZ*?49xlRZ7k5J6eQPDGh46?BBp`Vu9$4m2BJ5Q1;UcfI_uBpB&=(D9l zE#O(jexKyzjPQruh!P#oGOcc@MTU_f4aB}J$h`6gE#b$WEl|t5ax~Ya2au;QHU<43iNg4xR}R&86fkOyk2MR1B8emSfBs{K%o+#55rvZ5?rJx|J-D^>KdiL!ZZCj7 zFz4YSX&z9m%iu&Z{`1LRz{cr5KQEEAsgAhlN-VO$hbP&pZ%DX~aO+{}K}aPId!r(x zErph1h3QlD)JFq=NKlbK-kB&n-hQJdq3%MQHRM<_A8D$|#{PLUUP1)mmHjX*UWIadLgQU7@Qq$9=#)in6)R0yCy!6G-d`05QrIV<4E4 z_6#kf^(z2FaikGADL|0K%a+mr2Z+aJ$Rn<_sik=F=78DM z>Or_gMUbV~MlLUcKA1rIp@YUm?7{GM`()hb^MDH^^xGrf7hPEu!gOde$DOMJ{NZBF zb5G$#cLH@b#Sp9KikTt7mr&2cA1x_kAWr&ffQ)k{`fi*^6&t5TTr4jUUJAL>ELb-!ijyQY+DP0 zM!7EZ3kr|$1GzyC=!bLDtfz_Dny?fv*Uwlszg>WW011#yP&`RgB@{{SF<1?%`iccu zhHd$;&#xjc?_kf19Z+5?U?se(Rji83!g@Fc-(I0%GZt#M!zSh3GdYBPAuXTjfk;e2 zi0$Ny<)p+Z+xKv(Bu9UrIiUOM#T3mt|Ma8t;dO zN_9^)%WI~{rmn7zWV^Lk2=$$|Kq+K_0O7BHQ34?@CP}CLSiR19vL2zxpyvX3rpRAI*ys&{hF^!dz3 z$wl79B)TfLrmBa>l)XSIhrRDZVPdh@EwX(i?Y%J5pUx|~f@^!>rC28C@_N=dl2k}o zSlC|MPstDjqvMIIQz&dh$t_A+a&wknSQ_$;DT)&kxz4VPgtqmtJ2^Xq z+|hsXLG<}U@p&%;p|sK+ymIgUoI&`0ZvwGUfiic|N*Jc@?LyH4hphY6scaY=;HQW$ z%_8p>glJ|#_!((yo1NGn+J5X0Y3NT~=)G7Z8qX0PFW6+bTiyTj_4`_2 zdOMJ6Tu>dS9(@@C;6Phd)i3Mz_zTiTlYV;mED34kMImFQP;s_ZgP7v-M%n~>wM)DU z;Wlc8K3PU~XV}1F_xr77!YZ~ZB!}!3(WjHQZywm;HCy<$oua{`Z3aH+9#4cMrq=hl_IXskbL|Wz$#pek6}Lsh5zY z-Ygv{Ky__D`uc(eluI&OMZ=GA=Hdj9-R>t4ztkZ~k&X`0>l%O>FGtGSo1)dA0QwVT z8#3uLA&QWfgr{74O*MECZ*u!&E6%|kcN`a3^*R@>k`^IvKDl3rz=7yr4(Bp|-pm|+ z!(Ye|wd>4a2~~&=m9iUu=QDm6!fFzj3r5x9#wP_GPSl*g3DL1~#c&CyqbGv=U!g@} zK}zr>MUT3}DkTwV=ah9*UQBe#_{;~1NESilSB~;~w&qVBNO#cfhaB%|OhFvHtw3eg zX$4?|$VC&(s^JjYr|089a|1QCBF+tC_2lZK{d zy8jk~f~0?vZQ}pHHi_8p$${z=2cL=Z&f$c_lrn;viK&HhSauWc-Nb|hk?u`PJ(B(q znEp_g-v8wTA(y9UNY3_jiz*?R(-ZCI?cn&Bdf1$j^X3w1!W0?FbfXkVjZ$WsIV%PQ z$+%Owz4-@f=P$?@N z|C{J;A>10)-GwW9$NuAxtZK`3#kXh6tn*wq4&p1-hXwyyzkHD zmEW`HEmlDjgd{w%@Zv31Zkj>ZE0Ldg8vr{_8@0~BG-+~O32^lAqhCE?zfe_Z@2GAA`0X9ScPWOkflFBs* zP+RLux$w<&z!<6qhz>I8si_>n^QBI&;qIvNI^%&C6w*h zhqsI5p=tn3&#=sN{{czjUt0;tNG|a^guYvB4KF57BZ1>g#?}qFoci5F>#m`UVGs2X z9}%eh+V+bO!S$eMiGd=<1ywEE&vWobd9;E89Ds`c0J=1_3+*-LU?eM~EVUd$>c6RjtC*iP zx|aq|ZjHw=-;vw2$;z!Ybcc&AnSaQpfi*3?eqn9yGtHMQy- zzwtHLe$C4QH&Yq!5Yq6*eKK|}_iFT~gwlnQ`YAye7vD)AgRWJSeQ z@)Ooz3|_0=4x*ma68P`~shX!6oiK+$Df0J|Pcw3o&BQK+wYV%gZtVb^TJV+V$-MX!ln7H1O1$tDUK{y;C>?Tnd}o!PT$)6WuAPrOt%HKsx@@o7dgqwAz~GWeqh&wvJ~;f~#bw)AQ4pBqyC#oa5o?P0tH~Z078?QS8qsl~!iG$dQzmn8pow@Q zZlXC0JoR8NM*$@6X-S>At?<70Zn&s-ZT@X6ICL0tlEz^fDvZ>8(6MA;1`GS~e#wZS zX6ksRz7ZfxVK91@r0H1x7VNGA{yRZZjMYR>2cku!AXL~Yl&q#$dP20SS*iH{7#Q^?6>V+b6@%K3 zG3}9fc5iSRY-LX}b2Byp@sEMljPRTqkA?4_hCM_K`h~S;j!&a8EDq?9jtuIDXE=Wc zG;gW!nz`UhPGKsa=mX6c071mUM>MMh8l(isJrXKOf2hYDa>Y^~g~~dZ+hRpXWT&>{ zDDXgF_hm^EFN7;f1{?1gR)@L@)T4EO#TJq#&JO}tICv833;;V?8d5kI%N0xBtB-l3 zu46*OjcC)T0e__uwNn<-y-6Bu-O?_u!jayKzpMud)erwV7oKHn1d|NWtf$}5dBcho zG=Y4VZN4mNkC?fj!)$oGE0t$2r`E2$=5sc&{7k~AS<)H??-k!3-i?M;U+RcofhmUc zL0X2L*Ti#0e{$c`DYHed#c!uJtb*k440>_7myxYQF7eOQ2!HaoIYg^Rfd(OCB4zG| z5hZ&{b3CFEZy>>%Gz4s)Xw3IEmlL>&!uk4$^r%S!s9Ca6{ykk3ADZw}KS}QPcwZ|< zUS)wYi7OVj*9r;+ph3EzBG{OIko#O{I2AbHb>%^sB4lz0sV51#yvPO&8j+p$C{A0z z7dtLZ54w%0&axbQ!KFH&pB!69v>K1=R-?O(`gqdOJxlIc z!XQUCR4Ub?j}C}Z6iuoyL`>f_37xy}t6!AG3%0GY$@l^8LsYG~eKmobSoEC&NK$CQ z*lUb(nZAF3PMoe!lBRZlebtsOT3Prsf_|s%#?WyYjf9!SWLushbLk_`qE^7q*2$KQ z3MbBA($7*KH$>OS{?z3Pfx_Li_eoRAN3x?Vq+wtXe#}=^2xbRmhmb7&?fAxk8XQ9R zUN?>vc3K4G3B=Pwxcf+ITSIqon?1g7A!)hHSC(Sb%4Prh96y&9n%YM|O`5{QOVD5l zdD@&zz|uDQSx=Ap&}j(=0`Nr8;8Ob;4hApZ%}k9{5$OW*bQ>i^wAeb(HK|F08b-K2 zCX+|i;J{2uuav7WdZvW0mjGwOH@f=oVkd&xjK2@7K0I~&HNJxbLdS@pBDI(js6ef5 z$xUE*&(wl}L6yKkWF@AZi;&1BBPhC2ZhYO29{MI+Lifkve-mC&>L#QRtH-w!VvDicm^p%z7OAVe8Z513xg z$s^P*OX(ef#h~RHqA}VWnJW^eOo^PrAqu8eYuPMYUY0wZ`$VpY>e!_nD=1(r>{+e2 zaf2eseTFbD5V22fRz;!1epNrG-u5d@frOAL(l*;$`$rh@6JyXvA3Q)1f!Ae+oVhp3 zZLBpU{F6byF0}RGE{uX#E^oV$nu;##*eiUDy|BFA+j1Q3`O47vqj27r$?-xrdf{6# zYSau`n0{5~vn}fe)z4!|(+U*tY{$+u^k0&yIM2K89B&>oa7@e*tt-gGNA|p{ZEfYD z=~``M%ckx!qMjP9(<{OzvvaJTD=1%1IPOtszG0GqnJT)X6SJIhc=z|1q=)MS^1e1~|}u?dexP62xVHnFD36 znS3emeU%~7=BbzzgG?mbHL0<#@X_;(02FwsJc})CT*JutBsd4tkpO&2<`v!vq<$_G zs-aM&Nn9Cw;^)dr1Ykv*DYTak(N_W7<3g{P3BKeeucupI1djy_eiVhnPHKhV6? zDtHVfJj$O@(h?+LB#m6-^i?OeXzNFNokM&TA4Bvz?Gt9kyQz>AS;q4Z{G(9vcZ#&V7IH?>Xl>*L9uiCv-H| zt=_g8gTbuB{qX%M3}$&h2D9wU=PThab9R!EJov4o%z>|MU0p8_6{VycKfXfJ*~Lc6dN=t79Oa7(KNt})7{PPs zTi}Umk{t%45{vu($mvVb!|mSp8?B1v7H6uyjy+iuTYYqy%eNO&aZiqf^(wUAU6pp} zOZtX@hvZ7(Tj{;sJIC+-bN}Z*?vml~UdCld z$$!2+%}u7roL=fyJ(n@sDHFHiWf9%ie^kG|p`qbRIHUL!`&2XdiTOHyIR>M);WJlw zyf+|VJ^Wblk6HnE1!kEd{PLxm+A0htVA$;AEhbcduYw(18?#!cDqy^ zEIXaY@SxY$-rc8{XjyS@AGZ>}7%bOuX;*uJTcsawIDDgy{7zrqbh^E-|9rOy=h z9+^1qaYfhu6OG20y@3Ji)uQCw1{)lx3)2zG-tLRjxl}7wj7Nq$PJN&;)llQsS5Mof zZ(|vIaT9~7BWhWX!LlizQwAqDq^dQ^>Gzm3ypHgX|n$+V~^f@j(CR#Kc5VoSvTE)wNrL^>mfp^1C~HIMqYNGaazNCE0aE{=%p~P0F8J z>C=By#8@&~3}jX@KB2)9%30l=~iOHNlhzK@pQ$gKcDBb$ce*`@OWjai$UjJUQI|$+#?oy z>Aa%b;62_*p%injDL2dZ?ZZu18~w=+Em=hq72*;U$AW>x7T0=h!`$l8lm`!X#_`%% zS#)#nUN)ZZg`z-9s`${lb?dklh9$v~k&)XkzS@uv@8mEDBrA4$u9M1itoKMc>?)U@ zAkB=)d01k6n1l(X!ndg*vZT*{_N9mm?1{dgHtM{AI~_~N$lrrsoCxPcG3WQ}IP6}f zsXF&oiBlz$KTK(rwywI576MlXTbXPigJH`-IAPf||3zY~*I@GeD1U((BI-R_?12LC zc#NX#!rYWr@OH2M2N6o1F2a}IU0y4!l*erzs86yf+u`A0e%fKMA=z{6`6^|6=;F_ot6WQ*;ELPX{XuGJ1ZLtjLD?=-YHu&*q z`KJo;vX=GyoTcP6@ zSH)LHD!SPhxDEuv?vlct($fn$DyV#@K1o;i=+UFWJy%5L&nmhP-G}9s6UjaM{6{4? zLiHmSP8!x>h|=oR;zl>)REU!f@wx9-sood$gupQ|^^WtMHiD3}+Yq+pz?r*ryuUKK zhl@NaztEF+xV}?YzVoNeW$Q&$ib}g7(%U>)FKu>K1*zwk|*i$jgFt#{+xTdcx|$aHfFr=ypK$#iLA zUlrQ8$;rt^1NmDdjPHrIK=Pm)7Zc_p1-Hv*DnPcN#VTi)ZZ@%mf`gJEEIK@!Ko z){nqC8l#N1d1iJRYMUybOOqiqrLEm|XzwtCTv?_v{S>WbGKr*%G6mY~5VrOkYWYxq zddtP)Or0KccW_uV=kZHcj~-FE)y@+kar2^q%F}0V^6v8$d`iY%tVvE!Hyhc`FPNJb zClv+%yk<*ZICb924~k&Mm=|Bs%~u_*`{m`UO4xqsCrwPEc6hWsEv1;bx9r9l`&6}} zJ3Q()Q|P(KWo5(7vw3}Mt0x4gLH;jh!46MLH{*g!Z*C!xBk7Z}OgP=}RvT0*Ui`d< zZmf;TaRjvBSO@p|o+qczijiXnSIuyt=|Y5ES-I|5@OJm+bKG7j{|J;yR*CprfJhB8 z^Jte<_MUd=pgw(i(0k}<+3GF#w6fZ|EW{%X7V-Qkyuwt29>f{1XDFMdL(eeFeybs5 zHPKU!V!dhB+rh!%c<^>8p4=WW)%+K}O?~%9kI4^ZzLa)q%R|A93W!tjRMX@@y;$K$ z0egR-H;YT1@0EgbPB%`r(#CTN3JNxj%+!2$2{YydfQIoHGDjkmUU5?{FQah8-ux@4 z5N&L^3U4R`N~<+gxvk%xRTGAU5$#g3PvTCCT~f@%Y#tWDd)Cm{XayOH z;OMo;xKzz=WGD(^97DWo1#F37l4g;IM~h@c7RRn};5|P1swf?8mNG|WS**OZo}{`s z9>|iTa<$Pa9WbG!l}=8Ja$kw51VO#s2jHoDHE9OGMiIfx&CLz=zg-Dm83!3Ve}0Zm zb$ZG?yo(1V%>k_$v_D3@MjUh7u}811uSQ4)GQD*^OGrqF!-?Z7L4jf#7Iu)w zBl)Qw2Cw}Wrs(w9GZ=;n3NwY7Hli-NuAN7(rj2n0ecmk}Xh_yW7uEOm;&ol0Z|J5( zZOQzeVAy2BE$}JE+fnW7g}9`(*u=$L6Y-N@zH;pkkfczZ064PC(Db4@=fl^7x0lYY{+lx6?*QPx;5&1LcWMpwH}VJiN)2q zd^tT?uSMMFik>aTs!;ycrx4SBB$DnYh&bp;B!nYtIfrryJ3qr3~}%>B5%qRvb$ zzD~39z~hjt-Y}DliP_t79rBR9s*G%6Lj4xz5T472yiKgwmvms}pv9^kt|usv(9vnH z625d+(PN~@Sk|vwi20^1pGfTRWcAh@9<6%!{7U_Uqt}XNyKY7tw9r5o+PIoGdPa!E zr4F_idIaYhGF2yQk1j>o*t_Q~4%yXB{Ysb|Z4}%!kdz|PiHOYAUNe~WaddR#92zvl z`^us!93Zef3xcw*bPL|pX>vZs;&q@%9DcrQ3s;rT;`cx#RU}3^MecBK-id0`&E!_` zZ2lsT1?ZmE8;*}%BboR0;i1flWc(x;ZdzR^VE$E!Tc;yt|BrK46NDkAss`1Zd`sjw3tNRjK}Q zUR$mjohE)^&@e*U>e!y+_wOcXg(sTiI<+`c7bXBZs=^B5hdJrD>GSw0$n$uBJT5QS z$yvh9vU6~#f`}jh7!k#3hlFZj&K8d~TLkv@KMJhzpD*+8d9y1p&0T@ruwskp-6-c0 z1wo}THBQb2j4iwE%6iNSV<@REtr-P_DGg0c)=&+Tzf%w803Pat3(VGja4Dznc86EiX-5u!qH)n`yI&bX81n7ab);46YE_W^|Of^ulA0?5#? zP!#iIuU?x#yc+s!KR`Ats6AB>`#~rwHFvn3)=}uamqVaqnRtIF%bWpSf5n)?9yMF2 zv!!dH^fGn}sHuPPzEPZ6>MK9Ah-$4x*B#f%VzJgOSyoV}wBaAQ5}M4j%FvJAgPaFP zl_Zl1D#DWSVn!4PBVpgkxAx)i3N@ix=r(eknSQqeH`a#qd0^+Jhoc~2>^IDwgYuqr zq4R}nf9>-({ww-DtOkDj>g{*?@M}70!O7P44M3o|SPj}n0cBhyehiK7`@^rsOx}Vyf%3!l|EL@Ow_4~wd($&7+ZR85u~pI47WUwY;Zp(R z@1a8vn5u$6k+G_{2OXj{G`~g#u6AUtWlhUa$KE7U8784+VPO&c7-|qaPIXa##`xI9 zpV1!SEQ43=7T95Mg;#`m*X}7J6z}$#>zQ@%M1VfW8mq=e_cbR{E?dA@_upj%{_Juv zC+>Z*agQZr#)xmveMigH{p=WAzgiUP zdtib0;NaP8c)Z{6GmN;{r(6C1rBI#~js@L5{Uf4QGFPi)1sz+u2!rRE*i-xd2NX;E z4=RK&F#+pt2dw|H%;xqoOy{vGERq>56EQ#aI zfRfm(Up7M|wSM#QMAPg}o|{{TN&6*WedgutM0KkHIZUSXGR0>rYa%y?CNMG2D*pb0 z{^{*i`)^pHKfdXNrCJ;iL8wbF@#R^geE|q@{|p}piy*{FK)+Ur_z6@noJ+XYKc}pK z{n8{Z8LtZ+OZV&Bm5{<+DkX9s+t6YW3(!Z4qrO;3g5K<=REa#w@qh-2fO2gB%W?sN$;mrok?LnxJ z0kEy;ye6`k@n{5XzF_x8$#-#$bh=GVv;z0VmXg|{bP5HFs@ASRrK}egb2FoH&|=7D z+t75VehbnbBW?2l@v8xPlV8)F?d^~0>D7B@P=goAHB-scQ$c=)VV`{6G5_#u(_GtV zQ~egsU#8+UXW^0LcIgI9syQ@&jR!Y zi4;m6ZiRTxrSY!KfmdayR3Op9jB@aHQuQ6Ahh^_h#x@v0T(Q+?9~H6 z=Fn(DHJDjkce<9^l&{iQqVj1nhsVF=bM#4yHzR57u)!ur+7AN^v+rnvd;+asfI&x|N6OxA~pURfnr13hLou$@@li~P5Ne)pbVSw)hoZ-ku|pBLcQ|KM6*sG&J< zXQsi>FeMn0%=5c$h({*nQ30JvXjJJcPeEyH=((mke-2S#u7eHx&{3h=Fi3ZXqhOlO zT!d0~RZt|h^W`;QNC7Sb0zqq{$b|9?*P+H$sS z6G}DvZhZ1{ObW@2yaqlfJ%fT}mN;3*`gtB9YvH<0v`my#xMDJ=3g7P0Pw8_kbZy%?GXHvxLV9WbUS9xz^sc~&4Azq}ef!Zcdk zI1KOk+no5^HaM*`_b=Ehe4);sAr7aQJ)3*{*URNUROgr)?eRjOQF1xvY|Q)XI+&sV zcGsoR&n9IjCo9)X%yLMl3vV?XNTnI@Cugs3G1t;7oYqfW1=o3^BH;G(ZMIQ}qd&8J z_uA&K(k@fV+cv`KFVXy&!rAid!unljeb2!)J@cwkew*4CYkSrg6^S%f+s1XZ*gxKY z(yaK(!MCtLwnA-Jbe1*{|`TLOu%ZB ztnLyc_(sdK_tu8LtzQuIk6Kuewf4pe3uJx+Hw1&Jr8G1)^|jKgtLmksp1AL`^C8&X zEED5fYS_y$9v^EgatwDe=`Gs0{)zoM%sm{Spr(Q(y!qX-IR6BO)njWTU&>rknQqaT zaU_FGGFHZ9?oZ4^>dJ4|o_U$@yX#zzQInmOSbO%UVXNennRnto+2m1%Ofp&Ni}z0i z9B8@7MBfMtXC47s8P@l2=`#WAOqZ_nj8qz1g=~^!18PqEB{wpeJMAXJflZWRc5EBd zn9(&}t{M@^izlR$h?m>+vdoG2Gdf*$2|1`}E(;5I{5@OpaL z8m!j4=_!G!T2#ZhUok=rqu=cz6aFL)UzM~G)W8_)Q%!irUv8?!`%X0;I&|oOTxc<{ zTb_f-Nd}jyfF0m~-q4Ex1I=$bTZuQ6z4frW0}$|GZy#xr-cF&_W`wq}jSUUMC34$b zZr9}QG|90&xoz9F4$k;ovGrtO*3y@YaVz_KD*dPTCll8WC^D3s;wOj2QU==)YXe10nChNqP!1 z-FH{!lYkD`1c>}voaahVXdj`1S)sdjq5H7$XKchSa{8*Ze0_ZxpmQI;jNYrnc{6X#1QJ^dq6 zV&L=49$i3j*?9W2nr`rhT^c<=m{q}I1&hV`NVB4eI=@2+eO))DoI3bG8PW)(;xG

Z(BmJ{z34w)y2a!` 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 LzR&pX?2rEix>|{> literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/client_loss.png b/results_train_distilbart_20news/plots_train_distilbart_20news/client_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..88e74fb4e22f5d10a16d35b50de27f718b47e1da GIT binary patch literal 21740 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

  • *^=Z>QI(uk2cw|$J&hha!2&r^PaABwzwoW-rjPkaiWhIaX}<+ zOW0P&(wGpdY~8jQktZ?cehoU-x&Foxu9DmaE+^esT?WQ)ADx%(&1@<>v=aj$H_@Gz zm|7@c80M&8-&wU`qBqBy)x{cqDU#EhZJwMr-nol&aBQG0HaS^1>Cj!XJ2Cb5H%{k+MWK=D(m$xb1PB}i^fOX2BUaep6%f+nH(G7&T_xNwJ~6P=R!uX zykb4a`W%dtk(WeG{{5e4roFVvF~r3T^|=n$8P^$wSlV>P#R}hQ43)O6NHZ=Ab?(g? zIwm0@u~hc7okN{r;9&c+H8W=~D0XTK3k(hp=A6*b)NH#bR+_Kp*x)ZaQZFX!JX{>* zEf?H8kd`}ph24Sl28Wk}oz;S~m!H_)o70y!t2IK(TEA4LE72mSC%vN~$MKSM>(zZB zk{he5t7%$!EVf#{xD$H1Gp?gH#ek-t4x53)NcCzzy|kk8u6gaffzquC>_+<%O+9;c z8lY~x(ovUYtnWHh%~z0+k{7&a|CUuREz*=u4|fO6T(ISP_tA&ETw8j(>(Xp-r^e-x zJ35|4?ctpF-DO{8IcYKDQj1MxfhiH;a;~TM%MMk|`)i3X zW*Q8%mK3G9v%02lxH49GzuZ`Jaj--Jo29y6njbS@Nh@I1uxx++8k&%e!=v2#r;g+e zC0Vz0rJjU)Ik(Z5U#iUT}V0_|=hD&M6Nh zX-f{jFi)B6n_^qj-n6*=n5*u{xfM2#muOa54^*itw@frnx%o8Xw+78XK%s7PD(Fr&~2oyuDlBsl|V}%ex01m@&7>Cf-=3 z5XmfzsF=&>J6*eHyD%zxK70r+CD+ca4AwMom7wXxb_rN0Ke=h4?BIbIrH}xe-u&9# zZJ)VV~ z+&>U8wGG>@bRm{2=gUUdk%pkHj#dk{y}Pfbrq*02m{R=yDQ`r9?>Z6juidMc8i!tS z=y}mX;S9$ON6guPqgW*)Zs7CB@%@rtzgpD){Ft}ImlarfWmxM$Zyuf#>3?p0@BMCl z%<{aI+qPJ~OlQ3~6i~$iw>jR@17S|nVDE3`#aZJQh@Q_iqz5IynwzQw)wPo&@cx=0jzcloK;Ki8QhB>C{U zjt`pNInAN9U@zmq?lSo)mpGjatLUe^?)TJ?!H^ZAIc9SDQCt|eTW&Esba-JJJ6^kJ?Y{N)eXnu{F@I9edl6*??7M1`28+eYs=Vp9s$A!h3c-|nsoRwz zT>2F}YZ1GmvBDAtJ$WZ1-MX#aCv>LId}YlZ$>+mu@>5RJe&Rc@EmU%KbCme8Cl@Oa>a}FvKU$>NkZms*=F}P# ztrDkpx+^JTFTF6-Q5j1g3B)41J=VKt|w`L*sE8=M4<~51aTa)ND-#nwQCD= ztnsd{s`8^XQW2nIr9EEDWLF=~vrMmx8AJ-Gw%+R0-+YE0G8&I`nmc_e_C%jSd|X@{ zFZ1nhg40*46uvEs=Hc$$yVLXF*6$l3{@lGj^JH{qXJufmKl0A zy0#_zg2m(9nA&MZEeLrx<(U;!xtekz)DTZcqJ2Jky+4V@NucAINAe_xx4o#GgApzjb83e&F6{jNr_r;wA_7Myq&c zkB{_4AZ8mly*b03m#*wBJFGQ6+!F#QVno{t>pl?wq}GMmsd)C#RB{?;%a6B5Z5wO$ zrCouH5;~qGKl$$AU|*v=?KX-Kd`_783ars_u}%Yxg9mSyXCKP23Jch%(~1CP>&f3_ z&~|0dN(JP(v|4@VYVW%ib)pp0<$yZ2u?8#Wr#Bw+mQ8)aV_wB%XSh#f@I^E-4=d0< zn_qf|7a`2_+4WuQ!B}~I1pz_9G{mqrgsej3^UjQ%uH>AG9LGM3TMsxdY#Zi&nUem( zOi``K=hV9gvsE=U0~;J0b008+7OapV@TB{?(I!OFlBYf@QawQf>9y_Kk=Y(cQ)#y1 zl9Ec0mwho?=?{hqks=EF+(vTt1&Q*rCPtKjI8t%4R%HDBN=ixqE&j7tp87t*by(Ze zgYE4;xh5rV+zbPnQ$7at^6d4{^#B7JtgL1q#c5!d>A)&lHG~UNGBj+N@pQDap$#J% zgdE?7RbH?$qdv8KEH5+9`DFU@qZcNd*U2j&3(#PCNxjN^@NL^JS0xIsm`ve&?|#=k z_2$f6*e^Xho@{W2Xl2P|eIuc}@5uKqqPx8?!1TU~Zn^2^sl+(%r8yXzFy+BBIW2}$XPWE{G++~>RZ zk9mzGXTJSyU-&lZiJlAtinX|oxl1=6eRR~D^*D7n%eGDU;6}x_xZa=Q)DAU|G$ly+ z=@^IEbB%s&NcgNsgjsJQ!EwM1;Ms7X*;mOdBJw{%{f9>L4XG6&fV;S;ETdV}l4uwJuIcM4@PV}Esx0(DKj>epxOG8)~SJ$q_^-m9vs zTL1w|GnlNN@%NOF=BMkJC*4hbVU`e`oNRS|hQqOmqoxjkNlXW}uwHhvzo!1!?g6`w z3jRGSosM7H)}N2GxQuSFAB#)4EyA7sLq=bHmaV?qSPKp>vE>3AxQ&189@DFXcWQJG zD|$gen{iI8azr>Xqxf?xfAV?ztU~=4NXgsyt|ucOOHY-DidR>zA&QPGK~o0lXvaa)zzb~ zU%$>CA88)gx)<`3>Tr5#B^`5IX%@RR#tE`rQ zdsFO*3t{e<^AbgoT))}8E+>BO;j)hz2U00Ox_EIoQ87?h8(Em^)SZUF`GDoXG1eyx zenvsmh8?Jg2$hQKaqp>37pEg~dLPK?hzSvOXHU+WF^+BL|J!fBU0g0LYMncz0q7sW zFT?(7UFcZa*eYQlY#*M1RWdfHC?|Z;AV@QV2DDXqb5m* zHB@Nu9CJ2}e(zN7FQN)p&UO4odb(sv?(iWhjC27(DaIb{;@NWI@Ds0PfxN8tJ$2?O zxuSp(^{1M=Ix3AgL)kqzHvF^zf$+<# zcBU4r4LM$us7*;s)UeQRatv8!?MB_BwB;9|=I#b2T`FT|BKiEVCvwMZr{1i#X{b#1 z;nRFG>QW(QE&^zLs`&K-&osnMV>%uHq3F>^f8h*VTQZPj^Xs-C~Z~|DyHMoULAWZ;`Z#Ox1ge&yHEoi2jNFHg~>i` zg$-i?^i^jX8^&Xi0c>rEOqh?M4Fu?wIFP5>LW9npcUl-5&`Gz~vh>!{ep zRb%!Q%;MI)^=QZeTTyye`!d6N z_od}Qg2|byK^8dFVEcsHRVbj;cI3)@Q-jDKg3R2EF)hH@UUg%Qw=kzBm;4} zEF00sF0(=2Z@zv(xRB29zUgT!Vq*s`Ovb+RPWiEvv{IQm)MsK?OB5L5;^X&XoCaPt zvL#W?zg%r@){t#aUB4TD$>p50L-WS;G z<&?36p;d5i^zDV|$m~AVH>LNs<=Nt*<^o@;{pykRhrDfPdc?fuv14fcfKp!Pa5rjK z1w%u_D1)6!W0UL=W*O%)i_1yrFXH1AIS%t1pWg~j3N?tR`^3w}RBY8~1Qg26E0HY; zsm>nbj)q6$RN8*nxRzsts_q3EzdqBoHzRR9+t}(O2@R`?5=6p zx%ugGU#^WVt-061we6?ShtPHW(OAk!|1suA()6?=k%)#NR|AEng(tvz@6U$6mk z3TdYpV=0wj>j&|&-<=z)PI2=`h_I8^{P;D+`q>MXU;TOJY~lCAQjIRQv;ik4+vJsf zsH8=KXKXW6t!YefT;Fg82-PTo`lW->LtreTL1E5+LNx(LxiBbK0Fmn@!lHYOU zZY~LzomkemfVshMZ?wzg`=<(dV|p{RZN~NVKl_n8{pn9ZGiFz3XMpL{61hmn_VQJz z5O#RpCf)=^zg~P=n?eOjrzO3c%@wGqNIWoQqN(=Tk#N+%IheV*dEoTHtdVMoYvH*F z9(z$8qI=-D){-Sl1goUv$J`}SOzcx`4(8nZ?8jv=`{SP)kK9Delg{Xr$pUfE=5u=g znA?|+0PzeE0xc-AjR(_C?6a5?RZdSY~l+hcK4QMIH$OWD3g~ZR4;| z`x@<)x3TE&&xt<4;Yv#c!24eQNEyC*rdRC9@4vQaEy2PPGB~62mgscBH6J$G_U*GV z%`?6(2mc<)Kw4lh)-(Qxw=}jRY*A_!b?AN`BRtE5kJ$Lc!^8-EwP@`PP`uzc^6xnf z1ZVR_enX7?tzQU#p$zxo!;+@o7ioSW&iT(zBg?nOa6G zCuZI1{=!b{hkzbjb&;>f0>%5OvJA#yr$yyQzS2s^9SK>}CH=eF!Q#T_w~vV(&%bq~p zVrVVqSaFzt-KH6g#h(B1ApGa5(_csRK)#0?_Wp4q?~#w7Bl)117j~Ec;V%RHp#zZS zkNDjRSW!w`Q;ZoF`Qf@H!ja0s;u{EqynFLd%x!YiuJ4uXo)z|L;2v(5_pAeKqi{n6 z`&y-7KX8La6*m;dO03;fTMKcB*CB$s+j*s|bk8nW5&Xb&wlN@80ch|F6xQ{C8gm=i zC@hpBU0=~7byR_@w(j{@jORjvDHIYF-OPuw6 zhDm7$I9LxC%I~wZw0x0a-FWyOV4M>;NUrQM1kNzRsOOg3`~-4@_Mqninf0iMi&e_x zk=WHVxU3F7_@N|hYsP~v40CLHdiwczQ}$<}9C7@!Xx{8rTV1`el6_`Qd*dUjY>I?) zgs8%x=|CbCTeIg9ugjb!*KnVfe z@!J%AW4?(feR{bmz}JkMC%Iq$U3@{^Cgk#6x*t%%y=O>)uD{%!9c#f*Q8i#i;KMZd1# z){%#z7SC^;$wNI?D{-pf`mPJh9qUg{YmWzc@HrvwGufO38#Ofk{irYQeAnJyN$-a@ z9p5m-bEj2UA!~Ji|FLQ>@7AFaV+s2WaT6B$p0)CM&3S6+77agEyI4itt+OQ_FNF5!h>m~3NZc2?W44dW%3tFJT#ZKT zc@mTZdR%3Th8Z6IULFhhzWFZj$78d1<8Q{OD94JM6!5lJ-VUc+Pr>%{+&&on`lP(# z?g+dU5FYYq<1EK4_UV-uzF;ukm3-N*SfH1TD516Tvupi`2(*5%Iy*5m_+_4SE#mwA zZv_gKJR3HB7rc(rW55sJSn+h9eNetldm30w>-35Db^GWWS_g42j9W8ol?LBtt>w|W zLRdg>OYM&{#TN!-{?B^;;sE0S;iaxKkO&?et686TeOs->dkal0jj=`L8}6+B>z|geX(~QF>|2m%fRG zhx64pa8IRT=(&vfGq0Ih>glNl-ugl7m8+TC^vgWjw#;j0>V}4H_DxYvES9#C-ri2R zklNQn-Xd8d{u_0q4oXaw?KV%jlD44kNLJ}8tT4vqf3lszZNS~HUta5kOA_tZ5jn6; z@Bv|mcj|6kv*yHQ830l+3|jt$Ny+=AKh%UU#;$msgHHR!u^ZD?S0~-ywhloha_q!E z-fkpg&eC%0%r|FA>m`!_VPLo&9$Qh)x%l1Y)ubDEuar%NfYX9NsTvfItMM?@%nW&? z^f7xQ<))JSivqmh;GPx!NR1*rFEb1dPr!>nA=tDr&z0zYJJ={l2?bYB`$aW|<-U|^ zriYwWedaurV$g2)`_L(g$h8GK-_{=Gt$%oexDiq}OQae@L58nYpb9XxW*(-fDE@$A zy}6lLKeEjYB<-PN{{H@CPzZ-{;!N)VByB@DONvR71uH0hQoK%FJ-VSjDx1hTP!4_ks)a`t_r6 zmoh|kba?~)+(e{V!Xnc@5l`CfuQw|0Wfmzii;Bv6sRTcy%M2WHK6ulEtpwmelqqNE6>_JNKsWxve%)wi!pc|xi7YLq_wrv%v6yRj(%X}&Y<%(W({m2YF z`vG-CG_*uFw%pD9koa%U{Ub9Qf_$3)1WeZzl)OTA5tmkMjoEd93p`OgZx<#b25dH_ z3bMP|`8I1%N1jdZO75Z*jZ@T$YyX)4|C*0K&VGXT@v;t(~XcAI| zLGLL5H~~HZd-b=5SWAxHm=;tZpalwqu8R=q(yHeTsIMKeQDEO{{sduMc%o{@b3gq# zU6uwIi{LhVoBy)rQa<>CU~pe;)tUw+WD`=B8{;GYicd2{m{QP*2be4nc%j6f5w;=i zT^^RBEJ)%uphhLD12N+a#U!j5-{VNu`LFU32}T1_-q;&Wr^X%pT0f? zp3N2q*{;>bteu>Aq!L>ogN-3uh#tQ0!B+qa$kq8$^|x-vU?X@K#XXxb9v2%P3}4f<*{95H zIF0lJ1s|9}+Ai;0VEV@qJzl}6M>93|A}>@nF9}+t;yM^VvWpzQ@4;bOmud)_QeMd6 zWf;sa+A+i_8d(O-7{{oRpNOdWrE)H#t1}XA-pt3PWD0%QkLmk3Sjatx+8gPrqAN|j zwP{N8vM{ocmo><7HR}l^mT|1g)X%P+BpIkuLYrQ}Bv9`@#hPBkiGzFn{WnCv9bm?; zj@~=>*fnXBJ5xU7bw~u^KKEjVA z_kv|snMcUhL*qC93CYG}LYO}Otii`i8-DW(eYVl}GteY{9anpf*X>m4wt?c}P-!ue z0ep@Z`fXT>I^6C31q1OKz>dYwrrdXDR1XG*KASaqmZxW38zc}`73%B?MUfH^LcV+? zHc=FZsV0SPHZl^Q)splYf7ZI{+;X3t3#9pA)+i=52Xau-=7kF}SS1=!`pdCV zrVXg6K77!Dib!C!rP7H4!MyRUefNAxsG}96qN?f(K}ZhytYnF%?iFOZ(34M=dPz)g zj;&a06er1d$Of%UN^=}D*L!dftY&pp{e{SUi`RPhV^R!eN9>;fAp;gQ;MY zk85CzlJ2ZLTapM?pf>(l68<%-JQ zxS!%u4@MmL5_hnLgOye$R|H8joOl58M^aLIvPEd|9>WV&cHQ9`l?HpUNE8gCT+^}a zFWJEpvq&|?GmLkgcNxYD0*tt+vTvPYtE@BC_&LJau`0tKN zs&s`9mrC?)!_SYA`4~a&#cLLAh1(ytOYE~5r@=Q6rj)38gK;_>om$M13*-Pxm7zZL zX%}2vomEbc4Y>3i+pYMB&>6!#PL_|NaDn^Oh`TWqNX6LwVKyY^LTK?ixD2036b~4i zH%?MQ<^HW3iJ>!E{p%igUV}qSHXu$a_Kq-;O{bfcV;G3f#lef{|vwJZq5C`_RBu zie6fG3>UP66b~+ZiihdP*oOQ1m2Z4XfY*B z)=Q>;9L)a=ljUdTwKqNSDnb$yJN520++b@7T9Zu(VBhu11kiZv4d4BRWUHJn`8@Js zHNx!uRM34Xad8DO=UoPxul^gVE~^n-Rt1b;^OlO20-^}rdx8cF-F1ebiON_cZWmM0&I zl$6Iq&f4-{3h8eD48`*!eA@by%^dODpi1a=R(c<*1jy*m4|fx})mj=BV!-YXgid20 zaH{vW-{vT8z$&M0=&xP@K*TwbVO}e&!1WzbKi370ZzroA`G_yBl$9a(EbOMi z-#G_?#8!E7&fg1xpX53i{Ozy2 zB(;HBaL7qz3=4B9Ip?2~L>OrT-ew&{k%LjY4M*R-p(>9mi>OO70%AtRTJ6KrQas`= zm2FwzF37CV3a51O9n;D}U1_XB7qNdHhOfOeIPqW>S-dHi-^Vc}p`twBb5$>-~G~M1;<$QY;PinoxCK&x^Z?>gv@XQ(Gz!TVsTeL|^}u zC8BCSri%|r15Aua*X*Cc5s>o;WD8g3s(SLe!qfD)*BND83!ElpnJ1gbdmJ5}bN%}7 z6_<8j_x|fq{_Kb&*H1{DCx0w)E}T-QCf=U4CK06Bjj-60ODjUiE&iG{A}8H}x_Ro0d%*mZ z!ZQ_suAgfUPC{VGq%I7@BqFx+&i}wU$hTC|LJQvc^zsq%5^<*Ro^HQp<44>|kEQE!QwRo$G&E4Qubskib-Z-Z^s!9B#Q zLS#l4nYr6|Wkf5raFMM7%)o|+=N6VVPO(QsHEF{%?!!T_(M8eSM7=#^uiky}yDM;^ zwgDg;v=0+3b$EW{++_P6`9dFw1ks}tnKuR}x<1LZW8y{tuS zD03T(iQz*I3xaTe&#jxvNw|u$ezeul&~S@Vmcj)^-d^0h_N0Q%qi^;!!H6T8xxzOa*|X(GcM$6`38QxrYJ=bl!rAM|CdIY1{X=f2fQ{nW zn-~@d1EqrKa!oIX51l-nV?EaHA&rx*Qe(pz%&^VJp4>ni zm(mbFF7Cd{hI*y9_~o#nT0RN1j9aO&mHbKZY4G#(sH4?}#uvK%ahM*I^i)7{-%&1fqt|8yFYGAcR1Dw%yfa3t@5xDww=rcJ?{Vx*s+Ja}` zg!ItL2cE#{T^rfk@$E$P`At(FpW0MOgbBxe#t0{9^N5?2&zQP3veb*`#!jeXoY3j$Mwn!W7>K1rA6emD9X5TX+f`u%LoC{Zmf^1KYD>5A>mZ%NN zk`l0*D$JBL?o{tm|HlnnxsslK8d%V-W~yM(TzwUE0jkX7A7NVFKvjw%x->li)OukrZdRUGH ztfZ?qK)r<|AjB1EnUY*GUq1poJFN$O^q5${^{u3)J|F=;i!((Tv>o|{$KG)_hj!Ix@oi?`U2!uds~8;RMI*)kWK=@DQaem zMX^iG(ZM&bxAuU{DuJ=okNTYye8|8(f_S*sc6UZSS35QLZYUl$=TZYXXy3G3C z=5^txjxN&7bkTmBHv_$Qe@ZQc+!8f$p*A(2N7`3KZ+>jCf*E)VP?uGwO>mM}=@x3g zws`c{|1KKYO zJr1H^L*O70x0fzafq+KcMXk6MWuJS46^dkar3ktn4NEpoqRhz@93z~f9fJNNbQidH4A|JgAPzo6nmUTWZ}>x#4MnuaJi5~2 zjssmwd4ljPys$BF6=gy98K5MGd8hTcE^_7>32a_k$64sL2+8&{vP54^A$8XxDGQ<} z$9+HiKe}KPe>lAcQDj8ara7PDuFmU3hF4!v;9B&p%Ia9$-sMn#@+mblFBLuh(;|(U zZT@?s$;CW1WH9B=M|l`0NofY6k2XDZ8u;=dd^>?cwS}_xReO;F8k=l@Q`(4+1{pRTQP!caWA91pxwyY7 zx?-q9L869xsTB^bptHj9JD`8fqv{8#P z!$nwxzPe=>!{`A7;G(D-d~RD&9ccdn?4c~vdYcMl8Z<>Ssqyp%*!k(3K+W+JLV1_9 z{*!*{ubP$Iml7Y}fAy}Y2~-0rYN%@!{VGMI3dIPUW-Wpz6QT4+S~s)+D4|Hy>H-0b z-FOhRl;adIzn zTMz8`S%@TQAQq}cPLg$!Rq1EqLJAv9ht#b`HV4WH6<7-XtGm?vTn5vA&!%p3l&gjx z%e;XE1C{`78szHkZ9`S6b6uabpdXPUf9zKRX0N!0blVZMlNQVS74>j4M|XvT_`n2UMvO1#KgfYpHvetRUntp>8RH9gt9tP3K~8p@s+rW(d!BfdQJyj!4}j*jtGZ z+NRrOV0?t-AwI6iJb?VA)A$Lk=Rwx4T{?A`BHOp;*BQatZauwAr`=fhZT}QH{f#T_ zA85d7@+&eZ0a6Gq;e(@|9Fg>-l#}X=`v9q(FoaoKVR&hJ2A;~ZH)DAc2$_a`r07yt z?)_op2rKH}Oaxf*Infe;0BmM>9mxb2?n7dUCC#X)#qMD1ptX^ z3CY=J={OiYT|^t~xep&Tb6|w1)urCyr6pyM1v2fC#2zU4?C|8|S0Jr{uLFB=B^U#K zwhUr|=G3(Zc#uN`n>Eqqr@Fs@Og}3e>o?;`5>HedI2juIKqz=DDW^xqP!k$j1x-9p zu+LyDHaZr8xI_)>cd^p{kIy+PiWJylgh0?8Ipf& za^EOeX^pAV+RLFE2jS@utmSZXk>g5Z`^SdoY=@rgeNXAh4QW6vElhS7v-4>wNHVe= zP-`9SKfVY9K{uo#eue1}jr%DB37-m;v^K(Ysz2zR;n3sSA;e5gdHi%6OyGx~C|kLS-A547)ozL~O$9}idSg_IOnm9k1W7`tFHzdy$WuI+tf z0{}&6C{v2t38nFZ=2$VK&vne=6zm-ChBsjvxwG&qu2%SNl={acI#58IK)-6D2eq+9 zyHByR-ke?552;4v9UBjF32fg&)f7Fu!>+epnj~gV`MEjit_KgLTLdA?^S@$u!7(gB z2IKLeu3D3)UwB+cAH?BV_IR2E`gVn>Yk*X5saL0_JJOS}W2r++(e5JY!ej<>XVtos zDccDMdH~9QD;}Jp7k|G25-XX4Nf$`eP7CPlx(XqN{7s~mPy^TgEpL9U2jq}O+kW7v zkt3sgIXOB7Z$fAK9wyv9!f-)Q*Ev0wh|DO4I71mk(7Yd?wj;XI<5#HUq9{YkGDT)Q z&}FB9VBn7H@rZQ7QJuSsNODD2w*WAYD&fBAni?rFgQ literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/client_recall.png b/results_train_distilbart_20news/plots_train_distilbart_20news/client_recall.png new file mode 100644 index 0000000000000000000000000000000000000000..58de76175fdedad4a6ab7d9ccae6ab92463a1b83 GIT binary patch literal 17883 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 literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/f1_over_rounds.png b/results_train_distilbart_20news/plots_train_distilbart_20news/f1_over_rounds.png new file mode 100644 index 0000000000000000000000000000000000000000..3dad8fb1ca90bdf25ce9ce37464e29d2edb3a919 GIT binary patch literal 32915 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 TQ6j=@uECzxJ(YFx;+_8msx^Zi literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/loss_over_rounds.png b/results_train_distilbart_20news/plots_train_distilbart_20news/loss_over_rounds.png new file mode 100644 index 0000000000000000000000000000000000000000..3c17637e6b863f95d55da4a0f52cb081bddc6253 GIT binary patch literal 33391 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 literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/metrics_correlation.png b/results_train_distilbart_20news/plots_train_distilbart_20news/metrics_correlation.png new file mode 100644 index 0000000000000000000000000000000000000000..6dff5be6556d3b5966d9f5e6322178d878d03f3a GIT binary patch literal 39006 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 BX7~UA literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/plots_train_distilbart_20news/precision_over_rounds.png b/results_train_distilbart_20news/plots_train_distilbart_20news/precision_over_rounds.png new file mode 100644 index 0000000000000000000000000000000000000000..fd75036c585868098fc30602ebc6f9686e92eb8e GIT binary patch literal 35332 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 literal 0 HcmV?d00001 diff --git a/results_train_distilbart_20news/train_distilbart_20news.csv b/results_train_distilbart_20news/train_distilbart_20news.csv new file mode 100644 index 0000000..90ec3d9 --- /dev/null +++ b/results_train_distilbart_20news/train_distilbart_20news.csv @@ -0,0 +1,133 @@ +round,client_id,epoch,phase,loss,accuracy,precision,recall,f1 +1,1,1,train,2.6849051902168677,0.26724137931034486,0.06194005174690711,0.04774535809018567,0.010467580606195853 +1,7,1,train,2.715851964448628,0.25746516257465163,0.0020501847929476685,0.03185136031851361,0.003358874687966627 +1,6,1,train,2.6962820806001364,0.26542800265428,0.026917830955140686,0.0371599203715992,0.006592986935372853 +1,9,1,train,2.6960480828034252,0.25082946250829463,0.029807081713572978,0.0338420703384207,0.005607975787787075 +1,5,1,train,2.735875870052137,0.23806366047745356,0.00906161380176556,0.04045092838196287,0.00903927298034573 +1,-1,1,validation,0.14352948427411122,0.45977011494252873,0.48376432233643774,0.45977011494252873,0.42754076672257846 +2,2,1,train,2.0178837688345657,0.47679045092838196,0.495915832940753,0.46286472148541113,0.43197510162450464 +2,0,1,train,2.0447773117768135,0.46419098143236076,0.5051981114189248,0.4376657824933687,0.40676891313481467 +2,8,1,train,2.0241483261710718,0.47710683477106836,0.5049263410568796,0.46118115461181153,0.43548885398809434 +2,7,1,train,2.003095091016669,0.5063039150630392,0.5376722728361265,0.46980756469807566,0.43337443796375014 +2,6,1,train,1.978991383000424,0.49834107498341074,0.5356053858573112,0.48573324485733244,0.448764484758555 +2,-1,1,validation,0.11035501324529673,0.5605658709106985,0.5709695449574224,0.5605658709106985,0.5267384601511772 +3,9,1,train,1.6220469349309017,0.5700066357000664,0.5734790568196723,0.5792966157929662,0.5443448982862923 +3,2,1,train,1.624393381570515,0.5576923076923077,0.6053374322177648,0.593501326259947,0.5615731395795185 +3,6,1,train,1.5720229945684734,0.5640345056403451,0.6184436917237973,0.6065029860650298,0.5748777317280129 +3,3,1,train,1.6228506088256835,0.5702917771883289,0.5760348677923678,0.5895225464190982,0.5556175103722812 +3,0,1,train,1.6342491300482498,0.5517241379310345,0.6013840495409762,0.5742705570291777,0.5421094195992179 +3,-1,1,validation,0.09208831072486048,0.6056587091069849,0.5827153783926449,0.6056587091069849,0.5807734640159369 +4,4,1,train,1.397468648458782,0.616710875331565,0.625831258401126,0.6379310344827587,0.6137089003160534 +4,7,1,train,1.3714900286574112,0.6224286662242866,0.6318071878932235,0.6403450564034505,0.6172156394044842 +4,1,1,train,1.3925118258124904,0.6246684350132626,0.6379691725996325,0.6485411140583555,0.6325388345141774 +4,3,1,train,1.3765300098218416,0.6187002652519894,0.6293468866748937,0.6492042440318302,0.622069029258655 +4,0,1,train,1.3892609062947725,0.593501326259947,0.6161858257017678,0.6372679045092838,0.6122911850495263 +4,-1,1,validation,0.08126403824825608,0.6312997347480106,0.6200058101785223,0.6312997347480106,0.6159661656427428 +5,2,1,train,1.2561520024349815,0.6372679045092838,0.6621570630952284,0.6671087533156499,0.6531086628006392 +5,5,1,train,1.3479335797460457,0.6067639257294429,0.6021096624106261,0.6147214854111406,0.5960183768046429 +5,0,1,train,1.19021317205931,0.6591511936339522,0.6534616191784652,0.6704244031830239,0.6515345713681194 +5,4,1,train,1.208593551736129,0.6584880636604774,0.6727151075962255,0.6770557029177718,0.6583017272126832 +5,6,1,train,1.1851808554247807,0.6536164565361646,0.6585705340944236,0.6675514266755143,0.6503066258691133 +5,-1,1,validation,0.07517654341369683,0.6436781609195402,0.6279515045002908,0.6436781609195402,0.6319072368981298 +6,4,1,train,1.0788146486407832,0.6883289124668436,0.6974559571750899,0.7068965517241379,0.6968001724407877 +6,8,1,train,1.1602977815427278,0.6668878566688785,0.665107864754596,0.6721964167219642,0.662770103022675 +6,5,1,train,1.2439554879539891,0.6405835543766578,0.6341471382370215,0.6518567639257294,0.638477531454291 +6,2,1,train,1.1249330730814682,0.6710875331564986,0.688029529498161,0.696949602122016,0.6885451279514319 +6,9,1,train,1.134406452429922,0.6662242866622428,0.7208269725220542,0.6894492368944923,0.6799082069749597 +6,-1,1,validation,0.07176434240121951,0.6560565870910698,0.6404848146156853,0.6560565870910698,0.6446234967047518 +7,7,1,train,1.0684176263056304,0.6741871267418712,0.6845003135615007,0.6921035169210352,0.6835662006276868 +7,2,1,train,1.0218162756217153,0.6949602122015915,0.714308433521704,0.7248010610079576,0.7160429863016533 +7,3,1,train,1.0633896724173897,0.6737400530503979,0.6790534647927896,0.6996021220159151,0.6861099898256982 +7,0,1,train,1.0112992845083537,0.6856763925729443,0.7391840390867015,0.7155172413793104,0.7056893159593742 +7,6,1,train,1.0023052968476949,0.6987392169873923,0.6970399494545987,0.7106834771068348,0.6989587976185133 +7,-1,1,validation,0.06982782338173595,0.6587091069849691,0.6452617274342954,0.6587091069849691,0.6479398960737599 +8,1,1,train,1.0336761380496777,0.696949602122016,0.6997884242229214,0.7049071618037135,0.6986339033143678 +8,8,1,train,1.0115992781363035,0.6921035169210351,0.7038274409366401,0.7120106171201062,0.7020774799931222 +8,2,1,train,0.9550919438663282,0.7062334217506632,0.751886819441725,0.7440318302387268,0.7385814274083008 +8,4,1,train,0.9519191469016828,0.7287798408488064,0.7274237265479977,0.7374005305039788,0.7282961146974243 +8,7,1,train,0.9783030164869209,0.7053749170537492,0.7503738116228379,0.7219641672196416,0.7162110101083876 +8,-1,1,validation,0.06764021357743746,0.6710875331564987,0.6601574409547873,0.6710875331564987,0.6604727123002216 +9,4,1,train,0.8704867428854892,0.7453580901856763,0.7831496852450313,0.7745358090185677,0.7683929616143224 +9,1,1,train,0.9210766823668229,0.7314323607427056,0.7385009989593043,0.7400530503978779,0.7353119470882452 +9,5,1,train,1.0902531978331114,0.6750663129973475,0.7008599754937209,0.6976127320954907,0.6877746788365935 +9,7,1,train,0.9082098148371044,0.7305905773059058,0.7886839718556565,0.7631055076310551,0.7569185965751094 +9,0,1,train,0.8937929300885451,0.7068965517241379,0.770751309448254,0.7473474801061007,0.7379850645329006 +9,-1,1,validation,0.06662465533147756,0.6852343059239611,0.6817369389166323,0.6852343059239611,0.67570937979345 +10,1,1,train,0.861043169623927,0.7513262599469496,0.7774864775549999,0.7619363395225465,0.7584638225514481 +10,7,1,train,0.8184623562975933,0.7558062375580624,0.7933105143619738,0.7790311877903119,0.7740579910119216 +10,8,1,train,0.9168020053913719,0.721300597213006,0.7278370774984496,0.7352355673523556,0.7265415155974952 +10,3,1,train,0.9113883856095766,0.7221485411140585,0.7364825043497005,0.7387267904509284,0.7279069109769941 +10,2,1,train,0.8572485468889538,0.7400530503978779,0.7837303592864203,0.7712201591511937,0.765061472308298 +10,-1,1,validation,0.06581565724549096,0.6799292661361627,0.6728755607671765,0.6799292661361627,0.668699514724873 +11,0,1,train,0.8010347096543563,0.7420424403183025,0.7737660024647224,0.7725464190981433,0.7638582263416192 +11,5,1,train,0.9811709974941455,0.6982758620689655,0.7252609827313584,0.71684350132626,0.7076969420849961 +11,7,1,train,0.7515914562501406,0.7850033178500331,0.8024972769182367,0.794293297942933,0.7894979714095494 +11,2,1,train,0.7877754098490665,0.7679045092838196,0.8055547213157596,0.7937665782493368,0.7900868019295361 +11,6,1,train,0.8515517983781664,0.7438619774386197,0.7595184395430279,0.747843397478434,0.737882849836995 +11,-1,1,validation,0.06513740982659405,0.6878868258178603,0.6851538511256688,0.6878868258178603,0.6794442049519018 +12,5,1,train,0.9174047272456319,0.7155172413793103,0.7536215643221889,0.746684350132626,0.7385492591449629 +12,8,1,train,0.854993506481773,0.7405441274054412,0.7688922169867964,0.7710683477106834,0.762676978246265 +12,2,1,train,0.7235277321777845,0.7864721485411141,0.8212802779893045,0.8110079575596817,0.8083167970782922 +12,1,1,train,0.7841345921943063,0.7725464190981433,0.7802779154351696,0.7765251989389921,0.7723644332819113 +12,3,1,train,0.8404627799987793,0.7360742705570291,0.7621609295492502,0.7672413793103449,0.7578423042524581 +12,-1,1,validation,0.06457038812675274,0.6896551724137931,0.6886480079795667,0.6896551724137931,0.6832377472301185 +13,4,1,train,0.7648063698881551,0.7652519893899205,0.7953833273959504,0.7904509283819628,0.7856439907953848 +13,7,1,train,0.6934914904205423,0.7916390179163902,0.8274127620162098,0.8195089581950896,0.8168411554850808 +13,9,1,train,0.8944190157087226,0.7140013271400133,0.7579541722819191,0.747843397478434,0.7424650072897847 +13,6,1,train,0.7889922215750343,0.7558062375580624,0.7823102386073524,0.7816854678168547,0.7735314642799829 +13,3,1,train,0.7644085381376116,0.7513262599469496,0.7879978143314379,0.7877984084880637,0.7803165010360716 +13,-1,1,validation,0.06320652548819912,0.7038019451812555,0.7070273886824349,0.7038019451812555,0.6985034388346392 +14,7,1,train,0.6457086122349689,0.8195089581950896,0.8519589768848601,0.8453881884538819,0.8434854851136254 +14,3,1,train,0.7199042401815715,0.7778514588859415,0.8163191782452066,0.8103448275862069,0.8051448537315743 +14,0,1,train,0.7137791073636005,0.7745358090185677,0.8075579532461061,0.8017241379310345,0.7948794024432336 +14,5,1,train,0.8343719778876556,0.7427055702917772,0.7711042501452466,0.7679045092838196,0.7608169292655458 +14,6,1,train,0.7345641994162609,0.7717319177173192,0.8114253516018268,0.807564698075647,0.800579229931918 +14,-1,1,validation,0.0630771195751497,0.7020335985853228,0.7033223527145304,0.7020335985853228,0.6963705276373345 +15,1,1,train,0.7165737445417203,0.7864721485411141,0.8181786432159742,0.8076923076923077,0.8076911480582891 +15,5,1,train,0.7762545249964061,0.7685676392572944,0.7974825590941002,0.7957559681697612,0.7901645538820402 +15,0,1,train,0.6444439188430183,0.7964190981432361,0.8292644341214556,0.8249336870026526,0.818206842067155 +15,4,1,train,0.7070423400715777,0.7838196286472149,0.8205626860957995,0.8156498673740054,0.8136842468925555 +15,2,1,train,0.6562258590208857,0.803050397877984,0.8444042962671449,0.8328912466843501,0.8317419821145496 +15,-1,1,validation,0.06282303446062258,0.7020335985853228,0.7050092465974599,0.7020335985853228,0.6964253647524071 +16,1,1,train,0.6326491089243638,0.8136604774535808,0.8353505748661144,0.8269230769230769,0.8255430792260691 +16,4,1,train,0.625974469278988,0.803050397877984,0.8423030166959957,0.8355437665782494,0.8328534398654953 +16,6,1,train,0.6668384539453607,0.7956204379562044,0.8295174882999399,0.8195089581950896,0.811819332533711 +16,2,1,train,0.5947929093712254,0.820291777188329,0.8551849665054782,0.8454907161803713,0.8444007867952845 +16,0,1,train,0.6005680321862823,0.8176392572944298,0.8488263392369823,0.8388594164456233,0.8315040826392864 +16,-1,1,validation,0.06341094142245994,0.7055702917771883,0.7061385505592908,0.7055702917771883,0.6996259584904442 +17,6,1,train,0.6071123742743543,0.8128732581287327,0.8539687400606518,0.8487060384870604,0.8430672318703768 +17,7,1,train,0.5792909651994705,0.8327803583278036,0.86356062903487,0.8573324485733245,0.8562143044536916 +17,2,1,train,0.5420035439102273,0.8415119363395226,0.8792382627182654,0.866710875331565,0.8666246519797806 +17,8,1,train,0.7471050876535867,0.769741207697412,0.8005135286635355,0.7989382879893829,0.7935848362764037 +17,5,1,train,0.7101873415081125,0.7751989389920425,0.8122081674491793,0.8076923076923077,0.8025742024996573 +17,-1,1,validation,0.06329754892173434,0.7064544650751547,0.7092397447708738,0.7064544650751547,0.7016678110750886 +18,3,1,train,0.6340830026488555,0.8103448275862069,0.8322402548865296,0.8282493368700266,0.825476360826032 +18,4,1,train,0.5582005083560944,0.8275862068965517,0.8602304256276676,0.8527851458885941,0.8518578884093959 +18,8,1,train,0.6662523268869048,0.7903118779031187,0.831840847843046,0.827471798274718,0.824599050161182 +18,6,1,train,0.5551853480307679,0.8321167883211679,0.8665662309414818,0.8593231585932316,0.8563260276456337 +18,7,1,train,0.5057421581525552,0.8487060384870604,0.8851971488616297,0.8772395487723955,0.8773767955175911 +18,-1,1,validation,0.06384304549238726,0.7082228116710876,0.7078278743736094,0.7082228116710876,0.7017131756882973 +19,0,1,train,0.5493205014028048,0.8295755968169761,0.8699383453104734,0.8587533156498673,0.8532663191681713 +19,2,1,train,0.5052253065924895,0.8481432360742706,0.889553899147023,0.876657824933687,0.8762953318356291 +19,3,1,train,0.5774284638856587,0.8143236074270557,0.858342327662585,0.8507957559681698,0.8471594445594675 +19,8,1,train,0.6157872724297799,0.8088918380889184,0.8506427484403306,0.8467153284671532,0.8400638799233499 +19,1,1,train,0.6003540794316091,0.8149867374005305,0.8521827078791687,0.8408488063660478,0.8405505550138147 +19,-1,1,validation,0.06291019829578046,0.713527851458886,0.7111757489888112,0.713527851458886,0.7072762972829564 +20,1,1,train,0.5306236866469446,0.8342175066312997,0.877962160269583,0.8680371352785146,0.8693459920080951 +20,8,1,train,0.5594142923229619,0.8307896483078965,0.8713188815942339,0.8666224286662243,0.8644875746184131 +20,0,1,train,0.4896060091100241,0.850132625994695,0.8840465854842596,0.8753315649867374,0.8731285978046188 +20,6,1,train,0.509578465317425,0.845388188453882,0.8782755959089525,0.8732581287325812,0.8706322306582309 +20,9,1,train,0.8097779506131222,0.7485069674850696,0.7785425767501011,0.7763769077637691,0.772569815380377 +20,-1,1,validation,0.06256246843451846,0.713527851458886,0.7147707435949726,0.713527851458886,0.7089609498484601 +21,7,1,train,0.4692117649865778,0.8586595885865959,0.8979647916588874,0.8898473788984738,0.8913353490440867 +21,9,1,train,0.7127552552442802,0.7763769077637691,0.8114744440414368,0.8082282680822827,0.805987655579324 +21,8,1,train,0.5054958763875459,0.8520238885202389,0.8947467636059191,0.8905109489051095,0.8892695527906241 +21,4,1,train,0.5264643795396152,0.8362068965517241,0.8824220348466791,0.8720159151193634,0.8734805383769327 +21,6,1,train,0.44920066292152594,0.8599867285998672,0.8914264506216328,0.8865295288652952,0.8854786107317212 +21,-1,1,validation,0.06272009604015148,0.7214854111405835,0.7245453354825729,0.7214854111405835,0.7187918117700534 +22,7,1,train,0.42075830156865873,0.8719309887193099,0.9166778675011668,0.9097544790975448,0.9109881679970075 +22,5,1,train,0.6507438250278171,0.7911140583554377,0.8343687811458846,0.8295755968169761,0.8282413731423023 +22,3,1,train,0.5165959550557953,0.8362068965517241,0.8729191186964856,0.8693633952254642,0.8685601322658794 +22,9,1,train,0.6444088705864391,0.7976111479761114,0.8346467145150405,0.8301260783012607,0.829480945824145 +22,6,1,train,0.4006392680500683,0.8832116788321167,0.9092030439883393,0.9037823490378235,0.9030797945494602 +22,-1,1,validation,0.06219484595784458,0.7241379310344828,0.7269623861730692,0.7241379310344828,0.7202903631437989 diff --git a/visualize_metrics.py b/visualize_metrics.py new file mode 100644 index 0000000..9e36e77 --- /dev/null +++ b/visualize_metrics.py @@ -0,0 +1,102 @@ +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +import os +import numpy as np + +def plot_metrics(metrics_file): + # Load the metrics + df = pd.read_csv(metrics_file) + + # Create output directory for plots + os.makedirs("results/plots", exist_ok=True) + + # Set style + sns.set_style("whitegrid") + plt.rcParams["figure.figsize"] = (14, 8) + + # 1. Plot each metric in a separate figure + metrics = ['loss', 'accuracy', 'precision', 'recall', 'f1'] + + # Filter and process data + phase_round = df[df['phase'].isin(['train', 'validation'])].groupby(['phase', 'round']).mean(numeric_only=True).reset_index() + + # Plot each metric separately + for metric in metrics: + plt.figure(figsize=(10, 6)) + for phase in ['train', 'validation']: + phase_data = phase_round[phase_round['phase'] == phase] + if not phase_data.empty: + plt.plot(phase_data['round'], phase_data[metric], + marker='o', label=f'{phase.capitalize()}', linewidth=2) + + plt.title(f'{metric.capitalize()} over Rounds') + plt.xlabel('Round') + plt.ylabel(metric.capitalize()) + plt.legend() + plt.grid(True) + plt.tight_layout() + plt.savefig(f'results/plots/{metric}_over_rounds.png') + plt.close() + + # 2. Plot all metrics in a single figure + plt.figure(figsize=(14, 10)) + for i, metric in enumerate(metrics, 1): + plt.subplot(3, 2, i) + for phase in ['train', 'validation']: + phase_data = phase_round[phase_round['phase'] == phase] + if not phase_data.empty: + plt.plot(phase_data['round'], phase_data[metric], + marker='o', label=f'{phase.capitalize()}') + + plt.title(f'{metric.capitalize()}') + plt.xlabel('Round') + plt.ylabel(metric.capitalize()) + plt.legend() + plt.grid(True) + + plt.tight_layout() + plt.savefig('results/plots/all_metrics.png') + plt.close() + + # 3. Correlation heatmap + plt.figure(figsize=(10, 8)) + corr = df[metrics].corr() + sns.heatmap(corr, annot=True, cmap='coolwarm', vmin=-1, vmax=1, fmt=".2f") + plt.title('Metrics Correlation Heatmap') + plt.tight_layout() + plt.savefig('results/plots/metrics_correlation.png') + plt.close() + + # 4. Client-wise metrics if multiple clients exist + if 'client_id' in df.columns: + train_df = df[df['phase'] == 'train'] + if len(train_df['client_id'].unique()) > 1: # Only if we have multiple clients + for metric in metrics: + plt.figure(figsize=(10, 6)) + sns.barplot(data=train_df, x='client_id', y=metric, ci='sd') + plt.title(f'Average {metric.capitalize()} by Client') + plt.xlabel('Client ID') + plt.ylabel(metric.capitalize()) + plt.grid(True, alpha=0.3) + plt.tight_layout() + plt.savefig(f'results/plots/client_{metric}.png') + plt.close() + + print("Plots saved to results/plots/ directory") + +if __name__ == "__main__": + import sys + if len(sys.argv) > 1: + metrics_file = sys.argv[1] + else: + # Get the most recent metrics file + import glob + files = glob.glob("results/training_metrics_*.csv") + if not files: + print("No metrics files found in results/ directory") + sys.exit(1) + metrics_file = max(files, key=os.path.getmtime) + + print(f"Visualizing metrics from: {metrics_file}") + plot_metrics(metrics_file) \ No newline at end of file From 2f011fb891d9de99c46b197b1666bed03d486c11 Mon Sep 17 00:00:00 2001 From: tma-nguyenthenam Date: Fri, 22 Aug 2025 17:56:41 +0700 Subject: [PATCH 7/7] Done script traing fed for min 2 max 10 round 22 --- README.md | 20 +++ src/datasets/news20.py | 99 +++++++++++--- tools/run_20news_experiments.py | 91 +++++++++++++ tools/visualize_runs.py | 220 ++++++++++++++++++++++++++++++++ train_distilbart_20news.py | 129 +++++++++++++++---- 5 files changed, 517 insertions(+), 42 deletions(-) create mode 100644 tools/run_20news_experiments.py create mode 100644 tools/visualize_runs.py diff --git a/README.md b/README.md index a84e8bf..6c014b7 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,26 @@ This project uses Weights & Biases (wandb) for experiment tracking, visualizatio ## Example Commands * See shell files prepared in `commands` directory. +### Background Dirichlet alpha sweep (nohup, using experiment runner) + +Run a short sweep for Dirichlet α ∈ {0.1, 0.5} sequentially in the background, logging to `nohup_alpha_sweep.log`. Results are written under `--output_dir`. + +```bash +nohup bash -lc ' +for a in 0.1 0.5; do + WANDB_MODE=offline /mnt/sda1/Projects/jsl/vp_gitlab/FED/FED-OPT-BERT/FED-OPT-BERT-main/.venv/bin/python \ + tools/run_20news_experiments.py \ + --min-clients 2 --max-clients 10 --num-rounds 22 \ + --participation-rate 1.0 --dirichlet-alpha "$a" --dirichlet-min-size 50 \ + --output_dir results_distilbart_fed_runs_20news +done +' > nohup_alpha_sweep.log 2>&1 & +``` + +Notes: +- `tools/run_20news_experiments.py` forwards flags to `train_distilbart_20news.py`. +- Omit `--output_dir` to use the default: `results_distilbart_fed_runs_20news`. + ## Experiment Results ### Latest Training Run (2025-03-08) diff --git a/src/datasets/news20.py b/src/datasets/news20.py index cae6998..8830d70 100644 --- a/src/datasets/news20.py +++ b/src/datasets/news20.py @@ -35,7 +35,57 @@ def __getitem__(self, idx): 'labels': torch.tensor(label, dtype=torch.long) } -def load_20newsgroups(data_dir, num_clients=10, test_size=0.2, random_state=42): +def _split_dirichlet_indices(labels, num_clients, alpha, min_size=10, seed=42): + """Partition indices into num_clients using class-wise Dirichlet with concentration alpha. + + Ensures each client has at least min_size samples (retries with new seeds if needed). + """ + rs = np.random.RandomState(seed) + labels = np.array(labels) + num_classes = int(labels.max()) + 1 + total_indices = np.arange(len(labels)) + + def attempt(seed_offset): + rs_local = np.random.RandomState(seed + seed_offset) + client_indices = [[] for _ in range(num_clients)] + for c in range(num_classes): + c_idx = total_indices[labels == c] + rs_local.shuffle(c_idx) + # Dirichlet proportions for this class across clients + proportions = rs_local.dirichlet([alpha] * num_clients) + # Convert proportions to split sizes + sizes = (proportions * len(c_idx)).astype(int) + # Adjust to match exact count by adding remainder to largest bins + remainder = len(c_idx) - sizes.sum() + if remainder > 0: + # add the remainder to clients with largest fractional parts + frac = proportions * len(c_idx) - sizes + for i in np.argsort(-frac)[:remainder]: + sizes[i] += 1 + # Now split indices + start = 0 + for i, sz in enumerate(sizes): + if sz > 0: + client_indices[i].extend(c_idx[start:start+sz]) + start += sz + # Shuffle per-client and validate min size + for i in range(num_clients): + rs_local.shuffle(client_indices[i]) + if min(len(ci) for ci in client_indices) < min_size: + return None + return [np.array(ci) for ci in client_indices] + + for retry in range(50): # avoid infinite loops + out = attempt(retry) + if out is not None: + return out + # Fallback: even random split if constraints are too strict + indices = np.random.RandomState(seed).permutation(len(labels)) + return np.array_split(indices, num_clients) + + +def load_20newsgroups(data_dir, num_clients=10, test_size=0.2, random_state=42, + dirichlet_alpha=None, dirichlet_min_size=10): """Load 20 Newsgroups dataset and split it into multiple clients. Args: @@ -70,25 +120,34 @@ def load_20newsgroups(data_dir, num_clients=10, test_size=0.2, random_state=42): train_dataset = News20Dataset(train_texts, train_labels, tokenizer) test_dataset = News20Dataset(test_texts, test_labels, tokenizer) - # Split into clients using a simple approach (for demonstration) - # In a real federated learning scenario, you might want to use more sophisticated splitting - def split_into_clients(dataset, num_clients, random_state=None): - if random_state is not None: - np.random.seed(random_state) - - indices = np.random.permutation(len(dataset)) - client_indices = np.array_split(indices, num_clients) - - client_datasets = [] - for client_idx in range(num_clients): - client_dataset = Subset(dataset, client_indices[client_idx]) - client_datasets.append(client_dataset) - - return client_datasets - - # Split training and test data among clients - train_datasets = split_into_clients(train_dataset, num_clients, random_state) - test_datasets = split_into_clients(test_dataset, num_clients, random_state) + # Split into clients: IID random or Dirichlet non-IID + def to_subsets(dataset, splits): + return [Subset(dataset, idx) for idx in splits] + + if dirichlet_alpha is None: + # IID random split + rs = np.random.RandomState(random_state) + train_indices = np.array_split(rs.permutation(len(train_dataset)), num_clients) + test_indices = np.array_split(rs.permutation(len(test_dataset)), num_clients) + else: + # Non-IID via Dirichlet on labels + train_indices = _split_dirichlet_indices( + labels=train_dataset.labels, + num_clients=num_clients, + alpha=float(dirichlet_alpha), + min_size=int(dirichlet_min_size), + seed=random_state, + ) + test_indices = _split_dirichlet_indices( + labels=test_dataset.labels, + num_clients=num_clients, + alpha=float(dirichlet_alpha), + min_size=max(1, int(dirichlet_min_size/2)), # allow smaller test shards + seed=random_state + 1, + ) + + train_datasets = to_subsets(train_dataset, train_indices) + test_datasets = to_subsets(test_dataset, test_indices) # Get number of classes num_classes = len(np.unique(all_labels)) diff --git a/tools/run_20news_experiments.py b/tools/run_20news_experiments.py new file mode 100644 index 0000000..1eab707 --- /dev/null +++ b/tools/run_20news_experiments.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 + +import argparse +import subprocess +import sys +from pathlib import Path +import os + + +def parse_args(): + p = argparse.ArgumentParser( + description="Run multiple 20news federated runs by sweeping num_clients" + ) + p.add_argument("--min-clients", type=int, required=True, help="Minimum number of clients (inclusive)") + p.add_argument("--max-clients", type=int, required=True, help="Maximum number of clients (inclusive)") + p.add_argument("--num-rounds", type=int, required=True, help="Number of federated rounds per run") + # Forwardable optional controls (train script supports these now) + p.add_argument("--participation-rate", dest="participation_rate", type=float, default=None, + help="Fraction of clients per round (0 < r <= 1), forwarded to train script") + p.add_argument("--min-clients-per-round", dest="min_clients_per_round", type=int, default=None, + help="Minimum clients per round, forwarded to train script") + p.add_argument("--dirichlet-alpha", dest="dirichlet_alpha", type=float, default=None, + help="Dirichlet concentration for non-IID split; None means IID (forwarded)") + p.add_argument("--dirichlet-min-size", dest="dirichlet_min_size", type=int, default=None, + help="Minimum samples per client for Dirichlet split (forwarded)") + # Additional placeholders (not forwarded currently) + p.add_argument("--local-epochs", type=int, default=1, help="(unused) Local epochs per client per round") + p.add_argument("--batch-size", type=int, default=8, help="(unused) Batch size for training") + p.add_argument("--seed", type=int, default=42, help="(unused) Random seed") + p.add_argument("--wandb-mode", type=str, default=None, choices=["offline", "online"], help="Set WANDB_MODE for runs") + p.add_argument("--python", type=str, default=sys.executable, help="Python interpreter to use (defaults to current)") + p.add_argument( + "--train-script", + type=str, + default=str(Path(__file__).resolve().parent.parent / "train_distilbart_20news.py"), + help="Path to train_distilbart_20news.py", + ) + p.add_argument( + "--output_dir", + type=str, + default=None, + help="Base directory to store run artifacts; forwarded to train script as --output_dir", + ) + return p.parse_args() + + +def main(): + args = parse_args() + assert args.min_clients >= 1 and args.max_clients >= args.min_clients + + train_script = Path(args.train_script).resolve() + if not train_script.exists(): + raise FileNotFoundError(f"Train script not found: {train_script}") + + env = os.environ.copy() + if args.wandb_mode: + env["WANDB_MODE"] = args.wandb_mode + + for n in range(args.min_clients, args.max_clients + 1): + # Pass only the arguments supported by train_distilbart_20news.py + cmd = [ + args.python, + str(train_script), + "--num_clients", str(n), + "--num_rounds", str(args.num_rounds), + ] + if args.participation_rate is not None: + cmd += ["--participation_rate", str(args.participation_rate)] + if args.min_clients_per_round is not None: + cmd += ["--min_clients_per_round", str(args.min_clients_per_round)] + if args.dirichlet_alpha is not None: + cmd += ["--dirichlet_alpha", str(args.dirichlet_alpha)] + if args.dirichlet_min_size is not None: + cmd += ["--dirichlet_min_size", str(args.dirichlet_min_size)] + if args.output_dir is not None: + cmd += ["--output_dir", str(args.output_dir)] + + print("==================================================") + print(f"Running: num_clients={n}, num_rounds={args.num_rounds}") + print("Command:", " ".join(cmd)) + print("==================================================") + proc = subprocess.run(cmd, env=env) + if proc.returncode != 0: + print(f"Run failed for num_clients={n} (exit {proc.returncode}). Aborting sweep.") + sys.exit(proc.returncode) + + print("All runs completed successfully.") + + +if __name__ == "__main__": + main() diff --git a/tools/visualize_runs.py b/tools/visualize_runs.py new file mode 100644 index 0000000..4f643b2 --- /dev/null +++ b/tools/visualize_runs.py @@ -0,0 +1,220 @@ +#!/usr/bin/env python3 +import argparse +import os +import glob +import warnings +from pathlib import Path + +import pandas as pd +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import seaborn as sns + +sns.set(style="whitegrid") + + +def safe_read_csv(path: Path): + try: + return pd.read_csv(path) + except Exception as e: + warnings.warn(f"Failed to read {path}: {e}") + return None + + +essential_metric_cols = [ + 'round', 'phase', 'loss', 'accuracy', 'precision', 'recall', 'f1' +] + + +def plot_metrics_over_rounds(df: pd.DataFrame, out_dir: Path, title_prefix: str = ""): + if df is None or df.empty: + return + # Expect aggregated per-round validation rows or raw rows with phase == validation + val = df.copy() + if 'phase' in val.columns: + val = val[val['phase'].str.contains('val', case=False, na=False)] + # Try to ensure numeric types + for c in ['round', 'loss', 'accuracy', 'precision', 'recall', 'f1']: + if c in val.columns: + val[c] = pd.to_numeric(val[c], errors='coerce') + val = val.dropna(subset=['round']) + if val.empty: + return + + metrics = [c for c in ['accuracy', 'f1', 'precision', 'recall', 'loss'] if c in val.columns] + if not metrics: + return + + # Line plot over rounds for each metric + for m in metrics: + plt.figure(figsize=(7, 4)) + sns.lineplot(data=val.sort_values('round'), x='round', y=m, marker='o') + plt.title(f"{title_prefix}Validation {m} over rounds") + plt.tight_layout() + out_path = out_dir / f"val_{m}_over_rounds.png" + plt.savefig(out_path, dpi=150) + print(f"Saved: {out_path}") + plt.close() + + +def plot_client_contributions(df: pd.DataFrame, out_dir: Path): + if df is None or df.empty: + return + # Expect columns like: client_id, split, count or similar + # Try to infer + cols = {c.lower(): c for c in df.columns} + client_col = cols.get('client_id') or cols.get('client') or list(df.columns)[0] + count_col = cols.get('count') or cols.get('size') or None + if count_col is None: + # try to compute from any numeric columns + numeric_cols = df.select_dtypes(include='number').columns + if len(numeric_cols) >= 1: + count_col = numeric_cols[0] + else: + return + + plt.figure(figsize=(8, 4)) + order = df.groupby(client_col)[count_col].sum().sort_values(ascending=False).index + sns.barplot(data=df, x=client_col, y=count_col, order=order, color="#4C72B0") + plt.title("Samples per client") + plt.tight_layout() + out_path = out_dir / "samples_per_client.png" + plt.savefig(out_path, dpi=150) + print(f"Saved: {out_path}") + plt.close() + + +def plot_label_distribution_heatmap(df: pd.DataFrame, out_dir: Path, title: str): + if df is None or df.empty: + return + # Expect wide-format: client rows x class columns or long with client_id, label, count + # Try to detect long format + cols = {c.lower(): c for c in df.columns} + if {'client_id', 'label', 'count'}.issubset(set(cols.keys())): + client = cols['client_id'] + label = cols['label'] + count = cols['count'] + pivot = df.pivot_table(index=client, columns=label, values=count, aggfunc='sum', fill_value=0) + else: + # if first column is client and others are labels + pivot = df.set_index(df.columns[0]) + # keep only numeric + pivot = pivot.select_dtypes(include='number') + + if pivot.empty: + return + + plt.figure(figsize=(10, max(4, pivot.shape[0] * 0.4))) + sns.heatmap(pivot, annot=False, cmap="Blues") + plt.title(title) + plt.xlabel("Label") + plt.ylabel("Client") + plt.tight_layout() + fname = "label_distribution_train_heatmap.png" if "train" in title.lower() else "label_distribution_test_heatmap.png" + out_path = out_dir / fname + plt.savefig(out_path, dpi=150) + print(f"Saved: {out_path}") + plt.close() + + +def plot_participation(df: pd.DataFrame, out_dir: Path): + if df is None or df.empty: + return + # Expect columns: round, client_id, selected (1/0) or similar + cols = {c.lower(): c for c in df.columns} + round_col = cols.get('round') + client_col = cols.get('client_id') or cols.get('client') + selected_col = cols.get('selected') or cols.get('participated') or None + + if not (round_col and client_col): + return + + if selected_col is None: + # Assume presence indicates participation + df['__selected__'] = 1 + selected_col = '__selected__' + + # Pivot to rounds x clients (0/1) + table = df.pivot_table(index=round_col, columns=client_col, values=selected_col, fill_value=0, aggfunc='max') + plt.figure(figsize=(10, max(3, table.shape[1] * 0.3))) + sns.heatmap(table.T, cmap='Greens', cbar=False) + plt.title('Client Participation by Round') + plt.xlabel('Round') + plt.ylabel('Client') + plt.tight_layout() + out_path = out_dir / 'participation_heatmap.png' + plt.savefig(out_path, dpi=150) + print(f"Saved: {out_path}") + plt.close() + + +def find_first(path: Path, patterns): + if isinstance(patterns, str): + patterns = [patterns] + for pat in patterns: + found = list(path.glob(pat)) + if found: + return found[0] + return None + + +def process_run_dir(run_dir: Path): + charts_dir = run_dir / 'charts' + charts_dir.mkdir(parents=True, exist_ok=True) + + # Try to find metrics csv + metrics_csv = find_first(run_dir, ["training_metrics_*.csv", "metrics*.csv"]) + metrics_df = safe_read_csv(metrics_csv) if metrics_csv else None + + # Contributions and label distributions + contrib_csv = find_first(run_dir, ["data_contribution.csv", "client_sizes.csv"]) + contrib_df = safe_read_csv(contrib_csv) if contrib_csv else None + + label_train_csv = find_first(run_dir, ["label_distribution_train.csv", "label_dist_train.csv"]) + label_test_csv = find_first(run_dir, ["label_distribution_test.csv", "label_dist_test.csv"]) + label_train_df = safe_read_csv(label_train_csv) if label_train_csv else None + label_test_df = safe_read_csv(label_test_csv) if label_test_csv else None + + participation_csv = find_first(run_dir, ["participation.csv"]) + participation_df = safe_read_csv(participation_csv) if participation_csv else None + + # Plotters + plot_metrics_over_rounds(metrics_df, charts_dir) + plot_client_contributions(contrib_df, charts_dir) + plot_label_distribution_heatmap(label_train_df, charts_dir, "Train label distribution") + plot_label_distribution_heatmap(label_test_df, charts_dir, "Test label distribution") + plot_participation(participation_df, charts_dir) + + +def main(): + parser = argparse.ArgumentParser(description="Visualize federated run outputs") + parser.add_argument("--base-dir", type=str, required=True, + help="Base directory that contains clients_X_rounds_Y// run folders") + args = parser.parse_args() + + base = Path(args.base_dir) + if not base.exists(): + print(f"Base directory not found: {base}") + return 1 + + # Expect structure: base/clients_*/TIMESTAMP/ + client_groups = sorted([p for p in base.iterdir() if p.is_dir()]) + if not client_groups: + print(f"No subdirectories found in {base}") + return 0 + + run_count = 0 + for group in client_groups: + timestamps = sorted([p for p in group.iterdir() if p.is_dir()]) + if not timestamps: + continue + for run_dir in timestamps: + process_run_dir(run_dir) + run_count += 1 + + print(f"Visualization complete. Processed {run_count} run(s).") + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/train_distilbart_20news.py b/train_distilbart_20news.py index ed5e99c..1901710 100644 --- a/train_distilbart_20news.py +++ b/train_distilbart_20news.py @@ -1,5 +1,6 @@ import os import sys +import argparse import torch import numpy as np import pandas as pd @@ -17,11 +18,31 @@ from src.models.distilbart import DistilBART from src.datasets.news20 import load_20newsgroups -def train(): +def parse_args(): + parser = argparse.ArgumentParser(description="Federated DistilBART on 20 Newsgroups") + parser.add_argument("--num_clients", type=int, default=10, help="Number of clients") + parser.add_argument("--num_rounds", type=int, default=22, help="Federated rounds") + parser.add_argument("--participation_rate", type=float, default=0.5, + help="Fraction of clients selected per round (0 < r <= 1)") + parser.add_argument("--min_clients_per_round", type=int, default=1, + help="Minimum clients selected per round (use 2 for small-N)") + parser.add_argument("--dirichlet_alpha", type=float, default=None, + help="Dirichlet concentration for non-IID split; None means IID random split") + parser.add_argument("--dirichlet_min_size", type=int, default=10, + help="Minimum samples per client in Dirichlet partition") + parser.add_argument("--output_dir", type=str, default="results_distilbart_fed_runs_20news", + help="Base directory to store run artifacts (metrics, checkpoints, logs)") + return parser.parse_args() + +def train(args): # Configuration config = { - 'num_clients': 10, - 'num_rounds': 22, + 'num_clients': args.num_clients, + 'num_rounds': args.num_rounds, + 'participation_rate': args.participation_rate, + 'min_clients_per_round': args.min_clients_per_round, + 'dirichlet_alpha': args.dirichlet_alpha, + 'dirichlet_min_size': args.dirichlet_min_size, 'epochs_per_client': 1, 'batch_size': 16, 'learning_rate': 2e-5, @@ -29,7 +50,8 @@ def train(): 'model_name': 'distilbart-20news', 'project_name': 'federated-distilbart-20news', 'data_dir': "./data/20newsgroups", - 'model_save_path': "./saved_models/distilbart_20news" + 'model_save_path': "./saved_models/distilbart_20news", + 'output_dir': args.output_dir, } # Initialize wandb @@ -45,6 +67,10 @@ def train(): # Unpack config num_clients = config['num_clients'] num_rounds = config['num_rounds'] + participation_rate = float(config.get('participation_rate', 0.5)) + min_clients_per_round = int(config.get('min_clients_per_round', 1)) + dirichlet_alpha = config.get('dirichlet_alpha', None) + dirichlet_min_size = int(config.get('dirichlet_min_size', 10)) epochs_per_client = config['epochs_per_client'] batch_size = config['batch_size'] learning_rate = config['learning_rate'] @@ -52,10 +78,17 @@ def train(): data_dir = config['data_dir'] model_save_path = config['model_save_path'] - # Create results directory - os.makedirs("results", exist_ok=True) + # Create run-specific results directory + output_dir = config.get('output_dir', 'fed_runs') + os.makedirs(output_dir, exist_ok=True) timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - results_file = f"results/training_metrics_{timestamp}.csv" + run_dir = os.path.join( + output_dir, + f"clients_{num_clients}_rounds_{num_rounds}", + timestamp, + ) + os.makedirs(run_dir, exist_ok=True) + results_file = os.path.join(run_dir, f"training_metrics_{timestamp}.csv") # Initialize metrics storage metrics_columns = [ @@ -71,11 +104,49 @@ def train(): # Load data print("Loading 20 Newsgroups dataset...") train_datasets, test_datasets, num_classes, tokenizer = load_20newsgroups( - data_dir, - num_clients=num_clients, - test_size=0.2, - random_state=42 + data_dir, + num_clients=num_clients, + test_size=0.2, + random_state=42, + dirichlet_alpha=dirichlet_alpha, + dirichlet_min_size=dirichlet_min_size, ) + # Compute and save per-client data contributions and label distributions + total_train = sum(len(ds) for ds in train_datasets) + total_test = sum(len(ds) for ds in test_datasets) + # Access base label arrays from underlying datasets + base_train_labels = train_datasets[0].dataset.labels + base_test_labels = test_datasets[0].dataset.labels + + contrib_rows = [] + label_rows_train = [] + label_rows_test = [] + for cid in range(num_clients): + tr_ds = train_datasets[cid] + te_ds = test_datasets[cid] + tr_idx = tr_ds.indices + te_idx = te_ds.indices + tr_size = len(tr_ds) + te_size = len(te_ds) + contrib_rows.append({ + 'client_id': cid, + 'train_size': tr_size, + 'train_prop': tr_size / total_train if total_train > 0 else 0.0, + 'test_size': te_size, + 'test_prop': te_size / total_test if total_test > 0 else 0.0, + }) + # Label distributions + tr_labels = base_train_labels[tr_idx] + te_labels = base_test_labels[te_idx] + tr_counts = np.bincount(tr_labels, minlength=num_classes) + te_counts = np.bincount(te_labels, minlength=num_classes) + for cls in range(num_classes): + label_rows_train.append({'client_id': cid, 'class_id': cls, 'count': int(tr_counts[cls])}) + label_rows_test.append({'client_id': cid, 'class_id': cls, 'count': int(te_counts[cls])}) + + pd.DataFrame(contrib_rows).to_csv(os.path.join(run_dir, 'data_contribution.csv'), index=False) + pd.DataFrame(label_rows_train).to_csv(os.path.join(run_dir, 'label_distribution_train.csv'), index=False) + pd.DataFrame(label_rows_test).to_csv(os.path.join(run_dir, 'label_distribution_test.csv'), index=False) # Initialize global model print("Initializing DistilBART model...") @@ -94,16 +165,25 @@ def train(): # Federated training loop print("Starting federated training...") + participation_rows = [] for round_num in range(1, num_rounds + 1): print(f"\nRound {round_num}/{num_rounds}") - # Randomly select clients for this round + # Randomly select clients for this round based on participation settings + # Compute number of participants using ceil, enforce bounds + k = int(np.ceil(num_clients * participation_rate)) + k = max(min_clients_per_round, k) + k = min(k, num_clients) selected_clients = np.random.choice( - num_clients, - size=max(1, int(num_clients * 0.5)), # 50% participation rate + num_clients, + size=k, replace=False ) + # Record participation for this round + for cid in range(num_clients): + participation_rows.append({'round': round_num, 'client_id': cid, 'selected': int(cid in selected_clients)}) + # Client update phase client_models = [] client_sizes = [] @@ -253,7 +333,7 @@ def train(): val_loss = 0.0 with torch.no_grad(): - for client_idx in range(min(3, num_clients)): # Evaluate on first 3 clients for efficiency + for client_idx in range(num_clients): # Evaluate on all clients test_loader = DataLoader( test_datasets[client_idx], batch_size=batch_size, @@ -318,8 +398,9 @@ def train(): metrics_df.to_csv(results_file, index=False) print(f"Metrics saved to {results_file}") - # Save model checkpoint - os.makedirs(model_save_path, exist_ok=True) + # Save model checkpoint into run-specific folder + model_checkpoint_dir = os.path.join(run_dir, "checkpoints") + os.makedirs(model_checkpoint_dir, exist_ok=True) torch.save({ 'round': round_num, 'model_state_dict': model.state_dict(), @@ -328,19 +409,22 @@ def train(): 'f1': f1, 'precision': precision, 'recall': recall - }, os.path.join(model_save_path, f'model_round_{round_num}.pt')) + }, os.path.join(model_checkpoint_dir, f'model_round_{round_num}.pt')) - print(f"Model checkpoint saved to {model_save_path}") + print(f"Model checkpoint saved to {model_checkpoint_dir}") # Save model checkpoints to wandb - checkpoint_path = os.path.join(model_save_path, f'model_round_{round_num}.pt') + checkpoint_path = os.path.join(model_checkpoint_dir, f'model_round_{round_num}.pt') wandb.save(checkpoint_path) # Save final metrics to a CSV file metrics_df = pd.DataFrame(metrics_data) - metrics_file = os.path.join("results", f"training_metrics_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv") + metrics_file = os.path.join(run_dir, f"training_metrics_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv") metrics_df.to_csv(metrics_file, index=False) wandb.save(metrics_file) + # Save participation log + if participation_rows: + pd.DataFrame(participation_rows).to_csv(os.path.join(run_dir, 'participation.csv'), index=False) # Log the final metrics as a table metrics_table = wandb.Table(dataframe=metrics_df) @@ -355,4 +439,5 @@ def train(): print(metrics_df.groupby(['phase']).mean(numeric_only=True)[['loss', 'accuracy', 'precision', 'recall', 'f1']]) if __name__ == "__main__": - train() + args = parse_args() + train(args)