noticias

¡Frío! Los dispositivos antiguos como Phone, iPad y MacBook forman un grupo heterogéneo y pueden ejecutar Llama 3

2024-07-16

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

Informe del corazón de la máquina

Departamento editorial de Machine Heart

Si tienes algún equipo de repuesto, quizás quieras probarlo.

Esta vez, el equipo de hardware que tiene en la mano también puede ejercitar sus músculos en el campo de la IA.

Al combinar iPhone, iPad y Macbook, puede ensamblar una "solución de inferencia de clústeres heterogéneos" y luego ejecutar el modelo Llama3 sin problemas.



Vale la pena mencionar que este clúster heterogéneo puede ser un sistema Windows, Linux o iOS, y pronto llegará el soporte para Android.

Se está ejecutando un clúster heterogéneo.



Según el autor del proyecto @evilsocket, este grupo heterogéneo incluye iPhone 15 Pro Max, iPad Pro, MacBook Pro (M1 Max), NVIDIA GeForce 3080 y 2x NVIDIA Titan X Pascal. Todo el código se ha subido a GitHub.

Al ver esto, los internautas expresaron que este anciano en realidad no es simple.



Sin embargo, algunos internautas están empezando a preocuparse por el consumo de energía, independientemente de la velocidad, no pueden pagar la factura de la luz. Mover datos de un lado a otro provoca demasiadas pérdidas.





Introducción al proyecto

La implementación de las funciones anteriores es inseparable de un marco de Rust llamado Cake. Cake puede completar la inferencia distribuida de modelos grandes (como Llama3) y está diseñado para combinar hardware de consumo en grupos heterogéneos. El hardware de consumo utiliza una variedad de sistemas operativos, incluidos: iOS, Android, macOS, Linux y Windows. para que la IA sea más accesible.



Dirección del proyecto: https://github.com/evilsocket/cake

La idea principal de Cake es fragmentar fragmentos de transformadores en múltiples dispositivos para poder realizar inferencias en modelos que normalmente no caben en la memoria GPU de un solo dispositivo. La inferencia en bloques de transformadores consecutivos en el mismo subproceso de trabajo se realiza en lotes para minimizar los retrasos causados ​​por la transferencia de datos.

Los sistemas y dispositivos admitidos actualmente por Cake son los siguientes:



compilar

Después de instalar Rust, ejecute el siguiente código:

construcción de carga --liberación

Si el usuario desea generar enlaces de iOS en la aplicación, puede hacer lo siguiente:

hacer ios

usar

Ejecute el nodo trabajador:

cake-cli --model /path/to/Meta-Llama-3-8B # ruta del modelo, lea a continuación cómo optimizar el tamaño del modelo para los trabajadores

--mode worker # ejecutar como trabajador

--name worker0 # nombre del trabajador en el archivo de topología

--topología topología.yml # topología

--address 0.0.0.0:10128 # dirección de enlace

Ejecute el nodo maestro:

cake-cli --model /ruta/a/Meta-Llama-3-8B

--topología topología.yml

Entre ellos, topology.yml determina qué capas son atendidas por qué trabajadores:

servidor_linux_1:

anfitrión: 'linux_server.host:10128'

Descripción: 'NVIDIA Titan X Pascal (12 GB)'

capas:

- 'modelo.capas.0-5'

servidor linux_2:

anfitrión: 'linux_server2.host:10128'

Descripción: 'NVIDIA GeForce 3080 (10 GB)'

capas:

- 'modelo.capas.6-16'

iPhone:

anfitrión: 'iphone.host:10128'

Descripción: 'iPhone 15 Pro Max'

capas:

- 'modelo.capas.17'

iPad:

anfitrión: 'ipad.host:10128'

Descripción: 'iPad'

capas:

- 'modelo.capas.18-19'

Macbook:

anfitrión: 'macbook.host:10128'

Descripción: 'M1 Max'

capas:

- 'modelo.capas.20-31'

Con respecto a los problemas de optimización de la memoria y el espacio en disco, es posible que los usuarios deseen proporcionar a los trabajadores solo los datos realmente necesarios en el modelo, en lugar de toda la carpeta, en cuyo caso se puede utilizar cake-split-model. Por ejemplo, para generar una versión más pequeña de llama3 safetensors, puedes usar el siguiente código:

cake-split-model --model-path ruta/a/Meta-Llama-3-8B # modelo fuente a dividir

--topology path/to/topology.yml # archivo de topología

--output nombre-de-carpeta-de-salida

Enlace de referencia: https://x.com/tuturetom/status/1812654489972973643