T5 (مدل زبان)

ترنسفورمر انتقال متن-به-متن (T5)
نویسنده(های)
اصلی
گوگل ای‌آی
انتشار اولیه۲۳ October ۲۰۱۹ (۲۳ October ۲۰۱۹-خطا: زمان نامعتبر}})
انتشار پایدار
مخزنhttps://github.com/google-research/text-to-text-transfer-transformer
نوع
مجوزپروانه آپاچی ۲٫۰
وبگاه

خانواده T5 که به معنی ترنسفومر انتقال متن-به-متن[الف] است، شامل مجموعه‌ای از مدل‌های زبان بزرگ است که توسط هوش مصنوعی گوگل در سال ۲۰۱۹ منتشر شد..[۱][۲] این مدل‌ها بر پایه معماری ترنسفورمر طراحی شده‌اند و ساختاری رمزگذار-رمزگشا دارند.[۳] در این ساختار، بخش رمزگذار متن ورودی را تحلیل کرده و پردازش می‌کند، در حالی که بخش رمزگشا وظیفه تولید متن خروجی را بر عهده دارد. این طراحی برای حل طیف گسترده‌ای از مسائل پردازش زبان طبیعی (کوته‌نوشت: NLP) با عملکرد بالا توسعه یافته است.

مدل‌های T5 ابتدا با استفاده از مجموعه‌های عظیمی از داده‌های متنی و کد، پیش‌آموزش داده می‌شوند. این فرایند آنها را قادر می‌سازد وظایف مختلف مبتنی بر متن را که مشابه آموزش اولیه‌شان باشد، به‌خوبی انجام دهند. به علاوه، این مدل‌ها انعطاف‌پذیر هستند و می‌توان با تنظیم دقیق آنها، برای وظایف جدید یا متفاوت نیز استفاده کرد. این ویژگی باعث می‌شود که T5 در بسیاری از حوزه‌های پردازش زبان طبیعی کاربرد داشته باشد.

مدل‌های T5 در زمینه‌های مختلفی کاربرد دارند، از جمله طراحی ربات‌های گفتگو، سیستم‌های پیشرفته ترجمه ماشینی، ابزارهای خلاصه‌سازی خودکار متن، تولید کدهای برنامه‌نویسی، و حتی در روباتیک. این تنوع کاربرد به دلیل معماری انعطاف‌پذیر و توانایی بالای این مدل در پردازش زبان طبیعی و درک متن است.[۴]

آموزش دادن

مدل‌های T5 ابتدا بر روی مجموعه داده پیکره متنی خزیده شده و تمیز‌شده عظیم (کوته‌نوشت: C4)، شامل متن و کد جمع‌آوری‌شده از اینترنت، پیش‌آموزش داده شدند. مدل در این فرایند به توانایی درک زبان عمومی و تولید متن را به دست پیدا می‌کند. پس از پیش‌آموزش، مدل‌ها قابل تنظیم برای وظایف خاص هستند، به طوری که می‌توانند دانش آموخته‌شده را برای عملکرد بهتر در برنامه‌های خاص مانند ترجمه، خلاصه‌سازی یا تولید متن تطبیق دهند. این انعطاف‌پذیری، مدل‌های T5 را برای کاربردهای متنوعی مناسب می‌سازد.

مدل‌های T5 برای بسیاری از وظایف پردازش زبان طبیعی در قالبی ساده و یکپارچه طراحی شده‌اند. در این روش، هر وظیفه به صورت <متن ورودی> -> <متن خروجی> فرمول‌بندی شده است. این رویکرد باعث شده تا مدل بتواند با استفاده از یک ساختار مشترک مسائل متنوعی را، از جمله ترجمه، خلاصه‌سازی، و تولید پاسخ برای سوالات حل کند. این قالب متن به متن، قابلیت استفاده و آموزش مدل را بسیار ساده‌تر کرده است.

یک T5 را می‌توان برای کار خلاصه‌سازی به خوبی تنظیم کرد.[۵]

