Informe de Recursos Computacionales

DETECCION COMPLETADA
NutriScan Analytics · Servidor de desarrollo
2026-06-15T22:42:20 · detect_resources.py v1.0.0
🧪

Proyecto: Pipeline de entrenamiento ResNet-50 — Clasificacion nutricional de alimentos

Dataset: ~200.000 imagenes / 85GB · Objetivo: Fine-tuning de modelo de vision computacional · Sistema: Apple M3 (arm64) · macOS 25.3.0

⚠️

Memoria disponible limitada — Estrategia out-of-core recomendada

Solo 3.81 GB disponibles de 16 GB totales (76.2% en uso). Para un dataset de 85GB, es CRITICO usar procesamiento fuera de memoria con Dask/Zarr. No cargar el dataset completo en RAM.

Recursos detectados
💻
CPU
8
nucleos logicos · arm64
ArquitecturaApple M3 · 4056 MHz
🧠
RAM
3.81 GB
disponibles de 16 GB totales
Uso actual76.2% ocupada
💾
Disco
33.59 GB
disponibles de 460.43 GB totales
Uso actual91.9% ocupado
GPU
1
Apple M3 · 10 GPU cores
✓ Metal
Memoria unificada activa
Especificaciones del sistema

💻
CPU — Procesador

ModeloApple M3
Arquitecturaarm64
Nucleos fisicos8
Nucleos logicos8
Frecuencia max4056 MHz
Frecuencia actual4056 MHz

🧠
Memoria — RAM

Total16.0 GB
Disponible3.81 GB
En uso6.44 GB (76.2%)
Swap total8.0 GB
Swap disponible1.21 GB
Estado⚠ CONSTRAINED

GPU — Aceleracion

ChipsetApple M3
TipoApple Silicon
BackendMetal
Nucleos GPU10 cores
Mem. unificadaSi (comparte RAM)
NVIDIA / AMDNo detectadas
Recomendaciones estrategicas computacionales
🔄
Procesamiento Paralelo
● HIGH PARALLELISM
Con 8 nucleos logicos disponibles, se recomienda paralelismo alto. Workers optimos: 6 workers (cores - 2 para reservar al SO). Ideal para preprocesar el dataset de 200K imagenes en paralelo con joblib o Dask.
joblib multiprocessing dask
W1
W2
W3
W4
W5
W6
SO
SO
Aceleracion GPU
● DISPONIBLE — Metal Backend
Apple M3 con Metal detectado. Para el fine-tuning de ResNet-50, usar PyTorch con backend MPS. La memoria unificada permite que GPU y CPU compartan los 16GB de RAM, optimizando el batch size durante entrenamiento.
pytorch-mps tensorflow-metal jax-metal
import torch device = torch.device('mps') # Metal GPU model = ResNet50().to(device) # Batch size recomendado: 32-64 (mem. constrained)
🧠
Estrategia de Memoria
● MEMORY CONSTRAINED
Solo 3.81 GB disponibles. El dataset de 85GB NO puede cargarse en memoria. Es OBLIGATORIO usar procesamiento fuera de memoria. Usar Dask para lecturas en chunks o Zarr para datos tensoriales. Batch size maximo recomendado: 32 imagenes/batch.
zarr dask h5py
import dask.array as da # Chunking recomendado para 85GB dataset ds = da.from_zarr('dataset.zarr', chunks=(32, 3, 224, 224))
💾
Almacenamiento & Datos Grandes
● MODERATE DISK
33.59 GB libres con disco al 91.9% de capacidad. Espacio justo para el dataset de 85GB: se necesitara almacenamiento externo o limpieza previa. Para checkpoints del modelo ResNet-50 (~100MB c/u), usar formato Parquet/Zarr y rotar checkpoints periodicamente.
zarr h5py parquet
# Espacio disponible: 33.59 GB # Dataset: 85GB → necesita disco externo # Checkpoints: ~100MB x epoch # Estrategia: guardar solo top-3 checkpoints
Output JSON generado — .claude_resources.json
.claude_resources.json — generado por detect_resources.py
{
  "timestamp": "2026-06-15T22:42:20.323464",
  "os": { "system": "Darwin", "release": "25.3.0", "machine": "arm64" },
  "cpu": {
    "physical_cores": 8, "logical_cores": 8,
    "max_frequency_mhz": 4056, "architecture": "arm64"
  },
  "memory": {
    "total_gb": 16.0, "available_gb": 3.81, "percent_used": 76.2
  },
  "gpu": {
    "apple_silicon": { "name": "Apple M3", "backend": "Metal", "unified_memory": true },
    "available_backends": ["Metal"]
  },
  "recommendations": {
    "parallel_processing": { "strategy": "high_parallelism", "suggested_workers": 6 },
    "memory_strategy": { "strategy": "memory_constrained", "libraries": ["zarr","dask","h5py"] },
    "gpu_acceleration": { "available": true, "backends": ["Metal"] },
    "large_data_handling": { "strategy": "moderate_disk" }
  }
}