Modelos locales

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

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:

Una vez resuelto el problema privateGPT, ingiere sin problemas el documento. El siguiente paso es hacerle preguntas:

Requiere de unos segundos para cargar el modelo tras lo cual me invita a que le ponga a prueba:

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.

Publicaciones Similares

  • Configuración Jackrabbit + tomcat + aws s3

    El fin de este tutorial es configurar un servidor jackrabbit que utilice como almacenamiento el servicio S3 de Amazon AWS. Esta fuera del alcance del mismo la configuración del servicio S3 o como emplear el servidor jackrabbit en una aplicación. Apache Jackrabbit es un repositorio de contenido conforme con las especificaciones del API JCR. Ofrece…

  • |

    Actualización de Apache Guacamole server 1.0 → 1.2

    Escenario En el trabajo usamos Apache Guacamole para conectarnos a nuestros escritorios de la oficina desde casa. Apache Guacamole proporciona una puerta de entrada HTML5 para conectar con servicios de acceso remoto, como pueden ser VNC o RDP. Consta de dos : el servidor y el cliente que no tienen por qué correr en la…

  • Instalación y configuración de Guacamole 1.3

    Escenario Necesitamos acceder de manera remota a nuestro entorno de trabajo y hemos decidido que guacamole es nuestra mejor opción. Permite el uso de protocoles estándares como VNC, RDP y SSH No requiere instalar software en las máquinas de los usuarios. Gracias a HTML5, una vez instalado en un servidor, puedes acceder a tu escritorio…

  • Usuarios sftp enjaulados con logs para registro de eventos

    Escenario Un cliente nos pide que montemos un servidor FTP para que nos pueda hacer llegar periódimante ficheros con datos. La máquina en la que vamos a configurarlo corre en un ubuntu server 18.04. y tiene instalado un openssh-server. Requisitos Debe utilizar el protocolo SFTP, que ofrece las funcionalidades de FTP sobre el protocolo SSH….

  • |

    Cómo ampliar el espacio en disco en 1and1

    Escenario Hemos contratado un servidor dedicado en 1and1 (ubuntu 14.04) y al acceder por ssh constatamos que no disponemos de todo el espacio en disco disponible: $ df -hFilesystem Size Used Avail Use% Mounted onudev 3.9G 4.0K 3.9G 1% /devtmpfs 798M 592K 797M 1% /run/dev/md1 4.0G 990M 3.0G 25% /none 4.0K 0 4.0K 0% /sys/fs/cgroupnone 5.0M 0 5.0M 0% /run/locknone 3.9G 0 3.9G 0% /run/shmnone 100M 0 100M 0% /run/user/dev/mapper/vg00-usr 4.8G 1.3G 3.3G 28% /usr/dev/mapper/vg00-var 4.8G 812M 3.8G 18% /var/dev/mapper/vg00-home 4.8G 10M 4.6G 1% /home Objetivo Aumentar el espacio disponible para dar cabida a nuestros recursos. Solución Nota: sólo aplicable a sistemas linux Primer paso Comprobamos el espacio en disco real: ~$ sudo fdisk -lDisk /dev/sda: 240.1 GB, 240057409536 bytes255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 4096 bytesI/O size (minimum/optimal): 4096 bytes / 4096 bytesDisk identifier: 0x24e3fc12   Device Boot      Start         End      Blocks   Id  System/dev/sda1            2048     8390655     4194304   fd  Linux raid autodetect/dev/sda2         8390656    12584959     2097152   82  Linux swap / Solaris/dev/sda3        12584960   468862127   228138584   fd  Linux raid autodetect Segundo…

Un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *