Chitu (Red Rabbit): el equipo de Tsinghua lanza un marco de razonamiento de alto rendimiento basado en grandes modelos lingüísticos
Introducción general
Chitu es un marco de razonamiento de código abierto desarrollado por el equipo PACMAN de la Universidad de Tsinghua, llamado "Red Rabbit", que está especialmente diseñado para ejecutar grandes modelos lingüísticos. Chitu es compatible con una gran variedad de hardware, como las GPU de NVIDIA y los chips domésticos, y puede utilizarse desde de forma autónoma hasta en clústeres a gran escala.Su punto fuerte es la inferencia con modelos FP8, que puede reducir drásticamente los costes, como la ejecución de DeepSeek-671B en un A800, que utiliza la mitad de GPU y es más de 3 veces más rápido que vLLM.El código está disponible públicamente en GitHub y puede ser descargado y utilizado gratuitamente por empresas o particulares. Se trata de una herramienta lista para usar en entornos de producción y es adecuada para equipos que quieren ahorrar dinero pero también quieren rendimiento.

Lista de funciones
- Admite la inferencia de modelos FP8 y BF16, y puede funcionar en GPU antiguas y chips domésticos con bajo coste y alto rendimiento.
- Se adapta a una amplia gama de hardware, desde CPU puras a GPU como NVIDIA A800, H20, etc., hasta clusters a gran escala.
- Optimice la velocidad de inferencia con CUDA Graph para obtener resultados más rápidos en una sola solicitud.
- Proporciona una interfaz de servicio que permite invocar modelos directamente a través de peticiones HTTP.
- Admite el razonamiento distribuido multinodo, adecuado para el procesamiento de tareas de gran volumen.
- Código fuente abierto que las empresas pueden modificar u optimizar según sus necesidades.
Utilizar la ayuda
Proceso de instalación
La instalación de Chitu no es complicada, pero requiere cierta preparación. A continuación se detallan los pasos a seguir:
- Preparar el entorno
- Sistema: se recomienda Ubuntu 22.04, máquina con GPU NVIDIA (por ejemplo, A800 o H20).
- Software: Instala Git, Python 3.10, CUDA 12.1 (ajustado a la versión de tu GPU), PyTorch 2.1.
- Ejemplo de comando:
sudo apt update && sudo apt install -y git python3.10 python3-pip pip install -U torch==2.1 --index-url https://download.pytorch.org/whl/cu121
- Descargar código
- Clona el código de Chitu localmente usando Git:
git clone --recursive https://github.com/thu-pacman/chitu cd chitu
- Clona el código de Chitu localmente usando Git:
- Instalación de dependencias
- Instale los paquetes Python necesarios y el entorno de compilación:
pip install -r requirements-build.txt pip install flash-attn
- Instale los paquetes Python necesarios y el entorno de compilación:
- compilar e instalar
- Configura los parámetros de compilación (ajusta TORCH_CUDA_ARCH_LIST según tu GPU, por ejemplo 8.0 para A800) y compila:
TORCH_CUDA_ARCH_LIST=8.0 CHITU_SETUP_JOBS=4 MAX_JOBS=4 pip install --no-build-isolation .
- Configura los parámetros de compilación (ajusta TORCH_CUDA_ARCH_LIST según tu GPU, por ejemplo 8.0 para A800) y compila:
- Comprobación de la instalación
- Haz una prueba para asegurarte de que está bien:
torchrun --nproc_per_node 1 test/single_req_test.py
- Haz una prueba para asegurarte de que está bien:
Cómo utilizarlo
Una vez cargado Chitu, puede iniciar el servicio desde la línea de comandos o ejecutar una única prueba. He aquí cómo hacerlo:
Iniciar el servicio de razonamiento
- Configuración de las rutas del modelo
- Prepare los archivos del modelo, por ejemplo DeepSeek-R1, en un directorio local (por ejemplo
/data/DeepSeek-R1
). - en el comando de edición
models.ckpt_dir
El parámetro señala la trayectoria del modelo.
- Prepare los archivos del modelo, por ejemplo DeepSeek-R1, en un directorio local (por ejemplo
- Inicio de los servicios
- Inicie el servicio independiente con torchrun, escuchando en el puerto 21002:
export WORLD_SIZE=1 torchrun --nproc_per_node 1 chitu/serve.py \ serve.port=21002 \ models=DeepSeek-R1 \ models.ckpt_dir=/data/DeepSeek-R1 \ infer.use_cuda_graph=True \ request.max_new_tokens=100
- Inicie el servicio independiente con torchrun, escuchando en el puerto 21002:
- Servicios de pruebas
- Envía una petición con curl y comprueba si el modelo responde correctamente:
curl localhost:21002/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"messages": [{"role": "user", "content": "你好,Chitu 是什么?"}]}'
- El resultado devuelto estará en formato JSON y contendrá la respuesta del modelo.
- Envía una petición con curl y comprueba si el modelo responde correctamente:
Ejecutar un test de razonamiento único
- Si no desea iniciar el servicio, puede limitarse a probar la salida del modelo:
torchrun --nproc_per_node 1 test/single_req_test.py \ models=DeepSeek-R1 \ models.ckpt_dir=/data/DeepSeek-R1 \ request.max_new_tokens=64
- La salida se muestra en el terminal, indicándole lo que ha generado el modelo.
Razonamiento distribuido multinodo
- Preparar varias máquinas
- Asegúrese de que Chitu y las dependencias se cargan en cada máquina y de que los archivos del modelo están en un almacenamiento compartido.
- Inicio de los servicios distribuidos
- Ejecútalo en 2 máquinas con 8 GPUs cada una:
torchrun --nnodes 2 --nproc_per_node 8 test/single_req_test.py \ request.max_new_tokens=64 \ infer.pp_size=2 \ infer.tp_size=8 \ models=DeepSeek-R1 \ models.ckpt_dir=/data/DeepSeek-R1
- Ejecútalo en 2 máquinas con 8 GPUs cada una:
- Comprobar el efecto
- Tras una ejecución en varios nodos, el resultado será más rápido que en una sola máquina, lo que resulta adecuado para gestionar peticiones de gran volumen.
Función destacada Operación
Ahorre dinero y rapidez con los modelos FP8
- Chitu admite modelos en formato FP8, que utilizan menos GPU y son más rápidos que BF16.
- Funcionamiento: Añadir al inicio
infer.soft_fp8=True
Por ejemplo, si el modelo está en formato FP8, el modelo debe estar en formato FP8. Por ejemplo:torchrun --nproc_per_node 1 chitu/serve.py \ serve.port=21002 \ models=DeepSeek-R1 \ models.ckpt_dir=/data/DeepSeek-R1 \ infer.soft_fp8=True
Aceleración con CUDA Graph
- Las solicitudes individuales pueden acelerarse con CUDA Graph, añadiendo el parámetro
infer.use_cuda_graph=True
. - Efecto de prueba: ejecute una única inferencia y compare la diferencia de velocidad con y sin la adición.
pruebas de rendimiento
- Chitu incluye herramientas de evaluación comparativa para medir el rendimiento y la latencia:
python benchmarks/benchmark_serving.py \ --model "deepseek-r1" \ --iterations 10 \ --seq-len 10 \ --base-url http://localhost:21002
- El resultado mostrará el número de ficha para ayudarle a optimizar su asignación.
advertencia
- Si utilizas varios nodos, la red tiene que ser estable o se caerá.
- Una memoria GPU insuficiente puede provocar un error OOM, bájela.
infer.max_seq_len
o con menos nodos. - La compatibilidad con chips domésticos aún está en proceso de optimización, puede que sea necesario cambiar el código para adaptarlo.
Chitu no es difícil de usar, sólo tienes que seguir los pasos y estarás listo. Su documentación y comunidad también están en GitHub, así que puedes plantear una incidencia si tienes dudas.
© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...