آموزش‌های پیشرفته هوش مصنوعی

آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس ؛ مدل ها (قسمت سوم فصل دوم)

ساخت و استفاده از مدل در این بخش به طور جامع توضیح داده خواهد شد. در این راستا، از کلاس TFAutoModel استفاده خواهیم کرد. هر گاه تصمیم به نمایش یک مدل از چک‌پوینت موجود داشته باشید، کلاس فوق می‌تواند مفید واقع شود. اگر با نوع مدلی که قصد استفاده از آن را دارید ب…

5 دقیقه مطالعه
  • پشتیبانی شبکه
  • مدل
  • استفاده
  • کار
  • آموزش
  • چک‌پوینت
  • config
  • باید
آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس ؛ مدل ها (قسمت سوم فصل دوم)

خلاصه تحلیلی خبر

ساخت و استفاده از مدل در این بخش به طور جامع توضیح داده خواهد شد. در این راستا، از کلاس TFAutoModel استفاده خواهیم کرد. هر گاه تصمیم به نمایش یک مدل از چک‌پوینت موجود داشته باشید، کلاس فوق می‌تواند مفید واقع شود. اگر با نوع مدلی که قصد استفاده از آن را دارید ب…

موضوعات اصلی: پشتیبانی شبکه، مدل، استفاده، کار، آموزش، چک‌پوینت

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

ایجاد ترنسفورمر

اولین اقدام برای راه‌اندازی مد‌‌‌‌‌ل برت این است که یک شیء ازکانفیگconfiguration objectبارگذاری کنیم

from transformers import BertConfig, TFBertModel # Building the config config = BertConfig() # Building the model from the config model = TFBertModel(config)

این کانفیگ حاوی ویژگی‌های بسیاری است که برای ساخت مد‌‌‌‌‌‌‌ل استفاده می‌شوند

print(config)

.

BertConfig { [...] "hidden_size": 768, "intermediate_size": 3072, "max_position_embeddings": 512, "num_attention_heads": 12, "num_hidden_layers": 12, [...] }

چون تا بدین‌جای کار نمی‌دانید که این ویژگی‌ها چه کارکردی دارند، باید برخی از آنها را بشناسید. ویژگی «hidden_size» اندازه بردار «hidden_states» را تعریف می‌کند، اما «num_hidden_layers» تعداد لایه‌های مد‌‌‌‌‌‌‌ل ترنسفورمر را تعریف می‌کند.

[irp posts=”20237″]

روش‌های بارگذاری مختلف

ساخت مد‌‌‌‌‌‌‌ل از پیکربندی پیش‌فرض آن را با مقادیر تصادفی راه می‌اندازد

from transformers import BertConfig, TFBertModel config = BertConfig() model = TFBertModel(config) # Model is randomly initialized!

مد‌‌‌‌‌‌‌‌ل می‌تواند در این حالت استفاده شود، اما خروجی مناسبی نخواهد داشت. در ابتدا باید آموزش‌های لازم را ببیند. امکان آموزش مدل از همان نقطه‌ی اول نیز وجود دارد. اما آن‌طور که در فصل اول ملاحظه کردید (لینک دسترسی به همه قسمت‌های این دوره آموزشی در انتهای مطلب قرار دارد)، این کار به زمان و داده‌های بسیاری نیاز دارد. برای اینکه از کارهای تکراری و غیرضروری پرهیز کنیم، باید مدل‌های آموزش دیده را به اشتراک گذاشته و مجدداً از آنها استفاده کنیم. بارگذاری مدل ترنسفورمری که از پیش آموزش دیده، کار آسانی است. این کار با روشfrom_pretrainedقابل انجام است

from transformers import TFBertModel model = TFBertModel.from_pretrained("bert-base-cased")

همان‌طور که پیشتر مشاهده کردید، امکان جایگزین‌سازیTFBertModelبا کلاسTFAutoModelوجود دارد. از این به بعد باید این اقدام را در دستور کارمان قرار دهیم. اگر کدتان برای یک چک‌پوینت در نظر گرفته شده است، باید با چک‌پوینت دیگر نیز بدون مشکل عمل کند. حتی در صورتی که معماری متفاوت باشد، این عمل موثر واقع می‌شود (البته در صورتی که چک‌پوینت برای کار مشابهی آموزش دیده باشد؛ مثلاً عمل تحلیل احساسات).

