Skip to content

Commit cd79ee2

Browse files
committed
Fix: README completo (estructura, wandb login, smoke test Docker, --rm, ) + entrypoint.sh forward args
1 parent 2e5b3b0 commit cd79ee2

2 files changed

Lines changed: 32 additions & 13 deletions

File tree

README.md

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ Clasificador de pistachos (Kirmizi vs Siirt) usando Deep Learning con PyTorch Li
55
## Estructura del proyecto
66

77
```
8+
.
89
├── config/
9-
│ └── configuracion.yaml # Hiperparametros externalizados
10+
│ └── configuracion.yaml # Hiperparametros externalizados (solo los del modelo)
1011
├── src/
1112
│ ├── main.py # Entrypoint CLI (train/sweep)
1213
│ ├── train.py # Entrenamiento con W&B logging
@@ -17,11 +18,17 @@ Clasificador de pistachos (Kirmizi vs Siirt) usando Deep Learning con PyTorch Li
1718
│ ├── utils.py # load_config, get_project_root
1819
│ └── logging_config.py # Configuracion de logging
1920
├── tests/ # Tests unitarios
20-
├── notebook/ # Notebook exploratorio original
21+
│ ├── test_api.py
22+
│ ├── test_data_module.py
23+
│ ├── test_model.py
24+
│ └── test_utils.py
25+
├── notebook/
26+
│ └── pistachio.ipynb # Notebook exploratorio original
2127
├── Dockerfile # Containerizacion (MODE=train|api)
2228
├── entrypoint.sh # Entrypoint flexible
2329
├── .github/workflows/ci.yml # CI/CD con GitHub Actions
24-
└── requirements.txt # Dependencias
30+
├── requirements.txt # Dependencias
31+
└── pytest.ini
2532
```
2633

2734
## Dataset
@@ -33,6 +40,7 @@ Clasificador de pistachos (Kirmizi vs Siirt) usando Deep Learning con PyTorch Li
3340
Editar `config/configuracion.yaml` (solo hiperparametros del modelo):
3441

3542
- `model_type`: `cnn_batchnorm` o `cnn_dropout`
43+
- `semilla`: semilla para reproducibilidad
3644
- `learning_rate`, `batch_size`, `max_epochs`, `patience`
3745
- `dropout_rate`
3846
- `wandb_project`: nombre del proyecto en W&B
@@ -44,13 +52,16 @@ El resto (`output_size=2`, `image_size=28`, splits, etc.) son constantes de arqu
4452
```bash
4553
pip install -r requirements.txt
4654

55+
# Antes de usar W&B, hacer login una vez (o pasar --no-wandb)
56+
wandb login
57+
4758
# Entrenamiento simple
4859
python src/main.py configuracion.yaml
4960

5061
# Sin W&B (offline)
5162
python src/main.py configuracion.yaml --no-wandb
5263

53-
# Smoke test (10% datos, 3 epocas)
64+
# Smoke test (10% datos)
5465
python src/main.py configuracion.yaml --no-wandb --data-fraction 0.1
5566

5667
# W&B Sweep (grid search)
@@ -71,17 +82,20 @@ pytest tests/ -v
7182
```bash
7283
docker build -t pistachio-mlops .
7384

74-
# Entrenamiento (por defecto, usa --no-wandb si no hay WANDB_API_KEY)
75-
docker run --gpus all pistachio-mlops
85+
# Entrenamiento (auto --no-wandb si no hay WANDB_API_KEY)
86+
docker run --rm --gpus all pistachio-mlops
7687

7788
# Entrenamiento sin GPU
78-
docker run pistachio-mlops
89+
docker run --rm pistachio-mlops
7990

8091
# Entrenamiento con W&B
81-
docker run -e WANDB_API_KEY=tu_key pistachio-mlops
92+
docker run --rm -e WANDB_API_KEY=tu_key pistachio-mlops
93+
94+
# Smoke test (10% datos)
95+
docker run --rm -e MODE=train pistachio-mlops --data-fraction 0.1
8296

8397
# API de inferencia (el modelo debe estar en models/ al hacer build)
84-
docker run -p 8000:8000 -e MODE=api pistachio-mlops
98+
docker run --rm -p 8000:8000 -e MODE=api pistachio-mlops
8599
```
86100

87101
## API Endpoints
@@ -95,13 +109,18 @@ Ejemplo:
95109
curl -X POST http://localhost:8000/predict -F "file=@pistacho.jpg"
96110
```
97111

112+
Respuesta:
113+
114+
```json
115+
{"class":"Kirmizi_Pistachio","confidence":0.92,"probabilities":{"Kirmizi_Pistachio":0.92,"Siirt_Pistachio":0.08}}
116+
```
117+
98118
## W&B Report
99119

100-
Sweep: https://wandb.ai/14farresa-/pistachio-mlops/sweeps/2147j105
101-
Proyecto: https://wandb.ai/14farresa-/pistachio-mlops
120+
- Proyecto: https://wandb.ai/14farresa-/pistachio-mlops
121+
- Sweep: https://wandb.ai/14farresa-/pistachio-mlops/sweeps/2147j105
102122

103123
El proyecto incluye un W&B Report con:
104-
105124
- Resultados del sweep (learning rate, batch size, modelo)
106125
- Comparacion de arquitecturas (BatchNorm vs Dropout)
107126
- Metricas finales (accuracy, F1, matriz de confusion)

entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ elif [ "$MODE" = "train" ]; then
1313
WANDB_ARGS="--no-wandb"
1414
fi
1515
echo "Arrancando entrenamiento..."
16-
exec python src/main.py configuracion.yaml $WANDB_ARGS
16+
exec python src/main.py configuracion.yaml $WANDB_ARGS "$@"
1717
else
1818
echo "MODE desconocido: $MODE. Usa 'train' o 'api'."
1919
exit 1

0 commit comments

Comments
 (0)