چند نمونه از کاربردها عبارتند از:

  • بازیابی متن خراب: بابت <X> در مهمانی هفته <Y> از شما ممنونم -> <X> پیش <Y> دعوت <Z>، که در آن <Z> به معنای "پایان خروجی" است، و <X> و <Y> نشان دهنده جاهای خالی هستند که در گزارش اصلی "سنتینل" نامیده می‌شوند.
  • ترجمه: عبارت انگلیسی رو به آلمانی ترجمه کن: That is good. و خروجی خواهد بود Das ist gut.
  • قضاوت در مورد مقبولیت دستوری یک جمله (جمله CoLA): The course is jumping well. و نتیجه می‌دهد not acceptable
ساختار رمزگذار-رمزگشا در T5، که ساختار توجه را نیز نشان می‌دهد. در خود توجهی رمزگذار (مربع پایین)، همه نشانه‌های ورودی به یکدیگر توجه می‌کنند. در توجه متقابل رمزگذار-رمزگشا (مستطیل بالایی)، هر نشانه هدف به تمام نشانه‌های ورودی توجه می‌کند. در خودتوجهی رمزگشا (مثلث بالایی)، هر نشانه هدف فقط به نشانه‌های هدف فعلی و گذشته توجه می‌کند.[۵]

ساختار

مجموعه T5 شامل چندین مدل با اندازه‌ها و قابلیت‌های متفاوت است. همه آنها ترانسفورماتورهای رمزگذار-رمزگشا هستند که در آن رمزگذار متن ورودی را پردازش می‌کند و رمزگشا متن خروجی را تولید می‌کند.

این مدل‌ها اغلب با تعداد پارامترهایشان متمایز می‌شوند که نشان دهنده پیچیدگی و ظرفیت بالقوه مدل است. مقاله اصلی [۶] ۵ مدل زیر را گزارش کرد:

مشخصات مدل‌های T5[نکته ۱]
نام مدل کل پارامترها پارامترهای رمزگذار پارامترهای رمزگشا
کوچک 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
3B 2,884,497,408 1,240,909,824 1,643,587,584 24 1024 16384 128 32
11B 11,340,220,416 4,864,791,552 6,475,428,864 24 1024 65536 128 128

در جدول فوق،

  •  : تعداد لایه‌ها در رمزگذار. همچنین تعداد لایه‌ها در رسیور. آنها همیشه تعداد لایه‌های یکسانی دارند.
  •  : تعداد سرهای توجه در هر بلوک توجه.
  •  : ابعاد بردارهای تعبیه شده.
  •  : ابعاد شبکه پیشخور در هر لایه رمزگذار و رمزگشا.
  •  : ابعاد بردارهای کلید و ارزش مورد استفاده در مکانیسم خودتوجهی.

توجه داشته باشید که بر خلاف ترنسفورهای معمولی، مدل‌های 3B و 11B نیاز به رعایت ندارندو

در مقایسه با ترانسفورمر اصلی، از چند تغییر جزئی استفاده می‌کند: نرمال‌سازی لایه‌ها بدون سوگیری افزودنی. قرار دادن نرمال سازی لایه در خارج از مسیر باقیمانده؛ تعبیه موقعیتی نسبی [۷]

برای همه آزمایش‌ها، آنها از توکنایزر وردپیس[ب] با اندازه واژگان ۳۲۰۰۰ استفاده کردند. توکنایزر در ورودی و خروجی هر مدل مشترک است. این توکنایزر بر روی ترکیبی از داده‌های انگلیسی ، آلمانی ، فرانسوی و رومانیایی منشعب شده از مجموعه داده‌های C4 با نسبت ۱۰:۱:۱:۱ آموزش داده شد.

انواع

مدل‌های متنوعی از معماری T5 منشعب شده‌اند که برای متمایز کردن آنها از قراردادهای نامگذاری غیر استاندارد استفاده شد. در این بخش سعی شده است موارد اصلی جمع آوری شود. تعدا بسیار زیادی از انواع مدل‌های منتشر شده توسط گوگل برین در مخزن گیت‌هاب به T5X مربوط می‌شود.[۸]

