Upload folder using huggingface_hub
Browse files- __pycache__/predict.cpython-311.pyc +0 -0
- model_pole_position.pt +1 -1
- model_pong.pt +2 -2
- model_sonic.pt +1 -1
- predict.py +61 -82
- train.log +152 -118
__pycache__/predict.cpython-311.pyc
CHANGED
|
Binary files a/__pycache__/predict.cpython-311.pyc and b/__pycache__/predict.cpython-311.pyc differ
|
|
|
model_pole_position.pt
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 2971526
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8e0affcef8e533a29037751e27948a3eb0f2fda2792ce2b3dfc876cadb09e281
|
| 3 |
size 2971526
|
model_pong.pt
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ab8070ddcde00333d7b52c89a0da9a61eece1e67c46163cd011ce4cd3c422f0c
|
| 3 |
+
size 2436712
|
model_sonic.pt
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 6182614
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e7e17327a6f03cb72a35bd3c48d481b4eebea5db6572ed2b3fa290b330bca304
|
| 3 |
size 6182614
|
predict.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
"""
|
| 2 |
import sys
|
| 3 |
import os
|
| 4 |
import numpy as np
|
|
@@ -11,6 +11,12 @@ CONTEXT_FRAMES = 8
|
|
| 11 |
PRED_FRAMES = 8
|
| 12 |
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
|
| 13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
def detect_game(context_frames: np.ndarray) -> str:
|
| 16 |
first_8 = context_frames[:CONTEXT_FRAMES]
|
|
@@ -26,65 +32,56 @@ def detect_game(context_frames: np.ndarray) -> str:
|
|
| 26 |
return "sonic"
|
| 27 |
|
| 28 |
|
| 29 |
-
class
|
| 30 |
-
def __init__(self):
|
| 31 |
-
self.models =
|
| 32 |
-
self.
|
| 33 |
self.cache_step = 0
|
| 34 |
|
| 35 |
def reset_cache(self):
|
| 36 |
-
self.
|
| 37 |
self.cache_step = 0
|
| 38 |
|
| 39 |
|
| 40 |
def load_model(model_dir: str):
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
sonic = UNet(in_channels=24, out_channels=24,
|
| 55 |
-
enc_channels=(48, 96, 192), bottleneck_channels=256,
|
| 56 |
-
upsample_mode="bilinear").to(DEVICE)
|
| 57 |
-
sd = torch.load(os.path.join(model_dir, "model_sonic.pt"),
|
| 58 |
-
map_location=DEVICE, weights_only=True)
|
| 59 |
-
sonic.load_state_dict({k: v.float() for k, v in sd.items()})
|
| 60 |
-
sonic.eval()
|
| 61 |
-
hybrid.models["sonic"] = sonic
|
| 62 |
-
|
| 63 |
-
# PP: direct 8-frame model (24 outputs)
|
| 64 |
-
pp = UNet(in_channels=24, out_channels=24,
|
| 65 |
-
enc_channels=(32, 64, 128), bottleneck_channels=192,
|
| 66 |
-
upsample_mode="bilinear").to(DEVICE)
|
| 67 |
-
sd = torch.load(os.path.join(model_dir, "model_pole_position.pt"),
|
| 68 |
-
map_location=DEVICE, weights_only=True)
|
| 69 |
-
pp.load_state_dict({k: v.float() for k, v in sd.items()})
|
| 70 |
-
pp.eval()
|
| 71 |
-
hybrid.models["pole_position"] = pp
|
| 72 |
-
|
| 73 |
-
return hybrid
|
| 74 |
|
| 75 |
|
| 76 |
def _predict_8frames(model, context_tensor, last_tensor):
|
| 77 |
output = model(context_tensor) # (1, 24, 64, 64)
|
| 78 |
residuals = output.reshape(1, PRED_FRAMES, 3, 64, 64)
|
| 79 |
last_expanded = last_tensor.unsqueeze(1).expand_as(residuals)
|
| 80 |
-
return torch.clamp(last_expanded + residuals, 0, 1)
|
| 81 |
|
| 82 |
|
| 83 |
-
def predict_next_frame(
|
| 84 |
-
game = detect_game(context_frames)
|
| 85 |
-
model = hybrid.models[game]
|
| 86 |
n = len(context_frames)
|
| 87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
if n < CONTEXT_FRAMES:
|
| 89 |
padding = np.stack([context_frames[0]] * (CONTEXT_FRAMES - n), axis=0)
|
| 90 |
frames = np.concatenate([padding, context_frames], axis=0)
|
|
@@ -98,50 +95,32 @@ def predict_next_frame(hybrid, context_frames: np.ndarray) -> np.ndarray:
|
|
| 98 |
last_frame = frames_norm[-1]
|
| 99 |
last_frame_t = np.transpose(last_frame, (2, 0, 1))[np.newaxis]
|
| 100 |
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
context_tensor = torch.from_numpy(context).to(DEVICE)
|
| 105 |
-
last_tensor = torch.from_numpy(last_frame_t).to(DEVICE)
|
| 106 |
-
residual = model(context_tensor)
|
| 107 |
-
predicted = torch.clamp(last_tensor + residual, 0, 1)
|
| 108 |
|
| 109 |
-
|
| 110 |
-
predicted_np = np.transpose(predicted_np, (1, 2, 0))
|
| 111 |
-
predicted_np = (predicted_np * 255).clip(0, 255).astype(np.uint8)
|
| 112 |
-
return predicted_np
|
| 113 |
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
hybrid.reset_cache()
|
| 121 |
-
return result
|
| 122 |
-
|
| 123 |
-
# New window: predict all 8 frames with TTA
|
| 124 |
-
hybrid.reset_cache()
|
| 125 |
-
with torch.no_grad():
|
| 126 |
-
context_tensor = torch.from_numpy(context).to(DEVICE)
|
| 127 |
-
last_tensor = torch.from_numpy(last_frame_t).to(DEVICE)
|
| 128 |
-
|
| 129 |
-
predicted_orig = _predict_8frames(model, context_tensor, last_tensor)
|
| 130 |
-
|
| 131 |
-
# TTA: horizontal flip
|
| 132 |
context_flipped = torch.flip(context_tensor, dims=[3])
|
| 133 |
last_flipped = torch.flip(last_tensor, dims=[3])
|
| 134 |
predicted_flipped = _predict_8frames(model, context_flipped, last_flipped)
|
| 135 |
-
|
|
|
|
| 136 |
predicted = (predicted_orig + predicted_flipped) / 2.0
|
| 137 |
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
|
|
|
| 1 |
+
"""Direct 8-frame prediction for all games with TTA."""
|
| 2 |
import sys
|
| 3 |
import os
|
| 4 |
import numpy as np
|
|
|
|
| 11 |
PRED_FRAMES = 8
|
| 12 |
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
|
| 13 |
|
| 14 |
+
GAME_CONFIGS = {
|
| 15 |
+
"pong": {"enc_channels": (32, 64, 128), "bottleneck": 128},
|
| 16 |
+
"sonic": {"enc_channels": (48, 96, 192), "bottleneck": 256},
|
| 17 |
+
"pole_position": {"enc_channels": (32, 64, 128), "bottleneck": 192},
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
|
| 21 |
def detect_game(context_frames: np.ndarray) -> str:
|
| 22 |
first_8 = context_frames[:CONTEXT_FRAMES]
|
|
|
|
| 32 |
return "sonic"
|
| 33 |
|
| 34 |
|
| 35 |
+
class ModelCache:
|
| 36 |
+
def __init__(self, models):
|
| 37 |
+
self.models = models
|
| 38 |
+
self.cached_predictions = None
|
| 39 |
self.cache_step = 0
|
| 40 |
|
| 41 |
def reset_cache(self):
|
| 42 |
+
self.cached_predictions = None
|
| 43 |
self.cache_step = 0
|
| 44 |
|
| 45 |
|
| 46 |
def load_model(model_dir: str):
|
| 47 |
+
models = {}
|
| 48 |
+
for game, cfg in GAME_CONFIGS.items():
|
| 49 |
+
model = UNet(in_channels=24, out_channels=24,
|
| 50 |
+
enc_channels=cfg["enc_channels"],
|
| 51 |
+
bottleneck_channels=cfg["bottleneck"],
|
| 52 |
+
upsample_mode="bilinear").to(DEVICE)
|
| 53 |
+
state_dict = torch.load(os.path.join(model_dir, f"model_{game}.pt"),
|
| 54 |
+
map_location=DEVICE, weights_only=True)
|
| 55 |
+
state_dict = {k: v.float() for k, v in state_dict.items()}
|
| 56 |
+
model.load_state_dict(state_dict)
|
| 57 |
+
model.eval()
|
| 58 |
+
models[game] = model
|
| 59 |
+
return ModelCache(models)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
|
| 61 |
|
| 62 |
def _predict_8frames(model, context_tensor, last_tensor):
|
| 63 |
output = model(context_tensor) # (1, 24, 64, 64)
|
| 64 |
residuals = output.reshape(1, PRED_FRAMES, 3, 64, 64)
|
| 65 |
last_expanded = last_tensor.unsqueeze(1).expand_as(residuals)
|
| 66 |
+
return torch.clamp(last_expanded + residuals, 0, 1) # (1, 8, 3, 64, 64)
|
| 67 |
|
| 68 |
|
| 69 |
+
def predict_next_frame(cache, context_frames: np.ndarray) -> np.ndarray:
|
|
|
|
|
|
|
| 70 |
n = len(context_frames)
|
| 71 |
|
| 72 |
+
# If cache exists and context grew (AR rollout), return next cached frame
|
| 73 |
+
if cache.cached_predictions is not None and n > CONTEXT_FRAMES and cache.cache_step < PRED_FRAMES:
|
| 74 |
+
result = cache.cached_predictions[cache.cache_step]
|
| 75 |
+
cache.cache_step += 1
|
| 76 |
+
if cache.cache_step >= PRED_FRAMES:
|
| 77 |
+
cache.reset_cache()
|
| 78 |
+
return result
|
| 79 |
+
|
| 80 |
+
# New window: predict all 8 frames
|
| 81 |
+
cache.reset_cache()
|
| 82 |
+
game = detect_game(context_frames)
|
| 83 |
+
model = cache.models[game]
|
| 84 |
+
|
| 85 |
if n < CONTEXT_FRAMES:
|
| 86 |
padding = np.stack([context_frames[0]] * (CONTEXT_FRAMES - n), axis=0)
|
| 87 |
frames = np.concatenate([padding, context_frames], axis=0)
|
|
|
|
| 95 |
last_frame = frames_norm[-1]
|
| 96 |
last_frame_t = np.transpose(last_frame, (2, 0, 1))[np.newaxis]
|
| 97 |
|
| 98 |
+
with torch.no_grad():
|
| 99 |
+
context_tensor = torch.from_numpy(context).to(DEVICE)
|
| 100 |
+
last_tensor = torch.from_numpy(last_frame_t).to(DEVICE)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
|
| 102 |
+
predicted_orig = _predict_8frames(model, context_tensor, last_tensor)
|
|
|
|
|
|
|
|
|
|
| 103 |
|
| 104 |
+
if game == "pong":
|
| 105 |
+
# Pong: no TTA (asymmetric)
|
| 106 |
+
predicted = predicted_orig
|
| 107 |
+
else:
|
| 108 |
+
# TTA: horizontal flip (dim=3 is width for (B, T, C, H, W) reshaped from (B, 24, H, W))
|
| 109 |
+
# But we work on (1, 24, H, W) context - flip along dim 3 (width)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
context_flipped = torch.flip(context_tensor, dims=[3])
|
| 111 |
last_flipped = torch.flip(last_tensor, dims=[3])
|
| 112 |
predicted_flipped = _predict_8frames(model, context_flipped, last_flipped)
|
| 113 |
+
# Flip back: predicted_flipped is (1, 8, 3, H, W), flip width dim=4
|
| 114 |
+
predicted_flipped = torch.flip(predicted_flipped, dims=[4])
|
| 115 |
predicted = (predicted_orig + predicted_flipped) / 2.0
|
| 116 |
|
| 117 |
+
predicted_np = predicted[0].cpu().numpy() # (8, 3, 64, 64)
|
| 118 |
+
cache.cached_predictions = []
|
| 119 |
+
for i in range(PRED_FRAMES):
|
| 120 |
+
frame = np.transpose(predicted_np[i], (1, 2, 0))
|
| 121 |
+
frame = (frame * 255).clip(0, 255).astype(np.uint8)
|
| 122 |
+
cache.cached_predictions.append(frame)
|
| 123 |
|
| 124 |
+
result = cache.cached_predictions[cache.cache_step]
|
| 125 |
+
cache.cache_step += 1
|
| 126 |
+
return result
|
train.log
CHANGED
|
@@ -1,118 +1,152 @@
|
|
| 1 |
-
[2026-04-11
|
| 2 |
-
[2026-04-11
|
| 3 |
-
[2026-04-11
|
| 4 |
-
[2026-04-11
|
| 5 |
-
[2026-04-11
|
| 6 |
-
[2026-04-11
|
| 7 |
-
[2026-04-11
|
| 8 |
-
[2026-04-11
|
| 9 |
-
[2026-04-11
|
| 10 |
-
[2026-04-11
|
| 11 |
-
[2026-04-11
|
| 12 |
-
[2026-04-11
|
| 13 |
-
[2026-04-11
|
| 14 |
-
[2026-04-11
|
| 15 |
-
[2026-04-11
|
| 16 |
-
[2026-04-11
|
| 17 |
-
[2026-04-11
|
| 18 |
-
[2026-04-11
|
| 19 |
-
[2026-04-11
|
| 20 |
-
[2026-04-11
|
| 21 |
-
[2026-04-11
|
| 22 |
-
[2026-04-11
|
| 23 |
-
[2026-04-11
|
| 24 |
-
[2026-04-11
|
| 25 |
-
[2026-04-11
|
| 26 |
-
[2026-04-11
|
| 27 |
-
[2026-04-11
|
| 28 |
-
[2026-04-11
|
| 29 |
-
[2026-04-11
|
| 30 |
-
[2026-04-11
|
| 31 |
-
[2026-04-11
|
| 32 |
-
[2026-04-11
|
| 33 |
-
[2026-04-11
|
| 34 |
-
[2026-04-11
|
| 35 |
-
[2026-04-11
|
| 36 |
-
[2026-04-11
|
| 37 |
-
[2026-04-11
|
| 38 |
-
[2026-04-11
|
| 39 |
-
[2026-04-11
|
| 40 |
-
[2026-04-11
|
| 41 |
-
[2026-04-11
|
| 42 |
-
[2026-04-11
|
| 43 |
-
[2026-04-11
|
| 44 |
-
[2026-04-11
|
| 45 |
-
[2026-04-11
|
| 46 |
-
[2026-04-11
|
| 47 |
-
[2026-04-11
|
| 48 |
-
[2026-04-11
|
| 49 |
-
[2026-04-11
|
| 50 |
-
[2026-04-11
|
| 51 |
-
[2026-04-11
|
| 52 |
-
[2026-04-11
|
| 53 |
-
[2026-04-11
|
| 54 |
-
[2026-04-11
|
| 55 |
-
[2026-04-11
|
| 56 |
-
[2026-04-11
|
| 57 |
-
[2026-04-11
|
| 58 |
-
[2026-04-11
|
| 59 |
-
[2026-04-11
|
| 60 |
-
[2026-04-11
|
| 61 |
-
[2026-04-11
|
| 62 |
-
[2026-04-11
|
| 63 |
-
[2026-04-11
|
| 64 |
-
[2026-04-11
|
| 65 |
-
[2026-04-11
|
| 66 |
-
[2026-04-11
|
| 67 |
-
[2026-04-11
|
| 68 |
-
[2026-04-11
|
| 69 |
-
[2026-04-11
|
| 70 |
-
[2026-04-11
|
| 71 |
-
[2026-04-11
|
| 72 |
-
[2026-04-11 17:
|
| 73 |
-
[2026-04-11
|
| 74 |
-
[2026-04-11
|
| 75 |
-
[2026-04-11
|
| 76 |
-
[2026-04-11
|
| 77 |
-
[2026-04-11
|
| 78 |
-
[2026-04-11
|
| 79 |
-
[2026-04-11
|
| 80 |
-
[2026-04-11
|
| 81 |
-
[2026-04-11
|
| 82 |
-
[2026-04-11
|
| 83 |
-
[2026-04-11
|
| 84 |
-
[2026-04-11
|
| 85 |
-
[2026-04-11
|
| 86 |
-
[2026-04-11
|
| 87 |
-
[2026-04-11
|
| 88 |
-
[2026-04-11
|
| 89 |
-
[2026-04-11
|
| 90 |
-
[2026-04-11
|
| 91 |
-
[2026-04-11
|
| 92 |
-
[2026-04-11
|
| 93 |
-
[2026-04-11
|
| 94 |
-
[2026-04-11
|
| 95 |
-
[2026-04-11
|
| 96 |
-
[2026-04-11
|
| 97 |
-
[2026-04-11
|
| 98 |
-
[2026-04-11
|
| 99 |
-
[2026-04-11
|
| 100 |
-
[2026-04-11
|
| 101 |
-
[2026-04-11
|
| 102 |
-
[2026-04-11
|
| 103 |
-
[2026-04-11
|
| 104 |
-
[2026-04-11
|
| 105 |
-
[2026-04-11
|
| 106 |
-
[2026-04-11
|
| 107 |
-
[2026-04-11
|
| 108 |
-
[2026-04-11
|
| 109 |
-
[2026-04-11
|
| 110 |
-
[2026-04-11
|
| 111 |
-
[2026-04-11
|
| 112 |
-
[2026-04-11
|
| 113 |
-
[2026-04-11
|
| 114 |
-
[2026-04-11
|
| 115 |
-
[2026-04-11
|
| 116 |
-
[2026-04-11
|
| 117 |
-
[2026-04-11
|
| 118 |
-
[2026-04-11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[2026-04-11 20:37:53] Starting improved direct 8-frame training for 2026-04-11-210000-direct-improved
|
| 2 |
+
[2026-04-11 20:37:53] Device: cuda
|
| 3 |
+
[2026-04-11 20:37:53] === pong ===
|
| 4 |
+
[2026-04-11 20:37:53] pong: 1,199,224 params (2.3 MB fp16)
|
| 5 |
+
[2026-04-11 20:37:54] pong train: 8194 seqs (len=16)
|
| 6 |
+
[2026-04-11 20:37:54] pong val: 964 seqs (len=16)
|
| 7 |
+
[2026-04-11 20:38:15] pong E1/150 | T:0.245151(S:0.6311) V:0.225469(S:0.6589) LR:2.00e-04
|
| 8 |
+
[2026-04-11 20:38:35] pong E2/150 | T:0.207902(S:0.6846) V:0.207636(S:0.6836) LR:2.00e-04
|
| 9 |
+
[2026-04-11 20:38:55] pong E3/150 | T:0.183334(S:0.7217) V:0.184517(S:0.7193) LR:2.00e-04
|
| 10 |
+
[2026-04-11 20:39:15] pong E4/150 | T:0.162890(S:0.7525) V:0.170139(S:0.7405) LR:2.00e-04
|
| 11 |
+
[2026-04-11 20:39:35] pong E5/150 | T:0.148245(S:0.7747) V:0.168455(S:0.7455) LR:1.99e-04
|
| 12 |
+
[2026-04-11 20:39:54] pong E6/150 | T:0.134784(S:0.7951) V:0.155488(S:0.7639) LR:1.99e-04
|
| 13 |
+
[2026-04-11 20:40:15] pong E7/150 | T:0.125337(S:0.8093) V:0.153139(S:0.7670) LR:1.99e-04
|
| 14 |
+
[2026-04-11 20:40:35] pong E8/150 | T:0.117548(S:0.8213) V:0.140387(S:0.7865) LR:1.99e-04
|
| 15 |
+
[2026-04-11 20:40:55] pong E9/150 | T:0.110727(S:0.8316) V:0.139567(S:0.7879) LR:1.98e-04
|
| 16 |
+
[2026-04-11 20:41:15] pong E10/150 | T:0.105040(S:0.8404) V:0.135133(S:0.7943) LR:1.98e-04
|
| 17 |
+
[2026-04-11 20:41:55] pong E12/150 | T:0.096706(S:0.8530) V:0.133117(S:0.7976) LR:1.97e-04
|
| 18 |
+
[2026-04-11 20:42:15] pong E13/150 | T:0.093069(S:0.8586) V:0.128657(S:0.8049) LR:1.96e-04
|
| 19 |
+
[2026-04-11 20:42:35] pong E14/150 | T:0.089584(S:0.8641) V:0.127223(S:0.8071) LR:1.96e-04
|
| 20 |
+
[2026-04-11 20:42:55] pong E15/150 | T:0.086566(S:0.8686) V:0.123897(S:0.8117) LR:1.95e-04
|
| 21 |
+
[2026-04-11 20:43:35] pong E17/150 | T:0.081673(S:0.8762) V:0.123559(S:0.8119) LR:1.94e-04
|
| 22 |
+
[2026-04-11 20:44:15] pong E19/150 | T:0.076816(S:0.8836) V:0.120578(S:0.8168) LR:1.92e-04
|
| 23 |
+
[2026-04-11 20:44:35] pong E20/150 | T:0.075138(S:0.8862) V:0.123831(S:0.8129) LR:1.91e-04
|
| 24 |
+
[2026-04-11 20:44:54] pong E21/150 | T:0.072953(S:0.8897) V:0.120207(S:0.8171) LR:1.91e-04
|
| 25 |
+
[2026-04-11 20:45:14] pong E22/150 | T:0.071339(S:0.8922) V:0.118498(S:0.8202) LR:1.90e-04
|
| 26 |
+
[2026-04-11 20:45:35] pong E23/150 | T:0.069781(S:0.8947) V:0.117458(S:0.8223) LR:1.89e-04
|
| 27 |
+
[2026-04-11 20:46:12] pong E25/150 | T:0.067305(S:0.8984) V:0.116407(S:0.8233) LR:1.87e-04
|
| 28 |
+
[2026-04-11 20:46:32] pong E26/150 | T:0.065223(S:0.9018) V:0.115602(S:0.8242) LR:1.86e-04
|
| 29 |
+
[2026-04-11 20:47:12] pong E28/150 | T:0.062886(S:0.9054) V:0.113464(S:0.8277) LR:1.83e-04
|
| 30 |
+
[2026-04-11 20:47:32] pong E29/150 | T:0.061637(S:0.9073) V:0.112811(S:0.8285) LR:1.82e-04
|
| 31 |
+
[2026-04-11 20:47:51] pong E30/150 | T:0.060839(S:0.9086) V:0.112722(S:0.8292) LR:1.81e-04
|
| 32 |
+
[2026-04-11 20:48:12] pong E31/150 | T:0.059712(S:0.9104) V:0.111062(S:0.8316) LR:1.80e-04
|
| 33 |
+
[2026-04-11 20:49:12] pong E34/150 | T:0.056734(S:0.9149) V:0.111023(S:0.8316) LR:1.76e-04
|
| 34 |
+
[2026-04-11 20:49:32] pong E35/150 | T:0.055712(S:0.9165) V:0.110123(S:0.8330) LR:1.74e-04
|
| 35 |
+
[2026-04-11 20:50:10] pong E37/150 | T:0.054400(S:0.9186) V:0.109606(S:0.8340) LR:1.72e-04
|
| 36 |
+
[2026-04-11 20:51:10] pong E40/150 | T:0.052566(S:0.9215) V:0.109744(S:0.8340) LR:1.67e-04
|
| 37 |
+
[2026-04-11 20:51:30] pong E41/150 | T:0.051662(S:0.9229) V:0.108173(S:0.8359) LR:1.66e-04
|
| 38 |
+
[2026-04-11 20:52:10] pong E43/150 | T:0.050829(S:0.9242) V:0.107573(S:0.8367) LR:1.62e-04
|
| 39 |
+
[2026-04-11 20:52:30] pong E44/150 | T:0.049584(S:0.9261) V:0.107344(S:0.8375) LR:1.61e-04
|
| 40 |
+
[2026-04-11 20:53:30] pong E47/150 | T:0.047870(S:0.9288) V:0.107087(S:0.8377) LR:1.56e-04
|
| 41 |
+
[2026-04-11 20:53:49] pong E48/150 | T:0.047106(S:0.9299) V:0.105825(S:0.8395) LR:1.54e-04
|
| 42 |
+
[2026-04-11 20:54:29] pong E50/150 | T:0.046352(S:0.9312) V:0.108601(S:0.8357) LR:1.50e-04
|
| 43 |
+
[2026-04-11 20:55:09] pong E52/150 | T:0.045529(S:0.9325) V:0.105138(S:0.8406) LR:1.47e-04
|
| 44 |
+
[2026-04-11 20:56:08] pong E55/150 | T:0.043897(S:0.9350) V:0.104684(S:0.8416) LR:1.41e-04
|
| 45 |
+
[2026-04-11 20:56:27] pong E56/150 | T:0.043453(S:0.9357) V:0.104668(S:0.8417) LR:1.39e-04
|
| 46 |
+
[2026-04-11 20:57:45] pong E60/150 | T:0.041694(S:0.9384) V:0.103771(S:0.8432) LR:1.31e-04
|
| 47 |
+
[2026-04-11 20:58:23] pong E62/150 | T:0.040995(S:0.9395) V:0.103378(S:0.8433) LR:1.27e-04
|
| 48 |
+
[2026-04-11 20:59:03] pong E64/150 | T:0.040430(S:0.9403) V:0.102376(S:0.8449) LR:1.23e-04
|
| 49 |
+
[2026-04-11 21:01:00] pong E70/150 | T:0.038175(S:0.9439) V:0.101971(S:0.8454) LR:1.11e-04
|
| 50 |
+
[2026-04-11 21:01:20] pong E71/150 | T:0.038048(S:0.9441) V:0.101782(S:0.8458) LR:1.09e-04
|
| 51 |
+
[2026-04-11 21:02:01] pong E73/150 | T:0.037274(S:0.9453) V:0.101483(S:0.8464) LR:1.05e-04
|
| 52 |
+
[2026-04-11 21:02:21] pong E74/150 | T:0.037082(S:0.9456) V:0.101132(S:0.8470) LR:1.03e-04
|
| 53 |
+
[2026-04-11 21:03:35] pong E78/150 | T:0.036125(S:0.9471) V:0.100967(S:0.8472) LR:9.43e-05
|
| 54 |
+
[2026-04-11 21:04:14] pong E80/150 | T:0.035617(S:0.9479) V:0.101149(S:0.8473) LR:9.01e-05
|
| 55 |
+
[2026-04-11 21:04:34] pong E81/150 | T:0.035287(S:0.9484) V:0.100887(S:0.8473) LR:8.80e-05
|
| 56 |
+
[2026-04-11 21:05:14] pong E83/150 | T:0.034890(S:0.9490) V:0.100673(S:0.8476) LR:8.39e-05
|
| 57 |
+
[2026-04-11 21:05:34] pong E84/150 | T:0.034546(S:0.9495) V:0.100503(S:0.8481) LR:8.19e-05
|
| 58 |
+
[2026-04-11 21:05:53] pong E85/150 | T:0.034332(S:0.9499) V:0.100085(S:0.8486) LR:7.98e-05
|
| 59 |
+
[2026-04-11 21:06:51] pong E88/150 | T:0.033905(S:0.9505) V:0.099703(S:0.8491) LR:7.37e-05
|
| 60 |
+
[2026-04-11 21:07:32] pong E90/150 | T:0.033352(S:0.9514) V:0.100154(S:0.8485) LR:6.98e-05
|
| 61 |
+
[2026-04-11 21:07:49] pong E91/150 | T:0.033275(S:0.9515) V:0.099463(S:0.8496) LR:6.78e-05
|
| 62 |
+
[2026-04-11 21:08:28] pong E93/150 | T:0.032808(S:0.9522) V:0.099426(S:0.8497) LR:6.39e-05
|
| 63 |
+
[2026-04-11 21:09:07] pong E95/150 | T:0.032401(S:0.9529) V:0.099274(S:0.8498) LR:6.00e-05
|
| 64 |
+
[2026-04-11 21:10:47] pong E100/150 | T:0.031693(S:0.9539) V:0.099102(S:0.8502) LR:5.07e-05
|
| 65 |
+
[2026-04-11 21:11:07] pong E101/150 | T:0.031556(S:0.9542) V:0.098989(S:0.8504) LR:4.90e-05
|
| 66 |
+
[2026-04-11 21:12:05] pong E104/150 | T:0.031188(S:0.9547) V:0.098818(S:0.8506) LR:4.37e-05
|
| 67 |
+
[2026-04-11 21:12:26] pong E105/150 | T:0.031013(S:0.9550) V:0.098630(S:0.8508) LR:4.20e-05
|
| 68 |
+
[2026-04-11 21:12:45] pong E106/150 | T:0.030918(S:0.9552) V:0.098413(S:0.8511) LR:4.03e-05
|
| 69 |
+
[2026-04-11 21:14:05] pong E110/150 | T:0.030445(S:0.9559) V:0.099033(S:0.8506) LR:3.39e-05
|
| 70 |
+
[2026-04-11 21:15:25] pong E114/150 | T:0.030015(S:0.9566) V:0.098366(S:0.8513) LR:2.80e-05
|
| 71 |
+
[2026-04-11 21:16:25] pong E117/150 | T:0.029792(S:0.9569) V:0.098095(S:0.8517) LR:2.38e-05
|
| 72 |
+
[2026-04-11 21:17:24] pong E120/150 | T:0.029565(S:0.9573) V:0.098241(S:0.8515) LR:2.00e-05
|
| 73 |
+
[2026-04-11 21:19:24] pong E126/150 | T:0.029172(S:0.9579) V:0.098066(S:0.8518) LR:1.33e-05
|
| 74 |
+
[2026-04-11 21:20:03] pong E128/150 | T:0.029068(S:0.9580) V:0.098040(S:0.8518) LR:1.14e-05
|
| 75 |
+
[2026-04-11 21:20:43] pong E130/150 | T:0.029001(S:0.9581) V:0.098031(S:0.8518) LR:9.60e-06
|
| 76 |
+
[2026-04-11 21:21:03] pong E131/150 | T:0.028939(S:0.9582) V:0.097892(S:0.8521) LR:8.77e-06
|
| 77 |
+
[2026-04-11 21:24:01] pong E140/150 | T:0.028630(S:0.9587) V:0.097958(S:0.8520) LR:3.17e-06
|
| 78 |
+
[2026-04-11 21:25:19] pong E144/150 | T:0.028567(S:0.9588) V:0.097818(S:0.8522) LR:1.78e-06
|
| 79 |
+
[2026-04-11 21:27:18] pong E150/150 | T:0.028536(S:0.9589) V:0.097904(S:0.8521) LR:1.00e-06
|
| 80 |
+
[2026-04-11 21:27:18] pong done. Best: 0.097818
|
| 81 |
+
[2026-04-11 21:27:18] === pole_position ===
|
| 82 |
+
[2026-04-11 21:27:18] pole_position: 1,465,848 params (2.8 MB fp16)
|
| 83 |
+
[2026-04-11 21:27:19] pole_position train: 4097 seqs (len=16)
|
| 84 |
+
[2026-04-11 21:27:19] pole_position val: 482 seqs (len=16)
|
| 85 |
+
[2026-04-11 21:27:29] pole_position E1/150 | T:0.072483(S:0.9013) V:0.055104(S:0.9272) LR:2.00e-04
|
| 86 |
+
[2026-04-11 21:27:39] pole_position E2/150 | T:0.060683(S:0.9178) V:0.049558(S:0.9337) LR:2.00e-04
|
| 87 |
+
[2026-04-11 21:27:49] pole_position E3/150 | T:0.056482(S:0.9234) V:0.049681(S:0.9330) LR:2.00e-04
|
| 88 |
+
[2026-04-11 21:28:00] pole_position E4/150 | T:0.053962(S:0.9268) V:0.047040(S:0.9371) LR:2.00e-04
|
| 89 |
+
[2026-04-11 21:28:09] pole_position E5/150 | T:0.051783(S:0.9298) V:0.043891(S:0.9410) LR:1.99e-04
|
| 90 |
+
[2026-04-11 21:28:39] pole_position E8/150 | T:0.047291(S:0.9360) V:0.042535(S:0.9431) LR:1.99e-04
|
| 91 |
+
[2026-04-11 21:28:48] pole_position E9/150 | T:0.046385(S:0.9372) V:0.041829(S:0.9440) LR:1.98e-04
|
| 92 |
+
[2026-04-11 21:28:58] pole_position E10/150 | T:0.045514(S:0.9385) V:0.042079(S:0.9438) LR:1.98e-04
|
| 93 |
+
[2026-04-11 21:29:09] pole_position E11/150 | T:0.044486(S:0.9399) V:0.040944(S:0.9449) LR:1.97e-04
|
| 94 |
+
[2026-04-11 21:29:47] pole_position E15/150 | T:0.041111(S:0.9447) V:0.039725(S:0.9465) LR:1.95e-04
|
| 95 |
+
[2026-04-11 21:30:37] pole_position E20/150 | T:0.038348(S:0.9487) V:0.038742(S:0.9477) LR:1.91e-04
|
| 96 |
+
[2026-04-11 21:30:46] pole_position E21/150 | T:0.037787(S:0.9495) V:0.038655(S:0.9481) LR:1.91e-04
|
| 97 |
+
[2026-04-11 21:31:18] pole_position E24/150 | T:0.036649(S:0.9511) V:0.038322(S:0.9481) LR:1.88e-04
|
| 98 |
+
[2026-04-11 21:32:18] pole_position E30/150 | T:0.034550(S:0.9541) V:0.038329(S:0.9484) LR:1.81e-04
|
| 99 |
+
[2026-04-11 21:33:18] pole_position E36/150 | T:0.033149(S:0.9561) V:0.038183(S:0.9480) LR:1.73e-04
|
| 100 |
+
[2026-04-11 21:33:59] pole_position E40/150 | T:0.032073(S:0.9577) V:0.038579(S:0.9475) LR:1.67e-04
|
| 101 |
+
[2026-04-11 21:34:09] pole_position E41/150 | T:0.031761(S:0.9581) V:0.037873(S:0.9485) LR:1.66e-04
|
| 102 |
+
[2026-04-11 21:34:19] pole_position E42/150 | T:0.031713(S:0.9582) V:0.036978(S:0.9498) LR:1.64e-04
|
| 103 |
+
[2026-04-11 21:35:39] pole_position E50/150 | T:0.030141(S:0.9604) V:0.038688(S:0.9470) LR:1.50e-04
|
| 104 |
+
[2026-04-11 21:37:19] pole_position E60/150 | T:0.028820(S:0.9623) V:0.038451(S:0.9473) LR:1.31e-04
|
| 105 |
+
[2026-04-11 21:39:00] pole_position E70/150 | T:0.027896(S:0.9636) V:0.038069(S:0.9478) LR:1.11e-04
|
| 106 |
+
[2026-04-11 21:40:41] pole_position E80/150 | T:0.026692(S:0.9653) V:0.038111(S:0.9476) LR:9.01e-05
|
| 107 |
+
[2026-04-11 21:42:22] pole_position E90/150 | T:0.025885(S:0.9665) V:0.037698(S:0.9482) LR:6.98e-05
|
| 108 |
+
[2026-04-11 21:44:01] pole_position E100/150 | T:0.025252(S:0.9674) V:0.038106(S:0.9475) LR:5.07e-05
|
| 109 |
+
[2026-04-11 21:45:42] pole_position E110/150 | T:0.024739(S:0.9681) V:0.037902(S:0.9479) LR:3.39e-05
|
| 110 |
+
[2026-04-11 21:47:24] pole_position E120/150 | T:0.024433(S:0.9685) V:0.037644(S:0.9482) LR:2.00e-05
|
| 111 |
+
[2026-04-11 21:49:05] pole_position E130/150 | T:0.024134(S:0.9690) V:0.037839(S:0.9479) LR:9.60e-06
|
| 112 |
+
[2026-04-11 21:50:45] pole_position E140/150 | T:0.024041(S:0.9691) V:0.037827(S:0.9479) LR:3.17e-06
|
| 113 |
+
[2026-04-11 21:52:25] pole_position E150/150 | T:0.023978(S:0.9692) V:0.037890(S:0.9478) LR:1.00e-06
|
| 114 |
+
[2026-04-11 21:52:25] pole_position done. Best: 0.036978
|
| 115 |
+
[2026-04-11 21:52:25] === sonic ===
|
| 116 |
+
[2026-04-11 21:52:25] sonic: 3,071,016 params (5.9 MB fp16)
|
| 117 |
+
[2026-04-11 21:52:29] sonic train: 30848 seqs (len=16)
|
| 118 |
+
[2026-04-11 21:52:30] sonic val: 3856 seqs (len=16)
|
| 119 |
+
[2026-04-11 21:53:45] sonic E1/150 | T:0.162348(S:0.7775) V:0.144778(S:0.8026) LR:2.00e-04
|
| 120 |
+
[2026-04-11 21:54:58] sonic E2/150 | T:0.146694(S:0.7991) V:0.136146(S:0.8135) LR:2.00e-04
|
| 121 |
+
[2026-04-11 21:56:13] sonic E3/150 | T:0.140699(S:0.8074) V:0.134994(S:0.8151) LR:2.00e-04
|
| 122 |
+
[2026-04-11 21:57:28] sonic E4/150 | T:0.136883(S:0.8127) V:0.131966(S:0.8195) LR:2.00e-04
|
| 123 |
+
[2026-04-11 21:58:43] sonic E5/150 | T:0.133509(S:0.8175) V:0.129399(S:0.8230) LR:1.99e-04
|
| 124 |
+
[2026-04-11 21:59:57] sonic E6/150 | T:0.130435(S:0.8218) V:0.128735(S:0.8233) LR:1.99e-04
|
| 125 |
+
[2026-04-11 22:01:14] sonic E7/150 | T:0.127966(S:0.8254) V:0.126909(S:0.8259) LR:1.99e-04
|
| 126 |
+
[2026-04-11 22:04:57] sonic E10/150 | T:0.121944(S:0.8340) V:0.124331(S:0.8295) LR:1.98e-04
|
| 127 |
+
[2026-04-11 22:06:11] sonic E11/150 | T:0.120293(S:0.8364) V:0.123743(S:0.8304) LR:1.97e-04
|
| 128 |
+
[2026-04-11 22:08:39] sonic E13/150 | T:0.117218(S:0.8409) V:0.122889(S:0.8311) LR:1.97e-04
|
| 129 |
+
[2026-04-11 22:14:48] sonic E18/150 | T:0.111090(S:0.8498) V:0.122588(S:0.8317) LR:1.93e-04
|
| 130 |
+
[2026-04-11 22:17:15] sonic E20/150 | T:0.109268(S:0.8525) V:0.125544(S:0.8273) LR:1.92e-04
|
| 131 |
+
[2026-04-11 22:20:54] sonic E23/150 | T:0.106768(S:0.8561) V:0.121705(S:0.8325) LR:1.89e-04
|
| 132 |
+
[2026-04-11 22:23:25] sonic E25/150 | T:0.105207(S:0.8584) V:0.121577(S:0.8323) LR:1.87e-04
|
| 133 |
+
[2026-04-11 22:27:00] sonic E28/150 | T:0.103225(S:0.8613) V:0.120523(S:0.8339) LR:1.84e-04
|
| 134 |
+
[2026-04-11 22:29:26] sonic E30/150 | T:0.102327(S:0.8626) V:0.123279(S:0.8299) LR:1.82e-04
|
| 135 |
+
[2026-04-11 22:41:41] sonic E40/150 | T:0.097330(S:0.8698) V:0.123097(S:0.8299) LR:1.69e-04
|
| 136 |
+
[2026-04-11 22:53:59] sonic E50/150 | T:0.093990(S:0.8746) V:0.124820(S:0.8272) LR:1.53e-04
|
| 137 |
+
[2026-04-11 23:06:25] sonic E60/150 | T:0.091507(S:0.8782) V:0.124273(S:0.8274) LR:1.34e-04
|
| 138 |
+
[2026-04-11 23:18:48] sonic E70/150 | T:0.089327(S:0.8813) V:0.123787(S:0.8284) LR:1.15e-04
|
| 139 |
+
[2026-04-11 23:31:12] sonic E80/150 | T:0.087458(S:0.8839) V:0.122982(S:0.8295) LR:9.51e-05
|
| 140 |
+
[2026-04-11 23:44:30] sonic E90/150 | T:0.085960(S:0.8861) V:0.123807(S:0.8280) LR:7.56e-05
|
| 141 |
+
[2026-04-11 23:57:54] sonic E100/150 | T:0.084800(S:0.8877) V:0.124093(S:0.8276) LR:5.75e-05
|
| 142 |
+
[2026-04-12 00:11:21] sonic E110/150 | T:0.083786(S:0.8892) V:0.124339(S:0.8272) LR:4.14e-05
|
| 143 |
+
[2026-04-12 00:25:17] sonic E120/150 | T:0.083098(S:0.8902) V:0.125028(S:0.8261) LR:2.81e-05
|
| 144 |
+
[2026-04-12 00:39:13] sonic E130/150 | T:0.082543(S:0.8910) V:0.124983(S:0.8261) LR:1.82e-05
|
| 145 |
+
[2026-04-12 00:53:09] sonic E140/150 | T:0.082184(S:0.8915) V:0.125446(S:0.8255) LR:1.21e-05
|
| 146 |
+
[2026-04-12 01:06:48] sonic E150/150 | T:0.082048(S:0.8917) V:0.124580(S:0.8267) LR:1.00e-05
|
| 147 |
+
[2026-04-12 01:06:48] sonic done. Best: 0.120523
|
| 148 |
+
[2026-04-12 01:06:48] pong: 2.3 MB
|
| 149 |
+
[2026-04-12 01:06:48] pole_position: 2.8 MB
|
| 150 |
+
[2026-04-12 01:06:48] sonic: 5.9 MB
|
| 151 |
+
[2026-04-12 01:06:48] Total: 11.1 MB
|
| 152 |
+
[2026-04-12 01:06:48] Training complete!
|