¡Sí, puede ejecutar un "chatbot de IA" de LLM en una Raspberry Pi! Simplemente siga este proceso paso a paso y luego pregúntele cualquier cosa.
Los grandes modelos de lenguaje, conocidos generalmente (e incorrectamente) como IA, han estado amenazando con revolucionar el mundo editorial, artístico y legal durante meses. Una desventaja es que usar LLM como ChatGPT significa crear una cuenta y hacer que la computadora de otra persona haga el trabajo. Pero puede ejecutar un LLM capacitado en su Raspberry Pi para escribir poesía, responder preguntas y más.
¿Qué es un modelo de lenguaje grande?
Los grandes modelos de lenguaje utilizan algoritmos de aprendizaje automático para encontrar relaciones y patrones entre palabras y frases. Entrenados con grandes cantidades de datos, son capaces de predecir qué palabras es estadísticamente probable que aparezcan a continuación cuando se les presente una indicación.
Si le preguntaras a miles de personas cómo se sienten hoy, las respuestas serían como "Estoy bien", "Podría estar peor", "Está bien, pero me duelen las rodillas". La conversación entonces tomaría una dirección diferente. Tal vez la persona te pregunte sobre tu propia salud o responda con "Lo siento, tengo que irme. Llego tarde al trabajo".
Teniendo en cuenta estos datos y el aviso inicial, un modelo de lenguaje grande debería ser capaz de generar una respuesta propia convincente y original, basada en la probabilidad de que una determinada palabra venga a continuación en una secuencia, combinada con un grado preestablecido de aleatoriedad, penalizaciones por repetición y otras parámetros
Los grandes modelos de lenguaje que se usan hoy en día no están entrenados en un vox pop de unos pocos miles de personas. En cambio, reciben una cantidad inimaginable de datos, extraídos de colecciones disponibles públicamente, plataformas de redes sociales, páginas web, archivos y conjuntos de datos personalizados ocasionales.
Los LLM están capacitados por investigadores humanos que reforzarán ciertos patrones y los retroalimentarán al algoritmo. Cuando le pregunte a un modelo de lenguaje grande "¿cuál es el mejor tipo de perro?", podrá girar una respuesta que le diga que un Jack Russell terrier es el mejor tipo de perro y le dará las razones.
Pero independientemente de cuán inteligente o convincente y humanamente tonta sea la respuesta, ni el modelo ni la máquina corre tiene una mente, y son incapaces de entender ni la pregunta ni las palabras que componen la respuesta. Son solo matemáticas y muchos datos.
¿Por qué ejecutar un modelo de lenguaje grande en Raspberry Pi?
Los modelos de idiomas grandes están en todas partes y las grandes empresas de búsqueda los están adoptando para ayudar a responder consultas.
Si bien es tentador lanzar una pregunta en lenguaje natural a una caja negra corporativa, a veces desea buscar inspiración o hacer una pregunta sin alimentar aún más datos en las fauces de capitalismo de vigilancia.
Como tablero experimental para manitas, el Computadora de placa única Raspberry Pi es filosóficamente, si no físicamente, adecuado para el esfuerzo.
En febrero de 2023, Meta (la empresa antes conocida como Facebook) anunció LLaMA, un nuevo LLM que cuenta con modelos de lenguaje de entre 7 mil millones y 65 mil millones de parámetros. LLaMA fue entrenado utilizando conjuntos de datos disponibles públicamente,
El código LLaMA es de código abierto, lo que significa que cualquiera puede usarlo y adaptarlo, y los 'pesos' o parámetros se publicaron como torrentes y enlaces magnéticos en un hilo sobre el proyecto página de GitHub.
En marzo de 2023, el desarrollador Georgi Gerganov lanzó llama.cpp, que puede ejecutarse en una gran variedad de hardware, incluido Raspberry Pi. El código se ejecuta localmente y no se envían datos a Meta.
Instalar llama.cpp en Raspberry Pi
No hay pautas de hardware publicadas para llama.cpp, pero requiere mucho procesador, RAM y almacenamiento. Asegúrese de ejecutarlo en una Raspberry Pi 4B o 400 con la misma cantidad de memoria, memoria virtualy espacio SSD disponible como sea posible. Una tarjeta SD no va a ser suficiente, y un caso con refrigeración decente es un deber.
Vamos a utilizar el modelo de 7 mil millones de parámetros, así que visite este Hilo de GitHub de LLamAy descarga el torrent 7B usando un cliente como qBittorrent o Aria.
Clone el repositorio llama.cpp y luego use el cd Comando para moverse al nuevo directorio:
git clon https://github.com/ggerganov/llama.cpp
cdllama.cpp
Si no tiene un compilador instalado, instálelo ahora con:
sudo apt-conseguir instalar g ++
Ahora compila el proyecto con este comando:
hacer
Existe la posibilidad de que llama.cpp no se pueda compilar y verás un montón de mensajes de error relacionados con "vdotq_s32". Si esto sucede, debe revertir una confirmación. Primero, configure su usuario local de git:
git config usuario.nombre "David"
Ahora puedes revertir una confirmación anterior:
git revertir 84d9015
Se abrirá un mensaje de confirmación de git en el editor de texto nano. Prensa Control + O para ahorrar, entonces Control + X para salir de nano. llama.cpp ahora debería compilarse sin errores cuando ingresa:
hacer
Deberá crear un directorio para los modelos ponderados que pretende utilizar:
mkdir modelos
Ahora transfiera los modelos ponderados de la Llama directorio:
mv ~/Downloads/Llama/* ~/llama.cpp/modelos/
Asegúrese de tener Python 3 instalado en su Pi e instale las dependencias llama.cpp:
python3 -m pipa instalar oración numpy antorcha
La versión de NumPy puede causar problemas. Actualízalo:
pepita instalar entumecido --mejora
Ahora convierta el modelo 7B al formato ggml FP16:
python3 convertir-pth-a-ggml.py modelos/7B/ 1
El paso anterior consume mucha memoria y, según nuestros cálculos, usa al menos 16 GB de RAM. También es súper lento y propenso a fallar.
Obtendrá mejores resultados siguiendo estas instrucciones en paralelo en una PC de escritorio y luego copiando el archivo /models/7B/ggml-model-q4_0.bin a la misma ubicación en su Raspberry Pi.
Cuantifique el modelo a 4 bits:
./cuantificar.sh 7B
Eso es todo. LLaMA LLM ahora está instalado en su Raspberry Pi y ¡listo para usar!
Usando llama.cpp en Raspberry Pi
Para comenzar con llama.cpp, asegúrese de estar en el directorio del proyecto e ingrese el siguiente comando:
./main -m ./modelos/7B/ggml-modelo-q4_0.bin -t 4 -norte 128 -pag "¿Qué es el núcleo de Linux?"
El -metro La opción es dirigir llama.cpp al modelo que desea que use; -t indica el número de subprocesos que desea que utilice; -norte es el número de tokens a predecir; -pag es su aviso. Puede personalizar cualquiera y todas estas variables.
Prepárese para una larga espera, porque si bien la Raspberry Pi es excelente en lo que hace, no fue diseñada para este tipo de actividad de la CPU. En nuestro aviso de ejemplo, llama dividió el texto en ocho tokens individuales, antes de dar la siguiente respuesta:
Linux Kernel, en pocas palabras, siempre se ha denominado sistema operativo. Sin embargo, en realidad no se considera uno ya que, a todos los efectos prácticos, la mayoría de sus funciones son expuestos a través de API y utilidades que pueden ser utilizadas por cualquier otro sistema operativo que quiera (o necesite) acceder a esos API(s). En lo que respecta al kernel de Linux, no hay mucho que ver con el kernel real. Simplemente comenzará, recibirá los parámetros de configuración de su gestor de arranque/initrd de elección, luego lo pondrá en marcha en algún hardware y se ocupará de cualquier negocio que implique en este punto.
Si bien esta fue una respuesta bastante coherente, un segundo intento resultó en algo parecido a una ensalada de palabras cortadas en trozos:
La mayoría de ustedes probablemente han oído hablar de él, pero no saben realmente de lo que están hablando. Discutiremos esto en detalle porque comprenderlos completamente nos ayuda a usar más nuestras computadoras. eficientemente y también tomar mejores decisiones al momento de comprar nuevo hardware o software para sus PC en casa, oficinas etc.. El kernel de Linux es la columna vertebral de la mayoría de los sistemas operativos que se ejecutan en un sistema informático como Android, que es un sistema operativo de código abierto basado en parte en este kernel. Pero, ¿qué quieren decir exactamente al decir kernel de Linux?
El Linus Torvalds ha escrito sus pensamientos (Conocimiento)
Vale la pena mencionar en este punto que cada una de estas respuestas tardó cerca de dos horas en producirse y los cuatro núcleos de la CPU funcionaron al 100 % en todo momento. Sin embargo, el trabajo en el proyecto avanza rápidamente y puede esperar que las próximas optimizaciones de ARM reduzcan el tiempo.
También puede simular conversaciones completas con su LLM en lugar de enviar mensajes uno por uno. Agregando el -i opción iniciará llama en modo interactivo, mientras que --interactivo-inicio le pedirá entrada al principio. Para obtener una lista completa de las opciones disponibles, ejecute:
principal -h
Tenga en cuenta que LlaMA no tiene reglas restrictivas. Será, en ocasiones, sexista, racista, homofóbico y muy equivocado.
Un modelo de lenguaje grande no es un sustituto del conocimiento real
Ejecutar LLaMA de Meta en Raspberry Pi es increíblemente genial, y puede sentirse tentado a recurrir a su gurú virtual para preguntas técnicas, consejos de vida, amistad o como una fuente real de conocimiento. No se deje engañar. Los grandes modelos de lenguaje no saben nada, no sienten nada y no entienden nada. Si necesitas ayuda con algo, es mejor hablar con un ser humano o leer algo escrito por un ser humano.
Si tiene poco tiempo, ¡puede leerlo rápidamente en su terminal Linux!