Add initial tutorials for using vLLM and update .gitignore

This commit is contained in:
2024-12-10 21:00:17 +01:00
parent fe87335bfd
commit 13d014c24c
3 changed files with 308 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
venv
+155
View File
@@ -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
}
+152
View File
@@ -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
}