Herramienta integrada de inferencia y entrenamiento de PNL (TurboNLPExp)

Autor: TurboNLP, Ingeniero de antecedentes de Tencent TEG

Introducción

Al entrenar tareas de PNL (etiquetado de secuencia, clasificación, juicio de relación de oraciones, generativo), generalmente se usa el marco de aprendizaje automático Pytorch o Tensorflow, y el modelo se define en él y el preprocesamiento de datos del modelo personalizado es difícil de lograr. Precipitación, reutilizar y compartir, y para el lanzamiento del modelo también enfrentan: difícil de lanzar, alto retraso, alto costo, etc., TEG-AI Platform Department-Search Business Center desde fines de 2019, después de mucha investigación en la etapa inicial , autodesarrollado sobre la base de AllenNLP Inference y la herramienta integrada de entrenamiento TurboNLP cubre el marco de entrenamiento TurboNLP-exp y el marco de inferencia TuboNLP-inference. El marco de entrenamiento TurboNLP-exp tiene las características de configurable, simple, multi-framework, multi- tareas y reutilización Capaz de realizar experimentos de PNL de forma rápida y eficiente.

La capa inferior del marco de inferencia de inferencia TurboNLP admite una biblioteca de inferencia de modelos eficiente BertInference, que integra los modelos de NLP de uso común, es perfectamente compatible con TurboNLP-exp y tiene un alto rendimiento de inferencia (medido en el modelo comercial de clasificación de documentos basado en BERT, FP6 la precisión es batch_size = 64, Seq_len = 64 alcanzó 0.275ms / query, la precisión INT8 alcanzó 0.126ms / query performance en batch_size = 64, seq_len = 64) y otras características, el entrenamiento de PNL y las herramientas integradas de inferencia simplifican enormemente el entrenamiento para El proceso de inferencia reduce costos de mano de obra, como capacitación en tareas y lanzamiento de modelos. Este artículo presentará principalmente la capacitación en PNL y las herramientas integradas de inferencia.

antecedentes

La tarea de PNL suele ser el modelo personalizado del investigador de algoritmos y el preprocesamiento de datos en el marco de aprendizaje automático Pytorcho el Tensorflowentrenamiento, y la implementación manual en libtorch o tensorflow, este proceso tiene los siguientes problemas:

  • La estructura del modelo existente y el preprocesamiento de datos de las tareas de PNL se redefinen, con alta repetibilidad.

  • Modifica manualmente la estructura del modelo y el código de preprocesamiento de datos, ajusta constantemente los parámetros de entrenamiento y prueba y error, lo que genera confusión en el código.

  • Cuando la complejidad del modelo (multimodelo y multitarea) es alta o el modelo existente debe optimizarse y mejorarse, si no está familiarizado con la estructura del modelo, debe reorganizar el modelo y el código de preprocesamiento de datos definido por Python.

  • La acumulación de conocimientos, la reutilización y el intercambio de modelos son difíciles.

  • Es difícil conectarse, el preprocesamiento de datos es complicado en C ++ y el retraso de razonamiento es alto.

  • Es difícil mejorar la eficiencia del entrenamiento fuera de línea y realizar experimentos de tareas de PNL a través del proceso, y el costo de prueba y error es alto.

Con el fin de resolver los puntos débiles existentes anteriores, en este contexto, hemos abierto el extremo del entrenamiento de PNL al extremo de la inferencia, y hemos desarrollado el marco de entrenamiento TurboNLP-expy el marco de inferencia por nosotros mismos TuboNLP-inference. El siguiente es el diagrama de arquitectura general del marco:

