| import re
|
|
|
| class ModelDiagnostics:
|
| @staticmethod
|
| def estimate_vram(param_str):
|
| """
|
| Estimates VRAM usage based on parameter string (e.g., '7B', '0.5B').
|
| Formula: (Params * Precision Bytes) + 20% Overhead for Context/Activations
|
| """
|
| try:
|
|
|
| clean_str = param_str.lower().replace('b', '').replace('m', '')
|
| val = float(clean_str)
|
|
|
|
|
| if 'm' in param_str.lower():
|
| val = val / 1000.0
|
|
|
|
|
| overhead = 1.2
|
|
|
|
|
| fp16_gb = (val * 2 * overhead)
|
| int8_gb = (val * 1 * overhead)
|
| fp32_gb = (val * 4 * overhead)
|
|
|
| return {
|
| "FP32 (Training/Full)": f"{fp32_gb:.2f} GB",
|
| "FP16 (Inference)": f"{fp16_gb:.2f} GB",
|
| "INT8 (Quantized)": f"{int8_gb:.2f} GB",
|
| "params_in_billions": val
|
| }
|
| except Exception as e:
|
| return None
|
|
|
| @staticmethod
|
| def get_layer_structure(model):
|
| """
|
| Returns the raw string representation of the PyTorch model modules.
|
| """
|
| if model:
|
|
|
| return str(model)
|
| return "Model not loaded." |