برخی از مدل‌ها از ابتدا آموزش می‌بینند در حالی که برخی دیگر با ادامه آموزش یک مدل از پیش آموزش‌دیده بدست می‌آیند. به طور پیش فرض، هر مدل از ابتدا آموزش داده می‌شود، مگر اینکه ذکر شده باشد.

  • مدل‌های اصلی (۲۰۱۹): T5 کوچک، پایه، بزرگ، 3B، و 11B.[۱]
  • نسخه‌های بهبود یافته سری اصلی T5 1.1: کوچک، پایه، بزرگ، XL، و XXL. این‌ها پارامترهای تقریباً برابری دارند. ولی در تابع فعال‌سازی آنها به جای ReLU، از GEGLU [۹] استفاده شده است. مدل‌های 3B و 11B به "XL" و "XXL" تغییر یافتند و ساختار آنها تغییر کرد: [۸][۱۰][۱۱]
مشخصات مدل‌های T5 1.1[نکته ۲]
اسم همه پارامترها پارامترهای انکودر پارامترهای دکودر
کوچک 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
3B 2,849,757,184 1,223,527,424 1,626,229,760 24 2048 5120 64 32
11B 11,135,332,352 4,762,310,656 6,373,021,696 24 4096 10240 64 64
  • T5 سازگار با LM (۲۰۲۱): مجموعه‌ای از مدل‌ها (از کوچک تا XXL) که از پست‌های بازرسی سری T5 شروع شدند، اما بیشتر روی 100B توکن اضافی از C4 آموزش دیدند.[۱۲]
  • سوئیچ ترانسفورمر (۲۰۲۱): یک نوع ترکیبی از متخصصان T5، با جایگزینی لایه‌های پیش‌خور در بلوک‌های رمزگذار و رمزگشا با مخلوطی از لایه‌های پیش‌خور خبره.[۱۳][۱۴]
  • T0 3B, 11B (۲۰۲۱): مجموعه‌ای از مدل‌هایی که از پست‌های بازرسی T5 سازگار با LM شروع می‌شوند و برای انجام وظایف فقط بر اساس دستور کار ( نفر شات ) آموزش داده می‌شوند.[۱۵] ورودی‌های مختلف در این سری از داده‌های تنظیم دقیق متفاوتی استفاده می‌کنند.[۱۶]
  • ByT5 (۲۰۲۱): نسخه سطح بایت T5، آموزش داده شده بر روی مجموعه داده mC4 (چند زبانه C4).[۱۷] بر روی متن کدگذاری شده به صورت UTF-8 بایت، بدون توکنایزر عمل می‌کند.
  • Flan-T5-XL (۲۰۲۲): مدلی که با یک ایست بازرسی T5 XL شروع شد و سپس بر روی مجموعه داده FLAN تنظیم شد .[۱۸][۱۹][۲۰][۲۱]
  • T5X (۲۰۲۲): یک پیاده‌سازی مجدد مبتنی بر JAX از پایگاه کد اصلی T5 . مدل نیست .[۲۲] پایگاه کد اصلی T5 در TensorFlow با MeshTF پیاده سازی شد.[۲]
  • UL2 20B (۲۰۲۲): مدلی با معماری مشابه سری T5 ، اما تا 20B مقیاس‌بندی شده و با هدف "مخلوط زدا" در C4 آموزش دیده است.[۲۳] این بر روی یک خوشه TPU به طور تصادفی آموزش داده شد، زمانی که یک دوره آموزشی به طور تصادفی به مدت یک ماه در حال اجرا ماند.[۲۴]
  • Flan-UL2 20B (۲۰۲۲): دستورالعمل UL2 20B بر روی مجموعه داده FLAN تنظیم شده است.[۲۰][۲۳]
  • Pile-T5 (2024): دارای همان معماری T5 است، با این تفاوت که از توکنایزر لاما استفاده می‌کند. در The Pile آموزش داده شد. این در اندازه‌های پایه، بزرگ، XL، XXL عرضه شد.[۲۵]

کاربردها

با توجه به انی که مدل T5 یک مدل رمزگذار-رمزگشا است، این امکان وجود دارد که از آن در کاربردهای پیگیری دستورالعمل استفاده شود. رمزگذار در این مدل دستورالعمل را رمزگذاری می‌کند و رمزگشا به صورت خودکار پاسخ را تولید می‌کند.

