Llama.cpp: Puerto de C/C++ para el modelo LLaMA de Facebook
Published on
¡Bienvenido al fascinante mundo de Llama CPP! Si has estado deseando ensuciarte las manos con modelos de lenguaje, has llegado al lugar correcto. Llama CPP es una herramienta que está causando sensación en el campo de la ingeniería de preguntas, y con razón.
En esta guía completa, exploraremos todo lo que necesitas saber sobre Llama CPP. Desde su configuración hasta la ejecución de tu primer modelo, lo tenemos cubierto. Así que sumerjámonos y desbloqueemos todo el potencial de esta poderosa herramienta.
¿Quieres conocer las últimas noticias de LLM? ¡Echa un vistazo al ranking más reciente de LLM!
¿Qué es Llama CPP?
Llama CPP es un proyecto que te permite trabajar con modelos de lenguaje de manera transparente. Es una herramienta que reduce la brecha entre algoritmos complejos y su implementación práctica. Pero, ¿qué es exactamente un modelo de lenguaje? Vamos a descomponerlo:
- Modelo de Lenguaje: Un modelo computacional que predice la probabilidad de una secuencia de palabras. Es la base de diversas aplicaciones como los chatbots, los servicios de traducción e incluso la función de autocorrección de tu teléfono inteligente.
Llama CPP no es solo otra herramienta; es un marco sólido que te permite:
- Ejecutar modelos pre-entrenados de plataformas como Hugging Face.
- Construir el proyecto utilizando CPU o GPU.
- Integrarlo con Python para obtener funcionalidad extendida.
Configuración de Llama CPP: Una guía paso a paso
Comenzar con Llama CPP es tan fácil como comerse un pastel. Solo necesitas una computadora y una conexión a internet. Así es como puedes configurarlo:
-
Clona el repositorio: Abre tu terminal y ejecuta el siguiente comando para clonar el repositorio de Llama CPP desde GitHub.
git clone https://github.com/ggerganov/llama.cpp cd llama.cpp
Esto descargará el repositorio y te llevará al directorio recién clonado.
-
Descarga los Modelos de Lenguaje: Necesitarás modelos de lenguaje para trabajar con Llama CPP. Puedes descargarlos tanto desde Hugging Face como desde el proyecto original de LLaMa. Colócalos en un directorio dentro del repositorio clonado.
-
Elige la Compilación: Decide si quieres compilar el proyecto utilizando CPU o GPU. Para la compilación basada en GPU, necesitarás instalar el kit de herramientas de NVIDIA CUDA.
-
Compila el Código: Utiliza el comando
make
para compilar el código. Si estás utilizando GPU, deberás ejecutar un comando diferente, del cual hablaremos en la siguiente sección.
Siguiendo estos pasos, has configurado Llama CPP de forma exitosa en tu sistema. Ahora estás listo para adentrarte en los aspectos más técnicos, como la elección entre compilaciones de CPU y GPU, que cubriremos a continuación.
Ejecuta Llama-cpp-python en Python
Si deseas ejecutar modelos de Llama CPP dentro de un script de Python, puedes utilizar la biblioteca llama_cpp_python
. Aquí tienes un ejemplo más detallado:
from llama_cpp_python import LlamaModel
# Inicializa el modelo
model = LlamaModel("/ruta/a/tu/modelo")
# Establece la entrada y genera texto
entrada = "Hola, ¿cómo estás?"
texto = model.generate(entrada)
# Imprime el texto generado
print(f"El texto generado para la entrada '{entrada}' es: {texto}")
Este script de Python importa la clase LlamaModel
de la biblioteca llama_cpp_python
, inicializa el modelo con la ruta de tu modelo de lenguaje descargado, y luego genera texto en base a una entrada dada.
Ejecuta Llama.cpp en Docker
Si estás familiarizado con Docker, puedes contenerizar tu proyecto de Llama CPP para facilitar su implementación y escalabilidad. Así es como puedes construir y ejecutar un contenedor Docker para tu proyecto de Llama CPP:
# Navega hasta el directorio de Llama CPP
cd /ruta/a/la/directorio/llama_cpp
# Construye la imagen de Docker
docker build -t llama_cpp_image .
# Ejecuta el contenedor Docker
docker run -it --name llama_cpp_container llama_cpp_image
En este ejemplo, llama_cpp_image
es el nombre de la imagen de Docker, y llama_cpp_container
es el nombre del contenedor en ejecución. Estos nombres son personalizables.
Elige entre CPU y GPU: Optimiza tu compilación de Llama CPP
A la hora de compilar tu proyecto de Llama CPP, tienes dos opciones principales: CPU y GPU. Cada una tiene sus propias ventajas y desventajas, pero la elección depende en última instancia de tus necesidades y recursos específicos.
CPU vs GPU: Comparación rápida:
- Velocidad: Las compilaciones de GPU suelen ser más rápidas debido a las capacidades de procesamiento paralelo.
- Uso de recursos: Las compilaciones de CPU requieren menos recursos, pero pueden ser más lentas.
- Flexibilidad: Las compilaciones de GPU requieren hardware específico y configuración adicional, pero ofrecen un rendimiento superior.
Profundicemos en los detalles:
Si estás comenzando o no tienes una GPU potente, una compilación de CPU es tu mejor opción. Es sencilla y no requiere instalaciones adicionales. Así es como puedes compilar tu proyecto de Llama CPP utilizando solo la CPU:
- Navega hasta el directorio: Abre tu terminal y navega hasta el directorio clonado de Llama CPP.
- Compila el Código: Ejecuta el siguiente comando:
make
- Ejecuta el Modelo: Después de una compilación exitosa, puedes ejecutar el modelo utilizando el ejecutable generado.
Para aquellos que deseen aprovechar toda la potencia de su hardware, una compilación de GPU es la opción ideal. Específicamente, si tienes una GPU de NVIDIA, puedes acelerar significativamente los cálculos. Así es como puedes hacerlo:
- Instala el Kit de Herramientas de NVIDIA CUDA: Antes de poder compilar el código para GPU, debes instalar el kit de herramientas de NVIDIA CUDA. Puedes descargarlo desde el sitio oficial de NVIDIA.
- Compila con Soporte de CUDA: Navega hasta el directorio de Llama CPP y ejecuta el siguiente comando:
make clean && LLAMA_CUBLAS=1 make -j
- Ejecutar con soporte para GPU: Usa el indicador
--n-gpu-layers
al ejecutar el modelo para transferir cálculos a la GPU.
Nota: Usar la versión para GPU te permite transferir capas específicas del modelo a la GPU, lo que hace el proceso más rápido y eficiente.
Ejecutando tu primer modelo Llama CPP
Ejecución básica del modelo
Para ejecutar tu modelo compilado, utilizarás el ejecutable generado durante el proceso de compilación. El indicador --model-path
especifica dónde se encuentra el modelo de lenguaje descargado. Así es cómo se hace:
# Navega hacia el directorio donde se encuentra el ejecutable de Llama CPP
cd /ruta/a/directorio/llama_cpp
# Ejecuta el modelo
./llama_cpp_ejecutable --model-path /ruta/a/tu/modelo
Nota: Reemplaza /ruta/a/tu/modelo
por la ruta real donde se encuentra almacenado tu modelo de lenguaje descargado. llama_cpp_ejecutable
es el nombre del archivo ejecutable generado después de compilar Llama CPP.
Funciones avanzadas: Offloading a GPU y más
Si has compilado Llama CPP con soporte para GPU, puedes transferir cálculos a la GPU para acelerar la ejecución del modelo. El indicador --n-gpu-layers
especifica cuántas capas de la red neuronal deben ser procesadas por la GPU.
# Ejecuta el modelo con offloading a GPU
./llama_cpp_ejecutable --model-path /ruta/a/tu/modelo --n-gpu-layers 2
En este ejemplo, 2
indica que dos capas de la red neuronal serán procesadas por la GPU. Puedes ajustar este número según las capacidades específicas de tu GPU y el tamaño del modelo que estés ejecutando.
Optimización del rendimiento: Conversión del modelo
Llama CPP proporciona un script de Python llamado convert.py
para convertir tu modelo a diferentes formatos para mejorar el rendimiento. Por ejemplo, puedes convertir el modelo a fp16
(punto flotante de 16 bits) para que sea más pequeño y rápido.
# Navega hacia el directorio que contiene el script convert.py
cd /ruta/a/directorio/llama_cpp/scripts
# Ejecuta el script de conversión
python convert.py --input /ruta/a/modelo/original --output /ruta/a/modelo/convertido --type fp16
Conclusion
Hemos cubierto mucho terreno en esta guía, desde la configuración de Llama CPP hasta la ejecución de tu primer modelo y la exploración de sus características adicionales. Con su flexibilidad, opciones de optimización del rendimiento y características adicionales como la integración con Python y el soporte de Docker, Llama CPP se consolida como una herramienta robusta para cualquier persona interesada en trabajar con modelos de lenguaje.
Preguntas frecuentes
-
¿Qué es Llama CPP?
- Llama CPP es una potente herramienta para trabajar con modelos de lenguaje. Permite versiones para CPU y GPU, integración con Python y más.
-
¿Cómo ejecuto Llama CPP en Python?
- Puedes integrar Llama CPP con Python utilizando el código y la documentación proporcionados en el repositorio de GitHub
llama-cpp-python
.
- Puedes integrar Llama CPP con Python utilizando el código y la documentación proporcionados en el repositorio de GitHub
-
¿Qué tan rápido es Llama CPP?
- La velocidad de Llama CPP depende de si estás utilizando una versión para CPU o GPU. Las versiones para GPU son generalmente más rápidas debido a las capacidades de procesamiento paralelo.
-
¿Llama CPP utiliza GPU?
- Sí, Llama CPP permite cálculos basados en GPU, lo que puede acelerar significativamente la ejecución del modelo.
¿Quieres conocer las últimas noticias de LLM? ¡Echa un vistazo a la última tabla de clasificación de LLM!