Cómo correr LLaMA en la Raspberry Pi - GPT sin GPU

Rotvie
19 Apr 202309:15

Summary

TLDREn este video, Rodríguez presenta cómo replicar el modelo de Facebook llamado 'Llama' en una Raspberry Pi 4 de 8 gigabytes. Comienza aumentando el espacio de intercambio (Swap), siguiendo un tutorial, y luego clona el repositorio de 'Llama' en C++. Seguidamente, muestra el proceso de compilación y cómo convertir el modelo 7b a un formato compatible con la Raspberry Pi. Finalmente, realiza una prueba de inferencia con ejemplos, demostrando que el modelo funciona en la Raspberry Pi, aunque con cierta lentitud.

Takeaways

  • 😀 Rodríguez introduce el modelo de 'llama' liberado por Facebook y su versión en C++ llamada 'llama.cpp'.
  • 🔍 Rodríguez revisó un repositorio y encontró que alguien ejecutó 'llama' en una Raspberry Pi 4, lo que le motivó a intentar replicar el proceso.
  • 💡 Se sugiere aumentar la memoria Swap en la Raspberry Pi debido a que la RAM no es suficiente para el modelo.
  • 🛠️ Rodríguez recomienda seguir un tutorial para aumentar la Swap de la Raspberry Pi, pasando de los 1 GB por defecto a 2 GB.
  • 📁 Se detalla el proceso de clonar el repositorio de 'llama.cpp' y compilar los archivos con 'make'.
  • 🔄 Se menciona la necesidad de obtener diferentes modelos de 'llama' disponibles en el repositorio original y convertirlos al formato requerido.
  • 📚 Rodríguez optó por el modelo '7b' por ser el más ligero y procedió a descargarlo junto con sus archivos asociados.
  • 🔄 Se describe cómo copiar y mover los archivos del modelo '7b' a la carpeta 'models' de la Raspberry Pi a través de Samba.
  • 🔧 Se ejecuta un script en Python para convertir el modelo '7b' al formato 'ggml fp16' necesario para la inferencia con 'llama'.
  • 🚀 Después de la conversión, se sigue el tutorial para realizar la inferencia, probando el modelo con diferentes entradas de texto.
  • 📝 Se muestra que el modelo funciona en la Raspberry Pi 4, pudiendo responder a consultas y completar ideas, aunque con cierta lentitud.

