TROISINH
BreakthroughsAttention Efficiency

ALiBi — Phạt khoảng cách trực tiếp, generalize dài hơn training

ALiBi thay thế positional encoding bằng penalty tuyến tính trên attention scores, cho phép model train trên context ngắn (2K) nhưng inference dài gấp 4 lần (8K+) mà không cần fine-tune lại.

Bạn muốn deploy model với context window 8K tokens, nhưng training dài như vậy tốn GPU gấp 4 lần và thời gian gấp bội. Có cách nào để "train ngắn, test dài" không? ALiBi là câu trả lời: thay vì dạy model "bạn đang ở tọa độ nào", ta dạy model "càng xa càng ít nhìn", và điều kỳ diệu là model tự extrapolate lên sequence dài chưa từng thấy.

Vấn đề

Cái bẫy của positional encoding truyền thống: Sinusoidal hay learned absolute position embeddings giống như dán mã vạch GPS lên mỗi token. Khi train với max 2048 tokens, model học rằng "tọa độ 3000" không tồn tại. Đưa vào inference 4096 tokens, model nhìn thấy mã vạch lạ hoắc và bối rối — perplexity tăng vọt, attention pattern tan rã.

RoPE (Rotary Position Embedding) giải quyết bằng cách xoay vector, nhưng khi cần extend context, bạn phải làm Position Interpolation phức tạp — giãn vòng xoay, calibrate lại tần số, rồi fine-tune thêm vài ngàn steps để model quen với "vũ trụ bị giãn nở".

Vấn đề sâu hơn: training context dài tốn KV Cache khủng khiếp. Với 7B model, 8K context cần ~40GB VRAM chỉ cho cache. Nếu có thể train ngắn (rẻ) mà dùng dài (đắt) sau đó, ta tiết kiệm được cả núi tiền compute.

Ý tưởng cốt lõi

ALiBi không thêm position embedding vào input. Token embeddings giữ nguyên "sạch", không bị nhiễu bởi thông tin vị trí tuyệt đối. Thay vào đó, nó phạt trực tiếp trên attention scores: càng xa thì càng bị trừ điểm nặng.

Cụ thể, trước khi softmax, ALiBi thêm vào attention score một hằng số âm tuyến tính theo khoảng cách:

Attention(Q,K)=softmax(QKTdmij)\text{Attention}(Q, K) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}} - m \cdot |i - j|\right)

Trong đó mm là slope (độ dốc) học được cho mỗi head, thường khởi tạo theo cấp số nhân từ 282^{-8} đến 212^{-1}.

Tại sao điều này tạo ra "soft masking"? Softmax của một số âm lớn \rightarrow 0. Token cách xa 10 bước bị penalty 10m-10m, qua softmax thì attention weight e10m\propto e^{-10m} — thực tế bằng 0 nếu mm đủ lớn. Bạn không cần hard-coded window size như Sliding Window Attention; penalty tuyến tính tự động tạo ra "vùng mờ" exponential decay mà không cần mask cứng.

Đây là phần quan trọng nhất: ALiBi chỉ quan tâm khoảng cách tương đối, không quan tâm vị trí tuyệt đối. Vì penalty chỉ phụ thuộc ij|i-j| (khoảng cách giữa token iijj), khi bạn dịch cả sequence đi 1000 bước, pattern attention giữ nguyên. Model không cần học "tọa độ mới", nó chỉ cần áp dụng quy tắc "càng xa càng mờ" vô hạn định. Đây là lý do extrapolation hoạt động — bạn train trên 1024 tokens, model tự động generalize lên 2048, 4096, thậm chí 1M tokens mà không cần đụng vào code.

Hierarchical Receptive Fields: Mỗi attention head học slope mm khác nhau. Head với mm lớn (gần 1) chỉ nhìn local — như ống nhòm zoom cao. Head với mm nhỏ nhìn global — như camera góc rộng. Model không cần quyết định "local hay global", nó có cả hai: population coding cho context length. Đây là lý do ALiBi không cần Grouped Query Attention hay Multi-Query Attention để tiết kiệm memory, nhưng kết hợp cả hai thì càng tốt.

Nhiều người nói: "ALiBi là linear bias, nên attention sẽ linear decay, không đủ mạnh để chặn long-range dependencies hoàn toàn." — Thực ra misleading. Softmax biến linear penalty thành exponential decay trong weight space. Điều này đủ mạnh để tạo inductive bias local nhưng không cứng rắn như hard cut-off, giữ lại khả năng "nhìn xa" khi cần thiết.

Tại sao nó hoạt động

