¡Desbloquea el poder de GenAI LLMs directamente en tu máquina local!

Desbloquea el poder de GenAI LLMs en tu máquina local

Introducción

Desde el lanzamiento de GenAI LLMs, hemos comenzado a utilizarlos de una forma u otra. La forma más común es a través de sitios web como el sitio web de OpenAI para utilizar ChatGPT o modelos de lenguaje grandes a través de APIs como la API GPT3.5 de OpenAI, la API PaLM de Google u otros sitios web como Hugging Face, Perplexity.ai, que nos permiten interactuar con estos modelos de lenguaje grandes.

En todos estos enfoques, nuestros datos se envían fuera de nuestra computadora. Pueden ser propensos a ataques cibernéticos (aunque todos estos sitios web aseguran la máxima seguridad, no sabemos qué podría suceder). A veces, queremos ejecutar estos modelos de lenguaje grandes localmente y, si es posible, ajustarlos localmente. En este artículo, repasaremos esto, es decir, configurar LLMs localmente con Oobabooga.

Objetivos de aprendizaje

  • Comprender la importancia y los desafíos de implementar modelos de lenguaje grandes en sistemas locales.
  • Aprender a crear una configuración local para ejecutar modelos de lenguaje grandes.
  • Explorar qué modelos se pueden ejecutar con las especificaciones de CPU, RAM y GPU Vram proporcionadas.
  • Aprender a descargar cualquier modelo de lenguaje grande de Hugging Face para usarlo localmente.
  • Ver cómo asignar memoria GPU para que se ejecute el modelo de lenguaje grande.

Este artículo se publicó como parte del Data Science Blogathon.

¿Qué es Oobabooga?

Oobabooga es una interfaz web de generación de texto para modelos de lenguaje grandes. Oobabooga es una interfaz de usuario web basada en Gradio. Gradio es una biblioteca de Python ampliamente utilizada por los entusiastas del aprendizaje automático para construir aplicaciones web, y Oobabooga se construyó utilizando esta biblioteca. Oobabooga abstrae todas las cosas complicadas necesarias para configurar al intentar ejecutar un modelo de lenguaje grande de forma local. Oobabooga viene con una gran cantidad de extensiones para integrar otras características.

Con Oobabooga, puedes proporcionar el enlace del modelo de Hugging Face, y lo descargará, y comenzarás a inferir el modelo de inmediato. Oobabooga tiene muchas funcionalidades y admite diferentes backends de modelos como GGML, GPTQ, exllama y llama.cpp. Incluso puedes cargar un LoRA (Low-Rank Adaptation) con esta interfaz de usuario encima de un LLM. Oobabooga te permite entrenar el modelo de lenguaje grande para crear chatbots / LoRAs. En este artículo, repasaremos la instalación de este software con Conda.

Configuración del entorno

En esta sección, crearemos un entorno virtual utilizando conda. Entonces, para crear un nuevo entorno, ve a Anaconda Prompt y escribe lo siguiente.

conda create -n textgenui python=3.10.9
conda activate textgenui
  • El primer comando creará un nuevo entorno conda/Python llamado textgenui. Según el archivo readme de Oobabooga en Github, quieren que usemos la versión 3.10.9 de Python. Por lo tanto, el comando creará un entorno virtual con esta versión.
  • Luego, para activar este entorno y hacerlo el entorno principal (para que podamos trabajar en él), escribiremos el segundo comando para activar nuestro entorno recién creado.
  • El siguiente paso es descargar la biblioteca PyTorch. Ahora, PyTorch viene en diferentes versiones, como la versión solo para CPU y la versión para CPU+GPU. En este artículo, utilizaremos la versión para CPU+GPU, que descargaremos con el siguiente comando.
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

Biblioteca Python de PyTorch para GPU

Ahora, el comando anterior descargará la biblioteca Python de PyTorch para GPU. Ten en cuenta que la versión CUDA (GPU) que estamos descargando es cu117. Esto puede cambiar ocasionalmente, por lo que se recomienda visitar la página oficial de PyTorch para obtener el comando para descargar la última versión. Y si no tienes acceso a una GPU, puedes continuar con la versión para CPU.

