Utilice BigDL-LLM para acelerar instantáneamente decenas de miles de millones de razonamiento LLM de parámetros | el modelo grande más "in"

Autor: Intel Corporation Huang Shengsheng, Huang Kai, Dai Jinquan
Qubit | Cuenta pública QbitAI

Estamos entrando en una nueva era de IA impulsada por modelos de lenguaje grande (LLM), que desempeñan un papel cada vez más importante en diversas aplicaciones, como servicio al cliente, asistentes virtuales, creación de contenido, asistencia en programación y más.

Sin embargo, a medida que la escala de LLM continúa expandiéndose, el consumo de recursos requerido para ejecutar modelos grandes también aumenta, lo que hace que se ejecute cada vez más lento, lo que plantea desafíos considerables para los desarrolladores de aplicaciones de IA.

Con este fin, Intel lanzó recientemente una biblioteca de código abierto de modelos grandes llamada BigDL-LLM [1] , que puede ayudar a los desarrolladores e investigadores de IA a acelerar la optimización de modelos de lenguaje grandes en plataformas  Intel® y mejorar el rendimiento de los modelos de lenguaje grandes en Intel. ® plataformas  experiencia.

c629adeebc61b75afef99f8d90994fba.png

A continuación se muestra el efecto en tiempo real de Vicuña-33b-v1.3 [2], un modelo de lenguaje grande  con 33 mil millones de parámetros acelerado por BigDL-LLM, que se ejecuta en un servidor equipado con el procesador Intel® Xeon® Platinum  8468.

6d3f45be2b97e930caf9831955bce155.gif
La velocidad real de ejecutar un modelo de lenguaje grande de 33 mil millones de parámetros en un servidor equipado con un procesador Intel® Xeon®  Platinum 8468  (grabación de pantalla en tiempo real)

BigDL-LLM: una biblioteca de aceleración de modelos de lenguaje grande de código abierto en plataformas Intel® 

BigDL-LLM es una biblioteca de aceleración optimizada para modelos de lenguaje grandes, parte del BigDL de código abierto, lanzada bajo la licencia Apache 2.0.

Proporciona varias optimizaciones de baja precisión (como INT4/INT5/INT8) y puede utilizar múltiples tecnologías de aceleración de hardware integradas en CPU  Intel® (AVX/VNNI/AMX, etc.) y las últimas optimizaciones de software para permitir modelos de lenguaje grandes. Optimice  más eficientemente y funcione más rápido en plataformas Intel® .

Una de las características importantes de BigDL-LLM es que para los modelos basados ​​​​en la API de Hugging Face Transformers, solo se puede cambiar una línea de código para acelerar el modelo. En teoría, se puede ejecutar cualquier modelo de Transformers, lo cual es muy amigable para los desarrolladores. familiarizado con la API de Transformers .

Además de la API de Transformers, muchas personas también utilizarán LangChain para desarrollar aplicaciones de modelos de lenguaje de gran tamaño.

Con este fin, BigDL-LLM también proporciona una integración LangChain [3] fácil de usar , de modo que los desarrolladores puedan usar fácilmente BigDL-LLM para desarrollar nuevas aplicaciones o migrar aplicaciones existentes basadas en Transformers API o LangChain API.

Además, para los modelos generales de lenguaje grande de PyTorch (modelos que no usan Transformer o LangChain API), también puede usar la aceleración de una tecla de la API Optimice_model de BigDL-LLM para mejorar el rendimiento. Para obtener más información, consulte GitHub README [4] y la documentación oficial [5] .