Introducción

  • Marco de formación TurboNLP-exp

    • TurboNLP-exp tiene las características de modularidad, configurabilidad, soporte multiplataforma, soporte para múltiples tareas, exportación de formato de múltiples modelos, preprocesamiento de datos C ++, etc., que no solo pueden cumplir con la rápida experimentación de los investigadores, sino también modelos de depósito en el marco a través de la configuración Los investigadores reutilizan y comparten conocimientos a través de la configuración.

    • TuboNLP-exp tiene un diseño modular para el preprocesamiento de modelos y datos. Para el preprocesamiento de datos, el preprocesamiento de datos para el mismo tipo de tarea de PNL (etiquetado de secuencia, clasificación, juicio de relación de oraciones, fórmula generativa) es básicamente el mismo, y se puede reutilizar Reutilizar el preprocesamiento de datos existentes; para el modelo, TurboNLP-exp integra una gran cantidad de submódulos: embedder, seq2seq_encoder, seq2vec_encoder, decoder, atención, etc., mediante la configuración de modelos de construcción arbitrarios, para lograr propósitos experimentales rápidos.

    • TuboNLP-exp unificó las plataformas de aprendizaje automático subyacentes (Pytorch y Tensorflow), y estar familiarizado con diferentes plataformas de aprendizaje automático no afecta la reutilización, el intercambio y la acumulación de conocimientos de los modelos.

    • TurboNLP-exp admite el preprocesamiento de datos de C ++ y Python. El preprocesamiento de datos de Python tiene las características de una depuración experimental rápida y principalmente sirve para el entrenamiento. El preprocesamiento de datos de C ++ tiene las características de alto rendimiento y principalmente sirve para el lado de la inferencia. El preprocesamiento de datos de C ++ tiene las mismas características como Python Con la interfaz API, los investigadores pueden cambiar entre el preprocesamiento de datos de C ++ y Python a voluntad durante la fase de entrenamiento para garantizar la coherencia de los datos entre el final del entrenamiento y el final de la inferencia.

  • Marco de inferencia TurboNLP-inferencia

    • TurboNLP-inference puede cargar directamente el modelo exportado por TuboNLP-exp e instanciar el preprocesamiento de datos de acuerdo con la configuración.

    • TurboNLP-inference proporciona una API unificada, documentación completa y ejemplos. El código de inferencia del modelo se implementa rápidamente a través de ejemplos. El código comercial llama a la biblioteca de inferencia a través de la interfaz API y el paquete so.

    • TurboNLP-inferencia marco razonamiento integra comúnmente usado modelo de PNL: LSTM, codificador-decodificador, CRF, ESIM, Bert, los soportes de razonamiento subyacente cinco bibliotecas: BertInference(BERT razonamiento acelerar la biblioteca),, libtorch, tensorflow(WXGTurboTransformers BERT razonamiento aceleran biblioteca de código abierto), BertInference-cpu( Biblioteca de aceleración de inferencias BERT en la CPU).

Marco de entrenamiento TurboNLP-exp

El marco de capacitación de TurboNLP-exp se basa en la investigación y el desarrollo de AllenNLP. Para satisfacer las necesidades comerciales de los investigadores de algoritmos y la inferencia, TurboNLP-exp se optimiza continuamente y tiene características que el marco de la industria no tiene. La siguiente tabla es una comparación de TurboNLP-exp con otros frameworks en la industria:

cuadro Dificultad Modular Configurable Pytorch Tensorflow Entrenamiento multitarea Exportación de formato de múltiples modelos Preprocesamiento de datos razonamiento
PyText difícil T T T F F F Pitón Motor de ejecución Caffe2
AllenNLP sencillo T T T F F F Pitón Servicio Python simple
TurboNLP-exp sencillo T T T T T T Python 、 C ++ Inferencia TurboNLP eficiente

A continuación se presentará en detalle nuestra optimización en TurboNLP-exp.

Modular y configurable

El alto grado de configurabilidad de TurboNLP-exp se debe a su diseño de módulo razonable.A través de un paquete modular, TurboNLP-exp admite combinaciones arbitrarias de modelos y submódulos de expansión, etc., y proporciona configuración de interfaz para los investigadores recientemente contactados con TurboNLP-exp. El preprocesamiento de datos y la configuración del modelo se generan a través de la interfaz visual, lo que reduce en gran medida la dificultad de comenzar.