Q & A

  • ¿Qué es el modelo que liberó Facebook y cómo se relaciona con el proyecto de Rodríguez?

    -El modelo que liberó Facebook es un modelo de lenguaje llamado LLaMA (Large Language Model Meta AI). Rodríguez está interesado en replicar el trabajo de alguien que ya utilizó este modelo en una Raspberry Pi 4.

  • ¿Qué es CBP y cómo se relaciona con LLaMA?

    -CBP es una interpretación de LLaMA escrita en C++. Rodríguez encontró esta variante en un repositorio y desea utilizarla en su Raspberry Pi 4.

  • ¿Por qué Rodríguez quiere aumentar la memoria Swap en su Raspberry Pi 4?

    -Rodríguez quiere aumentar la memoria Swap porque ha observado que muchas personas se quejan de que la RAM no es suficiente para ejecutar el modelo de lenguaje, lo que podría causar problemas de rendimiento.

  • ¿Cómo se puede aumentar la memoria Swap en una Raspberry Pi?

    -Rodríguez recomienda seguir un tutorial específico que explica cómo incrementar la memoria Swap, lo que implica editar el archivo de configuración de Swap y reiniciar el sistema.

  • ¿Qué es 'git clone' y cómo se utiliza en el proceso descrito por Rodríguez?

    -'Git clone' es un comando utilizado para copiar un repositorio de Git existente a una nueva ubicación. Rodríguez lo utiliza para clonar el repositorio de CBP y acceder a los archivos necesarios para su proyecto.

  • ¿Qué es 'make' y para qué se usa en el script de Rodríguez?

    -'Make' es una herramienta de compilación que automatiza la compilación de código fuente. Rodríguez lo usa para compilar el código del repositorio CBP en su Raspberry Pi.

  • ¿Cuáles son las diferentes variantes de modelos de LLaMA que Rodríguez menciona?

    -Rodríguez menciona varias variantes de modelos de LLaMA, incluyendo 7b, 13b, 30b y 65b, cada uno con una complejidad y tamaño de archivo diferente.

  • ¿Cómo se obtiene un modelo de LLaMA y por qué Rodríguez sugiere buscar otras formas de obtenerlo?

    -Los modelos de LLaMA se pueden obtener a través de un formulario de Google, pero Rodríguez sugiere buscar otras formas ya que este proceso generalmente es lento y puede demorar mucho tiempo.

  • ¿Qué es FP16 y por qué es importante en el proceso descrito por Rodríguez?

    -FP16 es un formato de punto flotante de 16 bits, que se utiliza para reducir el tamaño del modelo y mejorar el rendimiento en dispositivos con recursos limitados como la Raspberry Pi. Rodríguez lo utiliza para convertir el modelo 7b antes de la inferencia.

  • ¿Qué es la inferencia y cómo se relaciona con el uso del modelo 7b en la Raspberry Pi?

    -La inferencia es el proceso de utilizar un modelo de aprendizaje automáto para hacer predicciones o tomar decisiones basadas en nuevos datos. Rodríguez ejecuta la inferencia con el modelo 7b en su Raspberry Pi para probar su funcionamiento.

  • ¿Cómo demora el proceso de inferencia con el modelo 7b en la Raspberry Pi según la experiencia de Rodríguez?

    -Según Rodríguez, el proceso de inferencia con el modelo 7b en la Raspberry Pi es un poco lento, pero no arroja errores y es capaz de procesar y dar respuestas a las consultas.

Outlines

00:00

😀 Configuración de Raspberry Pi para ejecutar Llama

El primer párrafo describe el proceso de configuración de una Raspberry Pi 4 de 8 gigabytes para ejecutar el modelo Llama, una versión en C++ de llama, utilizando el repositorio 'llama.cpp'. El objetivo es replicar el trabajo de otra persona que ejecutó Llama en una Raspberry Pi 4. Se sugiere aumentar la memoria Swap debido a la limitada RAM, siguiendo un tutorial específico. El script incluye clonar el repositorio, compilar el código y preparar los modelos Llama, destacando el uso del modelo 7b por su ligereza, y la necesidad de copiar archivos a la carpeta 'models' antes de ejecutar el programa.

05:01

😀 Conversión y ejecución del modelo Llama en Raspberry Pi

El segundo párrafo sigue con el proceso de ejecución del modelo Llama en la Raspberry Pi. Se menciona la instalación de dependencias y la conversión del modelo 7b al formato 'ggml fp16', necesario para la inferencia con Llama. El script incluye pasos adicionales para adaptar el modelo a la arquitectura de 4 bits de la Raspberry Pi. Finalmente, se prueba la inferencia con ejemplos, demostrando que el modelo funciona correctamente en la Raspberry Pi 4, a pesar de ser un poco lento. El video termina con una demostración exitosa y agradece al espectador por su atención.

Mindmap

Keywords

💡Rodríguez

Es el nombre del presentador del video, quien parece tener conocimientos técnicos y está compartiendo su experiencia con el modelo de Facebook llamado 'llama'. Se utiliza para establecer la autoridad y la confianza del narrador en el tema que se aborda.

💡Facebook

Facebook es una red social que ha desarrollado un modelo de inteligencia artificial llamado 'llama', mencionado en el video como un punto de referencia para el proyecto que el presentador está explicando.

💡Llama

Llama es el nombre del modelo de inteligencia artificial en cuestión, que es una variante de un modelo más grande desarrollado por Facebook. Es el núcleo del proyecto que Rodríguez está tratando de replicar en su Raspberry Pi 4.

