T5 (Text-to-Text Transfer Transformer) — это серия больших языковых моделей , разработанных Google AI, представленных в 2019 году. [1] [2] Как и оригинальная модель Transformer, [3] модели T5 представляют собой преобразователи кодера-декодера , где кодер обрабатывает входной текст, а декодер генерирует выходной текст.
Модели T5 обычно предварительно обучаются на массивном наборе данных текста и кода, после чего они могут выполнять текстовые задачи, которые похожи на их предварительно обученные задачи. Их также можно настроить для выполнения других задач.
Модели T5 использовались в различных приложениях, включая чат-боты, системы машинного перевода, инструменты реферирования текста, генерацию кода и робототехнику. [4]
Обучение
Оригинальные модели T5 предварительно обучены на Colossal Clean Crawled Corpus (C4), содержащем текст и код, извлеченные из интернета . Этот процесс предварительной подготовки позволяет моделям изучать общее понимание языка и способности к генерации. Затем модели T5 можно тонко настраивать на конкретные последующие задачи, адаптируя их знания для эффективной работы в различных приложениях.
Модели T5 были предварительно обучены на множестве задач, все в формате <input text>-> <output text>.
Вот несколько примеров:
восстановление поврежденного текста: Thank you <X> me to your party <Y> week.-> <X> for inviting <Y> last <Z>, где <Z>означает «конец вывода», а и <X>обозначают <Y>пробелы, которые необходимо заполнить, называемые в исходном отчете «сигнальными знаками».
перевод: translate English to German: That is good.-> Das ist gut..
оценка грамматической приемлемости предложения ( предложения CoLA ): The course is jumping well.-> not acceptable.
Архитектура
Серия T5 включает в себя несколько моделей с различными размерами и возможностями, все они представляют собой преобразователи кодера-декодера , где кодер обрабатывает входной текст, а декодер генерирует выходной текст.
Эти модели часто различаются по количеству параметров, что указывает на сложность и потенциальную емкость модели. В оригинальной статье [1] сообщалось о следующих 5 моделях:
Свойства T5 [примечание 1]
Имя
Общие параметры
Параметры кодировщика
Параметры декодера
Маленький
76,956,160
35,330,816
41,625,344
6
512
2048
64
8
База
247,577,856
109,628,544
137,949,312
12
768
3072
64
12
Большой
770,567,168
334,939,648
435,627,520
24
1024
4096
64
16
3Б
2,884,497,408
1,240,909,824
1,643,587,584
24
1024
16384
128
32
11Б
11,340,220,416
4,864,791,552
6,475,428,864
24
1024
65536
128
128
*Кодер и декодер имеют одинаковую форму. Так, например, T5-small имеет 6 слоев в кодере и 6 слоев в декодере.
В приведенной выше таблице
: Количество слоев в кодере; также количество слоев в декодере. Они всегда имеют одинаковое количество слоев.
: Количество головок внимания в каждом блоке внимания.
: Размерность векторов внедрения.
: Размерность сети прямой связи в каждом слое кодера и декодера.
: Размерность векторов ключа и значения, используемых в механизме внутреннего внимания.
Обратите внимание, что в отличие от типичных Трансформеров, модели 3B и 11B не удовлетворяют . [6]
По сравнению с оригинальным Transformer, он использует несколько незначительных модификаций: нормализация слоя без аддитивного смещения; размещение нормализации слоя за пределами остаточного пути; относительное позиционное встраивание. [7]
Для всех экспериментов они использовали токенизатор WordPiece с размером словаря 32 000. Токенизатор используется как на входе, так и на выходе каждой модели. Он был обучен на смеси английских , немецких , французских и румынских данных из набора данных C4 в соотношении 10:1:1:1.
Варианты
Несколько последующих моделей использовали архитектуру T5, с нестандартизированными соглашениями об именах, используемыми для их различения. В этом разделе делается попытка собрать основные из них. Исчерпывающий список вариантов, выпущенных Google Brain, находится в репозитории GitHub для T5X. [8]
Некоторые модели обучаются с нуля, а другие обучаются, начиная с предыдущей обученной модели. По умолчанию каждая модель обучается с нуля, если не указано иное.
T5 1.1 small, base, large, XL, XXL: Улучшенные версии оригинальной серии T5. Они имеют примерно одинаковые параметры. Функция активации — GEGLU [9] вместо ReLU. 3B и 11B были изменены на «XL» и «XXL», а их формы изменены: [8] [10] [11]
Свойства T5 v1.1 [примечание 2]
Имя
Общие параметры
Параметры кодировщика
Параметры декодера
Маленький
76,961,152
35,332,800
41,628,352
8
512
1024
64
6
База
247,577,856
109,628,544
137,949,312
12
768
2048
64
12
Большой
783,150,080
341,231,104
441,918,976
24
1024
2816
64
16
XL
2,849,757,184
1,223,527,424
1,626,229,760
24
2048
5120
64
32
XXL
11,135,332,352
4,762,310,656
6,373,021,696
24
4096
10240
64
64
Адаптированная к LM модель T5 (2021): серия моделей (от маленькой до XXL), которая начиналась с контрольных точек серии T5 , но обучалась далее на 100 млрд дополнительных токенов из C4. [12]
Switch Transformer (2021): смешанный вариант T5, в котором слои прямой связи в блоках кодера и декодера заменяются смесью экспертных слоев прямой связи. [13] [14]
T0 3B, 11B (2021): серия моделей, которые начинались с контрольных точек адаптированного к LM T5 и дополнительно обучались выполнять задачи только на основе инструкций по задаче ( нулевой выстрел ). [15] Различные записи в серии используют разные данные тонкой настройки. [16]
ByT5 (2021): версия T5 на уровне байтов, обученная на наборе данных mC4 (многоязычный C4). [17] Работает с текстом, закодированным как байты UTF-8 , без токенизаторов.
Flan-T5-XL (2022): модель, которая началась с контрольной точки T5 XL , а затем была настроена на основе набора данных FLAN. [18] [19] [20] [21]
T5X (2022): переопределение исходной кодовой базы T5 на основе JAX . Это не модель. [22] Исходная кодовая база T5 была реализована в TensorFlow с MeshTF. [2]
UL2 20B (2022): модель с той же архитектурой, что и серия T5 , но масштабированная до 20B и обученная с целью «смесь шумоподавителей» на C4. [23] Она была обучена на кластере TPU случайно, когда учебный прогон был случайно оставлен запущенным на месяц. [24]
Flan-UL2 20B (2022): инструкции UL2 20B , настроенные на наборе данных FLAN. [23] [20]
Pile-T5 (2024): имеет ту же архитектуру, что и T5 , за исключением того, что использует токенизатор Llama . Он был обучен на The Pile . Он был доступен в размерах base, large, XL, XXL. [25]
Приложения
Модель T5 сама по себе является моделью кодера-декодера, что позволяет использовать ее для следования инструкциям. Кодер кодирует инструкцию, а декодер авторегрессивно генерирует ответ.
Кодер T5 может использоваться как текстовый кодер, как и BERT. Он кодирует текст в последовательность векторов действительных чисел, которые могут использоваться для последующих приложений. Например, Google Imagen [26] использует T5-XXL как текстовый кодер, а закодированные текстовые векторы используются как условие для модели диффузии . В качестве другого примера, модель диффузии AuraFlow [27] использует Pile-T5-XL .
Ссылки
^ abc Раффель, Колин; Шазир, Ноам; Робертс, Адам; Ли, Кэтрин; Наранг, Шаран; Матена, Майкл; Чжоу, Яньци; Ли, Вэй; Лю, Питер Дж. (2020). «Изучение пределов трансферного обучения с помощью унифицированного преобразователя текста в текст». Журнал исследований машинного обучения . 21 (140): 1–67. arXiv : 1910.10683 . ISSN 1533-7928.
^ ab google-research/text-to-text-transfer-transformer, Google Research, 2024-08-21 , получено 2024-08-21
^ Васвани, Ашиш; Шазир, Ноам; Пармар, Ники; Ушкорейт, Якоб; Джонс, Лион; Гомес, Эйдан Н; Кайзер, Лукаш; Полосухин, Илья (2017). «Внимание – это все, что вам нужно». Достижения в области нейронных систем обработки информации . 30 . Карран Ассошиэйтс, Инк.
^ Цзян, Юньфан; Гупта, Агрим; Чжан, Цзычэнь; Ван, Гуаньчжи; Доу, Юнцян; Чен, Яньцзюнь; Фей-Фей, Ли; Анандкумар, Анима; Чжу, Юкэ (06 октября 2022 г.). «VIMA: Общие манипуляции с роботами с помощью мультимодальных подсказок». arXiv : 2210.03094 [cs.RO].
^ ab Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). "11.9. Крупномасштабное предварительное обучение с помощью трансформаторов". Погружение в глубокое обучение . Кембридж, Нью-Йорк, Порт Мельбурн, Нью-Дели, Сингапур: Cambridge University Press. ISBN978-1-009-38943-3.
^ Лестер, Брайан; Аль-Рфу, Рами; Констант, Ноа (2021-09-02), Сила масштаба для эффективной настройки параметров , arXiv : 2104.08691
^ Федус, Уильям; Зоф, Баррет; Шазир, Ноам (2022-06-16), Трансформаторы коммутаторов: масштабирование до моделей с триллионом параметров с простой и эффективной разреженностью , arXiv : 2101.03961
^ Longpre, Shayne; Hou, Le; Vu, Tu; Webson, Albert; Chung, Hyung Won; Tay, Yi; Zhou, Denny; Le, Quoc V.; Zoph, Barret; Wei, Jason; Roberts, Adam (2023-07-03). «Коллекция Flan: проектирование данных и методов эффективной настройки инструкций». Труды 40-й Международной конференции по машинному обучению . PMLR: 22631–22648. arXiv : 2301.13688 .
^ ab google-research/FLAN, Google Research, 2024-08-03 , получено 2024-08-05
"T5 release - a google collection". huggingface.co . 2024-07-31 . Получено 2024-10-16 .
Примечания
^
импортировать горелку из трансформаторов импортировать AutoConfig , AutoModelForSeq2SeqLMdef count_parameters ( model ) : enc = sum ( p.numel ( ) для p в model.encoder.parameters ( ) ) dec = sum ( p.numel ( ) для p в model.decoder.parameters ( ) ) total = enc + dec return total , enc , decдля имени в [ "t5-small" , "t5-base" , "t5-large" , "t5-3b" , "t5-11b" ]: print ( f "Model: { name } " ) config = AutoConfig . from_pretrained ( f "google-t5/ { name } " ) torch_dtype = torch . float16модель = AutoModelForSeq2SeqLM.from_config ( config , torch_dtype = torch_dtype )всего , enc , dec = количество_параметров ( модель )print ( f "Общее количество параметров в { name } : { total } " ) print ( f "Общее количество параметров в кодере: { enc } " ) print ( f "Общее количество параметров в декодере: { dec } " )дель модель
^
импортировать горелку из трансформаторов импортировать AutoConfig , AutoModelForSeq2SeqLMdef count_parameters ( model ) : enc = sum ( p.numel ( ) для p в model.encoder.parameters ( ) ) dec = sum ( p.numel ( ) для p в model.decoder.parameters ( ) ) total = enc + dec return total , enc , decдля имени в [ "small" , "base" , "large" , "xl" , "xxl" ]: print ( f "Model: { name } " ) config = AutoConfig . from_pretrained ( f "google/t5-v1_1- { name } " ) torch_dtype = torch . float16модель = AutoModelForSeq2SeqLM.from_config ( config , torch_dtype = torch_dtype )всего , enc , dec = количество_параметров ( модель )print ( f "Общее количество параметров в { name } : { total } " ) print ( f "Общее количество параметров в кодере: { enc } " ) print ( f "Общее количество параметров в декодере: { dec } " )дель модель