Adaptive Optimizers in Large Language Model Pre-Training: How AdamW, Adafactor, and Lion Scale Gradient Updates Across Billions of Parameters

Adaptive Optimizers in Large Language Model Pre-Training: How AdamW, Adafactor, and Lion Scale Gradient Updates Across Billions of Parameters Large language model pre-training requires optimizing billions of parameters over trillions of tokens across distributed GPU clusters. Standard stochastic gradient descent (SGD) fails in this regime because Transformer loss landscapes are severely ill-conditioned, with gradient magnitudes differing by orders of magnitude across layers and token positions.

11 min
Adaptive Optimizers in Large Language Model Pre-Training: How AdamW, Adafactor, and Lion Scale Gradient Updates Across Billions of Parameters

Adaptive Optimizers in Large Language Model Pre-Training: How AdamW, Adafactor, and Lion Scale Gradient Updates Across Billions of Parameters

Large language model pre-training requires optimizing billions of parameters over trillions of tokens across distributed GPU clusters. Standard stochastic gradient descent (SGD) fails in this regime because Transformer loss landscapes are severely ill-conditioned, with gradient magnitudes differing by orders of magnitude across layers and token positions.

To train deep autoregressive models stably, modern deep learning relies on adaptive optimizers that scale update steps coordinate-by-coordinate using running gradient statistics. However, tracking historical moments introduces a steep memory and compute tax. Across large model architectures, optimizer states often consume more High Bandwidth Memory (HBM) than the model weights themselves.

Understanding how optimizers balance convergence speed, numerical stability, and memory overhead is central to scaling modern foundation models.

Adaptive Optimizers Overview

The Ill-Conditioned Landscape of Transformer Gradients

Stochastic gradient descent updates parameters along the negative gradient vector:

wt+1=wtηL(wt)w_{t+1} = w_t - \eta \nabla \mathcal{L}(w_t)

SGD assumes that a single global learning rate η\eta is appropriate for all dimensions in parameter space. In multi-layer Transformer architectures, this assumption breaks down due to three structural factors:

  1. Extreme Curvature Anisotropy: The loss landscape exhibits an ill-conditioned Hessian matrix 2L(w)\nabla^2 \mathcal{L}(w), where the condition number (the ratio of the largest to smallest eigenvalue, κ=λmax/λmin\kappa = \lambda_{\max} / \lambda_{\min}) frequently exceeds 10610^6. Updates with a fixed learning rate oscillate along high-curvature ravines while making negligible progress along flat directions.
  2. Sparse vs. Dense Activation Dynamics: Embedding layers and unembedding projection heads receive sparse updates because only tokens present in a given batch generate non-zero gradients. In contrast, self-attention projection weights (Query, Key, Value, Output) and feed-forward gating layers receive dense activations on every token pass.
  3. Heavy-Tailed Gradient Distributions: Gradients in deep attention layers frequently experience sudden magnitude spikes caused by softmax score concentrations and layer normalization interactions.

Coordinate-wise adaptive optimizers solve this by tracking past gradient history per parameter, effectively approximating a diagonal pre-conditioner that normalizes the step size across every dimension.


The Anatomy of Adam and the Weight Decay Fix

The foundation of modern LLM optimization is Adam (Adaptive Moment Estimation), introduced by Diederik Kingma and Jimmy Ba in 2014 (Kingma & Ba, 2014). Adam tracks two moving averages for every parameter:

  • First Moment (mtm_t): The exponentially smoothed mean of past gradients (momentum), which dampens high-frequency oscillations.
  • Second Raw Moment (vtv_t): The exponentially smoothed uncentered variance of past gradients, which estimates the squared scale of each coordinate.

mt=β1mt1+(1β1)gtvt=β2vt1+(1β2)gt2\begin{aligned} m_t &= \beta_1 m_{t-1} + (1 - \beta_1) g_t \\ v_t &= \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \end{aligned}

Because mtm_t and vtv_t are initialized to zero vectors, they are biased toward zero in the initial training steps. Adam corrects this using step-dependent bias correction factors:

m^t=mt1β1t,v^t=vt1β2t\hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t}

The parameter update is then computed coordinate-wise:

wt+1=wtηv^t+ϵm^tw_{t+1} = w_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t

Here, ϵ\epsilon (typically 10810^{-8} to 101510^{-15}) prevents division by zero, and β1,β2\beta_1, \beta_2 are decay coefficients (conventionally set to 0.90.9 and 0.950.95 or 0.9990.999).

