train_opt had a hardcoded MODEL_PATH that didn't match the working
directory, causing fallback to random init. Now accepts positional
model path argument (e.g., ./train_opt stories110M.bin).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New train_opt target with NEON-vectorized Adam, fp16 activation/gradient
caching, concurrent dW dispatch, pre-allocated buffers, and optional
Metal GPU support. Tested on M3 Max with stories110M.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>