Ahora cambia el directorio dentro de Anaconda Prompt al directorio donde descargarás el código. Ahora puedes descargarlo desde GitHub o usar el comando git clone para hacerlo. Aquí usaré el comando git clone para clonar el repositorio de Oobabooga en el directorio que deseo con el siguiente comando.

git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
  • El primer comando clonará el repositorio de Oobabooga en la carpeta desde la cual ejecutamos este comando. Todos los archivos estarán en una carpeta llamada text-generation-ui.
  • Por lo tanto, cambiamos al directorio text-generation-ui utilizando el comando en la segunda línea. Este directorio contiene un archivo requirement.txt, que contiene todos los paquetes necesarios para que funcionen los modelos de lenguaje grandes y la interfaz de usuario, por lo que los instalamos a través de pip
pip install -r requirements.txt

El comando anterior instalará todos los paquetes/bibliotecas necesarios, como hugging face, transformers, bitandbytes, gradio, etc., necesarios para ejecutar el modelo de lenguaje grande. Estamos listos para lanzar la interfaz de usuario web, lo cual podemos hacer con el siguiente comando.

python server.py

Ahora, en el Anaconda Prompt, verás que te mostrará una URL http://localhost:7860 o http://127.0.0.1:7860. Ahora ve a esta URL en tu navegador y aparecerá la interfaz de usuario y se verá de la siguiente manera:

Ahora hemos instalado correctamente todas las bibliotecas necesarias para comenzar a trabajar con la interfaz de usuario de generación de texto, y nuestro próximo paso será descargar los modelos de lenguaje grandes

Descarga e Inferencia de Modelos

En esta sección, descargaremos un modelo de lenguaje grande de Hugging Face y luego intentaremos hacer inferencia y conversar con el LLM. Para esto, dirígete a la sección Model presente en la barra superior de la interfaz de usuario. Esto abrirá la página del modelo que se ve de la siguiente manera:

Descargar Modelo Personalizado

Aquí, en el lado derecho, vemos “Descargar modelo personalizado o LoRA”; debajo, vemos un campo de texto con un botón de descarga. En este campo de texto, debemos proporcionar la ruta del modelo desde el sitio web de Hugging Face, que la interfaz de usuario descargará. Probemos esto con un ejemplo. Para esto, descargaré el modelo Nous-Hermes basado en el recién lanzado Llama 2. Entonces, iré a esa tarjeta de modelo en Hugging Face, que se puede ver a continuación

Entonces, descargaré un modelo GPTQ de 13B (estos modelos requieren GPU para ejecutarse; si solo quieres la versión CPU, puedes optar por los modelos GGML), que es la versión cuantizada del modelo Nous-Hermes 13B basado en el modelo Llama 2. Para copiar la ruta, puedes hacer clic en el botón de copiar. Y ahora, necesitamos desplazarnos hacia abajo para ver las diferentes versiones cuantizadas del modelo Nous-Hermes 13B.

Aquí, por ejemplo, elegiremos la versión gptq-4bit-32g-actorder_True del modelo Nous-Hermes-GPTQ. Entonces, ahora la ruta para este modelo será “TheBloke/Nous-Hermes-Llama2-GPTQ:gptq-4bit-32g-actorder_True”, donde la parte antes de “:” indica el nombre del modelo y la parte después de “:” indica el tipo de versión cuantizada del modelo. Ahora, pegaremos esto en el cuadro de texto que vimos anteriormente.

Ahora, haremos clic en el botón de descarga para descargar el modelo. Esto llevará algún tiempo, ya que el tamaño del archivo es de 8 GB. Después de que se descargue el modelo, haz clic en el botón de actualización, presente a la izquierda del botón de carga, para actualizar. Ahora selecciona el modelo que deseas usar en el menú desplegable. Ahora, si el modelo es una versión de CPU, puedes hacer clic en el botón de carga como se muestra a continuación.

Modelo de VRAM de GPU

Debemos asignar la VRAM de la GPU desde el modelo si utilizamos un modelo de tipo GPU, como el GPTQ que descargamos aquí. Como el tamaño del modelo es de aproximadamente 8 GB, asignaremos alrededor de 10 GB de memoria a él (tengo suficiente VRAM de GPU, así que proporcionaré 10 GB). Luego, hacemos clic en el botón de carga como se muestra a continuación.

