اخیراً پیشرفتهای زیادی در حوزه NLP صورت گرفته است. مدل های از پیش آموزش دیده و خدمات کاملاً مدیریت شده NLP دسترسی و پذیرش NLP را دموکراتیک کرده است. درک آمازون یک سرویس کاملاً مدیریت شده است که می تواند وظایف NLP مانند شناسایی موجودیت سفارشی، مدل سازی موضوع، تجزیه و تحلیل احساسات و موارد دیگر را برای استخراج بینش از داده ها بدون نیاز به تجربه قبلی ML انجام دهد.
سال گذشته، AWS یک را اعلام کرد مشارکت با در آغوش کشیدن صورت برای کمک به تولید سریعتر مدلهای پردازش زبان طبیعی (NLP). Hugging Face یک جامعه هوش مصنوعی منبع باز است که بر NLP متمرکز شده است. کتابخانه مبتنی بر پایتون آنها (ترانسفورماتور) ابزارهایی را برای استفاده آسان از معماری های پیشرفته ترانسفورماتور مانند BERT، RoBERTa و GPT فراهم می کند. میتوانید این مدلها را برای انواع وظایف NLP، مانند طبقهبندی متن، استخراج اطلاعات و پاسخگویی به سؤال، اعمال کنید. دیگران.
آمازون SageMaker یک سرویس کاملاً مدیریت شده است که به توسعه دهندگان و دانشمندان داده توانایی ساخت، آموزش و استقرار سریع مدل های یادگیری ماشین (ML) را می دهد. SageMaker بار سنگین را از هر مرحله از فرآیند ML حذف می کند و توسعه مدل های با کیفیت بالا را آسان تر می کند. SageMaker Python SDK APIها و کانتینرهای منبع باز را برای آموزش و استقرار مدل ها در SageMaker با استفاده از چندین چارچوب مختلف ML و یادگیری عمیق ارائه می دهد.
ادغام Hugging Face با SageMaker به شما این امکان را می دهد که مدل های Hugging Face را در مقیاس در موارد استفاده خاص دامنه خود بسازید.
در این پست، نمونهای از نحوه ساخت و استقرار خلاصهکننده متن Hugging Face سفارشی در SageMaker را به شما آموزش میدهیم. ما از Pegasus [1] برای این منظور استفاده می کنیم، اولین مدل مبتنی بر ترانسفورماتور که به طور خاص بر روی یک هدف طراحی شده برای خلاصه سازی متن انتزاعی از قبل آموزش داده شده است. BERT از قبل در مورد پنهان کردن کلمات تصادفی در یک جمله آموزش دیده است. در مقابل، در طول آموزش پگاسوس، جملات از یک سند ورودی پوشانده می شوند. سپس مدل جملات گمشده را به عنوان یک توالی خروجی واحد با استفاده از تمام جملات بدون نقاب به عنوان زمینه تولید می کند و در نتیجه یک خلاصه اجرایی از سند ایجاد می کند.
به لطف انعطاف پذیری کتابخانه HuggingFace، می توانید به راحتی کد نشان داده شده در این پست را برای انواع دیگر مدل های ترانسفورماتور مانند t5، BART و غیره تطبیق دهید.
مجموعه داده های خود را برای تنظیم دقیق مدل Hagging Face بارگیری کنید
برای بارگذاری یک مجموعه داده سفارشی از یک فایل CSV، از load_dataset
روش از بسته ترانسفورماتور. با استفاده از datasets.Dataset.map
تابع. map
تابع روی مجموعه داده بارگذاری شده تکرار می شود و تابع tokenize را برای هر مثال اعمال می کند. سپس مجموعه داده توکن شده می تواند برای تنظیم دقیق مدل به مربی ارسال شود. کد زیر را ببینید:
اسکریپت آموزشی خود را برای برآوردگر Hugging Face SageMaker بسازید
همانطور که در پست توضیح داده شده است AWS و Hugging Face برای سادهسازی و تسریع پذیرش مدلهای پردازش زبان طبیعی با یکدیگر همکاری میکنند.، آموزش مدل صورت در آغوش گرفته در SageMaker هرگز آسانتر نبوده است. ما می توانیم این کار را با استفاده از تخمینگر Hugging Face از SageMaker SDK.
قطعه کد زیر Pegasus را در مجموعه داده ما به خوبی تنظیم می کند. شما همچنین می توانید بسیاری را پیدا کنید نمونه دفترچه یادداشت که شما را از طریق تنظیم دقیق انواع مدل ها، که مستقیماً در مخزن ترانسفورماتور GitHub در دسترس هستند، راهنمایی می کند. برای فعال کردن آموزش توزیع شده، می توانیم از کتابخانه موازی داده ها در SageMaker، که در HuggingFace Trainer API تعبیه شده است. برای فعال کردن موازی سازی داده ها، باید آن را تعریف کنیم distribution
پارامتر در برآوردگر صورت در آغوش گرفتن ما.
حداکثر اندازه دسته آموزشی که می توانید پیکربندی کنید به اندازه مدل و حافظه GPU نمونه مورد استفاده بستگی دارد. اگر آموزش توزیع شده SageMaker فعال باشد، اندازه کل دسته جمع هر دسته ای است که در هر دستگاه/GPU توزیع شده است. اگر از ml.g4dn.16xlarge با آموزش توزیع شده به جای نمونه ml.g4dn.xlarge استفاده کنیم، هشت برابر (8 GPU) به اندازه یک نمونه ml.g4dn.xlarge (1 GPU) حافظه داریم. اندازه دسته در هر دستگاه ثابت می ماند، اما هشت دستگاه به طور موازی در حال آموزش هستند.
طبق معمول با SageMaker، a ایجاد می کنیم train.py
اسکریپت برای استفاده با حالت اسکریپت و عبور ابرپارامترها برای آموزش. قطعه کد زیر برای Pegasus مدل را بارگذاری می کند و با استفاده از Transformers آن را آموزش می دهد Trainer
کلاس:
کد کامل در دسترس است GitHub.
مدل آموزش دیده Hugging Face را در SageMaker مستقر کنید
دوستان ما در Hugging Face به لطف SageMaker Hugging Face Inference Toolkit. شما می توانید به سادگی با تنظیم متغیر محیطی، مدل آموزش دیده قبلی را مستقیماً مستقر کنید "HF_TASK":"summarization"
(برای دستورالعمل، نگاه کنید مدل های پگاسوس) انتخاب کنید گسترش، و سپس انتخاب کنید آمازون SageMaker، بدون نیاز به نوشتن اسکریپت استنتاج.
با این حال، اگر به روش خاصی برای تولید یا پسفرایند پیشبینی نیاز دارید، برای مثال ایجاد چند پیشنهاد خلاصه بر اساس فهرستی از پارامترهای مختلف تولید متن، نوشتن اسکریپت استنتاج خود میتواند مفید و نسبتاً ساده باشد:
همانطور که در کد قبلی نشان داده شده است، چنین اسکریپت استنتاجی برای HuggingFace در SageMaker فقط به توابع الگوی زیر نیاز دارد:
- model_fn() – محتوای آنچه را که در پایان کار آموزشی ذخیره شده است در داخل می خواند
SM_MODEL_DIR
، یا از دایرکتوری وزن مدل موجود که به عنوان فایل tar.gz در آن ذخیره شده است سرویس ذخیره سازی ساده آمازون (Amazon S3). برای بارگذاری مدل آموزش دیده و توکنایزر مرتبط استفاده می شود. - input_fn() - داده های دریافتی از درخواستی که به نقطه پایانی ارسال شده است را قالب بندی می کند.
- predict_fn() – خروجی را فراخوانی می کند
model_fn()
(مدل و نشانه ساز) برای اجرای استنتاج بر روی خروجیinput_fn()
(داده های فرمت شده).
به صورت اختیاری، می توانید یک output_fn()
تابع برای قالب بندی استنتاج، با استفاده از خروجی predict_fn()
، که در این پست نشان ندادیم.
سپس می توانیم مدل آموزش دیده Hugging Face را به همراه اسکریپت استنتاج مرتبط با SageMaker با استفاده از مدل SageMaker صورت در آغوش گرفته کلاس:
مدل مستقر شده را تست کنید
برای این نسخه ی نمایشی، ما مدل را بر روی آن آموزش دادیم مجموعه دادههای بررسی لباسهای تجارت الکترونیک زنان، که شامل بررسی مقالات لباس (که ما آنها را به عنوان متن ورودی در نظر می گیریم) و عناوین مرتبط با آنها (که به عنوان خلاصه در نظر می گیریم) است. پس از حذف مقالات با عنوان مفقود، مجموعه داده شامل 19,675 بررسی است. تنظیم دقیق مدل Pegasus در مجموعه آموزشی حاوی 70 درصد از آن مقالات برای پنج دوره تقریباً 3.5 ساعت در یک نمونه ml.p3.16xlarge طول کشید.
سپس میتوانیم مدل را مستقر کرده و آن را با دادههای نمونه از مجموعه آزمایشی آزمایش کنیم. در زیر نمونه ای از بررسی برای توصیف یک ژاکت است:
به لطف اسکریپت استنتاج سفارشی ما که در یک نقطه پایانی SageMaker میزبانی شده است، میتوانیم چندین خلاصه برای این بررسی با پارامترهای مختلف تولید متن ایجاد کنیم. به عنوان مثال، میتوانیم از نقطه پایانی بخواهیم که محدودهای از خلاصههای بسیار کوتاه تا نسبتاً طولانی را ایجاد کند که جریمههای طول متفاوتی را مشخص میکند (هرچه جریمه طول کمتر باشد، خلاصه تولید شده کوتاهتر است). در زیر برخی از نمونه های ورودی پارامتر و خلاصه های بعدی تولید شده توسط ماشین آورده شده است:
کدام خلاصه را ترجیح می دهید؟ اولین عنوان تولید شده تمام حقایق مهم در مورد بررسی را با یک چهارم تعداد کلمات به تصویر می کشد. در مقابل، آخرین مورد فقط از سه کلمه (کمتر از 1/10 طول بررسی اصلی) برای تمرکز بر مهمترین ویژگی ژاکت استفاده می کند.
نتیجه
میتوانید یک خلاصهکننده متن را روی مجموعه دادههای سفارشی خود تنظیم کنید و آن را برای تولید در SageMaker با این مثال ساده در دسترس قرار دهید GitHub. اضافی نمونه دفترچه یادداشت برای آموزش و استقرار مدل های Hugging Face در SageMaker نیز موجود است.
مثل همیشه، AWS از بازخورد استقبال می کند. لطفا هرگونه نظر یا سوالی را مطرح کنید.
منابع
[1] پگاسوس: پیش تمرینی با جملات شکاف استخراج شده برای خلاصه سازی انتزاعی
درباره نویسندگان
ویکتور مالسویچ یک مهندس یادگیری ماشین با خدمات حرفه ای AWS، علاقه مند به پردازش زبان طبیعی و MLO ها است. او با مشتریان همکاری می کند تا مدل های یادگیری عمیق چالش برانگیز را در AWS تولید کند. او در اوقات فراغت خود از اشتراک یک لیوان شراب قرمز و مقداری پنیر با دوستانش لذت می برد.
آمنه نجمی یک دانشمند داده با خدمات حرفه ای AWS است. او مشتاق کمک به مشتریان برای نوآوری با فناوریهای کلان داده و هوش مصنوعی است تا از ارزش تجاری و بینش دادهها بهره ببرند. او در اوقات فراغت خود از باغبانی و سفر به مکان های جدید لذت می برد.