در نمونه کد بالا، ازBertConfigاستفاده نشد؛ بلکه یک مدلِ از پیش آموزش یافته با استفاده ازbert-base-casedبارگذاری شد. این یک چک‌پوینت نمونه است که به دست نویسندگان برت آموزش یافته است. جزئیات بیشتر درکارت مدلقرار داده شده است. این مدل با تمامی وزن‌های چک‌پوینت به اجرا درمی‌آید و امکان استفاده مستقیم از آن برای نتیجه‌گیری وجود دارد. همچنین، در کارهای جدید نیز به طوردقیق تنظیمFine-tuneمی‌شود. زمانی می‌توان به نتایج خوبی دست پیدا کرد که از وزن‌هایِ از پیش آموزش یافته برای پیاده‌سازی عمل آموزش استفاده کنیم.

وزن‌ها دانلود شده و در پوشه «cache» ذخیره شده‌اند. می‌توانید پوشه اختصاصی خودتان را با تنظیم متغیر محیطHF_HOMEایجاد کنید. نام استفاده شده برای بارگذاری مدل می‌تواند نام هر مدلی در Model Hub باشد؛ به شرطی که با معماری برت سازگار باشد. کل لیست چک‌پوینت‌های برت در اینلینکقرار داده شده است.

روش‌های ذخیره‌سازی

ذخیره‌سازی مدل نیز مثل بارگذاری آن ساده است. باید از روشsave_pretrainedبرای انجام این کار استفاده کرد که شباهت بسیاری به روشfrom_pretrainedدارد

model.save_pretrained("directory_on_my_computer")

این کار باعث ذخیره‌سازی دو فایل در دیسک می‌شود

ls directory_on_my_computer config.json tf_model.h5

اگر به فایلconfig.jsonنگاه کنید، با ویژگی‌های لازم برای ساخت معماری مدل آشنا خواهید شد. این فایل حاوی متاداده نیز می‌باشد؛ برای نمونه، منشاء چک‌پوینت و نسخه ترنسفورمر مورد استفاده در هنگام ذخیره چک‌پوینت آخر از جمله این داده‌ها هستند. فایلtf_model.h5با عنوانstate dictionaryشناخته می‌شود و دربرگیرنده‌ی کلیه وزن‌های مدل است. این دو فایل بارها و بارها به کار برده می‌شوند. این نوع پیکربندی برای شناخت معماری مدل ضروری است، اما وزن‌های مدل پارامترهای مدل شما هستند.

استفاده از مدل ترنسفورمر برای استنباط

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

sequences = [ "Hello!", "Cool.", "Nice!" ]

توکن‌کننده اینها را به شاخص‌های واژگانی تبدیل می‌کند که معمولاًinput Idsنام دارند. هر توالی لیستی از اعداد است. خروجی نهایی به ترتیب زیر است

encoded_sequences = [ [ 101, 7592, 999, 102], [ 101, 4658, 1012, 102], [ 101, 3835, 999, 102] ]

لیستی از توالی‌های رمزگذاری شده در زیر آورده شده است. تنسورها فقط اَشکال مستطیلی (ماتریسی فکر کنید!) را می‌پذیرند. آرایه بالا شکل مستطیلی دارد؛ بنابراین، تبدیل آن به تنسور کار آسانی است

import tensorflow as tf model_inputs = tf.constant(encoded_sequences)

استفاده از تنسورها به عنوان ورودی مدل

تنسورها به آسانی در مدل‌ها به کار برده می‌شوند. مدل با ورودی‌های آن فراخوانی می‌شود

output = model(model_inputs)

مدل پذیرایِ آرگومان‌های بسیار متفاوتی است، اما فقط input IDها ضرورت دارند. در فصول بعد به توضیح کارکرد سایر آرگومان‌ها و زمان نیاز به آنها خواهیم پرداخت. اما در ابتدا باید نگاه دقیق‌تری به توکن‌کننده‌ها بیندازیم.

از طریق لینک زیر می‌توانید به قسمت‌های دیگر دوره آموزشی پردازش زبان طبیعی دسترسی داشته باشید

[button href=”https://XNET.com/%D8%B1%D8%B3%D8%A7%D9%86%D9%87-%D9%87%D8%A7/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B7%D8%A8%DB%8C%D8%B9%DB%8C/” type=”btn-default” size=”btn-lg”]آموزش پردازش زبان طبیعی[/button]

برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.