Ahora, después de hacer clic en el botón de carga, vamos a la pestaña de Sesión y cambiamos el modo. El modo se cambiará de predeterminado a chat. Luego, hacemos clic en los botones Aplicar y reiniciar, como se muestra en la imagen.

Ahora, estamos listos para realizar inferencias con nuestro modelo, es decir, podemos comenzar a interactuar con el modelo que hemos descargado. Ahora ve a la pestaña de Generación de texto y se verá algo así

Entonces, es hora de probar nuestro Modelo de Lenguaje Grande Nous-Hermes-13B que descargamos de Hugging Face a través de la interfaz de Generación de texto. Comencemos la conversación.

Podemos ver en lo anterior que el modelo está funcionando correctamente. No hizo nada demasiado creativo, es decir, no alucinó. Respondió correctamente a mis preguntas. Podemos ver que hemos pedido al modelo de lenguaje grande que genere un código Python para encontrar la serie Fibonacci. El LLM ha escrito un código Python funcional que coincide con la entrada que he dado. Junto con eso, incluso me dio una explicación de cómo funciona. De esta manera, puedes descargar y ejecutar cualquier modelo a través de la interfaz de Generación de texto, todo ello de forma local, asegurando la privacidad de tus datos.

Conclusión

En este artículo, hemos recorrido un proceso paso a paso para descargar la interfaz de generación de texto, que nos permite interactuar directamente con los modelos de lenguaje grande dentro de nuestro entorno local sin estar conectados a la red. Hemos visto cómo descargar modelos de una versión específica de Hugging Face y hemos aprendido qué métodos cuantizados admite la aplicación actual. De esta manera, cualquier persona puede acceder a un modelo de lenguaje grande, incluso al último LlaMA 2, que hemos visto en este artículo, un modelo de lenguaje grande basado en el recién lanzado LlaMA 2.

Puntos clave

Algunos de los puntos clave de este artículo incluyen:

  • La interfaz de generación de texto de Oogabooga se puede utilizar en cualquier sistema de cualquier sistema operativo, ya sea Mac, Windows o Linux.
  • Esta interfaz nos permite acceder directamente a diferentes modelos de lenguaje grande, incluso los recién lanzados, de Hugging Face.
  • Incluso admite las versiones cuantizadas de diferentes modelos de lenguaje grande.
  • Incluso los modelos de lenguaje grande solo con CPU se pueden cargar con esta interfaz de generación de texto que permite a los usuarios sin acceso a GPU acceder a los LLM.
  • Finalmente, al ejecutar la interfaz de usuario localmente, los datos / el chat que tenemos con el modelo se quedan dentro del sistema local.

Preguntas frecuentes

Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Reka AI presenta a Yasa-1 un asistente de lenguaje multimodal con sensores visuales y auditivos que puede tomar acciones mediante la ejecución de código.

La demanda de asistentes de lenguaje más avanzados y versátiles ha aumentado constantemente en el panorama en constan...

Inteligencia Artificial

Decodificación anticipada un algoritmo de decodificación paralela para acelerar la inferencia de LLM

Aunque los modelos de lenguaje grandes (LLM) como GPT-4 y LLaMA están reimaginando rápidamente las aplicaciones moder...

Inteligencia Artificial

¿Se entienden Do Flamingo y DALL-E? Explorando la simbiosis entre los modelos de generación de subtítulos de imágenes y síntesis de texto a imagen

La investigación multimodal que mejora la comprensión de la computadora de texto e imágenes ha avanzado mucho recient...

Noticias de Inteligencia Artificial

¡No más trampas! ¡Sapia.ai detecta respuestas generadas por inteligencia artificial en tiempo real!

En un emocionante avance, Sapia.ai ha presentado una nueva función que puede identificar y marcar respuestas creadas ...

Ciencia de Datos

LangChain Mejorando el rendimiento con la capacidad de memoria

Ya he publicado artículos sobre LangChain antes, presentando la biblioteca y todas sus capacidades. Ahora me gustaría...