<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: zerdovzad</title>
    <description>The latest articles on DEV Community by zerdovzad (@gtausa197svg).</description>
    <link>https://dev.to/gtausa197svg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3962883%2F46ce413b-cd15-495c-987f-f16c67075b90.jpeg</url>
      <title>DEV Community: zerdovzad</title>
      <link>https://dev.to/gtausa197svg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gtausa197svg"/>
    <language>en</language>
    <item>
      <title>I trained my own 150M non-Transformer language model from scratch on 300M tokens — WarpState</title>
      <dc:creator>zerdovzad</dc:creator>
      <pubDate>Sun, 30 Aug 2026 21:17:32 +0000</pubDate>
      <link>https://dev.to/gtausa197svg/i-trained-my-own-150m-non-transformer-language-model-from-scratch-on-300m-tokens-warpstate-268m</link>
      <guid>https://dev.to/gtausa197svg/i-trained-my-own-150m-non-transformer-language-model-from-scratch-on-300m-tokens-warpstate-268m</guid>
      <description>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;I’ve been experimenting with alternative language-model architectures for a while, and I recently finished the first complete pretraining run of a new architecture I’m calling WarpState.&lt;/p&gt;

&lt;p&gt;This is still an experimental proof of concept, not a claim that it beats Transformers or existing state-space models.&lt;/p&gt;

&lt;p&gt;The model has 150.13M parameters and was trained from scratch on roughly 300 million English tokens from Ultra-FineWeb L2.&lt;/p&gt;

&lt;p&gt;The full run completed successfully:&lt;/p&gt;

&lt;p&gt;Parameters:        150.13M&lt;br&gt;
Training tokens:   ~300.02M&lt;br&gt;
Optimizer steps:   9,156&lt;br&gt;
Sequence length:   1,024&lt;br&gt;
Vocabulary:        32,768&lt;br&gt;
Peak VRAM:         ~4.52 GB&lt;/p&gt;

&lt;p&gt;Final sampled validation:&lt;br&gt;
Loss:              3.4309&lt;br&gt;
Perplexity:         30.90&lt;/p&gt;

&lt;p&gt;Training was done locally on a laptop GPU.&lt;/p&gt;

&lt;p&gt;I’m attaching screenshots of the training logs and some generations from the final checkpoints.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyd0bl2fzp3t99an3vs1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyd0bl2fzp3t99an3vs1u.png" alt=" " width="799" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmf9fv7d9czmvoaqj225i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmf9fv7d9czmvoaqj225i.png" alt=" " width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70a07fgicmmtsgg618d2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70a07fgicmmtsgg618d2.png" alt=" " width="800" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is WarpState?&lt;/p&gt;

&lt;p&gt;WarpState is not a standard Transformer stack.&lt;/p&gt;

&lt;p&gt;The basic idea is to combine three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Local tiled attention&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of global self-attention across the entire sequence, tokens are divided into fixed 128-token chunks.&lt;/p&gt;

&lt;p&gt;Inside each chunk, the model uses normal causal scaled-dot-product attention.&lt;/p&gt;

&lt;p&gt;All chunks can be processed as a large batched GPU workload during training, rather than running attention token by token.&lt;/p&gt;

&lt;p&gt;So the local path is roughly:&lt;/p&gt;

&lt;p&gt;tokens&lt;br&gt;
   ↓&lt;br&gt;
128-token chunks&lt;br&gt;
   ↓&lt;br&gt;
causal local attention&lt;br&gt;
   ↓&lt;br&gt;
local representation&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fast + slow tensor memory&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Completed chunks are compressed into a persistent tensor memory.&lt;/p&gt;

&lt;p&gt;For every attention head, WarpState maintains two matrices:&lt;/p&gt;

&lt;p&gt;Fast State&lt;br&gt;
Slow State&lt;/p&gt;

&lt;p&gt;The fast state is initialized with a relatively short memory timescale, while the slow state is initialized to retain information much longer.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;current chunk&lt;br&gt;
      ↓&lt;br&gt;
   K and U&lt;br&gt;
      ↓&lt;br&gt;
bounded tensor write&lt;br&gt;
      ↓&lt;br&gt;
 ┌───────────────┐&lt;br&gt;
 │  Fast memory  │&lt;br&gt;
 │  Slow memory  │&lt;br&gt;
 └───────────────┘&lt;br&gt;
      ↓&lt;br&gt;