💡C++

C++ es un lenguaje de programación de sistemas que se menciona en el video como el lenguaje utilizado para la interpretación de 'llama'. Es crucial para la compilación y ejecución del modelo en la Raspberry Pi.

💡Raspberry Pi 4

Es una placa de computadora de bajo costo y tamaño reducido, utilizada en el video para ejecutar el modelo 'llama'. Se destaca por tener 8 gigabytes de RAM, lo que es importante para la ejecución del modelo.

💡Swap

Swap es un espacio en el disco duro que se utiliza como extensión de la memoria RAM cuando esta se agota. En el video, Rodríguez sugiere aumentar el tamaño del Swap para mejorar el rendimiento del modelo 'llama' en la Raspberry Pi.

💡Git

Git es un sistema de control de versiones distribuido que se utiliza para clonar el repositorio de 'llama'. Es fundamental para obtener el código fuente del proyecto y poder trabajar con él.

💡Compilación

La compilación es el proceso de traducir el código fuente a un lenguaje que el computadora puede ejecutar. En el video, se menciona la necesidad de compilar el código de 'llama' antes de poder ejecutarlo.

💡Modelos de Llama

Existen diferentes versiones o 'modelos' de 'llama', como 7b, 13b, 30b y 65b, que varían en tamaño y complejidad. Rodríguez elige el modelo 7b por ser el más ligero y adecuado para su Raspberry Pi.

💡Inferencia

La inferencia es el proceso de utilizar un modelo de aprendizaje automático para hacer predicciones o tomar decisiones. En el video, se prueba la inferencia con el modelo 'llama' para ver si funciona correctamente en la Raspberry Pi.

💡Formato GGML FP16

GGML FP16 es un formato de almacenamiento de modelos que permite una representación más eficiente en términos de memoria y rendimiento. En el video, se menciona la conversión del modelo 7b a este formato para su uso en la inferencia.

Highlights

Rodríguez presenta su experiencia con el modelo de Facebook llamado llama.

Encuentra una variante llama.en.cpp, una interpretación de llama en C++.

Alguien ejecutó llama en una Raspberry 4, Rodríguez desea replicar este proceso.

Rodríguez tiene una Raspberry Pi 4 de 8 gigabytes y sugiere aumentar la memoria Swap.

Recomienda seguir un tutorial para aumentar la Swap en Raspberry Pi.

Expone los pasos para clonar el repositorio de llama.en.cpp y compilar el código.

Muestra cómo moverse por el repositorio y compilar los archivos.

Discute la necesidad de obtener diferentes modelos de llama del repositorio original.

Rodríguez elige el modelo 7b por su ligereza y procede a descargarlo.

Copia el modelo 7b y el checklist al directorio de la Raspberry Pi mediante Samba.

Indica cómo mover los archivos al directorio models según las instrucciones del repositorio.

Instala las dependencias necesarias para ejecutar llama en la Raspberry Pi.

Convierte el modelo 7b al formato ggml fp16 para su uso en llama.

Realiza la conversión del modelo a 4 bits siguiendo el tutorial.

Prueba la inferencia del modelo en la Raspberry Pi con diferentes ejemplos.

Observa que el modelo funciona lentamente pero sin errores en la Raspberry Pi.

Rodríguez concluye que el modelo llama se ejecuta correctamente en la Raspberry Pi 4.

Agradece a la audiencia y anuncia el próximo video.

Transcripts

play00:00

Hola a todos Soy Rodríguez Creo que este

play00:03

punto todos conocemos y probablemente

play00:06

muchos de ustedes conozcan lo que llaman

play00:07

el modelo que liberó Facebook Hace unos

play00:11

días estaba revisando en el repositorio

play00:12

de llama y me encontré también con esta

play00:14

variante Ya a punto cbp que es una

play00:17

interpretación de llama en c++

play00:19

uno de los sitios que tenía este

play00:21

repositorio en el de acá en el cual una

play00:24

