iniciado con modelo qwen

This commit is contained in:
2025-11-03 00:20:04 +01:00
commit 7ca6ae3dd4
8 changed files with 1438 additions and 0 deletions
+191
View File
@@ -0,0 +1,191 @@
# Llama.cpp OpenAI Compatible API
API compatible con OpenAI para servir modelos GGUF usando llama.cpp.
## Caractersticas
- = API compatible con OpenAI Chat Completions
- > Soporte para modelos GGUF
- Construido con FastAPI y llama-cpp-python
- = Documentacin automtica con Swagger
- =' Configuracin flexible de parmetros
## Instalacin
### Instalacin bsica (solo CPU):
```bash
pip install -e .[cpu]
```
### Instalacin con soporte CUDA (recomendado para GPU):
```bash
pip install -e .[cuda]
```
### Instalacin manual con CUDA:
```bash
# Opcin 1: Usando CMAKE
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python[cublas] --force-reinstall --no-cache-dir
# Opcin 2: Usando variables de entorno
export CMAKE_ARGS="-DLLAMA_CUBLAS=on"
pip install llama-cpp-python[cublas] --force-reinstall --no-cache-dir
# Luego instalar el resto de dependencias
pip install -e .
```
### Verificar instalacin de CUDA:
```bash
nvidia-smi # Verificar que CUDA est disponible
python -c "import llama_cpp; print('llama-cpp-python instalado correctamente')"
```
2. Descargar un modelo GGUF (ejemplo):
```bash
# Ejemplo con un modelo pequeo
wget https://huggingface.co/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
```
## Uso
### Iniciar el servidor
```bash
python main.py --model-path /ruta/a/tu/modelo.gguf
```
### Opciones disponibles
```bash
python main.py --help
```
- `--model-path` / `-m`: Ruta al archivo del modelo GGUF (requerido)
- `--host`: Host del servidor (default: 0.0.0.0)
- `--port`: Puerto del servidor (default: 8000)
- `--n-ctx`: Tamao del contexto (default: 4096)
- `--n-batch`: Tamao del batch (default: 512)
- `--n-threads`: Nmero de threads (default: auto)
- `--n-gpu-layers`: Nmero de capas a cargar en GPU (-1 = todas, 0 = ninguna, default: -1)
- `--main-gpu`: GPU principal a usar (default: 0)
- `--split-mode`: Modo de divisin entre GPUs (default: 1)
### Ejemplo de uso
```bash
# Ejemplo recomendado con GPU (CUDA) - Mximo rendimiento
uv run python main.py --model-path ./models/Qwen3-4B-Instruct-2507-Q4_K_M.gguf --port 8000 --n-ctx 4096 --n-gpu-layers -1
# Ejemplo bsico con CPU solamente
uv run python main.py --model-path ./models/Qwen3-4B-Instruct-2507-Q4_K_M.gguf --port 8000 --n-ctx 4096 --n-gpu-layers 0
# Ejemplo con GPU - Solo algunas capas en GPU (para modelos grandes o GPUs con poca memoria)
uv run python main.py --model-path ./models/Qwen3-4B-Instruct-2507-Q4_K_M.gguf --port 8000 --n-ctx 4096 --n-gpu-layers 20
# Ejemplo con configuracin personalizada para GPU mltiples
uv run python main.py --model-path ./models/Qwen3-4B-Instruct-2507-Q4_K_M.gguf --port 8000 --n-ctx 4096 --n-gpu-layers -1 --main-gpu 0 --split-mode 1
```
## API Endpoints
### GET `/v1/models`
Lista los modelos disponibles
### POST `/v1/chat/completions`
Crea una completion de chat
#### Ejemplo con curl:
```bash
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama",
"messages": [
{"role": "user", "content": "Hola, cmo ests?"}
],
"max_tokens": 100,
"temperature": 0.7
}'
```
#### Ejemplo con Python (usando openai):
```python
import openai
# Configurar el cliente para usar tu servidor local
openai.api_base = "http://localhost:8000/v1"
openai.api_key = "no-key-needed" # No se requiere clave real
response = openai.ChatCompletion.create(
model="llama",
messages=[
{"role": "user", "content": "Explcame qu es la inteligencia artificial"}
],
max_tokens=200,
temperature=0.7
)
print(response.choices[0].message.content)
```
## Documentacin de la API
Una vez que el servidor est ejecutndose, puedes acceder a la documentacin interactiva en:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
## Parmetros de la API
### ChatCompletionRequest
- `model`: Nombre del modelo (string)
- `messages`: Lista de mensajes del chat
- `max_tokens`: Mximo nmero de tokens a generar (default: 2048)
- `temperature`: Temperatura para el muestreo (default: 0.7)
- `top_p`: Top-p para el muestreo (default: 0.9)
- `stream`: Respuesta en streaming (no implementado an)
### Formato de mensajes
```json
{
"role": "user|assistant|system",
"content": "Contenido del mensaje"
}
```
## Notas importantes
- La API estima el conteo de tokens dividiendo la longitud del texto por 4
- Los modelos GGUF deben ser compatibles con llama.cpp
- El formateo de prompts puede variar segn el modelo usado
- Para mejor rendimiento, ajusta `n_ctx`, `n_batch` y `n_threads` segn tu hardware
## Troubleshooting
### Error: "El archivo del modelo no existe"
- Verifica que la ruta al modelo GGUF sea correcta
- Asegrate de que el archivo tenga extensin .gguf
### Error de memoria
- Reduce `n_ctx` para modelos grandes
- Usa un modelo ms pequeo
- Aumenta la memoria disponible
### Respuestas lentas
- Aumenta `n_threads` si tienes ms CPU cores disponibles
- Ajusta `n_batch` para tu hardware
- Considera usar un modelo ms pequeo
- **Para GPU**: Usa `--n-gpu-layers -1` para cargar todas las capas en GPU
- **Para GPU**: Verifica que CUDA est instalado correctamente con `nvidia-smi`
### Problemas con GPU/CUDA
- **Error "CUDA not found"**: Reinstala llama-cpp-python con soporte CUDA:
```bash
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python[cublas] --force-reinstall --no-cache-dir
```
- **Memoria GPU insuficiente**: Reduce `--n-gpu-layers` a un nmero menor (ej: 20, 10)
- **GPU no detectada**: Verifica que `nvidia-smi` funcione y muestre tu GPU
- **Rendimiento lento con GPU**: Asegrate de usar `--n-gpu-layers -1` para cargar todas las capas
- **Error de compatibilidad**: Verifica que tu GPU tenga compute capability >= 3.5