future chunks&lt;/p&gt;

&lt;p&gt;The memory write is based on a bounded outer-product-like update:&lt;/p&gt;

&lt;p&gt;write = tanh(K)^T × tanh(U) / chunk_size&lt;/p&gt;

&lt;p&gt;and the states are updated approximately as:&lt;/p&gt;

&lt;p&gt;Fast = decay_fast × Fast + (1 - decay_fast) × write&lt;/p&gt;

&lt;p&gt;Slow = decay_slow × Slow + (1 - decay_slow) × write&lt;/p&gt;

&lt;p&gt;The decay rates are learned independently per head.&lt;/p&gt;

&lt;p&gt;They start around:&lt;/p&gt;

&lt;p&gt;Fast decay ≈ 0.90&lt;br&gt;
Slow decay ≈ 0.99&lt;/p&gt;

&lt;p&gt;The model also learns how much fast versus slow memory to read.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Learned routing between local attention and memory&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For every token, the model produces a gate deciding how much information should come from:&lt;/p&gt;

&lt;p&gt;local chunk attention&lt;br&gt;
        vs&lt;br&gt;
long-range tensor memory&lt;/p&gt;

&lt;p&gt;Approximately:&lt;/p&gt;

&lt;p&gt;output =&lt;br&gt;
gate × local_attention&lt;br&gt;
+&lt;br&gt;
(1 - gate) × memory_read&lt;/p&gt;

&lt;p&gt;So the model can use precise local token relationships while relying on the compressed state for information from previous chunks.&lt;/p&gt;

&lt;p&gt;Shared recurrent depth&lt;/p&gt;

&lt;p&gt;Another unusual part of WarpState is that it does not have 16 completely separate large layers.&lt;/p&gt;

&lt;p&gt;The current model contains only 4 physical WarpState cores, but they are reused across 16 logical depth passes:&lt;/p&gt;

&lt;p&gt;Core 0&lt;br&gt;
Core 1&lt;br&gt;
Core 2&lt;br&gt;
Core 3&lt;br&gt;
Core 0&lt;br&gt;
Core 1&lt;br&gt;
Core 2&lt;br&gt;
Core 3&lt;br&gt;
...&lt;/p&gt;

&lt;p&gt;Each logical depth has a small learned scale and bias, so the same physical core can behave somewhat differently depending on which depth pass it is being used for.&lt;/p&gt;

&lt;p&gt;In simplified form:&lt;/p&gt;

&lt;p&gt;x = x × (1 + depth_scale) + depth_bias&lt;/p&gt;

&lt;p&gt;x → shared WarpState core&lt;/p&gt;

&lt;p&gt;The intention is to get deeper iterative computation without duplicating every large weight matrix.&lt;/p&gt;

&lt;p&gt;During autoregressive generation, every logical depth also receives its own independent memory cache, even when two depths share the same physical core weights.&lt;/p&gt;

&lt;p&gt;Other details&lt;/p&gt;

&lt;p&gt;The current version uses:&lt;/p&gt;

&lt;p&gt;d_model:       1280&lt;br&gt;
heads:         20&lt;br&gt;
head_dim:      64&lt;br&gt;
physical cores: 4&lt;br&gt;
logical depth: 16&lt;br&gt;
FFN hidden:    4480&lt;br&gt;
chunk size:    128&lt;br&gt;
RMSNorm&lt;br&gt;
SwiGLU&lt;br&gt;
RoPE inside each local chunk&lt;br&gt;
tied input/output embeddings&lt;/p&gt;

&lt;p&gt;The input projection is fused and produces:&lt;/p&gt;

&lt;p&gt;Q&lt;br&gt;
K&lt;br&gt;
V&lt;br&gt;
local/memory gate&lt;br&gt;
memory U&lt;/p&gt;

&lt;p&gt;from one projection.&lt;/p&gt;

&lt;p&gt;Training results&lt;/p&gt;

&lt;p&gt;The part I was most interested in was simply whether this architecture could survive a real pretraining run.&lt;/p&gt;

&lt;p&gt;It did.&lt;/p&gt;

&lt;p&gt;I trained it through the full ~300M-token run without NaNs, gradient collapse, or an obvious optimization failure.&lt;/p&gt;

&lt;p&gt;Near the end of training, gradient norms were still sitting around roughly:&lt;/p&gt;

&lt;p&gt;0.65 – 0.75&lt;/p&gt;