رمزگذار T5 را می‌توان به عنوان رمزگذار متن استفاده کرد، مانند برت. این یک متن را به دنباله ای از بردارهای اعداد واقعی رمزگذاری می‌کند، که می‌تواند برای برنامه‌های کاربردی پایین دست استفاده شود. برای مثال، Google Imagen [۲۶] از T5-XXL به عنوان رمزگذار متن استفاده می‌کند، و بردارهای متن کدگذاری‌شده به عنوان شرطی‌سازی در مدل انتشار استفاده می‌شوند. به عنوان مثال دیگر، مدل انتشار AuraFlow [۲۷] از Pile-T5-XL استفاده می‌کند.

یادداشت‌ها

  1. Text-to-Text Transfer Transformer
  2. WordPiece

مراجع

  1. 1 2 Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (2020). "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer". Journal of Machine Learning Research. 21 (140): 1–67. arXiv:1910.10683. ISSN 1533-7928.
  2. 1 2 google-research/text-to-text-transfer-transformer, Google Research, 2024-08-21, retrieved 2024-08-21
  3. Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N; Kaiser, Łukasz; Polosukhin, Illia (2017). "Attention is All you Need". Advances in Neural Information Processing Systems. Curran Associates, Inc. 30.
  4. Jiang, Yunfan; Gupta, Agrim; Zhang, Zichen; Wang, Guanzhi; Dou, Yongqiang; Chen, Yanjun; Fei-Fei, Li; Anandkumar, Anima; Zhu, Yuke (2022-10-06). "VIMA: General Robot Manipulation with Multimodal Prompts" (به انگلیسی). arXiv:2210.03094 [cs.RO].
  5. 1 2 {{cite book}}: Empty citation (help)
  6. Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (2020). "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer". Journal of Machine Learning Research. 21 (140): 1–67. arXiv:1910.10683. ISSN 1533-7928.
  7. Shaw, Peter; Uszkoreit, Jakob; Vaswani, Ashish (2018-04-12), Self-Attention with Relative Position Representations, arXiv:1803.02155
  8. 1 2 "t5x/docs/models.md at main · google-research/t5x". GitHub (به انگلیسی). Retrieved 2024-08-05.
  9. خطای یادکرد: برچسب <ref> غیرمجاز؛ یادکردهای بدون محتوا باید نام داشته باشند. ().
  10. خطای یادکرد: برچسب <ref> غیرمجاز؛ یادکردهای بدون محتوا باید نام داشته باشند. ().
  11. "config.json · google/t5-v1_1-xxl at main". huggingface.co. 2020-11-19. Retrieved 2024-09-17.
  12. Lester, Brian; Al-Rfou, Rami; Constant, Noah (2021-09-02), The Power of Scale for Parameter-Efficient Prompt Tuning, arXiv:2104.08691
  13. Fedus, William; Zoph, Barret; Shazeer, Noam (2022-06-16), Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity, arXiv:2101.03961
  14. "SwitchTransformers". huggingface.co. Retrieved 2024-08-05.
  15. Sanh, Victor; Webson, Albert; Raffel, Colin; Bach, Stephen H.; Sutawika, Lintang; Alyafeai, Zaid; Chaffin, Antoine; Stiegler, Arnaud; Scao, Teven Le (2022-03-17), Multitask Prompted Training Enables Zero-Shot Task Generalization, arXiv:2110.08207
  16. "bigscience/T0 · Hugging Face". huggingface.co. 2024-03-04. Retrieved 2024-08-21.
  17. Xue, Linting; Barua, Aditya; Constant, Noah; Al-Rfou, Rami; Narang, Sharan; Kale, Mihir; Roberts, Adam; Raffel, Colin (2022-03-25). "ByT5: Towards a Token-Free Future with Pre-trained Byte-to-Byte Models". Transactions of the Association for Computational Linguistics (به انگلیسی). 10: 291–306. arXiv:2105.13626. doi:10.1162/tacl_a_00461. ISSN 2307-387X.
  18. Chung, Hyung Won; Hou, Le; Longpre, Shayne; Zoph, Barret; Tay, Yi; Fedus, William; Li, Yunxuan; Wang, Xuezhi; Dehghani, Mostafa (2024). "Scaling Instruction-Finetuned Language Models". Journal of Machine Learning Research. 25 (70): 1–53. arXiv:2210.11416. ISSN 1533-7928.
  19. Longpre, Shayne; Hou, Le; Vu, Tu; Webson, Albert; Chung, Hyung Won; Tay, Yi; Zhou, Denny; Le, Quoc V.; Zoph, Barret (2023-07-03). "The Flan Collection: Designing Data and Methods for Effective Instruction Tuning". Proceedings of the 40th International Conference on Machine Learning (به انگلیسی). PMLR: 22631–22648. arXiv:2301.13688.
  20. 1 2 google-research/FLAN, Google Research, 2024-08-03, retrieved 2024-08-05
  21. "google/flan-t5-xl · Hugging Face". huggingface.co. 2024-01-04. Retrieved 2024-08-05.
  22. Roberts, Adam; Chung, Hyung Won; Mishra, Gaurav; Levskaya, Anselm; Bradbury, James; Andor, Daniel; Narang, Sharan; Lester, Brian; Gaffney, Colin (2023). "Scaling Up Models and Data with t5x and seqio". Journal of Machine Learning Research. 24 (377): 1–8. ISSN 1533-7928.
  23. 1 2 Tay, Yi; Dehghani, Mostafa; Tran, Vinh Q.; Garcia, Xavier; Wei, Jason; Wang, Xuezhi; Chung, Hyung Won; Shakeri, Siamak; Bahri, Dara (2023-02-28), UL2: Unifying Language Learning Paradigms, arXiv:2205.05131
  24. "Training great LLMs entirely from ground up in the wilderness as a startup". Yi Tay (به انگلیسی). Retrieved 2024-10-18.
  25. Sutawika, Lintang; Komatsuzaki, Aran; Raffel, Colin (2024-04-15). "Pile-T5". EleutherAI Blog (به انگلیسی). Retrieved 2024-05-05.
  26. "Imagen: Text-to-Image Diffusion Models". imagen.research.google. Retrieved 2024-08-23.
  27. "AuraFlow". huggingface.co. Retrieved 2024-08-23.