Preprocesamiento de datos modular y configurable

El preprocesamiento de datos se puede dividir aproximadamente en cuatro módulos : dataset_reader , token_indexer , tokenizer y vocabulario .

  • dataset_reader: Responsable de leer los datos de entrenamiento, usar el segmentador de palabras para la segmentación de palabras e indexador para la conversión de id; integra lectura de múltiples formatos de datos: formato de datos de clasificación de texto, formato de datos NER, formato de datos BERT, etc., y admite extensiones personalizadas.

  • token_indexer: Responsable de indexar tokens (convertir id según el diccionario), integra una variedad de indexadores: según el índice de una sola palabra, según el índice de la palabra, según el índice de atributo de la palabra, etc., admite la expansión personalizada.

  • tokenizer: Responsable de la segmentación de palabras del texto, integra los segmentadores de palabras comúnmente utilizados en tareas de PNL: qqseg, wordpiece, espacios en blanco, carácter, etc., y admite extensiones personalizadas.

  • vocabulario: diccionario de datos, admite la generación automática a partir de datos de entrenamiento y lo guarda localmente después del entrenamiento, o lo genera a partir de un archivo de diccionario existente en el área local. El vocabulario guardará varios diccionarios (diccionario de tokens, etiquetas) al mismo tiempo en el formulario de diccionarios de espacio de nombres, etc.).

Modelo modular y configurable

El diseño modular del modelo se puede dividir en tres partes principales: modelo , entrenador y exportador .

  • modelo: Este módulo integra modelos comunes de tareas de PNL: codificador, decodificador, embebedor, etc. Cada submodelo está compuesto por otros modelos. Este diseño modular combinado permite definir fácilmente el modelo según la configuración. Similar a las tareas de PNL, el modelo La estructura es básicamente la misma. Los investigadores pueden ajustar rápidamente la estructura del modelo modificando la configuración y personalizar y expandir los submodelos.

  • entrenador: TurboNLP-exp encapsula el optimizador, la tasa de aprendizaje, el índice de evaluación, etc. utilizado en el proceso de entrenamiento y modifica los parámetros de entrenamiento a través de la configuración para lograr el propósito de la experimentación rápida.

  • Exportador: Los integra módulo varios formatos de modelos de exportación: caffe, onnx, ptformato, un formato definido por la configuración deriva.

Soporte multiplataforma

TurboNLP-exp abstrae la plataforma de aprendizaje automático subyacente e implementa una interfaz de marco unificada para llamar a pytorch y tensorflow subyacentes (como se muestra en la figura siguiente). El marco elige pytorch o tensorflow para implementar la interfaz de acuerdo con la configuración. El formato pytorch es actualmente el estándar.

Entrenamiento multitarea

El aprendizaje multitarea integra diferentes tipos de tareas, como el reconocimiento de entidades, la compacidad, etc., en un modelo simulando las características multitarea del proceso cognitivo humano. En el modelo de lenguaje común de preentrenamiento, entrene sus respectivas capas de etiquetado . Durante la capacitación, mediante el complemento mutuo de conocimientos y objetivos en cada área de tareas, mejorar de manera conjunta el efecto del modelo de tareas. Cuando se conecte, utilice el mismo modelo subyacente para ahorrar almacenamiento y recursos informáticos; actualmente, la demanda de multitarea está aumentando , y TurboNLP-exp admite múltiples tareas, múltiples combinaciones y métodos de programación de capacitación (como se muestra en la figura siguiente)

