En este tutorial, implementamos el modelo de lenguaje Bonsai-27B de 1 bit utilizando la bifurcación PrismML de llama.cpp, que proporciona los núcleos CUDA especializados necesarios para decodificar el formato de cuantificación GGUF Q1_0_g128 del modelo. Comenzamos validando el tiempo de ejecución de la GPU, instalando las dependencias de Python requeridas, compilando los archivos binarios de inferencia habilitados para CUDA y descargando los pesos del modelo comprimido de Hugging Face. Luego probamos el modelo a través de llama-cli, iniciamos un servidor de inferencia local compatible con OpenAI e interactuamos con él a través de un cliente Python reutilizable que admite terminaciones estándar, respuestas transmitidas, conversaciones de varios turnos y generación de código. También examinamos configuraciones opcionales para evaluación comparativa de rendimiento, almacenamiento en caché de valores clave cuantificados, inferencia de contexto largo, decodificación especulativa y extensiones multimodales.
Configuramos el espacio de trabajo de Colab, el repositorio de modelos, el punto final del servidor, los parámetros de inferencia, el tamaño del contexto y las configuraciones de descarga de GPU necesarias a lo largo del tutorial. Definimos una función de comando de shell reutilizable y verificamos que el tiempo de ejecución exponga una GPU NVIDIA compatible antes de continuar. Luego instalamos las dependencias del cliente HTTP y Hugging Face Hub necesarias para la recuperación del modelo y la comunicación API.
Clonamos la bifurcación PrismML de llama.cpp, que proporciona los núcleos especializados necesarios para el formato de cuantificación Q1_0_g128 del modelo. Configuramos una versión de lanzamiento habilitada para CUDA con CMake y compilamos los ejecutables de línea de comandos, servidor y evaluación comparativa. También reutilizamos archivos binarios generados previamente cuando ya existen, lo que reduce el tiempo de configuración repetida en la misma sesión de Colab.
Nos conectamos al Hugging Face Hub y descargamos el modelo Bonsai-27B GGUF en el espacio de trabajo de Colab. Omitimos la transferencia cuando el archivo del modelo ya está disponible localmente, lo que permite que las ejecuciones posteriores se realicen de manera más eficiente. Luego calculamos y mostramos el tamaño del modelo implementado para confirmar que los pesos comprimidos se almacenan correctamente.
Realizamos una prueba de humo de línea de comandos para verificar que el tiempo de ejecución compilado pueda cargar el modelo cuantificado y generar una respuesta válida. Luego iniciamos llama-server con la descarga completa de la capa de GPU, la ventana de contexto seleccionada y la configuración opcional de caché KV cuantificada. Consultamos repetidamente el punto final de salud hasta que el servicio de inferencia compatible con OpenAI esté listo para las solicitudes de los clientes.
r = request.post(f”{SERVER_URL}/v1/chat/completions”, json=payload, stream=True) r.raise_for_status() completo = []
para línea en r.iter_lines(): si no es línea o no line.startswith(b”data: “): continúa fragmento = línea[len(b”data: “):]
si trozo == b”[DONE]”: romper delta = json.loads(fragmento)[“choices”][0][“delta”].get(“content”, “”) full.append(delta) print(delta, end=””, Flush=True) print() return “”.join(full) SISTEMA = {“role”: “system”, “content”: “Eres un asistente útil”} print(“\n— 6a: finalización básica —“) respuesta = chat([SYSTEM, {“role”: “user”,
“content”: “What is the capital of France? One sentence.”}]) print(respuesta) print(“\n— 6b: razonamiento matemático, transmitido token por token —“) chat([SYSTEM, {“role”: “user”,
“content”: “A train travels 120 km at 80 km/h, then 90 km at ”
“60 km/h. What is its average speed for the whole ”
“trip? Show your reasoning briefly.”}]stream=True, max_tokens=700) print(“\n— 6c: chat multiturno —“) historial = [SYSTEM]
para user_msg en [“My name is Priya and I love graph algorithms.”,
“Suggest one project idea that combines my interest with LLMs.”,
“What was my name again?”]: historia.append({“role”: “usuario”, “content”: user_msg}) respuesta = chat(history, max_tokens=300) historia.append({“role”: “asistente”, “content”: respuesta}) print(f”\nUSUARIO: {user_msg}\nBONSAI: {respuesta}”) print(“\n— 6d: generación de código —“) print(chat([SYSTEM, {“role”: “user”,
“content”: “Write a Python function that returns the n-th ”
“Fibonacci number using memoization. Code only.”}]máximo_tokens=400))
Definimos un cliente de chat Python reutilizable que envía solicitudes compatibles con OpenAI al servidor Bonsai-27B alojado localmente. Admitimos respuestas de transmisión de eventos estándar y enviadas por el servidor mientras aplicamos los parámetros de muestreo configurados de temperatura, top-p y top-k. Luego evaluamos las respuestas fácticas básicas, el razonamiento matemático, la memoria conversacional de múltiples turnos y la generación de código Python.
Exponemos un interruptor de evaluación comparativa opcional que mide el procesamiento rápido y el rendimiento de generación de tokens con el ejecutable compilado llama-bench. Revisamos opciones de implementación avanzadas, incluida la inferencia de contexto largo, el almacenamiento en caché KV de 4 bits, la decodificación especulativa, el soporte de visión y una variante de modelo ternario de mayor capacidad. Terminamos manteniendo activo el proceso del servidor para que podamos continuar llamando a la función de chat desde celdas adicionales de Colab.
En conclusión, establecimos un flujo de trabajo de inferencia local completo para ejecutar Bonsai-27B. Utilizamos la implementación de PrismML para preservar la compatibilidad con la representación de peso de 1,125 bits altamente comprimida del modelo y al mismo tiempo mantener accesible el proceso de inferencia completo a través de interfaces compatibles con OpenAI y la línea de comandos. Validamos el razonamiento, la memoria conversacional, la generación de streaming y las capacidades de programación, al mismo tiempo que conservamos el control sobre los parámetros de muestreo, la longitud del contexto, la descarga de GPU y la precisión de la caché KV. Esta configuración nos brinda una plataforma para experimentar con modelos de lenguaje grandes de bits bajos, evaluar su eficiencia y calidad de salida e integrarlos en aplicaciones Python sin depender de un servicio de inferencia alojado externo.
Consulte el código completo aquí. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 150.000 ml y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.
¿Necesita asociarse con nosotros para promocionar su repositorio de GitHub O su página principal de Hugging O su lanzamiento de producto O seminario web, etc.? Conéctate con nosotros
A Sana Hassan, pasante de consultoría en Marktechpost y estudiante de doble titulación en IIT Madras, le apasiona aplicar la tecnología y la inteligencia artificial para abordar los desafíos del mundo real. Con un gran interés en resolver problemas prácticos, aporta una nueva perspectiva a la intersección de la IA y las soluciones de la vida real.