&lt;p&gt;while the learning rate had already decayed to approximately:&lt;/p&gt;

&lt;p&gt;3e-5&lt;/p&gt;

&lt;p&gt;Peak allocated VRAM stayed around 4.52 GB.&lt;/p&gt;

&lt;p&gt;The model also clearly learned language structure during training.&lt;/p&gt;

&lt;p&gt;Very early checkpoints mostly produced English-shaped noise.&lt;/p&gt;

&lt;p&gt;Later checkpoints started forming recognizable semantic clusters and reasonably structured paragraphs.&lt;/p&gt;

&lt;p&gt;For example, when asked about Facebook, the final model associates it with things like:&lt;/p&gt;

&lt;p&gt;online platform&lt;br&gt;
social media&lt;br&gt;
sharing content&lt;br&gt;
sharing information&lt;br&gt;
interaction with other people&lt;br&gt;
community&lt;/p&gt;

&lt;p&gt;It is definitely not a good chatbot yet.&lt;/p&gt;

&lt;p&gt;There are still obvious failure modes:&lt;/p&gt;

&lt;p&gt;repetition loops&lt;br&gt;
semantic attractors&lt;br&gt;
weak factual recall&lt;br&gt;
occasional role confusion&lt;br&gt;
long-generation degeneration&lt;/p&gt;

&lt;p&gt;The model is also only base-pretrained.&lt;/p&gt;

&lt;p&gt;There has been no instruction tuning, SFT or RLHF, so the chat screenshots I attached should be treated as qualitative probes rather than a chatbot benchmark.&lt;/p&gt;

&lt;p&gt;Another important limitation is the training budget.&lt;/p&gt;

&lt;p&gt;A 150M-parameter model trained on only 300M tokens has seen roughly:&lt;/p&gt;

&lt;p&gt;~2 training tokens per parameter&lt;/p&gt;

&lt;p&gt;so I consider this run primarily a proof that the architecture can train, rather than a fully trained 150M language model.&lt;/p&gt;

&lt;p&gt;What surprised me most&lt;/p&gt;

&lt;p&gt;The interesting part for me is that the architecture appears capable of learning meaningful language representations despite:&lt;/p&gt;

&lt;p&gt;having only four large physical cores,&lt;br&gt;
repeatedly reusing those cores,&lt;br&gt;
restricting attention to local 128-token windows,&lt;br&gt;
and moving information between chunks through fixed-size tensor states.&lt;/p&gt;

&lt;p&gt;The long-range memory size therefore does not grow linearly with context in the same way as a conventional full KV cache.&lt;/p&gt;

&lt;p&gt;There is still a lot I want to test before making any strong claims.&lt;/p&gt;

&lt;p&gt;My next steps are probably:&lt;/p&gt;

&lt;p&gt;deterministic evaluation over the entire validation set;&lt;br&gt;
a parameter-matched Transformer baseline on exactly the same data;&lt;br&gt;
analysis of the fast/slow memory states;&lt;br&gt;
measuring long-context behavior;&lt;br&gt;
investigating the repetition/attractor problem;&lt;br&gt;
eventually testing a larger training budget.&lt;/p&gt;

&lt;p&gt;For now I mainly wanted to share the first complete run because this was the point where the architecture stopped being only an idea and became an actually trained language model.&lt;/p&gt;

&lt;p&gt;Feedback on the architecture is welcome, especially criticism of the memory update or shared-core design.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>machinelearning</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I scaled a pure Spiking Neural Network (SNN) to 1.088B parameters from scratch. Ran out of budget, but here is what I found</title>
      <dc:creator>zerdovzad</dc:creator>
      <pubDate>Wed, 17 Jun 2026 10:26:23 +0000</pubDate>
      <link>https://dev.to/gtausa197svg/i-scaled-a-pure-spiking-neural-network-snn-to-1088b-parameters-from-scratch-ran-out-of-budget-3pg7</link>
      <guid>https://dev.to/gtausa197svg/i-scaled-a-pure-spiking-neural-network-snn-to-1088b-parameters-from-scratch-ran-out-of-budget-3pg7</guid>
      <description>&lt;p&gt;Hey everyone. I’m an 18yo indie dev, and I’ve been experimenting with Spiking Neural Networks (SNNs) for language modeling. A lot of papers (like SpikeBERT) mention that training 1B+ SNNs directly from random initialization fails due to vanishing gradients, so people usually do ANN-to-SNN conversion or distillation. I wanted to see if I could force it to converge purely in the spike domain. I had to stop at 27k steps because my wallet is literally empty lol, but the loss converged to 4.4.&lt;/p&gt;

