Uzun diziler için verimli bir Transformer varyantı olan Reformer mimarisini keşfedin. LSH dikkat ve RevNets'in AI araştırmaları için belleği nasıl optimize ettiğini öğrenin.
Reformer, standart modeller için hesaplama açısından imkansız olan çok uzun veri dizilerini işlemek üzere tasarlanmış Transformer mimarisinin verimli bir varyasyonudur. Reformer, geleneksel derin öğrenme sistemlerinde Geleneksel derin öğrenme sistemlerinde mevcuttur. Reformer, dikkat mekanizmasının karmaşıklığını ikinci dereceden terimlerden doğrusal-logaritmik terimlere indirger. Bu yenilik, yapay zeka araştırmacılarının tek bir GPU üzerinde on binlerce token'ı kapsayan bağlam pencereleri (örneğin, kitaplar, yüksek çözünürlüklü görüntüler veya uzun müzik besteleri) üzerinde modelleri eğitimlerine olanak tanır. GPU.
Reformer, BERTveya orijinal GPT serisi gibi modellerden ayıran iki temel mimari değişiklik sayesinde verimliliğini elde eder. Bu teknikler, model eğitimi sırasında aktivasyonları depolamak için gereken geniş bellek ihtiyacını giderir. Model eğitimi sırasında aktivasyonları depolamak için gereken geniş bellek ihtiyacını giderir.
Her iki mimari de kendi kendine dikkat mekanizmasına dayanmakla birlikte, makine öğrenimi ekosisteminde farklı amaçlara hizmet ederler.
Reformer'ın geniş bağlam pencerelerini işleme yeteneği, verilerin kolayca parçalanamadığı alanlarda yeni olanaklar sunar .
Reformcular genellikle metinle ilişkilendirilirken, verimlilik ilkesi bilgisayar görüşünde çok önemlidir. Reformcu, Transformatörleri optimize ettiği gibi, YOLO26 gibi modern görüş modelleri de gerçek zamanlı çıkarım için Evrişimli Sinir Ağlarını (CNN) optimize eder. Donanım kaynaklarının sınırlı olduğu Ultralytics aracılığıyla modelleri uç cihazlara yerleştirirken bellek kısıtlamalarını anlamak çok önemlidir.
Aşağıdaki kod, PyTorch kullanarak bir modelin bellek ayak izini nasıl inceleyeceğinizi gösterir. PyTorchkullanarak bir modelin bellek ayak izini nasıl inceleyebileceğinizi gösterir. Bu kavram, Reformer gibi bellek verimli mimarilerin geliştirilmesinde merkezi bir öneme sahiptir.
import torch
import torch.nn as nn
# Define a simple Transformer layer (Standard, not Reformer optimized)
layer = nn.TransformerEncoderLayer(d_model=512, nhead=8)
model = nn.TransformerEncoder(layer, num_layers=6)
# Create a long sequence input (Sequence Length: 2000, Batch: 1, Features: 512)
# Standard Transformers struggle as this length increases.
input_data = torch.rand(2000, 1, 512)
# Check parameter count to understand model complexity
params = sum(p.numel() for p in model.parameters())
print(f"Model Parameters: {params:,}")
# Perform a forward pass
output = model(input_data)
print(f"Output shape: {output.shape}")