From 13d014c24cec048e5e7d432a73d905b43fcd7bb4 Mon Sep 17 00:00:00 2001 From: egutierrez Date: Tue, 10 Dec 2024 21:00:17 +0100 Subject: [PATCH] Add initial tutorials for using vLLM and update .gitignore --- .gitignore | 1 + descargar_modelos.ipynb | 155 ++++++++++++++++++++++++++++++++++++++++ tutorial_vllm.ipynb | 152 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 308 insertions(+) create mode 100644 .gitignore create mode 100644 descargar_modelos.ipynb create mode 100644 tutorial_vllm.ipynb diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ceb386 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +venv diff --git a/descargar_modelos.ipynb b/descargar_modelos.ipynb new file mode 100644 index 0000000..4b60a0e --- /dev/null +++ b/descargar_modelos.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial: Uso de Modelos LLM con vLLM\n", + "En este tutorial aprenderás:\n", + "- Qué es vLLM y sus ventajas.\n", + "- Los tipos de modelos compatibles con vLLM.\n", + "- Cómo descargar y usar modelos con vLLM para tareas como chat." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ¿Qué es vLLM?\n", + "**vLLM** es una biblioteca optimizada para ejecutar modelos LLM de manera eficiente, aprovechando técnicas avanzadas de gestión de memoria y paralelización. Está diseñada para manejar tareas como generación de texto en grandes modelos con un rendimiento mejorado.\n", + "\n", + "**Ventajas de vLLM:**\n", + "- Mayor eficiencia en el uso de GPU y memoria.\n", + "- Reducción en los tiempos de inferencia.\n", + "- Compatibilidad con modelos de Hugging Face y otras plataformas populares." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tipos de Modelos Compatibles con vLLM\n", + "Los modelos más comunes que se pueden usar con vLLM incluyen:\n", + "- **Modelos abiertos:** Por ejemplo, GPT-NeoX, OPT, LLaMA, y Falcon.\n", + "- **Modelos comerciales:** Modelos compatibles disponibles en Hugging Face o APIs comerciales como GPT-3 o GPT-4.\n", + "- **Modelos específicos:** Diseñados para tareas específicas como chat o generación de código (por ejemplo, CodeT5, StarCoder)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Instalación de vLLM\n", + "Primero, necesitamos instalar la biblioteca vLLM. Esto se puede hacer con `pip`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install vllm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Descargar Modelos para vLLM\n", + "Usaremos un modelo abierto como LLaMA 2 o GPT-NeoX desde el hub de Hugging Face. La biblioteca vLLM puede cargar modelos directamente desde Hugging Face." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Importar las bibliotecas necesarias\n", + "from vllm import LLM, SamplingParams\n", + "\n", + "# Nombre del modelo (puedes cambiarlo según tu preferencia)\n", + "model_name = 'meta-llama/Llama-2-7b-chat-hf'\n", + "\n", + "# Inicializar el modelo\n", + "llm = LLM(model=model_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Uso de vLLM para Chat\n", + "Podemos usar vLLM para interactuar con el modelo en aplicaciones de chat. Esto implica enviar un prompt y recibir una respuesta generada por el modelo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Parámetros de entrada para la generación\n", + "prompt = \"Hola, ¿cómo puedo ayudarte hoy?\"\n", + "\n", + "# Parámetros de muestreo\n", + "sampling_params = SamplingParams(\n", + " temperature=0.7, # Controla la creatividad\n", + " max_tokens=100 # Número máximo de tokens generados\n", + ")\n", + "\n", + "# Generar texto\n", + "outputs = llm.generate(prompt, sampling_params)\n", + "\n", + "# Mostrar la respuesta\n", + "print(outputs[0].text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Otros Modelos Compatibles\n", + "Además de LLaMA 2, puedes usar otros modelos como:\n", + "- **Falcon:** Un modelo optimizado para tareas de NLP, disponible en tamaños como 7B y 40B.\n", + "- **OPT (Meta):** Diseñado para tareas de lenguaje natural.\n", + "- **GPT-NeoX:** Modelo de EleutherAI diseñado como una alternativa a GPT-3.\n", + "\n", + "Estos modelos se pueden cargar de manera similar cambiando el nombre del modelo en el código." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusión\n", + "Este tutorial mostró cómo instalar y usar vLLM para ejecutar modelos LLM de manera eficiente. Los modelos como LLaMA, Falcon, y GPT-NeoX son compatibles y pueden ser utilizados para tareas como chat y generación de texto.\n", + "\n", + "Con vLLM, puedes aprovechar grandes modelos con un rendimiento optimizado, ideal para aplicaciones de inteligencia artificial." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 + } + \ No newline at end of file diff --git a/tutorial_vllm.ipynb b/tutorial_vllm.ipynb new file mode 100644 index 0000000..e8d8d67 --- /dev/null +++ b/tutorial_vllm.ipynb @@ -0,0 +1,152 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial: Uso de vLLM con un modelo local\n", + "En este tutorial aprenderás a utilizar **vLLM** para cargar un modelo descargado localmente y realizar inferencias.\n", + "\n", + "## ¿Qué es vLLM?\n", + "vLLM es un runtime de alto rendimiento para modelos de lenguaje grande (LLMs). Ofrece características avanzadas como el manejo eficiente de memoria y procesamiento paralelo.\n", + "\n", + "Este tutorial asumirá que ya tienes un modelo descargado localmente, por ejemplo, un modelo de Hugging Face." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paso 1: Instalación de vLLM\n", + "Primero, necesitamos instalar la biblioteca **vLLM**. Puedes hacerlo con el siguiente comando." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install vllm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paso 2: Verificación de dependencias\n", + "Asegúrate de que las dependencias requeridas, como PyTorch, estén instaladas. Si no tienes PyTorch, instálalo con el comando apropiado para tu entorno." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paso 3: Carga del modelo local\n", + "Usaremos la clase `LLM` de vLLM para cargar el modelo desde una carpeta local. En este ejemplo, asumimos que el modelo está almacenado en un directorio llamado `./modelo_local`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from vllm import LLM\n", + "\n", + "# Ruta al modelo local\n", + "ruta_modelo = \"./modelo_local\"\n", + "\n", + "# Inicialización del modelo\n", + "llm = LLM(model=ruta_modelo)\n", + "print(\"Modelo cargado exitosamente.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paso 4: Realización de inferencias\n", + "Con el modelo cargado, podemos realizar inferencias utilizando la función `generate`. Proporciona un texto de entrada y el modelo generará una respuesta." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Texto de entrada\n", + "texto_entrada = \"¿Cuál es la capital de Francia?\"\n", + "\n", + "# Generar respuesta\n", + "respuesta = llm.generate(texto_entrada)\n", + "print(\"Respuesta generada:\", respuesta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paso 5: Ajuste de parámetros (opcional)\n", + "Puedes ajustar parámetros como la temperatura o el número máximo de tokens generados para personalizar el comportamiento del modelo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Ajuste de parámetros\n", + "respuesta_ajustada = llm.generate(\n", + " texto_entrada,\n", + " temperature=0.7, # Controla la aleatoriedad\n", + " max_tokens=100 # Límite de tokens generados\n", + ")\n", + "print(\"Respuesta ajustada:\", respuesta_ajustada)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paso 6: Conclusión\n", + "Has aprendido a instalar y usar vLLM para cargar un modelo local y realizar inferencias. Puedes explorar más características en la [documentación oficial de vLLM](https://vllm.org).\n", + "\n", + "¡Ahora estás listo para usar modelos de lenguaje eficientemente con vLLM!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 + } + \ No newline at end of file