Llevaba tiempo queriendo correr uno de esos modelos generativos en mi propia máquina. Libre de otras prioridades, hoy por fin he tenido ocasión de comprobar si era verdad que modelos de la familia GPT4All o LlamaCpp estaban preparados para ser consumidos en ordenadores personales. De los centenares de proyectos que han proliferado desde el advenimiento de GPT-3.5 y sucesores, el que más me atraía era privateGPT en cuyo repositorio podemos leer lo siguiente:
Haga preguntas a sus documentos sin conexión a Internet, utilizando el poder de los LLM. 100% privado, ningún dato sale de su entorno de ejecución en ningún momento. ¡Puedes ingerir documentos y hacer preguntas sin conexión a Internet!
A modo de referencia estas son las características de mi PC:
Operating System: Kubuntu 22.04
KDE Plasma Version: 5.24.7
KDE Frameworks Version: 5.92.0
Qt Version: 5.15.3
Kernel Version: 5.19.0-46-generic (64-bit)
Graphics Platform: X11
Processors: 6 × Intel® Core™ i5-8400 CPU @ 2.80GHz
Memory: 15,6 GiB of RAM
Graphics Processor: NVIDIA GeForce GT 710/PCIe/SSE2
Estos son los pasos que he seguido para instalarlo en mi máquina:
- cd ~/code
- git clone [email protected]:imartinez/privateGPT.git
- cd privateGPT
- pip3 install -r requirements.txt | puede tardar unos minutos
- mkdir -p ~/LLM/models/
- cd ~/LLM/models/
- wget https://gpt4all.io/models/ggml-gpt4all-j-v1.3-groovy.bin
- cd ~/code/privateGPT
- cp example.env .env
- editar ruta fichero del modelo que acabamos de descargar
El siguiente paso es encontrar un documento sobre el que preguntar a privateGPT. Lo primero que se me ocurre es utilizar los textos de mi diario recopilados durante casi cinco años. Los vuelco en un fichero html que copio al directorio source_documents. Me atrae la idea de saber qué opina un LLM de mis escritos personales.
Antes de preguntar al modelo es necesario que los ingiera con el comando
1 |
python3 ingest.py |
Al cabo de unos pocos segundos la aplicación escupe el siguiente mensaje:
Found GPU0 NVIDIA GeForce GT 710 which is of cuda capability 3.5. PyTorch no longer supports this GPU because it is too old. The minimum cuda capability supported by this library is 3.7.Por lo visto mi tarjeta gráfica es demasiado vieja. En la configuración de privateGPT no existe ninguna opción que le obligue a usar la CPU en vez de la GPU, de modo que tengo que establecer la siguiente variable de entorno para que pytorch ignore la tarjeta gráfica:
1 |
export CUDA_VISIBLE_DEVICES="" |
Una vez resuelto el problema privateGPT, ingiere sin problemas el documento. El siguiente paso es hacerle preguntas:
1 |
python3 privateGPT.py |
Requiere de unos segundos para cargar el modelo tras lo cual me invita a que le ponga a prueba:
1 |
Enter a query: |
Ya adelanto que no di con ninguna pregunta cuya respuesta no empezara con The provided context does not give enough information to determine…. Da la sensación de el modelo no ingiere bien el formato diario. Pruebo entonces con un primer borrador de una novela que estoy escribiendo. Mismo resultado. No es capaz siquiera de decirme el nombre de algún personaje.
Ante los paupérrimos resultados decido probar con otro modelo. Según la página de gpt4all el mejor modelo general es nous-hermes-13b (Basado en instrucciones, da respuestas largas, curado con 300,000 instrucciones sin censura, entrenado por Nous Research).
Lo descargo y modifico el fichero .env con la ruta del nuevo modelo. Antes de lanzar el comando de ingest.py borro la base de datos con un rm -rf db/* de lo contrario en sus repuestas, privateGPT tiene en cuenta los textos anteriores. La prueba con los textos del diario es igual de decepcionante, sin embargo parece entender mejor la novela. Esto me responde cuando le pregunto qué es un AHA-P22:
An AHA-P22 is a new generation of humanoid that is now allowed to interact with the production and supply chain restoration process in order to restore functionality at the end. However, they are not considered a threat to society except for Simón who was one of 26 prototype ownerships. They form part of an antropomorphic group but belong to different hominid branches than humans. Their intelligence is as unaccessible and incomprehensible to us like ours would be to monkeys or apes, according to the video Sandra stopped dictating: «Like we were from a branch they belonged too…».No es correcto del todo, pero en ciertos aspectos se acerca, como si se hubiera quedado con una idea vaga del texto. Le llevó 148.85 segundos responder por cierto.
Ante la misma pregunta, seguida de un «responde en español» dice lo siguiente:
Un AHA-P22 es una inteligencia artificial del próximo milenio, que ha sido desarrollada para ayudar a la sociedad y hacer sus vidas más cómodas mediante la interacción con el mundo real sin necesidad de intervención humana.Su análisis es menos interesante y también se inventa algún dato. En ningún momento sitúo la acción en el próximo milenio. No sé de dónde lo ha inferido.
Además de las pruebas anteriores, le he alimentado con un relato corto en inglés sacado de gutenberg.org del qué fue capaz de decirme cuáles eran sus personajes principales, y confeccionar un resumen creíble. Los ficheros del BOE también los digiere pero cuando le pido que haga un resumen de este artículo me responde lo siguiente:
El contexto discute sobre las modificaciones que se han realizado para algunas letras dentro de una norma laboral aprobada mediante Real Decreto Legislativo 5/2015 el día 30 de octubre, ya sea la letra a) e i), y en cuanto al texto refundido del Estatuto Básico del Empleado Público. Se modifica las letras «a» y «l» dentro del artículo 48 que está presente el texto refundido de dicho estatuto básico aprobado en octubre de 2015, se redactan como sigue: En la página 90775 hay una disposición transitoria tercera donde aparece modificada por escrito la letra «a» y «l», referenciando al artículo número 48
En comparación si suministro el texto a chatpdf.com —que por debajo usa gpt-3.5— en dos o tres segundos responde con un resumen mucho más certero y legible:
Este PDF contiene una corrección de errores del Real Decreto-ley 5/2023, que adopta medidas para responder a las consecuencias económicas y sociales de la Guerra de Ucrania, apoyar la reconstrucción de la isla de La Palma y otras situaciones de vulnerabilidad, y transponer Directivas de la Unión Europea.
Me temo que de momento los dos modelos locales que he probado están lejos del rendimiento de los de openAI, por lo menos en lo que a comprensión de texto se refiere. Pero no pierdo la esperanza, seguiré probando.
1 comentario en «Modelos locales»