El modelo multitarea de TurboNLP-exp tiene las siguientes características:

  • Puede combinar rápidamente modelos multitarea a través de modelos existentes de una sola tarea.

  • Admite múltiples reglas de combinación, que incluyen: compartir, acumular, shotcut.

    • Compartir: varios modelos comparten la misma salida del codificador.

    • Acumulación: el codificador de cada tarea se acumula y se envía a la capa de etiquetado de cada tarea.

    • shotcut: la salida del codificador de cada tarea se utilizará como la entrada del codificador de la siguiente tarea.

  • Admite múltiples métodos de programación de capacitación, que incluyen: programación secuencial, programación aleatoria y programación conjunta.

    • La programación secuencial y aleatoria pertenece al entrenamiento alternativo, que puede obtener la solución óptima de cada tarea en base a múltiples tareas, y no necesita construir una entrada unificada, que es más simple.

    • La co-programación pertenece a la formación conjunta y utiliza una entrada unificada. Dado que la pérdida se acumulará al final, está buscando una solución óptima integral para múltiples tareas.

  • El usuario puede configurar libremente el modo de combinación correspondiente y el modo de programación de acuerdo con la escena de la tarea real, de modo que la multitarea pueda lograr el efecto óptimo.

Exportación de formato de múltiples modelos

TurboNLP-exp puede exportar formatos: caffe,, onnx, ptapoyar formatos soportados marco razonamiento exportación TurboNLP-inferencia directos, razonando directamente carga final, en lugar de a través de un complejo de transformación de modelos.

Preprocesamiento de datos

El preprocesamiento de datos de TurboNLP-exp puede admitir Python y C ++. El preprocesamiento de datos de Python sirve principalmente para el lado del entrenamiento, y el preprocesamiento de datos C ++ sirve principalmente para el lado de la inferencia y también puede servir para el lado del entrenamiento (como se muestra en la siguiente figura)

En el lado del entrenamiento, cuando el preprocesamiento de datos aún se está modificando y depurando, el uso del preprocesamiento de datos de Python puede experimentar rápidamente. Cuando el preprocesamiento de datos de Python sea fijo, cambie al preprocesamiento de datos de C ++ para verificar los resultados del preprocesamiento de datos para garantizar la coherencia de los datos entre el entrenamiento fin y el fin de la inferencia.

En el lado de la inferencia, usando la misma configuración que el lado de entrenamiento, la salida del preprocesamiento de datos C ++ se usará como entrada del modelo, el preprocesamiento de datos C ++, TurboNLP-datausando la cola de preprocesamiento de múltiples subprocesos para garantizar una baja latencia del preprocesamiento de datos, en la base BERT de cinco categorías Medido en el modelo, el rendimiento de 0.05ms / consulta se logra cuando batch_size = 64 y seq_len = 64 .

Marco de inferencia de inferencia TurboNLP

TurboNLP inferencia marco razonamiento perfectamente compatible con TurboNLP-exp, 具备低延迟, 可配置y otras características, el razonamiento TurboNLP inferencia que subyace soportes cinco bibliotecas: BertInference(razonamiento BERT acelerar la biblioteca),, libtorch, tensorflow(WXGTurboTransformers BERT razonamiento acelerar biblioteca de código abierto), BertInference-cpu(razonamiento BERT se aceleró en una biblioteca de la CPU ), entre ellos, se BertInferenceencuentra una biblioteca de inferencias BERT de alto rendimiento desarrollada en base a TensorRT , y una biblioteca BertInference-cpupara la aceleración de inferencias BERT en la CPU desarrollada en cooperación con Intel.

El siguiente es el diagrama de arquitectura integrado del marco de inferencia TurboNLP-inference y el marco de entrenamiento TurboNLP-exp:

La inferencia TurboNLP tiene las siguientes características:

  • PNL modelo de tarea integrado utilizado: lstm, esim, seq2seq_encoder, attention, transformeretc., de acuerdo con la estructura del modelo de configuración y la configuración de la entrada de modelo.

  • TurboNLP-expEl exportador que se puede cargar exporta directamente el model.weightsformato del modelo.

  • Utilice el preprocesamiento de datos de C ++ TurboNLP-datay alimente automáticamente la salida del preprocesamiento de datos en la entrada del modelo.

  • El código de razonamiento se incrustará en el código comercial en forma de paquete C ++ y API, la intrusión en el código comercial lo menos posible y la modificación es flexible y conveniente.

Aplicaciones de negocios