Toán học đằng sau sự "mờ": Khi attention score bị trừ đi mijm|i-j|, qua softmax ta có:

αijexp(qiTkjdkmij)=exp(qiTkjdk)exp(mij)\alpha_{ij} \propto \exp\left(\frac{q_i^T k_j}{\sqrt{d_k}} - m|i-j|\right) = \exp\left(\frac{q_i^T k_j}{\sqrt{d_k}}\right) \cdot \exp(-m|i-j|)

Thành phần exp(mij)\exp(-m|i-j|) là một hàm exponential decay theo khoảng cách. Với m=0.5m=0.5, token cách 10 bước có weight giảm e50.0067e^{-5} \approx 0.0067 lần so với token cách 0. Đây là soft locality — bạn không cần Sliding Window Attention với window size cố định.

Tính tương đối cho phép extrapolation: Vì ij|i-j| bất biến khi dịch chuyển toàn bộ sequence, attention pattern giữ nguyên dù bạn đưa vào 1000 token hay 10000 token. Điều này khác biệt với sinusoidal encoding, nơi tần số cố định gây ra aliasing khi sequence vượt quá training length.

Code snippet minh họa (PyTorch-style pseudo-code):

# ALiBi attention bias
def get_alibi_slopes(n_heads):
    # Geometric progression from 2^-8 to 2^-1
    return 2.0 ** (-8 * torch.arange(1, n_heads + 1) / n_heads)

def alibi_attention(Q, K, V):
    # Q, K, V: [batch, heads, seq, dim]
    seq_len = Q.size(-2)
    
    # Create distance matrix |i - j|
    distances = torch.arange(seq_len, device=Q.device).unsqueeze(0) - \
                torch.arange(seq_len, device=Q.device).unsqueeze(1)
    distances = distances.abs().unsqueeze(0).unsqueeze(0)  # [1, 1, seq, seq]
    
    # Get slopes per head: [1, heads, 1, 1]
    slopes = get_alibi_slopes(Q.size(1)).view(1, -1, 1, 1).to(Q.device)
    
    # Compute attention with linear bias
    scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(Q.size(-1))
    scores = scores - slopes * distances  # ALiBi penalty
    probs = F.softmax(scores, dim=-1)
    
    return torch.matmul(probs, V)

Ý nghĩa thực tế

So sánh với các phương pháp khác:

FeatureAbsolute PE (Sinusoidal)RoPEALiBi
Input embeddingBị nhiễu positionBị xoay (multiplicative)Sạch, không nhiễu
ExtrapolationThất bại hoàn toànCần interpolationTự nhiên, không cần tune
Long-rangeCó thể họcCó thể họcBị giới hạn bởi slope (có thể là feature)
Recency biasKhông cóKhông cóCó sẵn (giảm dần theo khoảng cách)
Inference costStandardStandardGiống standard (không overhead)

Benchmarks thực tế:

  • BLOOM (176B): Train với 2048 context, deploy với 8192 context không cần position interpolation, perplexity degradation tối thiểu.
  • MPT-7B/30B (MosaicML): Sử dụng ALiBi để đạt context window 8K+ với training cost thấp hơn RoPE-based models 30-40%.
  • WikiText-103: ALiBi outperform sinusoidal và learned embeddings trên các sequence dài hơn training context.

Ai đang dùng: BigScience (BLOOM), MosaicML (MPT series), Salesforce (CodeGen), Stability AI. Nhiều Vision Transformers cũng thử nghiệm ALiBi cho positional encoding trong ảnh (DINOv2 analysis).

Limitations cần biết:

  • Fixed recency bias: Luôn penalize khoảng cách, có thể hurt tasks đòi hỏi long-range dependencies nhất định (ví dụ: reasoning cần nhìn lại đoạn mở đầu của văn bản dài).
  • Trade-off với RoPE: Trên training length chuẩn, RoPE đôi khi đạt perplexity thấp hơn nhẹ; ALiBi trade absolute performance trên training length để lấy extrapolation.
  • Very long contexts (>16k): Dù extrapolate tốt hơn APE, vẫn có thể cần Position Interpolation (Chen et al. 2023) để đạt chất lượng tối ưu ở 32k-128k tokens.

Đào sâu hơn

Paper gốc: Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation (Press et al., 2021) — Giới thiệu ALiBi và chứng minh khả năng extrapolation.

Paper liên quan: Position Interpolation Improves ALiBi Extrapolation (Chen et al., 2023) — Kết hợp ALiBi với interpolation để đạt context cực dài.

Cùng cụm (Attention Efficiency):

Đọc tiếp:

External resources:

On this page