ids.alfacom.it/extracted_idf/configure_v04_gpu.py
marco370 0bfe3258b5 Saved progress at the end of the loop
Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 7a657272-55ba-4a79-9a2e-f1ed9bc7a528
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 1c71ce6e-1a3e-4f53-bb5d-77cdd22b8ea3
2025-11-11 09:15:10 +00:00

214 lines
7.6 KiB
Python

#!/usr/bin/env python3
"""
=========================================================================
CONFIGURAZIONE GPU OTTIMIZZATA PER SISTEMA DDoS DETECTION v04
=========================================================================
Ottimizzazioni specifiche per TensorFlow GPU su Tesla M60 + AlmaLinux 9.6
"""
import tensorflow as tf
import os
import logging
import json
from pathlib import Path
def configure_gpu_v04():
"""Configura GPU per sistema DDoS Detection v04"""
print("🎮 CONFIGURAZIONE GPU PER SISTEMA DDoS v04")
print("=" * 50)
# 1. VERIFICA DISPONIBILITÀ GPU
gpus = tf.config.list_physical_devices('GPU')
print(f"📊 GPU disponibili: {len(gpus)}")
if not gpus:
print("❌ Nessuna GPU trovata - modalità CPU")
return False
# 2. CONFIGURAZIONE MEMORIA GPU
try:
# Abilita crescita dinamica memoria (importante per Tesla M60 con 8GB)
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
print(f"✅ Memoria dinamica abilitata per {gpu}")
# Limite memoria virtuale (utile per development)
tf.config.experimental.set_virtual_device_configuration(
gpus[0],
[tf.config.experimental.VirtualDeviceConfiguration(memory_limit=6144)] # 6GB su 8GB
)
print("✅ Limite memoria virtuale: 6GB/8GB")
except RuntimeError as e:
print(f"⚠️ Errore configurazione memoria: {e}")
# 3. OTTIMIZZAZIONI TENSORFLOW
# Mixed precision per Tesla M60 (supporta FP16)
policy = tf.keras.mixed_precision.Policy('mixed_float16')
tf.keras.mixed_precision.set_global_policy(policy)
print("✅ Mixed precision abilitata (FP16)")
# Ottimizzazioni XLA
tf.config.optimizer.set_jit(True)
print("✅ XLA JIT compilation abilitata")
# 4. VARIABILI AMBIENTE OTTIMALI
optimal_env = {
'TF_GPU_MEMORY_GROWTH': '1',
'TF_ENABLE_GPU_GARBAGE_COLLECTION': '1',
'TF_GPU_THREAD_MODE': 'gpu_private',
'TF_ENABLE_ONEDNN_OPTS': '1',
'CUDA_VISIBLE_DEVICES': '0',
'TF_XLA_FLAGS': '--tf_xla_enable_xla_devices',
'TF_ENABLE_AUTO_MIXED_PRECISION': '1'
}
print("\n🌍 VARIABILI AMBIENTE OTTIMALI:")
for key, value in optimal_env.items():
os.environ[key] = value
print(f" {key}={value}")
# 5. TEST PERFORMANCE GPU
print("\n🧪 TEST PERFORMANCE GPU:")
try:
with tf.device('/GPU:0'):
# Test matmul
start_time = tf.timestamp()
a = tf.random.normal([1000, 1000])
b = tf.random.normal([1000, 1000])
c = tf.matmul(a, b)
end_time = tf.timestamp()
gpu_time = (end_time - start_time).numpy()
print(f" Matrix 1000x1000 multiply: {gpu_time:.4f}s")
# Test CPU comparison
with tf.device('/CPU:0'):
start_time = tf.timestamp()
a = tf.random.normal([1000, 1000])
b = tf.random.normal([1000, 1000])
c = tf.matmul(a, b)
end_time = tf.timestamp()
cpu_time = (end_time - start_time).numpy()
print(f" CPU comparison: {cpu_time:.4f}s")
print(f" GPU speedup: {cpu_time/gpu_time:.1f}x")
except Exception as e:
print(f"❌ Errore test performance: {e}")
# 6. INFO DETTAGLIATE GPU
print(f"\n📋 DETTAGLI GPU:")
for i, gpu in enumerate(gpus):
try:
details = tf.config.experimental.get_device_details(gpu)
print(f" GPU {i}:")
for key, value in details.items():
print(f" {key}: {value}")
except:
print(f" GPU {i}: Dettagli non disponibili")
# 7. SALVA CONFIGURAZIONE
config_file = Path('gpu_config_v04.json')
config = {
'gpu_count': len(gpus),
'gpu_names': [str(gpu) for gpu in gpus],
'tensorflow_version': tf.__version__,
'cuda_built': tf.test.is_built_with_cuda(),
'environment': optimal_env,
'mixed_precision': True,
'xla_enabled': True,
'memory_growth': True
}
with open(config_file, 'w') as f:
json.dump(config, f, indent=2)
print(f"\n💾 Configurazione salvata in: {config_file}")
return True
def test_ddos_v04_gpu():
"""Test specifico per modelli DDoS Detection v04"""
print("\n🚀 TEST MODELLI DDoS DETECTION v04 SU GPU")
print("=" * 50)
# Simula addestramento autoencoder v04
print("🤖 Test Autoencoder v04...")
try:
with tf.device('/GPU:0'):
# Simula feature input (176 feature v04)
input_dim = 176
# Autoencoder architecture v04
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(input_dim,)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(input_dim, activation='linear')
])
model.compile(optimizer='adam', loss='mse')
# Test con batch realistico
batch_size = 1000
X_test = tf.random.normal([batch_size, input_dim])
start_time = tf.timestamp()
predictions = model(X_test, training=False)
end_time = tf.timestamp()
inference_time = (end_time - start_time).numpy()
throughput = batch_size / inference_time
print(f" ✅ Batch size: {batch_size}")
print(f" ✅ Inference time: {inference_time:.4f}s")
print(f" ✅ Throughput: {throughput:.0f} campioni/sec")
print(f" ✅ Memory usage: {tf.config.experimental.get_memory_info('GPU:0')}")
except Exception as e:
print(f" ❌ Errore test autoencoder: {e}")
print("\n🎯 RACCOMANDAZIONI PRODUZIONE:")
print(" • Batch size ottimale: 1000-2000 campioni")
print(" • Throughput atteso: 10k+ campioni/sec")
print(" • Memory usage: ~4GB per training completo")
print(" • Parallel ensemble: 5-6 modelli simultanei")
def main():
"""Main function"""
# Configurazione GPU
gpu_available = configure_gpu_v04()
if gpu_available:
# Test specifico DDoS v04
test_ddos_v04_gpu()
print("\n🎉 CONFIGURAZIONE COMPLETATA!")
print("=" * 50)
print("✅ GPU configurata per sistema DDoS Detection v04")
print("✅ Ottimizzazioni Tesla M60 applicate")
print("✅ Mixed precision abilitata")
print("✅ Throughput ottimizzato")
print("\n🚀 COMANDI PRODUZIONE:")
print(" python3 analisys_04.py --max-records 1000000 --memory-optimize")
print(" python3 detect_multi_04.py --advanced --batch-size 2000")
else:
print("\n⚠️ GPU non disponibile - modalità CPU")
print(" Il sistema v04 funzionerà ma con performance ridotte")
if __name__ == "__main__":
main()