AirLLM: große Sprachmodelle auf einer schwachen Grafikkarte

Written by

in

Typischerweise erfordert die Ausführung eines großen Sprachmodells mit 70 Milliarden Parametern mehrere zehn Gigabyte Videospeicher. AirLLM geht dieses Problem gelassener an und bietet einen anderen Weg: Ein solches Modell kann auf einer Grafikkarte mit nur 4 GB Speicher und ohne Quantisierung, Destillation und Trimmen ausgeführt werden. In dieser Notiz werde ich versuchen, Ihnen ohne Eile zu erklären, wie AirLLM funktioniert, wie man es verwendet, und ich werde mein kleines Projekt AirLLM-Experimente teilen, was die Arbeit mit dieser Bibliothek etwas komfortabler macht.

Was ist AirLLM?

AirLLM ist eine Open-Source-Bibliothek für die Inferenz großer Sprachmodelle, geschrieben von Gavin Li. Die Idee ist einfach und dennoch elegant: Anstatt alle Modellgewichte auf einmal im Videospeicher zu speichern, lädt die Bibliothek jeweils nur eine Ebene auf die GPU. Die Gewichte werden in Form von in Schichten geschnittenen Shards auf der Festplatte gespeichert, und während der Generierung wird jede Schicht der Reihe nach geladen, verarbeitet und entladen.

Daraus folgt, dass die Menge des benötigten Videospeichers nicht von der Gesamtgröße des Modells abhängt, sondern von der Größe einer seiner Schichten. Aus diesem Grund passen in das 70B-Modell 4 GB, in den DeepSeek-V3 auf 671B etwa 12 GB und in den Qwen3-235B etwa 3 GB. Die Größe des Modells selbst wird jedoch in erster Linie durch den Speicherplatz und nicht durch die Fähigkeiten der Grafikkarte begrenzt.

Diese Speichereinsparungen gehen zu Lasten der Geschwindigkeit: Jede Schicht wird bei der Generierung jedes Tokens von der Festplatte gelesen, sodass die Ausgabe langsam ist und etwa Sekunden pro Token beträgt. Bei AirLLM geht es also weniger um einen schnellen interaktiven Chat als vielmehr um die Möglichkeit, sogar ein Modell zu starten, das sonst nicht in die Hardware passen würde.

Installation

Die Bibliothek wird von PyPI mit dem üblichen Befehl installiert:

pip install airllm

Beim ersten Start wird das Modell von Hugging Face heruntergeladen und in Ebenen zerlegt. Dieser Vorgang ist langsam und nimmt viel Speicherplatz in Anspruch. Sie sollten daher im Voraus freien Speicherplatz vorbereiten. Bei Bedarf können Sie die 4-Bit- oder 8-Bit-Komprimierung aktivieren – dann wird die Blockquantisierung auf die Gewichte angewendet, was das Laden von Schichten von der Festplatte um etwa das Dreifache beschleunigt und die Genauigkeit erheblich verliert.

Grundlegendes Beispiel

Sie können mit AirLLM fast genauso arbeiten wie mit einem regulären Modell von Transformers. Es reicht aus, einmal die Model-ID bei Hugging Face einzugeben, und schon ist alles bekannt:

from airllm import AutoModel

MAX_LENGTH = 128
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")

input_text = ['What is the capital of United States?']

input_tokens = model.tokenizer(
    input_text,
    return_tensors="pt",
    return_attention_mask=False,
    truncation=True,
    max_length=MAX_LENGTH,
    padding=False)

generation_output = model.generate(
    input_tokens['input_ids'].cuda(),
    max_new_tokens=20,
    use_cache=True,
    return_dict_in_generate=True)

print(model.tokenizer.decode(generation_output.sequences[0]))

Die AutoModel-Klasse selbst bestimmt den Modelltyp, sodass dieselbe Zeile für Llama, Qwen und DeepSeek verwendet werden kann. Und wenn man ein Modell wie DeepSeek-V3 mit 671B-Parametern nimmt, passen auch etwa 12 GB Videospeicher hinein – das macht das Projekt vor allem attraktiv.

Auf macOS starten

AirLLM läuft nicht nur auf CUDA, sondern auch auf Apple Silicon. Unter macOS wird das MLX-Backend verwendet, sodass mlx und Torch installiert sein müssen und nur Apple-Chips unterstützt werden. Es gibt auch eine kleine Einschränkung: Die MLX-Implementierung unterstützt nur Llama-ähnliche Architekturen, sodass Qwen und ähnliche Modelle auf diesem Weg nicht auf einem MacBook gestartet werden können.

Beispiel verwenden

AirLLM-Experimente sind zwei kleine interaktive Konsolen-Dienstprogramme zum lokalen Ausführen großer Sprachmodelle. Sie machen es überflüssig, jedes Mal denselben Code zu schreiben, um das Modell zu laden und den Chat zu organisieren.

Das erste Tool, airllm-lib-usage.py, führt die AirLLM-Bibliothek direkt im aktuellen Python-Prozess aus. Es zeigt eine nummerierte Liste der Modelle aus dem Gesamtkatalog an, installiert bei Bedarf fehlende Abhängigkeiten und öffnet eine Chat-Sitzung. Die MLX-Laufzeit wird unter macOS verwendet, Torch wird auf anderen Plattformen verwendet.

Das zweite Tool, airllm-openai-server-client.py, hilft Ihnen bei der Arbeit mit dem airllm-openai-server-Server, der in Docker läuft und eine OpenAI-kompatible API bereitstellt. Wenn Sie es zum ersten Mal starten, fragt das Dienstprogramm nach Einstellungen, sammelt das Bild, holt den Container ab und öffnet einen Streaming-Chat zum laufenden Server. Bei wiederholtem Start findet es einen vorhandenen Container, verwendet ihn einfach wieder und speichert den Modellcache in einem separaten Docker-Volume, damit das Modell nicht erneut heruntergeladen werden muss.

Die Liste der verfügbaren Modelle ist im gemeinsamen Modul model_catalog.py enthalten, sodass beide Tools mit demselben Satz arbeiten. Chat-Befehle sind ebenfalls üblich: /help, /clear, /exit. Der Quellcode und die Anweisungen befinden sich im Repository:

https://github.com/zefir1990/AirLLM-experiments

Worauf Sie achten sollten

Die Vorbereitung der ersten Antwort kann mehrere Minuten dauern: Zuerst lädt AirLLM das Modell herunter, schneidet es in Schichten und beginnt erst dann mit der Generierung. Allerdings bleibt auch die Geschwindigkeit niedrig – ein bewusster Kompromiss aus Gründen der Speicherersparnis. Für geschlossene Modelle wie Meta-Lama müssen Sie die Bedingungen von Hugging Face akzeptieren und ein Zugriffstoken übergeben. Es ist am besten, den Cache der heruntergeladenen Modelle und Shards nicht zu löschen, da sonst alles erneut heruntergeladen werden muss.

Links

https://github.com/lyogavin/airllm
https://github.com/mkamranr/airllm-openai-server
https://github.com/zefir1990/AirLLM-experiments
https://pypi.org/project/airllm/
https://huggingface.co/

Quellen

https://github.com/lyogavin/airllm
https://github.com/zefir1990/AirLLM-experiments

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.