>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Unknown

Wie man eine Million Tokens in eine normale GPU passt – mit Kimi Linear

Habt ihr euch jemals gefragt, warum die Arbeit mit langen Texten in LLMs so teuer ist? Das liegt am KV-Cache. Wenn ihr ein massives Dokument in ein Modell eingebt, schwillt sein „Speicher" (der Cache) auf unverschämte Größen an und verschlingt euren gesamten VRAM. Die Leute bei MoonshotAI haben beschlossen, dass es Zeit ist, etwas dagegen zu unternehmen, und haben Kimi Linear auf den Markt gebracht. Das ist nicht nur ein weiteres „verbessertes" Modell – es ist ein Versuch, die Attention-Architektur neu zu durchdenken, damit wir mit einem Million-Token-Kontext arbeiten können, ohne uns einen Server-Cluster zulegen zu müssen.

Was ist das Problem mit Standard-Attention

Der Standardmechanismus Full Attention (der in klassischen Transformern) ist ein gefräßiges Biest. Seine Komplexität wächst quadratisch mit der Textlänge. Wollt ihr einen doppelt so großen Kontext? Dann verdoppelt sich der Ressourcenverbrauch – genauer gesagt vervierfacht er sich. Beliebte Lösungen wie Flash Attention oder DeepSeeks MLA (Multi-Head Latent Attention) helfen zwar, lösen das Problem aber nicht grundlegend bei wirklich langen Sequenzen.

Kimi Linear verfolgt einen anderen Ansatz. Die Entwickler nutzten eine Hybrid-Methode, die die Stärken von Transformern und RNN-ähnlichen Strukturen kombiniert.

Wie Kimi Delta Attention funktioniert

Das Herzstück des Projekts ist der Kimi Delta Attention (KDA)-Mechanismus. Ohne in harte Mathematik abzutauchen: Es ist eine Evolution des Gated DeltaNet-Konzepts. Der Haupttrick hier ist kluges „Vergessen".

In einem Standard-RNN wird der Speicher durch eine feste Zustandsgröße begrenzt. KDA nutzt einen Gating-Mechanismus, der bestimmt, welche vergangenen Informationen in diesem komprimierten Zustand behalten und welche verworfen werden können. Dies ermöglicht es dem Modell, auch über große Distanzen hinweg eine hohe Genauigkeit aufrechtzuerhalten, wo konventionelle lineare Modelle zu „driften" beginnen und den Faden verlieren.

Was das in der Praxis bringt

Die Entwickler führten eine Architektur ein, bei der KDA und MLA (Global Attention) im Verhältnis 3:1 gemischt werden. Diese Kombination erzielte mehrere beeindruckende Ergebnisse:

  1. Speicherersparnis. Der KV-Cache-Bedarf sank um 75%. Das ist entscheidend, wenn man das Modell auf eigener Hardware deployt.
  2. Generierungsgeschwindigkeit. Bei einem Kontext von 1 Million Token steigt der Token-Durchsatz um bis zu 6x im Vergleich zu Standard-Architekturen.
  3. Ehrlicher Kontext. Benchmark-Tests auf RULER zeigen, dass das Modell wirklich „sieht" und Informationen über alle 128k (und bis zu 1M) Token hinweg nutzt – nicht nur so tut.

Die Diagramme unten zeigen, wie Kimi Linear (blaue Linie) bei wachsender Kontextlänge bei der Geschwindigkeit davonzieht:

Ausprobieren

MoonshotAI hat nicht gespart und die Modellgewichte auf Hugging Face veröffentlicht. Es gibt eine Base-Version und eine Instruct-Variante mit 48 Milliarden Parametern. Dank der Mixture-of-Experts-Architektur (MoE) werden nur 3 Milliarden Parameter während der Berechnung aktiviert, was das Modell für seine Klasse überraschend leicht macht.

Um loszulegen, braucht ihr die neueste PyTorch-Version und die fla-core-Bibliothek. Der Code sieht für alle, die schon mit Transformern gearbeitet haben, recht Standard aus:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "moonshotai/Kimi-Linear-48B-A3B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
    trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)

# Обычный чат-шаблон
messages = [
    {"role": "system", "content": "You are a helpful assistant provided by Moonshot-AI."},
    {"role": "user", "content": "Расскажи, в чем преимущество линейного внимания перед обычным?"}
]

input_ids = tokenizer.apply_chat_template(
    messages, 
    add_generation_prompt=True, 
    return_tensors="pt"
).to(model.device)

generated_ids = model.generate(inputs=input_ids, max_new_tokens=500)
response = tokenizer.batch_decode(generated_ids)[0]
print(response)

Wenn ihr das in der Produktion deployen müsst, versteht sich das Modell gut mit vLLM. Ihr könnt mit einem einzigen Terminalbefehl eine OpenAI-kompatible API starten und eine massive max-model-len angeben.

Lohnt sich der Download

Das Projekt sieht vielversprechend aus für alle, die RAG-Systeme bauen oder lange Logs und Dokumente analysieren.

Wer sollte unbedingt einen genaueren Blick werfen:

  • Diejenigen, die an die Speichergrenze von GPUs gestoßen sind, wenn sie mit langen Kontexten arbeiten.
  • Entwickler, denen die Antwortgeschwindigkeit (TPOT) in Echtzeit wichtig ist.
  • Forscher, die nach Alternativen zu Standard-Transformern suchen.

Als Nachteil ist die Architektur relativ neu, und die Unterstützung in Drittanbieter-Tools (wie Quantisierung oder spezifische Optimierer) lässt möglicherweise noch auf sich warten. Aber dass es fertige KDA-Kernel in der FLA-Bibliothek gibt, ist ermutigend.

Kimi Linear ist ein gutes Beispiel dafür, dass algorithmische Optimierung immer noch größere Gewinne bringen kann als einfach mehr Teraflops zu stapeln. Wenn ihr eine ganze Bibliothek oder einen massiven Codebase in einem einzigen Durchlauf „verdauen" müsst – das ist wahrscheinlich eines der interessantesten Tools, die es gerade gibt.

Ähnliche Projekte