Standard Adam vs. Decoupled AdamW Parameter Updates

[Adam with L2 Regularization]
  g_t' = g_t + λ * w_t
  v_t  = β2 * v_{t-1} + (1 - β2) * (g_t')^2
  w_{t+1} = w_t - η * m_t / (sqrt(v_t) + ε)
  (Problem: Parameters with large gradient scale receive LESS weight decay)

[AdamW with Decoupled Weight Decay]
  v_t  = β2 * v_{t-1} + (1 - β2) * (g_t)^2
  w_{t+1} = w_t - η * λ * w_t - η * m_t / (sqrt(v_t) + ε)
  (Result: Uniform weight shrinkage rate η*λ across all coordinates)

Why L2 Regularization Broke Adam

In standard SGD, adding an L2L_2 penalty 12λw22\frac{1}{2}\lambda \|w\|_2^2 to the loss function is mathematically identical to weight decay:

(L(w)+12λw22)=L(w)+λw\nabla \left( \mathcal{L}(w) + \frac{1}{2}\lambda \|w\|_2^2 \right) = \nabla \mathcal{L}(w) + \lambda w

wt+1=wtη(L(wt)+λwt)=(1ηλ)wtηL(wt)w_{t+1} = w_t - \eta (\nabla \mathcal{L}(w_t) + \lambda w_t) = (1 - \eta \lambda) w_t - \eta \nabla \mathcal{L}(w_t)

In adaptive gradient methods, this equivalence fails. When L2L_2 regularization is incorporated by modifying the gradient input (gt=gt+λwtg_t' = g_t + \lambda w_t), the regularization term is divided by v^t+ϵ\sqrt{\hat{v}_t} + \epsilon:

wt+1=wtηv^t+ϵ(m^t(gt)+λwt)w_{t+1} = w_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \left( \hat{m}_t(g_t) + \lambda w_t \right)

As demonstrated by Ilya Loshchilov and Frank Hutter in 2017 (Loshchilov & Hutter, 2017), this causes severe distortions:

  • Parameters with frequent, large gradients (high vtv_t) experience suppressed weight decay because the penalty is scaled down by 1vt\frac{1}{\sqrt{v_t}}.
  • Parameters with small or sparse gradients (low vtv_t) experience disproportionately large weight decay penalties.

The AdamW Formulation

AdamW resolves this distortion by decoupling weight decay from the gradient update step. The decay is applied directly to the parameter vector before or after the adaptive step:

wt+1=wtηtλwtηtm^tv^t+ϵw_{t+1} = w_t - \eta_t \lambda w_t - \eta_t \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}

Decoupled weight decay ensures that every parameter shrinks at a uniform rate proportional to ηtλ\eta_t \lambda, regardless of gradient variance. This separation restored the generalization performance of adaptive methods to match or exceed tuned SGD on complex benchmarks, establishing AdamW as the industry standard for LLM pre-training.


The Memory Tax of Optimizer States

In 16-bit mixed-precision pre-training (using BF16 or FP16 for forward and backward passes), model parameters and gradients each consume 2 bytes per parameter.

However, accumulating gradient moments directly in 16-bit formats leads to severe underflow, gradient stall, and numerical divergence. Consequently, standard implementations maintain optimizer states in full 32-bit floating point (FP32):

| Component | Precision | Bytes per Parameter | | :--- | :--- | :--- | | Model Weights | BF16 / FP16 | 2 bytes | | Gradients | BF16 / FP16 | 2 bytes | | Master Weights (FP32 copy) | FP32 | 4 bytes | | First Moment Buffer (mtm_t) | FP32 | 4 bytes | | Second Moment Buffer (vtv_t) | FP32 | 4 bytes | | Total Memory per Parameter | - | 16 bytes |

Memory Allocation per Parameter in Standard Mixed-Precision Training (16 Bytes Total)

┌──────────────┬──────────────┬─────────────────────────────┬─────────────────────────────┬─────────────────────────────┐
│ Weights      │ Gradients    │ Master Weights (FP32)       │ First Moment m_t (FP32)     │ Second Moment v_t (FP32)    │
│ (BF16)       │ (BF16)       │                             │                             │                             │
│ 2 Bytes      │ 2 Bytes      │ 4 Bytes                     │ 4 Bytes                     │ 4 Bytes                     │
└──────────────┴──────────────┴─────────────────────────────┴─────────────────────────────┴─────────────────────────────┘
                              └─────────────────────────────────────────────────────────────────────────────────────────┘
                                                       Optimizer State: 12 Bytes (75% of static memory)

For a 70-billion-parameter model:

  • Model weights: 140 GB
  • Gradients: 140 GB
  • Optimizer states: 840 GB (FP32 master weights + mtm_t + vtv_t)
  • Total static memory footprint: 1.12 TB

Even when using distributed sharding techniques like ZeRO-1 or FSDP (which shard the 12 bytes of optimizer state across GPUs), optimizer state memory remains the primary constraint dictating cluster sizing and per-device batch limits.


Sublinear Memory via Factorization: Adafactor

To break the O(N)O(N) memory scaling of second-moment tracking, Noam Shazeer and Mitchell Stern introduced Adafactor at ICML 2018 (Shazeer & Stern, 2018).

Low-Rank Matrix Decomposition

In a Transformer, the majority of parameters reside in 2D weight matrices WRr×cW \in \mathbb{R}^{r \times c} (e.g., attention projection matrices and MLP layers).

Instead of maintaining a full r×cr \times c matrix of second moments VRr×cV \in \mathbb{R}^{r \times c}, Adafactor decomposes VV into row-wise and column-wise exponential moving averages:

Rt=β2,tRt1+(1β2,t)(Gt21c)Rr×1Ct=β2,tCt1+(1β2,t)(1rTGt2)R1×c\begin{aligned} R_t &= \beta_{2,t} R_{t-1} + (1 - \beta_{2,t}) \left( G_t^2 \mathbf{1}_c \right) \in \mathbb{R}^{r \times 1} \\ C_t &= \beta_{2,t} C_{t-1} + (1 - \beta_{2,t}) \left( \mathbf{1}_r^T G_t^2 \right) \in \mathbb{R}^{1 \times c} \end{aligned}

Here, 1c\mathbf{1}_c and 1r\mathbf{1}_r are all-ones vectors of dimension cc and rr. At update time, Adafactor reconstructs an estimate of the full second-moment matrix V^t\hat{V}_t by minimizing the generalized Kullback-Leibler divergence (I-divergence):

V^t,ij=Rt,iCt,jk=1rRt,k\hat{V}_{t,ij} = \frac{R_{t,i} C_{t,j}}{\sum_{k=1}^r R_{t,k}}

Adafactor 2D Matrix Factorization

Full Second-Moment Matrix V (r x c)          Factorized Representation
┌───────────────────────────────────┐        Row Sums R (r x 1)     Column Sums C (1 x c)
│  v_11   v_12   ...   v_1c         │        ┌───────┐             ┌─────────────────────┐
│  v_21   v_22   ...   v_2c         │   =>   │  R_1  │      x      │ C_1   C_2  ...  C_c │
│  ...    ...    ...   ...          │        │  R_2  │             └─────────────────────┘
│  v_r1   v_r2   ...   v_rc         │        │  ...  │
└───────────────────────────────────┘        │  R_r  │
                                             └───────┘
  Memory: O(r * c)                             Memory: O(r + c)
  Example: 8192 x 8192 = 67.1M floats          Example: 8192 + 8192 = 16.38K floats
  (268.4 MB in FP32)                           (65.5 KB in FP32, a 99.97% reduction)

This reduces the memory requirement for the second moment from O(rc)O(rc) to O(r+c)O(r + c). For an 8192×81928192 \times 8192 weight matrix:

  • Full matrix storage (r×cr \times c): 67,108,86467,108,864 floats (268.4 MB in FP32).
  • Factorized storage (r+cr + c): 16,38416,384 floats (65.5 KB in FP32), representing a 99.97% reduction.

Dynamic Decay and Momentum Removal

Adafactor incorporates two additional architectural design choices:

  1. Non-Constant Second-Moment Decay (β2\beta_2 Schedule): Adafactor replaces constant β2\beta_2 with a dynamic schedule:

β2,t=1tβ^2,where β^2(0,1] (typically 0.8)\beta_{2,t} = 1 - t^{-\hat{\beta}_2}, \quad \text{where } \hat{\beta}_2 \in (0, 1] \text{ (typically } 0.8\text{)} This places higher weight on recent gradients early in training and gradually stabilizes as steps accumulate.

  1. Optional Momentum-Free Updates: To maximize memory savings, Adafactor can operate without maintaining a first-moment buffer (mtm_t), using gradient clipping via root-mean-square (RMS) normalization:

Ut=GtV^t,U^t=Utmax(1,RMS(Ut)d)U_t = \frac{G_t}{\sqrt{\hat{V}_t}}, \quad \hat{U}_t = \frac{U_t}{\max\left(1, \frac{\text{RMS}(U_t)}{d}\right)} Running momentum-free reduces optimizer state memory to less than 1 byte per parameter, enabling the training of models like T5 (Raffel et al., 2020) and PaLM (Chowdhery et al., 2022) under severe HBM constraints.


Lion: Symbolic Discovery and Uniform Step Magnitudes

In 2023, Xiangning Chen, Chen Liang, Da Huang, and collaborators at Google Brain and UCLA used symbolic program search over mathematical operations to discover Lion (evoLved Sign Momentum, Chen et al., 2023).

Optimizer Mechanics Comparison

The Lion Algorithm

Lion discards second-moment tracking entirely and operates using only a single momentum buffer mtm_t. The update rule is defined by two separate interpolation operations:

ct=sign(β1mt1+(1β1)gt)wt+1=wtηtctηtλwtmt=β2mt1+(1β2)gt\begin{aligned} c_t &= \text{sign}\left( \beta_1 m_{t-1} + (1 - \beta_1) g_t \right) \\ w_{t+1} &= w_t - \eta_t c_t - \eta_t \lambda w_t \\ m_t &= \beta_2 m_{t-1} + (1 - \beta_2) g_t \end{aligned}

Standard default parameters are β1=0.9\beta_1 = 0.9, β2=0.99\beta_2 = 0.99.

Lion Update Lifecycle

Gradient g_t ──────┐
                   ▼
Momentum m_{t-1} ──► Interpolate (β1=0.9) ──► sign(·) ──► Direction c_t ──► Update: w_{t+1} = w_t - η*c_t - η*λ*w_t
                   │
                   ▼
              Interpolate (β2=0.99) ──► Stored Momentum m_t

Key Differences from AdamW

  1. Two Separate β\beta Splittings: Lion decouples the momentum used for computing the update direction (ctc_t, weighted by β1\beta_1) from the momentum preserved in state (mtm_t, updated with β2\beta_2). Because β1<β2\beta_1 < \beta_2, Lion incorporates more of the instantaneous gradient into the directional step while maintaining a smoother history in memory.
  2. The Sign Operator: Unlike AdamW, which scales steps inversely with vt\sqrt{v_t}, Lion computes updates using sign()\text{sign}(\cdot). Consequently, every coordinate moves by exactly ±ηt\pm \eta_t (prior to weight decay). This makes update magnitudes completely invariant to gradient scales across layers.
  3. Implicit Regularization: The binary ±1\pm 1 quantization introduces stochasticity into update directions, acting as a natural regularizer that enhances generalization on out-of-distribution benchmarks.
  4. 50% State Memory Reduction: Because Lion only tracks mtm_t (and no vtv_t), its optimizer state requires 4 bytes per parameter in FP32, compared to AdamW's 8 bytes.

Operational Constraints

Because every coordinate moves by ±ηt\pm \eta_t, Lion's update norm is dηt\sqrt{d} \cdot \eta_t for a dd-dimensional parameter tensor, whereas AdamW's update norm is bounded by the variance ratio. To prevent destabilization:

  • Lion requires a learning rate roughly 3×3\times to 10×10\times smaller than AdamW (e.g., 1×1041\times 10^{-4} vs. 6×1046\times 10^{-4}).
  • Weight decay λ\lambda must be set 3×3\times to 10×10\times larger to maintain equivalent regularization strength (ηλconstant\eta \lambda \approx \text{constant}).
  • Lion benefits from larger batch sizes (e.g., 4M+4\text{M}+ tokens per batch) where sign-quantized gradient noise averages out smoothly.

Second-Order Approximations and Quantized Optimizers

Beyond standard first-order moment trackers, two additional paradigms have emerged for scaling LLM training:

Sophia: Second-Order Clipped Stochastic Optimization

First-order methods like AdamW normalize updates by gradient variance, but variance is only a coarse proxy for loss curvature. In 2023, Hong Liu, Zhiyuan Li, Percy Liang, and Tengyu Ma introduced Sophia (Liu et al., 2023).

Sophia estimates the diagonal of the Hessian matrix htdiag(2L(wt))h_t \approx \text{diag}(\nabla^2 \mathcal{L}(w_t)) periodically (every k=10k=10 steps) using Hutchinson's randomized estimator with Rademacher vectors u{1,+1}du \in \{-1, +1\}^d:

h^t=u2L(wt)u\hat{h}_t = u \odot \nabla^2 \mathcal{L}(w_t) u

Sophia then updates parameters using an exponentially smoothed Hessian estimate hˉt\bar{h}_t combined with coordinate-wise clipping:

wt+1=wtηtλwtηtclip(mtmax(hˉt,ϵ),ρ)w_{t+1} = w_t - \eta_t \lambda w_t - \eta_t \text{clip}\left( \frac{m_t}{\max(\bar{h}_t, \epsilon)}, \rho \right)

By bounding the maximum step size by ρ\rho, Sophia prevents catastrophic updates in regions with near-zero or negative curvature, achieving a reported 2×2\times speedup over AdamW in training steps on GPT-style architectures.

8-Bit Optimizers via Block-Wise Quantization

Rather than altering optimizer mathematics, Tim Dettmers and collaborators (Dettmers et al., 2021) introduced 8-bit Adam using block-wise non-linear dynamic quantization.

8-bit Block-Wise Quantization Workflow

FP32 Buffer (m_t or v_t)
┌─────────────────────────────────────────────────────────────┐
│ Block 0 (2048 floats) │ Block 1 (2048 floats) │ ...         │
└─────────────────────────────────────────────────────────────┘
          │                        │
          ▼                        ▼
  Find Block Max c_0       Find Block Max c_1
  Quantize to 8-bit FP     Quantize to 8-bit FP
          │                        │
          ▼                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 2048 Bytes + 4B scale │ 2048 Bytes + 4B scale │ ...         │
└─────────────────────────────────────────────────────────────┘
Total Memory: 1 Byte per parameter + 0.2% scale metadata (75% savings)

Standard FP32 optimizer tensors are partitioned into independent blocks of 2048 elements. Each block is dynamically scaled by its local absolute maximum c=max(x)c = \max(|x|) and quantized into custom 8-bit non-linear floating-point bins.

During the optimizer step:

  1. The 8-bit states are de-quantized to FP32 in GPU registers.
  2. The standard AdamW step is computed.
  3. The updated moments are quantized back to 8-bit memory.

Because the de-quantization and update are fused in GPU SRAM, 8-bit Adam reduces optimizer state memory from 8 bytes to 2 bytes per parameter (75% reduction) with zero degradation in pre-training perplexity.


Architectural Comparison of LLM Optimizers

| Dimension | AdamW | Adafactor | Lion | Sophia-G | 8-bit AdamW | | :--- | :--- | :--- | :--- | :--- | :--- | | State Memory per Param | 8 bytes (m,vm, v) | 00.1\approx 0\text{--}0.1 bytes (R,CR, C) | 4 bytes (mm) | 8 bytes (m,hˉm, \bar{h}) | 2 bytes (m8,v8m_8, v_8) | | Per-Step Compute Cost | Baseline | Low (No momentum) | Lowest (No sqrt/div) | Baseline +10%+ 10\% Hessian | Low (Fused dequant) | | Update Magnitude | Variable (mv\propto \frac{m}{\sqrt{v}}) | Variable (RMS scaled) | Uniform (±η\pm \eta) | Clipped (ρ\le \rho) | Variable (mv\propto \frac{m}{\sqrt{v}}) | | Curvature Sensitivity | Gradient variance | Factorized variance | None (Sign-based) | Diagonal Hessian | Gradient variance | | Batch Size Tolerance | High (0.5M–8M0.5\text{M}\text{--}8\text{M}) | High (0.5M–8M0.5\text{M}\text{--}8\text{M}) | Best at Large (4M+4\text{M}+) | High (0.5M–8M0.5\text{M}\text{--}8\text{M}) | High (0.5M–8M0.5\text{M}\text{--}8\text{M}) | | Primary Risk | Memory footprint | Factorization error | Step size tuning | Hessian compute spikes | Negligible |


Practical Implementation and Tuning Recipes

When configuring adaptive optimizers for large-scale pre-training pipelines, several empirical rules govern stability and efficiency:

1. The Epsilon Stability Threshold

In FP16 and BF16 mixed-precision training, the AdamW ϵ\epsilon hyperparameter plays a critical role in preventing loss spikes. While standard deep learning frameworks default to ϵ=108\epsilon = 10^{-8}, large Transformers often require setting ϵ=106\epsilon = 10^{-6} or 10510^{-5}.

When gradients become small in deeper layers, an excessively small ϵ\epsilon causes the denominator v^t+ϵ\sqrt{\hat{v}_t} + \epsilon to collapse toward zero, amplifying numerical noise and generating unbounded gradient updates.

2. Beta-2 Calibration for Extended Token Horizons

For standard training runs under 100 billion tokens, β2=0.95\beta_2 = 0.95 or 0.980.98 provides rapid adaptation to changing loss gradients. However, when scaling runs beyond 1 trillion tokens, maintaining a higher β2=0.99\beta_2 = 0.99 or 0.9990.999 ensures that the second-moment estimate averages over thousands of iterations, preventing premature convergence and stabilizing gradient steps across massive batch sizes.

3. Fused Kernel Implementations

Standard PyTorch implementations of AdamW launch separate CUDA kernels for momentum updates, variance updates, weight decay, and parameter additions, saturating GPU memory bandwidth.

Production training frameworks (such as Megatron-LM, DeepSpeed, and PyTorch torch.optim.AdamW(fused=True)) fuse the entire optimizer step into a single GPU kernel. By keeping model parameters and optimizer states in on-chip SRAM during computation, fused optimizers deliver a 2×2\times to 4×4\times speedup in optimizer step latency.


Sources

  • Kingma, D. P., & Ba, J. (2014). Adam: A Method for Stochastic Optimization. arXiv:1412.6980
  • Loshchilov, I., & Hutter, F. (2017). Decoupled Weight Decay Regularization. arXiv:1711.05101
  • Shazeer, N., & Stern, M. (2018). Adafactor: Adaptive Learning Rates with Sublinear Memory Cost. arXiv:1804.04235
  • Chen, X., Liang, C., Huang, D., Real, E., Wang, K., Liu, Y., Pham, H., Dong, X., Luong, T., Hsieh, C. J., Lu, Y., & Le, Q. V. (2023). Symbolic Discovery of Optimization Algorithms. arXiv:2302.06675
  • Liu, H., Li, Z., Hall, D., Liang, P., & Ma, T. (2023). Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training. arXiv:2305.14342
  • Dettmers, T., Lewis, M., Shleifer, S., & Zettlemoyer, L. (2021). 8-bit Optimizers via Block-wise Quantization. arXiv:2110.02861
  • Raffel, C., et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683

Written by

More to read

  • GPU Slicing in Production AI Systems: Comparing MIG, MPS, Time-Slicing, and Dynamic Partitioning

    GPU Slicing in Production AI Systems: Comparing MIG, MPS, Time-Slicing, and Dynamic Partitioning Modern production AI systems rarely deploy a single standalone large language model. Contemporary compound AI architectures rely on heterogeneous pipelines comprising embedding models (such as BGE or E5), cross-encoder rerankers, safety classifiers (such as Llama Guard), speculative decoding draft models, and vision-language encoders. While primary generation models typically require dedicated multi

    1 min
  • Meta Releases Pocket in the US for Prompt-Based Game Generation

    Meta has released Pocket in the United States, expanding access to an experimental mobile application designed to generate and share lightweight interactive games through natural language prompting. The app first launched as a regional test in Brazil in late June 2026 before receiving its broader version 26.0 update on August 20, 2026. Pocket represents the product integration of Meta's earlier acquisition of the startup Atma Sciences, the original developers behind the Gizmo mobile platform.

    1 min
  • Liquid AI Ships LFM2.5-DSpark Draft Models for Up to 3.2x Faster Inference

    Liquid AI has released speculative decoding draft checkpoints for three models across its LFM2.5 series: LFM2.5-1.2B-Instruct, LFM2.5-2.6B, and the mixture-of-experts model LFM2.5-8B-A1B. The release introduces small companion models designed to accelerate auto-regressive generation without altering final token distributions. The draft models are available in Safetensors and GGUF formats on Hugging Face, with immediate support implemented for SGLang and llama.cpp. Architecture and Draft Desig

    1 min