BigDL-LLM también proporciona una gran cantidad de muestras de aceleración LLM de código abierto de uso común (por ejemplo, muestras que usan la API de Transformers [6] y muestras que usan la API LangChain [7] , así como tutoriales (incluido el soporte para cuadernos Jupyter) [8]  para facilitar el desarrollo. Aquellos que intentan empezar rápidamente.

Instalación y uso: proceso de instalación sencillo e interfaz API fácil de usar

Instalar BigDL-LLM es tan fácil como ejecutar el comando de una línea que se muestra a continuación.

instalación de pip --pre --actualización bigdl-llm[todos]

Si el código no se muestra completamente, deslice el dedo hacia la izquierda y hacia la derecha

También es muy fácil usar BigDL-LLM para acelerar modelos grandes (aquí solo se usa la API de estilo Transformers como ejemplo).

Para utilizar la API de estilo BigDL-LLM Transformer para acelerar el modelo, solo es necesario cambiar la parte de carga del modelo y el proceso de uso posterior es exactamente el mismo que el de los Transformers originales.

La forma de cargar el modelo con la API BigDL-LLM es casi la misma que la de la API Transformers: el usuario solo necesita cambiar la importación y configurar load_in_4bit=True en el parámetro from_pretrained .

BigDL-LLM realizará una cuantificación de baja precisión de 4 bits en el modelo durante el proceso de carga del modelo y utilizará varias tecnologías de aceleración de software y hardware para optimizar su ejecución durante el proceso de inferencia posterior.

#Carga el modelo Hugging Face Transformers con optimizaciones INT4
de bigdl.llm. importación de transformadores AutoModelForCausalLM
modelo = AutoModelForCausalLM.from_pretrained('/path/to/model/', load_in_4bit=True)

Si el código no se muestra completamente, deslice el dedo hacia la izquierda y hacia la derecha

Ejemplo: implementar rápidamente una aplicación de asistente de voz basada en un modelo de lenguaje grande

A continuación se tomará el escenario de aplicación común de LLM "Voice Assistant" como ejemplo para mostrar el caso del uso de BigDL-LLM para implementar rápidamente aplicaciones LLM. Normalmente, el flujo de trabajo de una aplicación de asistente de voz se divide en las dos partes siguientes:

c628cbf2acaf8dffe1b82c02533cd959.png

Figura 1. Diagrama esquemático del flujo de trabajo del asistente de voz
  1. Reconocimiento de voz: utilice un modelo de reconocimiento de voz (este ejemplo utiliza el modelo Whisper [9]  ) para convertir el discurso del usuario en texto;

  2. Generación de texto: utilice la salida de texto en 1 como mensaje y utilice un modelo de lenguaje grande (Llama2 [10] en este ejemplo  ) para generar una respuesta.

El siguiente es el proceso de uso de BigDL-LLM y LangChain [11]  para crear una aplicación de asistente de voz en este documento:

En la etapa de reconocimiento de voz: el primer paso es cargar el procesador preprocesador y el modelo de reconocimiento de voz recog_model. El modelo de reconocimiento que Whisper utilizó en este ejemplo es un modelo de Transformers.

Simplemente usando AutoModelForSpeechSeq2Seq en BigDL-LLM y configurando el parámetro load_in_4bit=True , el modelo se puede cargar y acelerar con precisión INT4, reduciendo así significativamente el tiempo de inferencia del modelo.

#procesador = WhisperProcessor .from_pretrained(recog_model_path)
recog_model = AutoModelForSpeechSeq2Seq .from_pretrained(recog_model_path, load_in_4bit=True)

Si el código no se muestra completamente, deslice el dedo hacia la izquierda y hacia la derecha

El segundo paso es el reconocimiento de voz. El procesador se usa primero para extraer características de entrada del habla de entrada, luego el modelo de reconocimiento se usa para predecir tokens y el procesador se usa nuevamente para decodificar tokens en texto en lenguaje natural.

input_features = procesador(frame_data,
                                                                      sampling_rate=audio.sample_rate,
                                                                      return_tensor=“pt”).input_features
predicted_ids = recogn_model.generate(input_features, force_decoder_ids=forced_decoder_ids)
texto = procesador.batch_decode(predicted_ids, skip_special_tokens=True)[0]

Si el código no se muestra completamente, deslice el dedo hacia la izquierda y hacia la derecha

En la etapa de generación de texto , primero use la API TransformersLLM de BigDL-LLM para crear un modelo de lenguaje LangChain (TransformersLLM es una integración de LLM de cadena de lenguaje definida en BigDL-LLM).

Puede cargar cualquier modelo de Hugging Face Transformers utilizando esta API.

llm = TransformadoresLLM. from_model_id(
                  model_id=llm_model_path,
                  model_kwargs={ "temperatura": 0,
                                                             "max_length": args.max_length,
                                                             "trust_remote_code": True},
)

Si el código no se muestra completamente, deslice el dedo hacia la izquierda y hacia la derecha

Luego, cree una cadena de diálogo normal LLMChain y establezca el llm ya creado como parámetro de entrada.

# El siguiente código está completo igual que el caso de uso
voiceassistant_chain = LLMChain(
          llm=llm,
         rápido=prompt,
        detallado=True,
        memoria=ConversationBufferWindowMemory(k=2),

Si el código no se muestra completamente, deslice el dedo hacia la izquierda y hacia la derecha

Esta cadena registrará todo el historial de diálogo y lo formateará adecuadamente como indicaciones para el modelo de lenguaje grande para generar respuestas. En este momento, solo necesita ingresar el texto generado por el modelo de reconocimiento como "human_input", el código es el siguiente:

texto_respuesta = cadena_asistente de voz .predict(entrada_humana=texto,
                                                   parada=”\n\n”)
           

Si el código no se muestra completamente, deslice el dedo hacia la izquierda y hacia la derecha

Finalmente, al poner en bucle los pasos de reconocimiento de voz y generación de texto, puedes hablar con este "asistente de voz" en múltiples conversaciones. Puede visitar el enlace en la parte inferior  [12]  para ver el código de muestra completo y probarlo en su propia computadora. ¡Utilice BigDL-LLM para crear rápidamente su propio asistente de voz!

Sobre el Autor

Huang Shengsheng, arquitecto senior de IA de Intel Corporation, Huang Kai, ingeniero de marco de IA de Intel Corporation, Dai Jinquan, académico de Intel, CTO global de tecnología de big data y fundador del proyecto BigDL, todos participan en trabajos relacionados con big data e IA. .

*Este artículo está autorizado para ser publicado por Qubit y las vistas son propiedad exclusiva del autor.

Supongo que te gusta

Origin blog.csdn.net/QbitAI/article/details/132632512
Recomendado
Clasificación