Las herramientas integradas de PNL (marco de capacitación TurboNLP-exp y marco de inferencia de inferencia TurboNLP) simplifican enormemente el modelo desde la capacitación hasta el proceso en línea (como se muestra en la figura siguiente), de acuerdo con el proceso en línea real del modelo de negocio, la capacitación manual y la implementación requieren 14,5 / persona-día, mientras que el uso de herramientas integradas de PNL solo necesita 4 / persona-día, lo que ahorra ** 72,4% ** en costes laborales.

TurboNLP-inference ha admitido con éxito 5 servicios del Centro de servicios de búsqueda de departamentos de la plataforma TEG-AI:

  • Para el modelo BERT de clasificación de documentos de una empresa, la precisión de FP16 alcanzó 0.290ms / rendimiento de consulta bajo la condición de batch_size = 64 y seq_len = 64 , los recursos de la máquina se ahorraron en un 97% , el ciclo en línea se acortó en casi un 50% , y la máquina se redujo considerablemente y los costos de mano de obra.

  • Con el modelo BERT para juzgar la relación entre texto y video de una empresa, la demora de respuesta se reduce a 2/3 del original y los recursos del equipo se ahorran en un 92,8% .

  • La consulta de una empresa reescribe el modelo BERT-base, lo que reduce en gran medida el ciclo en línea y los costos laborales en comparación con el anterior.

  • Un modelo empresarial multitarea (el codificador es BERT, el decodificador es GRU), en el caso de precisión FP16, alcanzó un rendimiento de 2ms / consulta .

  • El modelo BERT-base no es necesario para la consulta de una empresa, y el período online se acorta considerablemente, en el caso de la precisión FP16 se consigue un rendimiento de 1,1ms / consulta .

El rendimiento de la inferencia TurboNLP en los negocios es inseparable del soporte perfecto del marco de capacitación y el soporte de la biblioteca de inferencia eficiente subyacente.

último progreso

BertInference, una de las bibliotecas de razonamiento eficiente de bajo nivel de TurboNLP-inference, tiene actualmente soporte para razonamiento INT8 y cálculos de atención optimizados . Utilizamos el modelo de negocio de clasificación de texto basado en BERT y datos en línea reales para las pruebas de rendimiento. Los efectos son los siguientes:

En el caso de batch_size = 64, y seq_len = 64, el rendimiento alcanzó 0,126 ms / consulta , e INT8 aumentó en un 54,2% en comparación con FP16.

La inferencia TurboNLP admite la calibración INT8 y puede calibrar directamente usando modelos existentes. El proceso de calibración se ajusta a través de la configuración. El proceso de calibración es simple. Después de la calibración, la precisión INT8 se puede utilizar directamente para la inferencia del modelo.

Resumen y perspectiva

Las herramientas de integración de PNL (marco de entrenamiento TurboNLP-exp y marco de inferencia de inferencia TurboNLP) ahora han evolucionado dentro del grupo de trabajo de TEG AI. También hay algunas aplicaciones cooperativas en el modelo de pre-entrenamiento. Al mismo tiempo, también estamos trabajando activamente con Informática del grupo de trabajo de IA El equipo de la plataforma de aprendizaje automático de Tai Chi coopera activamente para abrir mejor las capacidades de capacitación en la plataforma. A continuación, el marco de entrenamiento y razonamiento también evolucionará en el oteam de colaboración unificada de TencentNLP, y esperamos una mayor cooperación en equipo dentro de la empresa.

La aceleración de inferencia BERT de TurboNLP-inference todavía tiene espacio para mejorar aún más el efecto del modelo de precisión INT8. En la actualidad, se está enfocando en QAT y destilación de conocimiento. QAT se mide actualmente en el modelo BERT de cinco categorías. La precisión es solo reducido en un 0,8% , agregando destilación de conocimiento Se espera que la precisión no disminuya.

Más:

Supongo que te gusta

Origin blog.csdn.net/Tencent_TEG/article/details/113409057
Recomendado
Clasificación