نکات

    1. import torch
      from transformers import AutoConfig, AutoModelForSeq2SeqLM
      
      def count_parameters(model):
          enc = sum(p.numel() for p in model.encoder.parameters())
          dec = sum(p.numel() for p in model.decoder.parameters())
          total = enc + dec
          return total, enc, dec
      
      for name in ["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
      
          model = AutoModelForSeq2SeqLM.from_config(config,
                                                    torch_dtype=torch_dtype)
      
          total, enc, dec = count_parameters(model)
      
          print(f"Total number of parameters in {name}: {total}")
          print(f"Total number of parameters in encoder: {enc}")
          print(f"Total number of parameters in decoder: {dec}")
      
          del model
      
    2. import torch
      from transformers import AutoConfig, AutoModelForSeq2SeqLM
      
      def count_parameters(model):
          enc = sum(p.numel() for p in model.encoder.parameters())
          dec = sum(p.numel() for p in model.decoder.parameters())
          total = enc + dec
          return total, enc, dec
      
      for name in ["small", "base", "large", "xl", "xxl"]:
          print(f"Model: {name}")
          config = AutoConfig.from_pretrained(f"google/t5-v1_1-{name}")
          torch_dtype = torch.float16
      
          model = AutoModelForSeq2SeqLM.from_config(config,
                                                    torch_dtype=torch_dtype)
      
          total, enc, dec = count_parameters(model)
      
          print(f"Total number of parameters in {name}: {total}")
          print(f"Total number of parameters in encoder: {enc}")
          print(f"Total number of parameters in decoder: {dec}")
      
          del model
      
    خطای یادکرد: خطای یادکرد: برچسب <ref> برای گروهی به نام «نکته» وجود دارد، اما برچسب <references group="نکته"/> متناظر پیدا نشد. ().