notizia

Freddo! I vecchi dispositivi come telefoni, iPad e MacBook formano un cluster eterogeneo e possono eseguire Llama 3

2024-07-16

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

Rapporto sul cuore della macchina

Dipartimento editoriale di Machine Heart

Se hai dell'attrezzatura di riserva, potresti provare.

Questa volta, l'attrezzatura hardware che avete in mano può mostrare i muscoli anche nel campo dell'intelligenza artificiale.

Combinando iPhone, iPad e Macbook, puoi assemblare una "soluzione di inferenza di cluster eterogeneo" e quindi eseguire senza problemi il modello Llama3.



Vale la pena ricordare che questo cluster eterogeneo può essere un sistema Windows, Linux o iOS e che presto arriverà il supporto per Android.

Il cluster eterogeneo è in esecuzione.



Secondo l'autore del progetto @evilsocket, questo cluster eterogeneo include iPhone 15 Pro Max, iPad Pro, MacBook Pro (M1 Max), NVIDIA GeForce 3080 e 2x NVIDIA Titan X Pascal. Tutto il codice è stato caricato su GitHub.

Vedendo ciò, gli utenti della rete hanno affermato che questo vecchio davvero non è semplice.



Tuttavia, alcuni cittadini della rete cominciano a preoccuparsi del consumo di energia, indipendentemente dalla velocità, non possono permettersi la bolletta dell’elettricità. Lo spostamento dei dati avanti e indietro causa troppe perdite.





Introduzione al progetto

L'implementazione delle funzioni di cui sopra è inseparabile da un framework Rust chiamato Cake. Cake può completare l'inferenza distribuita di modelli di grandi dimensioni (come Llama3) ed è progettato per combinare hardware di livello consumer in cluster eterogenei. L'hardware di livello consumer utilizza una varietà di sistemi operativi, tra cui: iOS, Android, macOS, Linux e Windows. in modo che l’intelligenza artificiale sia più accessibile.



Indirizzo del progetto: https://github.com/evilsocket/cake

L'idea principale di Cake è quella di partizionare blocchi di trasformatori su più dispositivi per poter eseguire inferenze su modelli che in genere non rientrano nella memoria GPU di un singolo dispositivo. L'inferenza su blocchi trasformatori consecutivi sullo stesso thread di lavoro viene eseguita in batch per ridurre al minimo i ritardi causati dal trasferimento dei dati.

I sistemi e i dispositivi attualmente supportati da Cake sono i seguenti:



compilare

Dopo aver installato Rust, esegui il seguente codice:

compilazione del carico --rilascio

Se l'utente desidera generare associazioni iOS nell'applicazione, può effettuare le seguenti operazioni:

crea ios

utilizzo

Esegui il nodo di lavoro:

cake-cli --model /path/to/Meta-Llama-3-8B # percorso del modello, leggi di seguito come ottimizzare le dimensioni del modello per i worker

--mode worker # esegui come worker

--name worker0 # nome del worker nel file di topologia

--topology topologia.yml # topologia

--address 0.0.0.0:10128 # indirizzo di associazione

Esegui il nodo principale:

cake-cli --model /percorso/verso/Meta-Llama-3-8B

--topologia topologia.yml

Tra questi, topology.yml determina quali livelli sono serviti da quali lavoratori:

server_linux_1:

host: 'linux_server.host:10128'

descrizione: 'NVIDIA Titan X Pascal (12GB)'

strati:

- 'modello.strati.0-5'

server_linux_2:

host: 'linux_server2.host:10128'

descrizione: 'NVIDIA GeForce 3080 (10GB)'

strati:

- 'modello.strati.6-16'

i phone:

host: 'iphone.host:10128'

descrizione: 'iPhone 15 Pro Max'

strati:

- 'modello.strati.17'

iPad:

host: 'ipad.host:10128'

descrizione: 'iPad'

strati:

- 'modello.strati.18-19'

il macbook:

host: 'macbook.host:10128'

descrizione: 'M1 Max'

strati:

- 'modello.strati.20-31'

Per quanto riguarda i problemi di ottimizzazione della memoria e dello spazio su disco, gli utenti potrebbero voler fornire ai lavoratori solo i dati effettivamente necessari nel modello, anziché l'intera cartella, nel qual caso è possibile utilizzare il modello cake-split. Ad esempio, per generare una versione più piccola di llama3 safetensor, puoi utilizzare il seguente codice:

cake-split-model --model-path percorso/verso/Meta-Llama-3-8B # modello sorgente da dividere

--topology percorso/verso/topology.yml # file di topologia

--output nome-cartella-output

Link di riferimento: https://x.com/tuturetom/status/1812654489972973643