در بسیاری از موارد استفاده، شناسایی متن بازنویسی شده دارای ارزش تجاری است. به عنوان مثال، با شناسایی جملات، یک سیستم خلاصه سازی متن می تواند اطلاعات اضافی را حذف کند. کاربرد دیگر شناسایی اسناد سرقت شده است. در این پست، a در آغوش کشیدن صورت ترانسفورماتور روشن آمازون SageMaker برای شناسایی جفت جملات بازنویسی شده در چند مرحله.
یک مدل واقعاً قوی می تواند متن بازنویسی شده را زمانی که زبان مورد استفاده کاملاً متفاوت است شناسایی کند، و همچنین زمانی که زبان مورد استفاده دارای همپوشانی واژگانی بالایی باشد، تفاوت ها را شناسایی کند. در این پست، ما بر روی جنبه دوم تمرکز می کنیم. به طور خاص، ما به این نگاه میکنیم که آیا میتوانیم مدلی تربیت کنیم که بتواند تفاوت بین دو جمله را که دارای همپوشانی واژگانی بالا و معانی بسیار متفاوت یا متضاد هستند، تشخیص دهد. به عنوان مثال، جملات زیر دقیقاً همان کلمات اما معانی متضاد دارند:
- از نیویورک به پاریس پرواز کردم
- از پاریس به نیویورک پرواز کردم
بررسی اجمالی راه حل
ما شما را از طریق مراحل سطح بالا زیر راهنمایی می کنیم:
- محیط را تنظیم کنید.
- داده ها را آماده کنید.
- توکن کردن مجموعه داده
- مدل را دقیق تنظیم کنید.
- مدل را مستقر کرده و استنتاج انجام دهید.
- ارزیابی عملکرد مدل
اگر میخواهید از تنظیم محیط صرفنظر کنید، میتوانید از نوت بوک زیر استفاده کنید GitHub و کد را در SageMaker اجرا کنید.
Hugging Face و AWS در اوایل سال 2022 شراکتی را اعلام کردند که آموزش مدلهای Hugging Face را در SageMaker آسانتر میکند. این قابلیت از طریق توسعه Hugging Face در دسترس است ظروف یادگیری عمیق AWS (DLC). این ظروف شامل Hugging Face Transformers، Tokenizers و کتابخانه Datasets است که به ما امکان می دهد از این منابع برای کارهای آموزشی و استنتاج استفاده کنیم. برای لیستی از تصاویر DLC موجود، نگاه کنید تصاویر ظروف یادگیری عمیق موجود. آنها نگهداری می شوند و به طور منظم با وصله های امنیتی به روز می شوند. شما می توانید نمونه های زیادی از نحوه آموزش مدل های Hugging Face را با این DLC ها و آن ها پیدا کنید SDK پایتون در آغوش گرفتن صورت در زیر است GitHub repo.
مجموعه داده PAWS
با درک فقدان مجموعه دادههای جفت جمله کارآمد که همپوشانی واژگانی بالایی از خود نشان میدهند بدون اینکه نقل قول شوند، نسخه اصلی پنجه مجموعه داده منتشر شده در سال 2019 با هدف ارائه منبع جدیدی به جامعه پردازش زبان طبیعی (NLP) برای آموزش و ارزیابی مدلهای تشخیص بازنویسی انجام شد. جفتهای جمله PAWS در دو مرحله با استفاده از آن تولید میشوند ویکیپدیا و جفت سوال Quora مجموعه داده (QQP). یک مدل زبان ابتدا کلمات را در یک جفت جمله با همان کیسه کلمات (BOW) تعویض می کند تا یک جفت جمله ایجاد کند. سپس یک مرحله ترجمه برگشتی، جملاتی با همپوشانی BOW زیاد اما با استفاده از ترتیب کلمات متفاوت ایجاد می کند. مجموعه داده نهایی PAWS در مجموع شامل 108,000 جفت برچسب شده توسط انسان و 656,000 جفت برچسب دار با نویز است.
در این پست از PAWS-Wiki Labeled (نهایی) مجموعه داده از صورت در آغوش گرفتن. Hugging Face قبلاً تقسیم داده ها را برای ما انجام داده است که منجر به 49,000 جفت جمله در مجموعه داده آموزشی و 8,000 جفت جمله برای مجموعه داده های اعتبارسنجی و آزمایش می شود. دو مثال جفت جمله از مجموعه داده آموزشی در مثال زیر نشان داده شده است. برچسب 1 نشان می دهد که این دو جمله جملاتی از یکدیگر هستند.
جمله 1 | جمله 2 | برچسب |
اگرچه قابل تعویض است، اما قطعات بدنه روی 2 خودرو مشابه نیستند. | اگرچه مشابه است، اما قطعات بدنه در این 2 خودرو قابل تعویض نیستند. | 0 |
کاتز در سال 1947 در سوئد متولد شد و در سن 1 سالگی به شهر نیویورک نقل مکان کرد. | کاتز در سال 1947 در سوئد به دنیا آمد و در یک سالگی به نیویورک نقل مکان کرد. | 1 |
پیش نیازها
شما باید پیش نیازهای زیر را تکمیل کنید:
- اگر حساب AWS ندارید، ثبت نام کنید. برای اطلاعات بیشتر ببین پیش نیازهای Amazon SageMaker را تنظیم کنید.
- شروع به استفاده کنید نمونه های نوت بوک SageMaker.
- سمت راست را تنظیم کنید هویت AWS و مدیریت دسترسی مجوزهای (IAM). برای اطلاعات بیشتر ببین نقش های SageMaker.
محیط را تنظیم کنید
قبل از شروع بررسی و آماده سازی داده های خود برای تنظیم دقیق مدل، باید محیط خود را تنظیم کنیم. بیایید با چرخاندن یک نمونه نوت بوک SageMaker شروع کنیم. یک منطقه AWS را در حساب AWS خود انتخاب کنید و دستورالعملها را دنبال کنید یک نمونه نوت بوک SageMaker ایجاد کنید. چرخش نمونه نوت بوک ممکن است چند دقیقه طول بکشد.
هنگامی که نمونه نوت بوک در حال اجرا است، را انتخاب کنید conda_pytorch_p38
به عنوان نوع هسته شما. برای استفاده از مجموعه داده Hugging Face، ابتدا باید کتابخانه Hugging Face را نصب و وارد کنیم:
بعد، بیایید یک جلسه SageMaker ایجاد کنیم. ما از پیش فرض استفاده می کنیم سرویس ذخیره سازی ساده آمازون سطل (Amazon S3) مرتبط با جلسه SageMaker برای ذخیره مجموعه داده PAWS و مصنوعات مدل:
داده ها را آماده کنید
ما می توانیم نسخه Hugging Face مجموعه داده PAWS را با آن بارگذاری کنیم load_dataset()
فرمان این فراخوان اسکریپت پردازش PAWS Python را از مخزن Hugging Face GitHub دانلود و وارد میکند، که سپس مجموعه داده PAWS را از URL اصلی ذخیره شده در اسکریپت دانلود میکند و دادهها را بهعنوان یک جدول Arrow در درایو ذخیره میکند. کد زیر را ببینید:
قبل از شروع به تنظیم دقیق مدل BERT از پیش آموزش دیده، اجازه دهید به توزیع کلاس هدف خود نگاه کنیم. برای مورد استفاده ما، مجموعه داده PAWS دارای برچسب های باینری است (0 نشان می دهد جفت جمله یک نقل قول نیست و 1 نشان می دهد که هست). بیایید یک نمودار ستونی برای مشاهده توزیع کلاس ایجاد کنیم، همانطور که در کد زیر نشان داده شده است. می بینیم که در مجموعه آموزشی ما یک مشکل جزئی عدم تعادل کلاسی وجود دارد (56٪ نمونه منفی در مقابل 44٪ نمونه مثبت). با این حال، عدم تعادل به اندازه کافی کوچک است تا از به کارگیری تکنیک های کاهش عدم تعادل طبقاتی اجتناب شود.
توکن کردن مجموعه داده
قبل از اینکه بتوانیم تنظیم دقیق را شروع کنیم، باید مجموعه داده خود را نشانه گذاری کنیم. به عنوان نقطه شروع، فرض کنید میخواهیم آن را تنظیم و ارزیابی کنیم roberta-base
تبدیل کننده. انتخاب کردیم roberta-base
زیرا این یک ترانسفورماتور همه منظوره است که از قبل روی مجموعه بزرگی از داده های انگلیسی آموزش داده شده است و اغلب عملکرد بالایی در انواع وظایف NLP نشان داده است. این مدل در ابتدا در مقاله معرفی شد RoBERTa: رویکرد پیشآموزشی BERT بهینه شده قوی.
با a روی جملات نشانه گذاری می کنیم roberta-base
توکنایزر از Hugging Face، که از رمزگذاری جفت بایت در سطح بایت برای تقسیم سند به توکن استفاده می کند. برای جزئیات بیشتر در مورد توکنایزر RoBERTa، مراجعه کنید روبرتا توکنایزر. از آنجا که ورودی های ما جفت جمله هستند، باید هر دو جمله را به طور همزمان نشانه گذاری کنیم. از آنجایی که اکثر مدل های BERT نیاز دارند که ورودی دارای طول ورودی توکن شده ثابت باشد، پارامترهای زیر را تنظیم می کنیم: max_len=128
و truncation=True
. کد زیر را ببینید:
آخرین مرحله پیش پردازش برای تنظیم دقیق مدل BERT ما این است که قطارهای رمزگذاری شده و مجموعه داده های اعتبارسنجی را به تانسورهای PyTorch تبدیل کنیم و آنها را در سطل S3 خود آپلود کنیم:
مدل را دقیق تنظیم کنید
اکنون که کار آمادهسازی دادهها را به پایان رساندهایم، آمادهایم تا دورههای از پیش آموزشدیده خود را تنظیم کنیم roberta-base
مدل در تکلیف شناسایی بازنویسی ما می توانیم از کلاس SageMaker Hugging Face Estimator برای شروع فرآیند تنظیم دقیق در دو مرحله استفاده کنیم. اولین قدم، تعیین فراپارامترهای آموزشی و تعاریف متریک است. متغیر تعاریف متریک به برآوردگر چهره در آغوش میگوید که چه نوع معیارهایی را از گزارشهای آموزشی مدل استخراج کند. در اینجا، ما در درجه اول علاقه مند به استخراج معیارهای مجموعه اعتبارسنجی در هر دوره آموزشی هستیم.
مرحله دوم این است که تخمینگر چهره در آغوش گرفته را نمونهسازی کنید و فرآیند تنظیم دقیق را با .fit()
روش:
فرآیند تنظیم دقیق با استفاده از فراپارامترهای مشخص شده تقریباً 30 دقیقه طول می کشد.
مدل را مستقر کرده و استنتاج انجام دهید
SageMaker بسته به مورد استفاده شما چندین گزینه استقرار را ارائه می دهد. برای نقاط پایانی دائمی و بیدرنگ که هر بار یک پیشبینی میکنند، توصیه میکنیم از آن استفاده کنید خدمات میزبانی بلادرنگ SageMaker. اگر حجم کاری دارید که دورههای بیکاری بین جهشهای ترافیکی دارند و میتوانند شروع سرد را تحمل کنند، توصیه میکنیم از استنتاج بدون سرور. نقاط پایانی بدون سرور بهطور خودکار منابع محاسباتی را راهاندازی میکنند و بسته به ترافیک آنها را در داخل و خارج مقیاس میدهند، و نیازی به انتخاب انواع نمونه یا مدیریت سیاستهای مقیاسبندی را از بین میبرند. ما نشان میدهیم که چگونه میتوان مدل Hgging Face را با تنظیم دقیق خود در نقطه پایانی استنتاج بلادرنگ و نقطه پایانی استنتاج بدون سرور مستقر کرد.
استقرار در یک نقطه پایانی استنتاج بلادرنگ
شما می توانید یک شی آموزشی را در میزبانی استنتاج بلادرنگ در SageMaker با استفاده از .deploy()
روش. برای لیست کامل پارامترهای پذیرفته شده، مراجعه کنید مدل صورت در آغوش. برای شروع، بیایید مدل را با عبور از پارامترهای زیر در یک نمونه مستقر کنیم: initial_instance_count
, instance_type
و endpoint_name
. کد زیر را ببینید:
استقرار مدل چند دقیقه طول می کشد. پس از استقرار مدل، میتوانیم رکوردهای نمونه را از مجموعه داده آزمایشی دیده نشده به نقطه پایانی برای استنتاج ارسال کنیم.
استقرار به یک نقطه پایانی استنتاج بدون سرور
برای استقرار شی آموزشی خود در یک نقطه پایانی بدون سرور، ابتدا باید یک فایل پیکربندی بدون سرور را با memory_size_in_mb
و max_concurrency
استدلال ها:
memory_size_in_mb
اندازه کل RAM نقطه پایانی بدون سرور شما را مشخص می کند. حداقل اندازه رم 1024 مگابایت (1 گیگابایت) است و می تواند تا 6144 مگابایت (6 گیگابایت) افزایش یابد. به طور کلی، شما باید سعی کنید اندازه حافظه ای را انتخاب کنید که حداقل به اندازه اندازه مدل شما باشد. max_concurrency
سهمیه ای را برای چند فراخوان همزمان (حداکثر 50 فراخوان همزمان) برای یک نقطه پایانی مشخص می کند.
ما همچنین نیاز به ارائه URI تصویر استنتاج Hugging Face داریم که میتوانید با استفاده از کد زیر آن را بازیابی کنید:
اکنون که فایل پیکربندی بدون سرور را داریم، میتوانیم یک نقطه پایانی بدون سرور را به همان روشی که نقطه پایان استنتاج بلادرنگ خود ایجاد میکنیم، با استفاده از .deploy()
روش:
نقطه پایانی باید در چند دقیقه ایجاد شود.
استنتاج مدل را انجام دهید
برای پیش بینی، باید جفت جمله را با اضافه کردن ایجاد کنیم [CLS]
و [SEP]
توکن های ویژه و متعاقباً ورودی را به نقاط پایانی مدل ارسال کنید. نحو برای استنتاج بلادرنگ و استنتاج بدون سرور یکسان است:
در مثالهای زیر، میتوانیم ببینیم که مدل میتواند به درستی طبقهبندی کند که آیا جفت جمله ورودی حاوی جملات بازنویسی شده است یا خیر.
مثال زیر یک مثال استنتاج بلادرنگ است.
مثال زیر یک مثال استنتاج بدون سرور است.
ارزیابی عملکرد مدل
برای ارزیابی مدل، بیایید کد قبلی را گسترش دهیم و تمام 8,000 رکورد آزمایشی دیده نشده را به نقطه پایانی بلادرنگ ارسال کنیم:
در مرحله بعد، می توانیم یک گزارش طبقه بندی با استفاده از پیش بینی های استخراج شده ایجاد کنیم:
نمرات آزمون زیر را می گیریم.
ما می توانیم آن را مشاهده کنیم roberta-base
دارای میانگین کلان ترکیبی امتیاز F1 92٪ است و در تشخیص جملاتی که به صورت نقل قول هستند کمی بهتر عمل می کند. را roberta-base
مدل عملکرد خوبی دارد، اما محاسبه عملکرد مدل با حداقل یک مدل دیگر تمرین خوبی است.
جدول زیر مقایسه می کند roberta-base
نتایج عملکرد در همان مجموعه آزمایشی در برابر ترانسفورماتور تنظیمشده دیگری به نام paraphrase-mpnet-base-v2
، یک ترانسفورماتور جمله از پیش آموزش داده شده به طور خاص برای کار شناسایی ترجمه. هر دو مدل بر روی یک نمونه ml.p3.8xlarge آموزش داده شدند.
نتایج نشان می دهد که roberta-base
با استفاده از میزبانی استنتاج بلادرنگ در SageMaker دارای 1٪ امتیاز بالاتر F1 با آموزش و زمان استنتاج بسیار مشابه است. تفاوت عملکرد بین مدل ها نسبتا جزئی است، با این حال، roberta-base
در نهایت برنده است زیرا معیارهای عملکرد کمی بهتر و زمانهای تمرین و استنتاج تقریباً یکسانی دارد.
دقت | به یاد بیاورید | امتیاز F1 | زمان آموزش (قابل پرداخت) | زمان استنتاج (مجموعه تست کامل) | |
روبرتا بیس | 0.92 | 0.93 | 0.92 | دقیقه 18 | دقیقه 2 |
ترجمه-mpnet- base-v2 |
0.92 | 0.91 | 0.91 | دقیقه 17 | دقیقه 2 |
پاک کردن
وقتی استفاده از نقاط پایانی مدل تمام شد، میتوانید آنها را حذف کنید تا از هزینههای بعدی جلوگیری کنید:
نتیجه
در این پست، نحوه ساخت سریع مدل شناسایی پارافراسی با استفاده از ترانسفورماتور Hugging Face در SageMaker را مورد بحث قرار دادیم. ما دو ترانسفورماتور از پیش آموزش دیده را به خوبی تنظیم کردیم، roberta-base
و paraphrase-mpnet-base-v2
، با استفاده از مجموعه داده PAWS (که شامل جفت جملات با همپوشانی واژگانی زیاد است). ما مزایای استنتاج بلادرنگ در مقابل استقرار استنتاج بدون سرور را نشان دادیم و مورد بحث قرار دادیم، دومی یک ویژگی جدید است که بارهای کاری پراکنده را هدف قرار می دهد و نیاز به مدیریت سیاست های مقیاس بندی را حذف می کند. در یک مجموعه آزمایشی دیده نشده با 8,000 رکورد، ما نشان دادیم که هر دو مدل به امتیاز F1 بیش از 90 درصد دست یافتند.
برای گسترش این راه حل، موارد زیر را در نظر بگیرید:
- تنظیم دقیق را با مجموعه داده سفارشی خود امتحان کنید. اگر برچسبهای آموزشی کافی ندارید، میتوانید عملکرد یک مدل تنظیمشده دقیق مانند آنچه در این پست نشان داده شده است را در یک مجموعه داده آزمایشی سفارشی ارزیابی کنید.
- این مدل دقیق تنظیم شده را در یک برنامه پایین دستی ادغام کنید که به اطلاعاتی در مورد اینکه آیا دو جمله (یا بلوکهای متن) ترجمهای از یکدیگر هستند، نیاز دارد.
ساختمان مبارک!
درباره نویسنده
بالا کریشنامورتی یک دانشمند داده با خدمات حرفه ای AWS است، جایی که از استفاده از یادگیری ماشین برای حل مشکلات تجاری مشتری لذت می برد. او در موارد استفاده از پردازش زبان طبیعی تخصص دارد و با مشتریان در صنایعی مانند نرم افزار، امور مالی و مراقبت های بهداشتی کار کرده است. او در اوقات فراغت خود از امتحان کردن غذاهای جدید، تماشای کمدی ها و مستندها، تمرین در Orange Theory و بیرون رفتن روی آب (پارو زدن، غواصی و غواصی به زودی) لذت می برد.
ایوان کوی یک دانشمند داده با خدمات حرفه ای AWS است، جایی که به مشتریان کمک می کند تا راه حل هایی را با استفاده از یادگیری ماشین در AWS بسازند و به کار گیرند. او با مشتریان در صنایع مختلف از جمله نرم افزار، مالی، داروسازی و مراقبت های بهداشتی کار کرده است. در اوقات فراغت از مطالعه، گذراندن وقت با خانواده و به حداکثر رساندن سبد سهام خود لذت می برد.
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- درباره ما
- دسترسی
- حساب
- دست
- در میان
- معرفی
- قبلا
- آمازون
- اعلام کرد
- دیگر
- کاربرد
- با استفاده از
- تقریبا
- استدلال
- در دسترس
- AWS
- بودن
- مزایای
- بدن
- مرز
- ساختن
- کسب و کار
- صدا
- توانا
- اتومبیل
- موارد
- بار
- را انتخاب کنید
- شهر:
- کلاس
- طبقه بندی
- رمز
- ستون
- ترکیب شده
- انجمن
- به طور کامل
- محاسبه
- اعتماد به نفس
- ظروف
- شامل
- میتوانست
- ایجاد
- ایجاد شده
- سفارشی
- مشتری
- مشتریان
- داده ها
- دانشمند داده
- نشان دادن
- نشان
- بستگی دارد
- گسترش
- مستقر
- گسترش
- جزئیات
- کشف
- پروژه
- مختلف
- توزیع
- فیلم های مستند
- اسناد و مدارک
- دانلود
- راندن
- موثر
- نقطه پایانی
- انگلیسی
- محیط
- ایجاد
- ارزیابی
- مثال
- نمایش دادن
- گسترش
- چهره
- خانواده
- ویژگی
- سرمایه گذاری
- نام خانوادگی
- پرواز
- تمرکز
- به دنبال
- پیروی
- غذا
- رایگان
- کامل
- تابع
- قابلیت
- آینده
- همه منظوره
- عموما
- تولید می کنند
- GitHub
- خوب
- بیشتر
- بهداشت و درمان
- ارتفاع
- کمک می کند
- اینجا کلیک نمایید
- زیاد
- بالاتر
- میزبانی وب
- چگونه
- چگونه
- HTTPS
- شناسایی
- شناسایی
- شناسایی
- هویت
- تصویر
- شامل
- از جمله
- لوازم
- اطلاعات
- ورودی
- نصب
- علاقه مند
- موضوع
- IT
- شغل ها
- برچسب ها
- زبان
- بزرگ
- راه اندازی
- یادگیری
- کتابخانه
- فهرست
- بار
- دستگاه
- فراگیری ماشین
- باعث می شود
- مدیریت
- حافظه
- متریک
- ML
- مدل
- مدل
- بیش
- اکثر
- چندگانه
- طبیعی
- منفی
- نیویورک
- شهر نیویورک
- دفتر یادداشت
- پیشنهادات
- بهینه
- گزینه
- سفارش
- دیگر
- خود
- مقاله
- پاریس
- همکاری
- عبور
- پچ های
- کارایی
- دوره ها
- دارویی
- نقطه
- سیاست
- مقام
- مثبت
- تمرین
- پیش گویی
- پیش بینی
- مشکلات
- روند
- در حال پردازش
- حرفه ای
- ارائه
- سوال
- اورجینال
- رم
- حاشیه
- مطالعه
- زمان واقعی
- توصیه
- سوابق
- منتشر شد
- گزارش
- مخزن
- نیاز
- منابع
- منابع
- نتایج
- برگشت
- دویدن
- در حال اجرا
- مقیاس
- مقیاس گذاری
- دانشمند
- تیم امنیت لاتاری
- انتخاب شد
- بدون سرور
- خدمات
- تنظیم
- محیط
- مشابه
- ساده
- اندازه
- کوچک
- نرم افزار
- جامد
- راه حل
- مزایا
- حل
- ویژه
- تخصص دارد
- به طور خاص
- هزینه
- چرخش
- انشعاب
- شروع
- آغاز شده
- شروع می شود
- موجودی
- ذخیره سازی
- opbevare
- متعاقبا
- عرضه
- سوئد
- سیستم
- هدف
- وظایف
- تکنیک
- می گوید
- آزمون
- از طریق
- زمان
- از Tokenization
- نشانه گذاری شده است
- نشانه
- بالا
- مشعل
- ترافیک
- آموزش
- ترجمه
- us
- استفاده کنید
- اعتبار سنجی
- ارزش
- تنوع
- چشم انداز
- آب
- چی
- چه
- ویکیپدیا
- در داخل
- بدون
- کلمات
- مشغول به کار
- کارگر
- کار کردن