Serie de grandes modelos de lenguaje desarrollados por Google AI
T5 (Text-to-Text Transfer Transformer) es una serie de modelos de lenguaje grandes desarrollados por Google AI presentados en 2019. [1] [2] Al igual que el modelo Transformer original, [3] los modelos T5 son Transformers codificador-decodificador , donde el codificador procesa el texto de entrada y el decodificador genera el texto de salida.
Los modelos T5 suelen entrenarse previamente con un conjunto masivo de datos de texto y código, después de lo cual pueden realizar tareas basadas en texto similares a las tareas entrenadas previamente. También se pueden ajustar para realizar otras tareas.
Los modelos T5 se han empleado en diversas aplicaciones, incluidos chatbots, sistemas de traducción automática, herramientas de resumen de texto, generación de código y robótica. [4]
Capacitación
Los modelos T5 originales se entrenan previamente en el Colossal Clean Crawled Corpus (C4), que contiene texto y código extraídos de Internet . Este proceso de entrenamiento previo permite que los modelos adquieran capacidades de comprensión y generación de lenguaje general. Los modelos T5 se pueden ajustar posteriormente a tareas específicas posteriores, adaptando su conocimiento para que funcione bien en diversas aplicaciones.
Los modelos T5 fueron entrenados previamente en muchas tareas, todas en el formato <input text>-> <output text>.
Algunos ejemplos son:
restaurar texto dañado: Thank you <X> me to your party <Y> week.-> <X> for inviting <Y> last <Z>, donde <Z>significa "fin de la salida", y y <X>denotan <Y>espacios en blanco que deben llenarse, llamados "centinelas" en el informe original.
traducción: translate English to German: That is good.-> Das ist gut..
juzgar la aceptabilidad gramatical de una oración ( oración CoLA ): The course is jumping well.-> not acceptable.
Arquitectura
La serie T5 abarca varios modelos con diferentes tamaños y capacidades, todos ellos transformadores codificadores-decodificadores , donde el codificador procesa el texto de entrada y el decodificador genera el texto de salida.
Estos modelos suelen distinguirse por su cantidad de parámetros, lo que indica la complejidad y la capacidad potencial del modelo. El artículo original [1] informó sobre los siguientes 5 modelos:
*El codificador y el decodificador tienen la misma forma. Por ejemplo, el T5-small tiene 6 capas en el codificador y 6 capas en el decodificador.
En la tabla anterior,
: Número de capas del codificador; también, número de capas del decodificador. Siempre tienen el mismo número de capas.
:Número de cabezas de atención en cada bloque de atención.
:Dimensión de los vectores de incrustación.
:Dimensión de la red de propagación hacia adelante dentro de cada capa de codificador y decodificador.
:Dimensión de los vectores clave y valor utilizados en el mecanismo de autoatención.
Tenga en cuenta que, a diferencia de los Transformers típicos, los modelos 3B y 11B no satisfacen . [6]
En comparación con el Transformer original, utiliza algunas modificaciones menores: normalización de capas sin sesgo aditivo; colocación de la normalización de capas fuera de la ruta residual; incrustación posicional relativa. [7]
Para todos los experimentos, utilizaron un tokenizador WordPiece, con un tamaño de vocabulario de 32 000. El tokenizador se comparte entre la entrada y la salida de cada modelo. Se entrenó con una combinación de datos en inglés , alemán , francés y rumano del conjunto de datos C4, en una proporción de 10:1:1:1.
Variantes
Varios modelos posteriores utilizaron la arquitectura T5, con convenciones de nomenclatura no estandarizadas para diferenciarlos. En esta sección se intenta recopilar los principales. Una lista exhaustiva de las variantes publicadas por Google Brain se encuentra en el repositorio de GitHub para T5X. [8]
Algunos modelos se entrenan desde cero, mientras que otros se entrenan a partir de un modelo entrenado previamente. De forma predeterminada, cada modelo se entrena desde cero, salvo que se indique lo contrario.
T5 1.1 pequeño, básico, grande, XL, XXL: versiones mejoradas de la serie T5 original. Tienen parámetros aproximadamente iguales. La función de activación es GEGLU [9] en lugar de ReLU. El 3B y el 11B se cambiaron a "XL" y "XXL", y se cambiaron sus formas: [8] [10] [11]
T5 adaptado a LM (2021): una serie de modelos (desde pequeños hasta XXL) que comenzaron a partir de puntos de control de la serie T5 , pero se entrenaron más a fondo con 100 mil millones de tokens adicionales de C4. [12]
Switch Transformer (2021): una variante de mezcla de expertos de T5, al reemplazar las capas de avance en los bloques de codificador y decodificador con una mezcla de capas de avance de expertos. [13] [14]
T0 3B, 11B (2021): una serie de modelos que comenzaron a partir de puntos de control de T5 adaptados a LM y se entrenaron para realizar tareas basadas solo en instrucciones de tareas ( zero-shot ). [15] Diferentes entradas en la serie utilizan diferentes datos de ajuste fino. [16]
ByT5 (2021): una versión a nivel de bytes de T5, entrenada en el conjunto de datos mC4 (C4 multilingüe). [17] Opera en texto codificado como bytes UTF-8 , sin tokenizadores.
Flan-T5-XL (2022): un modelo que comenzó con un punto de control de T5 XL y luego se ajustó mediante instrucciones en el conjunto de datos FLAN. [18] [19] [20] [21]
T5X (2022): una reimplementación basada en JAX del código base T5 original. No es un modelo. [22] El código base T5 original se implementó en TensorFlow con MeshTF. [2]
UL2 20B (2022): un modelo con la misma arquitectura que la serie T5 , pero ampliado a 20B y entrenado con el objetivo de "mezcla de eliminadores de ruido" en el C4. [23] Se entrenó en un clúster de TPU por accidente, cuando una ejecución de entrenamiento se dejó en ejecución accidentalmente durante un mes. [24]
Flan-UL2 20B (2022): instrucción UL2 20B optimizada para el conjunto de datos FLAN. [23] [20]
Pile-T5 (2024): tiene la misma arquitectura de T5 , excepto que utiliza el tokenizador Llama . Fue entrenado en The Pile . Viene en tamaños: básico, grande, XL, XXL. [25]
Aplicaciones
El modelo T5 es un modelo de codificador-descodificador, lo que permite utilizarlo para seguir instrucciones. El codificador codifica la instrucción y el descodificador genera la respuesta de forma autorregresiva.
El codificador T5 se puede utilizar como un codificador de texto, de forma muy similar a BERT. Codifica un texto en una secuencia de vectores de números reales, que se pueden utilizar para aplicaciones posteriores. Por ejemplo, Google Imagen [26] utiliza T5-XXL como codificador de texto, y los vectores de texto codificados se utilizan como condicionamiento en un modelo de difusión . Como otro ejemplo, el modelo de difusión AuraFlow [27] utiliza Pile-T5-XL .
Referencias
^ abc Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (2020). "Explorando los límites del aprendizaje por transferencia con un transformador unificado de texto a texto". Revista de investigación en aprendizaje automático . 21 (140): 1–67. arXiv : 1910.10683 . ISSN 1533-7928.
^ de google-research/text-to-text-transfer-transformer, Google Research, 2024-08-21 , consultado el 2024-08-21
^ Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, León; Gómez, Aidan N; Káiser, Łukasz; Polosukhin, Illia (2017). "La atención es todo lo que necesitas". Avances en los sistemas de procesamiento de información neuronal . 30 . Curran asociados, Inc.
^ Jiang, Yunfan; Gupta, Agrim; Zhang, Zichen; Wang, Guanzhi; Dou, Yongqiang; Chen, Yanjun; Fei-Fei, Li; Anandkumar, Ánima; Zhu, Yuke (6 de octubre de 2022). "VIMA: manipulación general de robots con indicaciones multimodales". arXiv : 2210.03094 [cs.RO].
^ ab Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). "11.9. Preentrenamiento a gran escala con transformadores". Sumérjase en el aprendizaje profundo . Cambridge New York Port Melbourne New Delhi Singapore: Cambridge University Press. ISBN978-1-009-38943-3.
^ "config.json · google-t5/t5-11b at main". huggingface.co . 2020-04-24 . Consultado el 2024-09-17 .
^ Shaw, Peter; Uszkoreit, Jakob; Vaswani, Ashish (12 de abril de 2018), Autoatención con representaciones de posición relativa , arXiv : 1803.02155
^ ab "t5x/docs/models.md at main · google-research/t5x". GitHub . Consultado el 5 de agosto de 2024 .
^ Shazeer, Noam (12 de febrero de 2020), Las variantes de GLU mejoran el transformador, arXiv : 2002.05202 , consultado el 16 de octubre de 2024
^ "config.json · google/t5-v1_1-xl at main". huggingface.co . 2020-11-19 . Consultado el 2024-09-17 .
^ "config.json · google/t5-v1_1-xxl at main". huggingface.co . 2020-11-19 . Consultado el 2024-09-17 .
^ Lester, Brian; Al-Rfou, Rami; Constant, Noah (2021-09-02), El poder de la escala para un ajuste rápido y eficiente de los parámetros , arXiv : 2104.08691
^ Fedus, William; Zoph, Barret; Shazeer, Noam (16 de junio de 2022), Transformadores de conmutación: escalamiento a modelos de billones de parámetros con escasez simple y eficiente , arXiv : 2101.03961
^ "Transformadores conmutadores". huggingface.co . Consultado el 5 de agosto de 2024 .
^ Sanh, Victor; Webson, Albert; Raffel, Colin; Bach, Stephen H.; Sutawika, Lintang; Alyafeai, Zaid; Chaffin, Antoine; Stiegler, Arnaud; Scao, Teven Le (17 de marzo de 2022), El entrenamiento basado en múltiples tareas permite la generalización de tareas sin interrupciones , arXiv : 2110.08207
^ Xue, Linting; Barua, Aditya; Constant, Noah; Al-Rfou, Rami; Narang, Sharan; Kale, Mihir; Roberts, Adam; Raffel, Colin (25 de marzo de 2022). "ByT5: Hacia un futuro sin tokens con modelos byte a byte preentrenados". Transacciones de la Asociación de Lingüística Computacional . 10 : 291–306. arXiv : 2105.13626 . doi :10.1162/tacl_a_00461. ISSN 2307-387X.
^ Chung, Hyung ganó; Hou, Le; Longpre, Shayne; Zoph, Barret; Tay, Yi; Fedus, William; Li, Yunxuan; Wang, Xuezhi; Dehghani, Mostafa; Brahma, Siddhartha; Webson, Alberto; Gu, Shixiang Shane; Dai, Zhuyun; Suzgun, Mirac; Chen, Xinyun (2024). "Ampliación de modelos de lenguaje perfeccionados de instrucción". Revista de investigación sobre aprendizaje automático . 25 (70): 1–53. arXiv : 2210.11416 . ISSN 1533-7928.
^ Longpre, Shayne; Hou, Le; Vu, Tu; Webson, Albert; Chung, Hyung Won; Tay, Yi; Zhou, Denny; Le, Quoc V.; Zoph, Barret; Wei, Jason; Roberts, Adam (3 de julio de 2023). "La colección Flan: diseño de datos y métodos para un ajuste eficaz de las instrucciones". Actas de la 40.ª Conferencia internacional sobre aprendizaje automático . PMLR: 22631–22648. arXiv : 2301.13688 .
^ de google-research/FLAN, Google Research, 3 de agosto de 2024 , consultado el 5 de agosto de 2024
^ Roberts, Adam; Chung, Hyung Won; Mishra, Gaurav; Levskaya, Anselm; Bradbury, James; Andor, Daniel; Narang, Sharan; Lester, Brian; Gaffney, Colin; Mohiuddin, Afroz; Hawthorne, Curtis; Lewkowycz, Aitor; Salcianu, Alex; Zee, Marc van; Austin, Jacob (2023). "Escalado de modelos y datos con t5x y seqio". Revista de investigación en aprendizaje automático . 24 (377): 1–8. ISSN 1533-7928.
^ ab Tay, Yi; Dehghani, Mostafa; Tran, Vinh Q.; García, Xavier; Wei, Jason; Wang, Xuezhi; Chung, Hyung Won; Shakeri, Siamak; Bahri, Dara (28 de febrero de 2023), UL2: Unificación de paradigmas de aprendizaje de idiomas , arXiv : 2205.05131
^ "Formación de grandes LLM desde cero en el desierto como una startup". Yi Tay . Consultado el 18 de octubre de 2024 .
^ Sutawika, Lintang; Komatsuzaki, Aran; Raffel, Colin (15 de abril de 2024). "Pila-T5". Blog de EleutherAI . Consultado el 5 de mayo de 2024 .
^ "Imagen: modelos de difusión de texto a imagen". imagen.research.google . Consultado el 23 de agosto de 2024 .
^ "AuraFlow". huggingface.co . Consultado el 23 de agosto de 2024 .
Enlaces externos
"Lanzamiento de T5: una colección de Google". huggingface.co . 2024-07-31 . Consultado el 2024-10-16 .
Notas
^
importar antorcha desde transformadores importar AutoConfig , AutoModelForSeq2SeqLMdef count_parameters ( modelo ) : enc = suma ( p.numel ( ) para p en modelo.codificador.parámetros ( ) ) dec = suma ( p.numel ( ) para p en modelo.decodificador.parámetros ( ) ) total = enc + dec return total , enc , decpara el nombre en [ "t5-small" , "t5-base" , "t5-large" , "t5-3b" , "t5-11b" ]: print ( f "Modelo: { nombre } " ) config = AutoConfig . from_pretrained ( f "google-t5/ { nombre } " ) antorcha_dtype = antorcha . float16modelo = AutoModelForSeq2SeqLM .from_config ( config , antorcha_dtype = antorcha_dtype )total , enc , dec = count_parameters ( modelo )print ( f "Número total de parámetros en { nombre } : { total } " ) print ( f "Número total de parámetros en el codificador: { enc } " ) print ( f "Número total de parámetros en el decodificador: { dec } " )del modelo
^
importar antorcha desde transformadores importar AutoConfig , AutoModelForSeq2SeqLMdef count_parameters ( modelo ) : enc = suma ( p.numel ( ) para p en modelo.codificador.parámetros ( ) ) dec = suma ( p.numel ( ) para p en modelo.decodificador.parámetros ( ) ) total = enc + dec return total , enc , decpara el nombre en [ "pequeño" , "base" , "grande" , "xl" , "xxl" ]: print ( f "Modelo: { nombre } " ) config = AutoConfig . from_pretrained ( f "google/t5-v1_1- { nombre } " ) antorcha_dtype = antorcha . float16modelo = AutoModelForSeq2SeqLM .from_config ( config , antorcha_dtype = antorcha_dtype )total , enc , dec = count_parameters ( modelo )print ( f "Número total de parámetros en { nombre } : { total } " ) print ( f "Número total de parámetros en el codificador: { enc } " ) print ( f "Número total de parámetros en el decodificador: { dec } " )del modelo