Skip to content

Latest commit

 

History

History
42 lines (22 loc) · 6.77 KB

020.QuantifyingPhi35.md

File metadata and controls

42 lines (22 loc) · 6.77 KB

Cuantificación de la Familia Phi-3.5

La cuantificación del modelo se refiere al proceso de mapear los parámetros (como pesos y valores de activación) en un modelo de red neuronal desde un rango de valores grande (generalmente un rango de valores continuo) a un rango de valores finito más pequeño. Esta tecnología puede reducir el tamaño y la complejidad computacional del modelo y mejorar la eficiencia operativa del modelo en entornos con recursos limitados, como dispositivos móviles o sistemas embebidos. La cuantificación del modelo logra la compresión al reducir la precisión de los parámetros, pero también introduce una cierta pérdida de precisión. Por lo tanto, en el proceso de cuantificación, es necesario equilibrar el tamaño del modelo, la complejidad computacional y la precisión. Los métodos comunes de cuantificación incluyen cuantificación de punto fijo, cuantificación de punto flotante, etc. Puedes elegir la estrategia de cuantificación adecuada según el escenario específico y las necesidades.

Esperamos desplegar el modelo GenAI en dispositivos de borde y permitir que más dispositivos entren en escenarios GenAI, como dispositivos móviles, PC con IA/Copilot+PC y dispositivos IoT tradicionales. A través del modelo de cuantificación, podemos desplegarlo en diferentes dispositivos de borde según los diferentes dispositivos. Combinado con el marco de aceleración del modelo y el modelo de cuantificación proporcionado por los fabricantes de hardware, podemos construir mejores escenarios de aplicación SLM.

En el escenario de cuantificación, tenemos diferentes precisiones (INT4, INT8, FP16, FP32). A continuación se explica las precisiones de cuantificación más comunes.

INT4

La cuantificación INT4 es un método de cuantificación radical que cuantiza los pesos y valores de activación del modelo en enteros de 4 bits. La cuantificación INT4 generalmente resulta en una mayor pérdida de precisión debido al rango de representación más pequeño y la menor precisión. Sin embargo, en comparación con la cuantificación INT8, la cuantificación INT4 puede reducir aún más los requisitos de almacenamiento y la complejidad computacional del modelo. Cabe señalar que la cuantificación INT4 es relativamente rara en aplicaciones prácticas, porque una precisión demasiado baja puede causar una degradación significativa en el rendimiento del modelo. Además, no todo el hardware admite operaciones INT4, por lo que se debe considerar la compatibilidad del hardware al elegir un método de cuantificación.

INT8

La cuantificación INT8 es el proceso de convertir los pesos y activaciones de un modelo de números de punto flotante a enteros de 8 bits. Aunque el rango numérico representado por los enteros INT8 es más pequeño y menos preciso, puede reducir significativamente los requisitos de almacenamiento y cálculo. En la cuantificación INT8, los pesos y valores de activación del modelo pasan por un proceso de cuantificación, que incluye escalado y desplazamiento, para preservar la información original de punto flotante tanto como sea posible. Durante la inferencia, estos valores cuantificados se desquantificarán de nuevo a números de punto flotante para el cálculo, y luego se cuantificarán de nuevo a INT8 para el siguiente paso. Este método puede proporcionar suficiente precisión en la mayoría de las aplicaciones mientras mantiene una alta eficiencia computacional.

FP16

El formato FP16, es decir, números de punto flotante de 16 bits (float16), reduce el uso de memoria a la mitad en comparación con los números de punto flotante de 32 bits (float32), lo que tiene ventajas significativas en aplicaciones de aprendizaje profundo a gran escala. El formato FP16 permite cargar modelos más grandes o procesar más datos dentro de las mismas limitaciones de memoria de la GPU. A medida que el hardware moderno de GPU continúa admitiendo operaciones FP16, el uso del formato FP16 también puede traer mejoras en la velocidad de cálculo. Sin embargo, el formato FP16 también tiene sus desventajas inherentes, a saber, menor precisión, lo que puede llevar a inestabilidad numérica o pérdida de precisión en algunos casos.

FP32

El formato FP32 proporciona una mayor precisión y puede representar con precisión una amplia gama de valores. En escenarios donde se realizan operaciones matemáticas complejas o se requieren resultados de alta precisión, se prefiere el formato FP32. Sin embargo, una alta precisión también significa más uso de memoria y un tiempo de cálculo más largo. Para modelos de aprendizaje profundo a gran escala, especialmente cuando hay muchos parámetros del modelo y una gran cantidad de datos, el formato FP32 puede causar insuficiencia de memoria de la GPU o una disminución en la velocidad de inferencia.

En dispositivos móviles o dispositivos IoT, podemos convertir los modelos Phi-3.x a INT4, mientras que las PC con IA/Copilot PC pueden usar una mayor precisión como INT8, FP16, FP32.

En la actualidad, diferentes fabricantes de hardware tienen diferentes marcos para admitir modelos generativos, como OpenVINO de Intel, QNN de Qualcomm, MLX de Apple y CUDA de Nvidia, etc., combinados con la cuantificación del modelo para completar el despliegue local.

En términos de tecnología, tenemos diferentes soportes de formato después de la cuantificación, como el formato PyTorch / Tensorflow, GGUF y ONNX. He hecho una comparación de formato y escenarios de aplicación entre GGUF y ONNX. Aquí recomiendo el formato de cuantificación ONNX, que tiene un buen soporte desde el marco del modelo hasta el hardware. En este capítulo, nos centraremos en ONNX Runtime para GenAI, OpenVINO y Apple MLX para realizar la cuantificación del modelo (si tienes una mejor manera, también puedes dárnosla enviando un PR).

Este capítulo incluye

  1. Cuantificación de Phi-3.5 usando llama.cpp

  2. Cuantificación de Phi-3.5 usando extensiones de IA generativa para onnxruntime

  3. Cuantificación de Phi-3.5 usando Intel OpenVINO

  4. Cuantificación de Phi-3.5 usando el marco Apple MLX

     **Descargo de responsabilidad**:
     Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción humana profesional. No somos responsables de ningún malentendido o interpretación errónea que surja del uso de esta traducción.