CSBC β PyTorch port of the Counter-Strike Behavioural Cloning model
A faithful PyTorch/ONNX conversion of Tim Pearce's
Counter-Strike Behavioural Cloning
model (ak47_sub_55k_drop_d4_dmexpert_28, stateful variant), produced for the
Kairos GUI-agent project.
The original model is Keras / TensorFlow 2.3 (CUDA 10.1, won't use a 40-series GPU). This port runs on any modern CUDA via PyTorch: EfficientNet-B0 trunk (ONNX β onnx2torch) + a hand-written stateful ConvLSTM head. Verified numerically equal to Keras (zero-state max diff ~5e-7, 3-frame stateful sequence ~2e-6), ~3 ms/forward on a 4090.
Files
| file | what |
|---|---|
csbc_backbone.onnx |
feedforward EfficientNet-B0 trunk (loaded via onnx2torch) |
csbc_head_weights.npz |
ConvLSTM2D(256) + 5 dense-head weights (applied in torch) |
csbc_ref.npz |
Keras reference outputs on fixed inputs (for the torch self-test) |
Usage (Kairos)
python examples/csbc_agent/scripts/download_torch_weights.py --repo-id JamesK2W/csbc-pytorch
python examples/csbc_agent/run.py --backend torch --model-dir examples/csbc_agent/models
I/O contract
- Input: one RGB frame β BGR β
cv2.resizeto 280Γ150 β float32 (no/255; EfficientNet rescales internally). Tensor shape(1, 150, 280, 3). - Output: 52-vector β
[0:11]keys (w a s d space ctrl shift 1 2 3 r),[11:13]mouse L/R,[13:36]mouse-x argmax (23 buckets),[36:51]mouse-y argmax (15 buckets),[51]value (ignored). - Stateful: the ConvLSTM state persists across frames; call
reset_state()per episode and feed one frame at a time.
License & provenance
Weights derive from the upstream CSBC release (MIT). Academic / offline use only.
Inference Providers NEW
This model isn't deployed by any Inference Provider. π Ask for provider support