--- language: en tags: - gpt - devops - kubernetes - helm - terraform - text-generation license: mit --- # AttnRes DevOps GPT A 48M-parameter GPT trained on DevOps/GitOps data (Kubernetes, Helm, Terraform, ArgoCD, Flux) with a novel **Attention Residual (AttnRes)** mechanism. ## What is AttnRes? Instead of the standard fixed residual (`x + sublayer(x)`), AttnRes replaces the residual with a learned attention aggregation over previous hidden states within the same block: ``` residual = x + sigmoid(alpha) * (attn_aggregate(prev_states) - x) h = residual + sublayer(x) ``` - `alpha` is initialized to `-4` → `sigmoid(-4) ≈ 0.018` (starts as classic residual) - The model gradually opens the AttnRes channel as it learns - Layers are grouped in blocks of 4; each layer attends only to previous states in its block ## Results Trained on ~50M tokens of DevOps corpus (GitHub repos, official docs, Stack Overflow): | Variant | Best val ppl | Final val ppl | Params | |----------|-------------|---------------|--------| | Baseline | 11.99 | 13.66 | 46.4M | | AttnRes | **11.74** | 13.91 | 48.0M | AttnRes reached a lower perplexity minimum (~2% better) and with faster convergence. Qualitatively, AttnRes generates more syntactically correct YAML/Terraform/kubectl output. ## Architecture ```python GPTConfig( vocab_size = 16_384, # BPE tokenizer trained on DevOps corpus max_seq = 512, d_model = 512, n_layers = 12, n_heads = 8, d_ff = 2_048, dropout = 0.1, variant = "attnres", block_size = 4, ) ``` ## Usage ```python import torch from huggingface_hub import hf_hub_download from model import GPT, GPTConfig from tokenizers import ByteLevelBPETokenizer # Load model ckpt = torch.load(hf_hub_download("roanbrasil/attnres-devops-gpt", "attnres_latest.pt"), map_location="cpu", weights_only=False) cfg = GPTConfig(**ckpt["config"]) model = GPT(cfg) state = {k.replace("_orig_mod.", ""): v for k, v in ckpt["model"].items()} model.load_state_dict(state) model.eval() # Load tokenizer vocab = hf_hub_download("roanbrasil/attnres-devops-gpt", "tokenizer/vocab.json") merges = hf_hub_download("roanbrasil/attnres-devops-gpt", "tokenizer/merges.txt") tok = ByteLevelBPETokenizer(vocab, merges) # Generate prompt = "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: my-app" ids = tok.encode(prompt).ids x = torch.tensor([ids]) out = model.generate(x, max_new=100, temperature=0.7, top_k=40) print(tok.decode(out[0].tolist())) ``` ## Training - Corpus: ~50M tokens from GitHub (kubernetes/helm/terraform repos), official docs, Stack Overflow - Tokenizer: ByteLevelBPE, vocab_size=16384, trained on domain corpus - Steps: 50k, batch_size=16, grad_accum=4, seq_len=512 - Optimizer: AdamW, lr=3e-4, cosine decay, warmup=2k steps - Gate params (alpha) use 100x higher LR to allow AttnRes to open during training - Hardware: NVIDIA RTX 3080 (~4.5h)