Desplegar Qwen3-Coder en VPS: Guía Paso a Paso para Crear tu Propio Asistente de Programación con IA
Desplegar Qwen3-Coder en VPS: Guía Paso a Paso para Crear tu Propio Asistente de Programación con IA
Esta guía muestra cómo desplegar el modelo de código abierto Qwen3-Coder de Alibaba en un VPS de LightNode, exponiéndolo como un servicio API con un frontend web opcional. Ideal para lanzar tu propio asistente de programación con IA o monetizar mediante APIs.
Visión General
- Adquirir un VPS (LightNode)
- Instalar el entorno base (Python + Git)
- Descargar y ejecutar el modelo Qwen3-Coder
- Construir una API con FastAPI
- (Opcional) Añadir un frontend (Gradio)
- Probar acceso externo y configurar seguridad
1. Adquirir un VPS (ej. LightNode)
- Registro: www.lightnode.com
- Ubicaciones recomendadas: Japón, Hong Kong, Singapur
- SO: Ubuntu 20.04 LTS
- Especificaciones: 2 vCPU, 4GB RAM (no se requiere GPU para modo CPU)
- Después de la configuración, guarda la IP pública y la contraseña root
2. Instalar Dependencias Requeridas
Conéctate por SSH a tu VPS:
ssh root@tu_ip_vps
Actualiza los paquetes del sistema:
apt update && apt upgrade -y
Instala Python y Git:
apt install python3-pip git -y
pip3 install --upgrade pip
3. Descargar y Ejecutar Qwen3-Coder (Versión CPU)
Instala HuggingFace Transformers:
pip install transformers accelerate torch
Crea un archivo qwen_server.py:
from transformers import AutoModelForCausalLM, AutoTokenizer
from fastapi import FastAPI, Request
import uvicorn
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen1.5-0.5B-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen1.5-0.5B-Chat", trust_remote_code=True).eval()
app = FastAPI()
@app.post("/codegen")
async def codegen(request: Request):
data = await request.json()
prompt = data.get("prompt")
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
outputs = model.generate(input_ids, max_new_tokens=256)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return {"result": response}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)
Inicia el servicio:
python3 qwen_server.py
Ejemplo de llamada API:
POST http://tu_ip:7860/codegen
BODY: { "prompt": "Write a Python web scraper" }
4. Opcional: Añadir un Frontend (Gradio)
Instala Gradio:
Crea un nuevo archivo qwen_gradio.py:
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen1.5-0.5B-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen1.5-0.5B-Chat", trust_remote_code=True).eval()
def generate_code(prompt):
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=256)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
gr.Interface(
fn=generate_code,
inputs="text",
outputs="text",
title="Demo de API Qwen3-Coder"
).launch(server_name="0.0.0.0", server_port=7860)
Ejecútalo:
python3 qwen_gradio.py
Abre en el navegador: http://tu_ip:7860
5. Recomendaciones de Seguridad
Habilita el firewall UFW:
apt install ufw
ufw allow OpenSSH
ufw allow 7860
ufw enable
Para uso en producción, considera usar Nginx + Let’s Encrypt para HTTPS y soporte de dominio.
Estructura de Proyecto Sugerida
qwen-server/
├── qwen_server.py # API backend FastAPI
├── qwen_gradio.py # Interfaz web Gradio
├── requirements.txt # (Opcional) lista de dependencias
└── README.md # Descripción del proyecto
Ideas de Monetización y Casos de Uso
Asistente de Programación SaaS: Crea tu propia herramienta "GPT para programación"
Servicio API Público: Cobra por llamada o suscripción
Plataforma de Enseñanza con IA: Usa el modelo para generar código y tutoriales automáticamente
Servicios de Automatización Personalizados: Generación de scripts, conversión de código, documentación
Resumen
Componente | Herramienta | Propósito |
---|---|---|
Modelo | Qwen3-Coder | Modelo de generación de código open-source |
Hosting | VPS LightNode | Plataforma en la nube global de bajo costo |
API | FastAPI | Framework de API Python ligero |
Frontend | Gradio | Constructor rápido de UI para demos |