Spaces:
Sleeping
Sleeping
| """ | |
| utils/model_versioning.py | |
| SecureLens — Model Version Manager | |
| Tracks and manages different model versions. | |
| """ | |
| import os, json | |
| from datetime import datetime | |
| MODELS_DIR = os.path.join( | |
| os.path.dirname(__file__), "..", "cloud_server", "models") | |
| VERSION_FILE = os.path.join(MODELS_DIR, "model_versions.json") | |
| def register_model( | |
| version: str, | |
| accuracy: float, | |
| notes: str = "", | |
| ): | |
| """Registers a trained model version.""" | |
| versions = _load_versions() | |
| versions[version] = { | |
| "version" : version, | |
| "accuracy" : accuracy, | |
| "registered" : datetime.utcnow().isoformat() + "Z", | |
| "notes" : notes, | |
| "files" : [ | |
| "best_model.pth", | |
| "feature_weights.json", | |
| "linear_weights.json", | |
| "first_weights.json", | |
| ], | |
| "ckks_params" : { | |
| "poly_modulus_degree": 8192, | |
| "global_scale" : "2^40", | |
| "security_bits" : 128, | |
| } | |
| } | |
| _save_versions(versions) | |
| print(f"[Versioning] Registered model v{version} " | |
| f"(accuracy={accuracy}%)") | |
| return versions[version] | |
| def get_current_version(): | |
| """Returns the current active model version.""" | |
| versions = _load_versions() | |
| if not versions: | |
| return None | |
| latest = sorted(versions.keys())[-1] | |
| return versions[latest] | |
| def list_versions(): | |
| """Lists all registered model versions.""" | |
| return _load_versions() | |
| def _load_versions(): | |
| if not os.path.exists(VERSION_FILE): | |
| return {} | |
| with open(VERSION_FILE) as f: | |
| return json.load(f) | |
| def _save_versions(versions): | |
| with open(VERSION_FILE, "w") as f: | |
| json.dump(versions, f, indent=2) | |
| if __name__ == "__main__": | |
| register_model( | |
| version="1.0.0", | |
| accuracy=89.42, | |
| notes="ResNet-18 transfer learning, 20 epochs, " | |
| "128x128 input, CKKS 128-bit" | |
| ) | |
| v = get_current_version() | |
| print(f"\nCurrent model: v{v['version']} " | |
| f"({v['accuracy']}% accuracy)") | |
| print("✅ Model versioning working.") |