persona había

play00:25

descargado llama y la había hecho correr

play00:28

una raspberry 4 Así que como también

play00:30

tengo una raspberry pi 4 me gustaría

play00:32

tratar de hacer lo mismo poder replicar

play00:34

lo que ha hecho esta persona la

play00:36

raspberry 4 que tengo es una raspberry

play00:38

pi 4 de 8 gigabytes a la cual me estoy

play00:41

conectando por schh acá podemos ver que

play00:44

tengo la raspberry

play00:46

si le doy acá H top

play00:49

podemos ver los cuatro núcleos las 8

play00:52

gigabytes y mi Swap Entonces como Primer

play00:56

paso para poder hacer este hacer que

play00:59

este modelo funcione la raspberry lo que

play01:02

me gustaría hacer es aumentarle la Swap

play01:04

dado que he visto que mucha gente se

play01:07

quejaba de que la ram no es suficiente

play01:10

para esto recomiendo usar este tutorial

play01:13

de aquí es donde explica Cómo

play01:15

incrementar la Swap por defecto las

play01:17

raspberry que estoy corriendo acá

play01:20

estoy corriendo acá la el sistema

play01:23

operativo de la raspberry de 4 bits en

play01:26

la versión Lite O sea que nada no tengo

play01:28

no tengo

play01:29

de esto quemarment así que aquí por

play01:32

defecto viene ese megabytes lo mentado

play01:34

yo a 2 gigas y acá se puede ver si yo

play01:37

corto de aquí

play01:42

podemos ver ahí que dice con

play01:45

2048 2 gigas Así que Les recomiendo

play01:48

subir su tutorial para aumentar su Swap

play01:51

una vez que tienen aumentada las app el

play01:54

siguiente paso sería darle git Clon al

play01:57

repositorio de llamada.cp Así que vamos

play02:00

a seguir sus pasos que indican acá

play02:03

estamos acá Aquí clon

play02:07

para clonar el repositorio

play02:15

ya está ahora hacemos CD a la carpeta

play02:20

y vemos el contenido acá están todos los

play02:23

archivos que estaban en el repositorio

play02:25

luego tenemos que hacer un make Así que

play02:28

damos Mail para compilar

play02:33

Esperamos que compile

play02:35

probablemente tome un poco de tiempo

play02:39

Mientras tanto podemos seguir viendo lo

play02:41

que hay aquí

play02:42

una vez compilamos el siguiente paso

play02:45

sería mover el modelo acá tenemos

play02:48

diferentes modelos del yaman tenemos 7b

play02:51

13b 30 b y 65b estos modelos se pueden

play02:57

encontrar en el repositorio original de

play02:59

llama aquí ellos permiten encontrar el

play03:01

modelo a través de

play03:03

de llenar este Google forms sin embargo

play03:06

recomiende buscar otra manera de

play03:08

conseguir el repositorio

play03:10

perdón de conseguir el modelo ya que por

play03:15

lo general eso demora Así que si consigo

play03:18

otra manera sería excelente una vez

play03:21

consiguen el modelo el que yo voy a

play03:23

utilizar es el 7b ya que es el más

play03:26

liviano y ahora tengo descargado

play03:28

Entonces ya compilo aquí

play03:31

vamos acá a limpiar y les muestro acá el

play03:34

modelo que tengo acá lo tengo descargado

play03:36

el 7b viene con el tocador y el toquen

play03:41

arzareiser checklist si entramos Aquí

play03:44

vemos que pesa más o menos unas 13 gigas

play03:46

Así que lo que voy a hacer es copiar

play03:48

esto de acá a mi raspberry pero como

play03:51

esto demora bastante ya lo he hecho

play03:53

previamente Acá tengo estoy conectado

play03:55

por Samba a mi raspberry Así que puedo

play03:58

ver los archivos que hay dentro Ese es

play04:00

el interior de la raspberry Así que si

play04:02

entramos acá home rp o s vemos acá el 7b

