18 Punkte von GN⁺ 2023-08-16 | 3 Kommentare | Auf WhatsApp teilen
  • Dank LLaMA.cpp, das den LLaMA-Inferenzcode in reinem C++ neu geschrieben hat, kann es auf verschiedenster Hardware wie dem Pixel 5, dem M2 MacBook Pro und dem Raspberry Pi ausgeführt werden
  • Große Modelle benötigen normalerweise teure GPUs – wie ist das also möglich?
  • GPUs sind für Deep Learning wegen ihrer hohen Speicherbandbreite und Rechenleistung vorteilhaft, aber die Speicherbandbreite wird bei der Inferenz oft zum Flaschenhals
    • Denn für die eigentliche Berechnung müssen Daten aus dem HBM-Speicher (RAM) in den On-Chip-Speicher übertragen werden
  • Quantisierung ist entscheidend für den RAM-Verbrauch der LLaMA-Gewichte
    • Wenn man die Präzision reduziert, lässt sich der zum Speichern des Modells benötigte Speicher drastisch verringern
    • Durch Quantisierung wird der zum Speichern des Modells benötigte Speicher so weit reduziert, dass es in den Speicher von Standard-Data-Center-GPUs und leistungsstarken Consumer-GPUs passt
  • Die Speicherbandbreite ist bei fast allen mit dem Sampling von Transformern verbundenen Aufgaben der limitierende Faktor
  • Wenn man den Speicherbedarf mit Methoden wie Quantisierung reduziert, wird das Bereitstellen des Modells deutlich einfacher
  • Das ist auch ein weiterer Grund für Distillation oder dafür, „kleinere Modelle länger zu trainieren“

3 Kommentare

 
breezymind 2023-08-17

Ich habe auf einem lokalen Rechner llama2 mit LlamaCpp geladen und einen Embedding-Test durchgeführt.

https://breezymind.com/llamacpp-embedding

 
xguru 2023-08-17

Der erste Kommentar auf HN ist nützlich.

"Für alle, die sich das fragen: Wenn man ein Modell quantisiert, entstehen Kosten.
https://oobabooga.github.io/blog/posts/perplexities/

Im Grunde sinkt die Genauigkeit leicht, und es können seltsame Antworten auftreten; außerdem steigt die Wahrscheinlichkeit, dass die Antworten unerwartet ausfallen oder Halluzinationen entstehen. Je mehr Parameter ein Modell jedoch hat, desto geringer ist der Qualitätsverlust. Wenn das Modell also sehr groß ist, ist der Unterschied praktisch vernachlässigbar. Außerdem betrifft das nur die Kosten für die Inferenz. Das Training ist ein völlig anderes Thema und erfordert sehr viel mehr Leistung.

Trotzdem sehen wir inzwischen GPT-3-artige Leistung in einem einzelnen Server-Rack. Wenn man bedenkt, dass eine solche KI noch vor gerade einmal einem Jahr buchstäblich wie Magie wirkte und nur in großen Rechenzentren betrieben werden konnte, ist das eine enorme Leistung. Bandbreite und Speichergröße lassen sich meiner ungebildeten Meinung nach vermutlich leichter ausbauen als rohe Rechenleistung, daher könnten wir schon bald tatsächlich "smarte" Geräte haben."

 
GN⁺ 2023-08-16
Hacker-News-Kommentare
  • Ein Artikel über die Kosten der Quantisierung von Modellen, den daraus resultierenden Genauigkeitsverlust und die Möglichkeit anomalier Reaktionen. Mit steigender Zahl der Modellparameter wird dieser Verlust jedoch weniger wichtig.
  • Ein Beitrag, der die herausragende Leistung von GPT3 hervorhebt, das nun in einem einzelnen Server-Rack betrieben werden kann – eine große Verbesserung gegenüber KI-Systemen, die letztes Jahr noch große Rechenzentren benötigten.
  • Ein Text, der darauf hinweist, dass die Token-Erzeugung seriell und bandbreitenbegrenzt ist, Prompt-Einbettung jedoch nicht und in Batches von 512+ ausgeführt werden kann.
  • Llama.cpp verfügt nun über eine ~4-Bit-Quantisierung, die die Komplexität kaum beeinflusst. Q6_K hat fast die gleiche Komplexität wie FP16, ist aber deutlich kleiner.
  • Die wahre Magie von Llama.cpp ist das Model Splitting, das es kleinen dedizierten GPUs ermöglicht, die Prompt-Einbettung und Teile der Modellinferenz vollständig auszulagern. Das ist im Bereich generativer KI einzigartig.
  • GPU-Backends (OpenCL, Metal, CUDA, bald ROCm und Vulkan) sind die bevorzugte Methode, um Llama.cpp auszuführen. Ohne sie ist es unmöglich, 70B auf einem Desktop oder 33B auf einem Laptop mit 16 GB RAM auszuführen.
  • Das Projekt wird für seine einfache Erweiterbarkeit mit Go, Python und anderen Laufzeitumgebungen gelobt. Damit wurden Werkzeuge gebaut, die mehrere Modelle in Go laden und ausführen und über eine REST API bereitstellen.
  • Inferenz auf modernen CPUs mit AVX2 auszuführen ist langsamer als auf GPUs, bietet aber den Vorteil eines einzelnen langen zusammenhängenden RAM-Bereichs. Ein großer Nachteil ist jedoch, dass es zwar die Option gibt, auf 4 Bit zu quantisieren, aber keine Möglichkeit, auf x86_64-CPUs Inferenz mit etwas anderem als fp32 auszuführen.
  • Der Artikel erwähnt erfolgreiche Reproduktionen mit einem einzelnen Pi4 8gig für einen 13B-Datensatz und mit drei Pi4-Knoten für einen 65B-Datensatz und zeigt damit die Zugänglichkeit dieser Technik.
  • Der Artikel wird dafür kritisiert, bei der Diskussion von Latenzzahlen unsauber mit Einheiten umzugehen.
  • Der Artikel wirft die Frage auf, warum Chip-Hersteller so viele Funktionseinheiten in Chips integrieren, wenn die meisten Workloads doch speicherbegrenzt sind.
  • Der Artikel wird für einzigartige Inhalte gelobt, die man außerhalb von Hacker News nicht häufig findet.
  • Der Text diskutiert die Grenzen speicherbegrenzter Token-Erzeugung in Transformer-Decodern und hofft auf künftig hardwarefreundlichere Modelle.
  • Der Artikel stellt infrage, warum spezialisierte Hardware angesichts des entscheidenden Engpasses bei der Speicherbandbreite so entworfen wurde und ob ein Wandel der Software-Paradigmen dieses Gleichgewicht verändern könnte.