&lt;p&gt;Here are the most interesting things that happened:&lt;/p&gt;

&lt;p&gt;Massive Sparsity: It maintains ~93% sparsity. Only about 7% of neurons fire per token. It's incredibly cheap on memory during inference compared to dense models.&lt;/p&gt;

&lt;p&gt;Cross-lingual emergence: Around step 25K, it randomly started generating structurally correct Russian text, even though it wasn't explicitly targeted/weighted for it in the dataset mix.&lt;/p&gt;

&lt;p&gt;Memory routing shift: As I scaled the architecture past 600M to 1B, the model spontaneously shifted 39% of its activation routing into the persistent memory module. It basically learned on its own that memory is more valuable at a larger scale.&lt;/p&gt;

&lt;p&gt;Limitations (Being honest):&lt;br&gt;
The text generation is still janky and nowhere near GPT-2 fluency yet. The loss (4.4) is high, mostly because I couldn't train it longer. But proving that a 1B pure SNN can converge from random init feels like a solid milestone.&lt;/p&gt;

&lt;p&gt;I'm sharing this because I'd love some harsh technical feedback.&lt;/p&gt;

&lt;p&gt;Does anyone here have experience with neuromorphic hardware? Would an architecture like this map well to Loihi?&lt;/p&gt;

&lt;p&gt;If anyone has tips on pushing SNN loss lower or stabilizing surrogate gradients further, I'm all ears.&lt;/p&gt;

&lt;p&gt;The code, architecture details, and the 12GB full training checkpoint (weights + optimizer states) are on my GitHub:&lt;a href="https://github.com/gtausa197-svg/-Project-Nord-Spiking-Neural-Network-Language-Model.git" rel="noopener noreferrer"&gt;https://github.com/gtausa197-svg/-Project-Nord-Spiking-Neural-Network-Language-Model.git&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>software</category>
      <category>productivity</category>
    </item>
    <item>
      <title>We built a fully client-side 3D Animation Studio on Next.js (Three.js + WASM Physics).</title>
      <dc:creator>zerdovzad</dc:creator>
      <pubDate>Mon, 01 Jun 2026 14:42:43 +0000</pubDate>
      <link>https://dev.to/gtausa197svg/we-built-a-fully-client-side-3d-animation-studio-on-nextjs-threejs-wasm-physics-4j19</link>
      <guid>https://dev.to/gtausa197svg/we-built-a-fully-client-side-3d-animation-studio-on-nextjs-threejs-wasm-physics-4j19</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwkqojsa1vakaw3g5dj6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwkqojsa1vakaw3g5dj6.jpg" alt=" " width="799" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;My friend and I built AnimaStage because we wanted MMD staging to feel zero-friction — open a tab, drop PMX/PMD and VMD, preview with physics, export without fighting desktop setup or weak hardware.&lt;/p&gt;

&lt;p&gt;Live demos (no download, no login):&lt;/p&gt;

&lt;p&gt;Lite (9:16 / Shorts-ready): &lt;a href="https://animastage-lite.app" rel="noopener noreferrer"&gt;https://animastage-lite.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pro (RTX-style lighting, bone editor): &lt;a href="https://animastagepro.dev" rel="noopener noreferrer"&gt;https://animastagepro.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under the hood: Ammo.js WASM for physics and deterministic MP4 export. We're aiming to open-source more of the stack this summer.&lt;/p&gt;

&lt;p&gt;We're building this for creators who want a smoother day-to-day workflow — and for people on weaker devices where full desktop MMD is rough. This isn't just a promo pitch; the goal is to keep it open and easy to use.&lt;/p&gt;

&lt;p&gt;Would love your feedback on what to prioritize next: What's still missing for browser MMD vs desktop? Shorts export vs timeline/VMD editing — what matters more?&lt;/p&gt;

&lt;p&gt;Anyone here using web tools for dance covers or VTuber prep?&lt;/p&gt;

&lt;p&gt;Happy to answer technical questions. Not trying to spam — genuinely curious what this sub would actually use.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

&lt;p&gt;Demo video &lt;a href="https://youtu.be/TUKa7emqVow" rel="noopener noreferrer"&gt;https://youtu.be/TUKa7emqVow&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
