Inteligencia artificial
Marco de inferencia de Microsoft lleva modelos de lenguaje grande de 1 bit a dispositivos locales

El 17 de octubre de 2024, Microsoft anunció BitNet.cpp, un marco de inferencia diseñado para ejecutar modelos de lenguaje grande (LLM) cuantizados de 1 bit. BitNet.cpp es un progreso significativo en Gen AI, que permite la implementación eficiente de LLM de 1 bit en CPUs estándar, sin requerir GPUs costosas. Este desarrollo democratiza el acceso a los LLM, haciéndolos disponibles en una amplia gama de dispositivos y brindando nuevas posibilidades en aplicaciones de IA en dispositivos.
Entendiendo los modelos de lenguaje grande de 1 bit
Los modelos de lenguaje grande (LLM) tradicionalmente han requerido recursos computacionales significativos debido a su uso de números de punto flotante de alta precisión (generalmente FP16 o BF16) para los pesos del modelo. Esta necesidad ha hecho que la implementación de LLM sea costosa y energéticamente intensiva.
En su núcleo, los LLM de 1 bit utilizan técnicas de cuantización extremas para representar los pesos del modelo utilizando solo tres valores posibles: -1, 0 y 1, de ahí el término “1,58 bits” (ya que requiere ligeramente más de un bit para codificar tres estados).
Sistema de pesos ternarios
El concepto
La cuantización de 1 bit en BitNet.cpp es un sistema de pesos ternarios. BitNet opera con solo tres valores posibles para cada parámetro:
- -1 (negativo)
- 0 (neutral)
- 1 (positivo)
Esto da como resultado un requisito de almacenamiento de alrededor de 1,58 bits por parámetro, de ahí el nombre BitNet b1.58. Esta reducción drástica en el ancho de bits de los parámetros conduce a una reducción impresionante en el uso de memoria y complejidad computacional, ya que la mayoría de las multiplicaciones de punto flotante se reemplazan con simples sumas y restas.
Fundamento matemático
La cuantización de 1 bit implica transformar los pesos y las activaciones en su representación ternaria a través de los siguientes pasos:
1. Cuantización de pesos
La cuantización de los pesos implica centralizarlos alrededor de la media (α), lo que da como resultado una representación ternaria. La transformación se expresa matemáticamente como:
Wf=Sign(W−α)
- W es la matriz de pesos original.
- α es la media de los pesos.
- Sign(x) devuelve +1 si x > 0 y -1 de lo contrario.
2. Cuantización de activaciones
La cuantización de las activaciones garantiza que las entradas estén limitadas a un ancho de bits especificado:
- Qb = 2(b−1)2^{(b-1)} es el nivel de cuantización máximo para el ancho de bits b.
- γ es el valor absoluto máximo de x (denotado como ∣∣x∣∣∞).
- ε es un número pequeño para prevenir desbordamientos durante los cálculos.
3. Operación BitLinear
La capa BitLinear reemplaza las multiplicaciones de matrices tradicionales con una operación simplificada:
y=Wf×x^e×(Qbβγ)
- β es un factor de escala utilizado para minimizar errores de aproximación.
- γ escala las activaciones.
- Q_b es el factor de cuantización.
Esta transformación permite cálculos eficientes mientras se mantiene el rendimiento del modelo.












