Nachricht

Cool! Alte Geräte wie Telefon, iPad und MacBook bilden einen heterogenen Cluster und können Llama 3 ausführen

2024-07-16

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Maschinenherzbericht

Redaktion von Machine Heart

Wenn Sie Ersatzausrüstung haben, sollten Sie es vielleicht einmal ausprobieren.

Diesmal kann die Hardware-Ausstattung in Ihrer Hand auch im Bereich der KI ihre Muskeln spielen lassen.

Durch die Kombination von iPhone, iPad und Macbook können Sie eine „heterogene Cluster-Inferenzlösung“ zusammenstellen und dann das Llama3-Modell reibungslos ausführen.



Es ist erwähnenswert, dass dieser heterogene Cluster ein Windows-, Linux- oder iOS-System sein kann und die Unterstützung für Android bald verfügbar sein wird.

Heterogener Cluster wird ausgeführt.



Laut dem Projektautor @evilsocket umfasst dieser heterogene Cluster iPhone 15 Pro Max, iPad Pro, MacBook Pro (M1 Max), NVIDIA GeForce 3080 und 2x NVIDIA Titan X Pascal. Der gesamte Code wurde auf GitHub hochgeladen.

Als die Internetnutzer dies sahen, äußerten sie, dass dieser alte Mann tatsächlich nicht einfach sei.



Einige Internetnutzer machen sich jedoch Sorgen über den Energieverbrauch. Unabhängig von der Geschwindigkeit können sie sich die Stromrechnung nicht leisten. Das Hin- und Herschieben von Daten verursacht zu viel Verlust.





Projekteinführung

Die Implementierung der oben genannten Funktionen ist untrennbar mit einem Rust-Framework namens Cake verbunden. Cake kann die verteilte Inferenz großer Modelle (z. B. Llama3) durchführen und ist darauf ausgelegt, Consumer-Hardware in heterogenen Clustern zu kombinieren. Die Consumer-Hardware verwendet eine Vielzahl von Betriebssystemen, darunter: iOS, Android, macOS, Linux und Windows. damit KI zugänglicher wird.



Projektadresse: https://github.com/evilsocket/cake

Die Hauptidee von Cake besteht darin, Transformatorblöcke auf mehrere Geräte aufzuteilen, um Rückschlüsse auf Modelle ziehen zu können, die normalerweise nicht in den GPU-Speicher eines einzelnen Geräts passen. Die Inferenz auf aufeinanderfolgenden Transformatorblöcken im selben Arbeitsthread wird stapelweise durchgeführt, um durch die Datenübertragung verursachte Verzögerungen zu minimieren.

Die derzeit von Cake unterstützten Systeme und Geräte sind folgende:



kompilieren

Führen Sie nach der Installation von Rust den folgenden Code aus:

Frachtbau --Release

Wenn der Benutzer iOS-Bindungen in der Anwendung generieren möchte, kann er Folgendes tun:

ios machen

verwenden

Führen Sie den Worker-Knoten aus:

cake-cli --model /path/to/Meta-Llama-3-8B # Modellpfad, lesen Sie unten, wie Sie die Modellgröße für Arbeiter optimieren

--mode worker # als Worker ausführen

--name worker0 # Workername in der Topologiedatei

--topology topology.yml # Topologie

--address 0.0.0.0:10128 # Bindeadresse

Führen Sie den Masterknoten aus:

cake-cli --model /Pfad/zu/Meta-Llama-3-8B

--topology topologie.yml

Unter anderem bestimmt topology.yml, welche Schichten von welchen Workern bedient werden:

linux_server_1:

Host: 'linux_server.host:10128'

Beschreibung: „NVIDIA Titan X Pascal (12 GB)“

Lagen:

- 'Modell.Ebenen.0-5'

linux_server_2:

Host: 'linux_server2.host:10128'

Beschreibung: „NVIDIA GeForce 3080 (10 GB)“

Lagen:

- 'Modell.Ebenen.6-16'

iPhone:

Host: "iPhone.Host:10128"

Beschreibung: „iPhone 15 Pro Max“

Lagen:

- 'Modell.Ebenen.17'

iPad:

Gastgeber: 'ipad.host:10128'

Beschreibung: „iPad“

Lagen:

- 'Modell.Ebenen.18-19'

MacBook:

Host: „macbook.host:10128“

Beschreibung: 'M1 Max'

Lagen:

- 'Modell.Ebenen.20-31'

Im Hinblick auf Probleme bei der Speicher- und Speicherplatzoptimierung möchten Benutzer den Mitarbeitern möglicherweise nur die Daten zur Verfügung stellen, die tatsächlich im Modell benötigt werden, und nicht den gesamten Ordner. In diesem Fall kann das Cake-Split-Modell verwendet werden. Um beispielsweise eine kleinere Version von llama3-Safetensoren zu generieren, können Sie den folgenden Code verwenden:

cake-split-model --model-path Pfad/zu/Meta-Llama-3-8B # zu teilendes Quellmodell

--topology Pfad/zu/topology.yml # Topologiedatei

--output Name des Ausgabeordners

Referenzlink: https://x.com/tuturetom/status/1812654489972973643