play04:07

lo que nadie model y te pegas el

play04:09

checklist ya le he pasado acá está más o

play04:11

menos 13 gigas Así que lo que tengo que

play04:13

hacer es mover esos tres archivos al

play04:16

donde me dicen el repositorio en el

play04:18

repositorio me dice que lo mueva al

play04:20

punto models o sea a la carpeta models

play04:24

Así que le damos acá control x ya más fp

play04:28

models y acá lo vemos aquí

play04:34

una vez que ya lo hemos copiado Ahí

play04:35

vamos a

play04:38

correr esto de acá el siguiente paso

play04:42

lo corremos aquí

play04:48

no tenemos pib vamos a instalar

play05:01

esperamos a que instale

play05:06

una vez que corremos de aquí podemos ir

play05:09

con los demás pasos vamos a ver si

play05:12

instalo

play05:20

ya ahora sí entonces corremos otra vez

play05:23

python 3 - pip lomen

play05:31

ya está ahora tenemos que convertir

play05:36

estos modelos 7b al formato ggml fp16

play05:40

entonces

play05:42

Seguimos aquí tenemos acá la carpeta

play05:44

models

play05:47

que está

play05:50

aquí aquí está la carpeta models

play05:52

entonces

play05:54

ahí está el 7b Perfecto entonces

play05:57

retrocedemos Y desde ya punto cbp

play06:00

corremos este

play06:01

Script de python

play06:05

con esto convertimos el modelo 7b en

play06:09

otro formato que vamos a utilizar luego

play06:11

para la inferencia con llama

play06:21

muy bien una vez que ha terminado de

play06:24

correr el Script continuamos con el

play06:26

tutorial entonces aquí lo siguiente que

play06:30

tenemos que correr es lo de acá

play06:33

Así que corremos esto

play06:36

para

play06:37

hacerle al model a 4 bits

play06:41

corremos lo de aquí

play06:50

muy bien una vez que ha terminado de

play06:53

hacer la conversión

play06:55

seguimos con el tutorial Así que lo que

play06:58

se vería se iría correr la inferencia

play07:01

Así que en teoría ya debemos poder

play07:03

correr una diferencia

play07:04

vamos a probar

play07:07

creo que acá arriba también hay un

play07:09

ejemplo acá en punto Main

play07:14

menos mcm models todo esto de acá

play07:17

vamos a probar

play07:20

en lugar de 512 vamos a cambiarlo por

play07:23

128 Ok entonces corremos aquí

play07:28

estamos aquí 128

play07:31

y vamos a probar

play07:37

vemos que está cargando

play07:44

veamos Qué tal el modelo responde este

play07:47

pront billing a Website con bidón simple

play07:54

parece que es un poco lento

play07:57

pero no me lanza error así que

play08:01

es probable que le esté procesando

play08:06

vamos a esperar entonces que nos dé una

play08:09

respuesta

play08:16

ya está vemos que nos ha respondido su

play08:20

respuesta

play08:22

todo esto de aquí

play08:24

no ha terminado de completar la idea

play08:26

Pero ha podido respondernos Entonces

play08:29

vamos a probar una vez más con otro

play08:31

ejemplo

play08:32

en lugar de este pront vamos a cambiar

play08:34

el Bronx y vamos a preguntarle que es

play08:38

una llama

play08:50

y vemos que también está una respuesta

play08:52

es su respuesta

play08:54

e incluso se ha hecho una pregunta para

play08:56

poder seguir completando su respuesta

play08:59

Así como vemos Ya no se ve funciona en

play09:03

la raspberry pi 4 y esa es la prueba de

play09:06

ello eso sería todo por el vídeo Muchas

play09:09

gracias y nos vemos en el siguiente

play09:11

video Hasta luego

Rate This

5.0 / 5 (0 votes)

Related Tags
Raspberry PiIALlamaTutorialC++Modelo AISwapCompilaciónInferenciaClonar Repositorio
Do you need a summary in English?