آموزش انتقال برای مدل های طبقه بندی متن TensorFlow در Amazon SageMaker

آمازون SageMaker مجموعه ای از الگوریتم های داخلی, مدل های از پیش آموزش دیدهو الگوهای راه حل از پیش ساخته شده برای کمک به دانشمندان داده و متخصصان یادگیری ماشین (ML) برای شروع سریع آموزش و استقرار مدل‌های ML. شما می توانید از این الگوریتم ها و مدل ها برای یادگیری تحت نظارت و بدون نظارت استفاده کنید. آنها می توانند انواع مختلفی از داده های ورودی، از جمله جدول، تصویر و متن را پردازش کنند.

این پست سومین مطلب از یک سری در مورد الگوریتم های داخلی جدید در SageMaker است. در اولین پست، ما نشان دادیم که چگونه SageMaker یک الگوریتم داخلی برای طبقه بندی تصاویر ارائه می دهد. در پست دوم، ما نشان دادیم که چگونه SageMaker یک الگوریتم داخلی برای تشخیص اشیا ارائه می دهد. امروز، ما اعلام می کنیم که SageMaker یک الگوریتم داخلی جدید برای طبقه بندی متن با استفاده از TensorFlow ارائه می دهد. این الگوریتم یادگیری نظارت شده از یادگیری انتقالی برای بسیاری از مدل های از پیش آموزش دیده موجود در آن پشتیبانی می کند هاب تنسورفلو. یک قطعه متن را به عنوان ورودی می گیرد و احتمال هر یک از برچسب های کلاس را خروجی می کند. می‌توانید این مدل‌های از پیش آموزش‌دیده را با استفاده از یادگیری انتقالی تنظیم کنید، حتی زمانی که مجموعه بزرگی از متن در دسترس نیست. از طریق SageMaker در دسترس است الگوریتم های داخلی، و همچنین از طریق SageMaker JumpStart UI in Amazon SageMaker Studio. برای اطلاعات بیشتر مراجعه کنید طبقه بندی متن و نمونه دفترچه یادداشت مقدمه ای بر JumpStart – طبقه بندی متن.

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

نحوه استفاده از الگوریتم جدید طبقه بندی متن TensorFlow

این بخش نحوه استفاده از الگوریتم طبقه بندی متن TensorFlow را با SageMaker Python SDK. برای اطلاعات در مورد نحوه استفاده از آن از رابط کاربری Studio، رجوع کنید SageMaker JumpStart.

این الگوریتم از یادگیری انتقالی برای مدل‌های از پیش آموزش دیده‌شده در فهرست پشتیبانی می‌کند مدل های تنسورفلو. هر مدل با یک مدل منحصر به فرد شناسایی می شود model_id. کد زیر نحوه تنظیم دقیق مدل پایه BERT شناسایی شده توسط را نشان می دهد model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 در یک مجموعه داده آموزشی سفارشی برای هر model_id، برای راه اندازی یک کار آموزشی SageMaker از طریق برآورد کلاس SageMaker Python SDK، شما باید URI تصویر Docker، URI اسکریپت آموزشی و URI مدل از پیش آموزش دیده را از طریق توابع ابزار ارائه شده در SageMaker واکشی کنید. URI اسکریپت آموزشی شامل تمام کدهای لازم برای پردازش داده ها، بارگذاری مدل از پیش آموزش دیده، آموزش مدل و ذخیره مدل آموزش دیده برای استنتاج می باشد. URI مدل از پیش آموزش دیده شامل تعریف معماری مدل از پیش آموزش دیده و پارامترهای مدل است. URI مدل از پیش آموزش دیده مختص مدل خاصی است. تاربال های مدل از پیش آموزش دیده از TensorFlow از قبل دانلود شده و با امضای مدل مناسب ذخیره شده اند. سرویس ذخیره سازی ساده آمازون (Amazon S3) سطل، به طوری که کار آموزش در انزوا شبکه اجرا می شود. کد زیر را ببینید:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

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

# Create SageMaker Estimator instance
tf_tc_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

در مرحله بعد، برای انتقال یادگیری بر روی مجموعه داده سفارشی خود، ممکن است لازم باشد مقادیر پیش فرض هایپرپارامترهای آموزشی را تغییر دهید که در فراپارامترها. می توانید با فراخوانی یک فرهنگ لغت پایتون از این هایپرپارامترها را با مقادیر پیش فرض آنها واکشی کنید hyperparameters.retrieve_default، آنها را در صورت نیاز به روز کنید و سپس به کلاس Estimator منتقل کنید. توجه داشته باشید که مقادیر پیش فرض برخی از هایپرپارامترها برای مدل های مختلف متفاوت است. برای مدل های بزرگ، اندازه دسته پیش فرض کوچکتر است و train_only_top_layer هایپرپارامتر روی تنظیم شده است True. هایپرپارامتر Train_only_top_layer تعریف می کند که کدام پارامترهای مدل در طول فرآیند تنظیم دقیق تغییر می کنند. اگر train_only_top_layer is True، سپس پارامترهای لایه های طبقه بندی تغییر می کنند و بقیه پارامترها در طول فرآیند تنظیم دقیق ثابت می مانند. از سوی دیگر، اگر train_only_top_layer is False، سپس تمام پارامترهای مدل به دقت تنظیم می شوند. کد زیر را ببینید:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

ما ارائه می دهیم SST2 به عنوان یک مجموعه داده پیش فرض برای تنظیم دقیق مدل ها. مجموعه داده شامل نقدهای مثبت و منفی فیلم است. از دانلود شده است TensorFlow زیر مجوز آپاچی 2.0. کد زیر مجموعه داده های آموزشی پیش فرض را که در سطل های S3 میزبانی شده است را ارائه می دهد.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

در نهایت، برای راه‌اندازی کار آموزشی SageMaker برای تنظیم دقیق مدل، با عبور از مکان Amazon S3 مجموعه داده آموزشی، .fit را روی شی کلاس Estimator فراخوانی کنید:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

برای کسب اطلاعات بیشتر در مورد نحوه استفاده از الگوریتم جدید طبقه‌بندی متن SageMaker TensorFlow برای انتقال یادگیری بر روی یک مجموعه داده سفارشی، مدل دقیق تنظیم شده را اجرا کنید، استنتاج را بر روی مدل مستقر شده اجرا کنید، و مدل از پیش آموزش‌دیده را بدون تنظیم دقیق اولیه اجرا کنید. در یک مجموعه داده سفارشی، نمونه یادداشت زیر را ببینید: مقدمه ای بر JumpStart – طبقه بندی متن.

رابط ورودی/خروجی برای الگوریتم طبقه بندی متن TensorFlow

می‌توانید هر یک از مدل‌های از پیش آموزش‌دیده‌شده فهرست‌شده را به‌خوبی تنظیم کنید مدل های تنسورفلو به هر مجموعه داده ای که از جملات متنی با هر تعداد کلاس تشکیل شده است. مدل از پیش آموزش دیده یک لایه طبقه بندی را به مدل Text Embedding متصل می کند و پارامترهای لایه را به مقادیر تصادفی مقداردهی اولیه می کند. بعد خروجی لایه طبقه بندی بر اساس تعداد کلاس های شناسایی شده در داده های ورودی تعیین می شود. هدف به حداقل رساندن خطاهای طبقه بندی در داده های ورودی است. مدل بازگشتی با تنظیم دقیق را می توان برای استنتاج بیشتر به کار برد.

دستورالعمل های زیر نحوه فرمت داده های آموزشی را برای ورودی به مدل توضیح می دهد:

  • ورودی – دایرکتوری حاوی فایل data.csv. هر ردیف از ستون اول باید دارای برچسب های کلاس صحیح بین 0 و تعداد کلاس ها باشد. هر ردیف از ستون دوم باید داده های متنی مربوطه را داشته باشد.
  • خروجی - یک مدل دقیق تنظیم شده که می تواند برای استنباط به کار گرفته شود یا با استفاده از آموزش افزایشی آموزش بیشتری داده شود. یک کلاس نگاشت فایل فهرست‌بندی به برچسب‌های کلاس همراه با مدل‌ها ذخیره می‌شود.

نمونه زیر نمونه ای از فایل CSV ورودی است. توجه داشته باشید که فایل نباید هدر داشته باشد. فایل باید در یک سطل S3 با مسیری شبیه به زیر میزبانی شود: s3://bucket_name/input_directory/. توجه داشته باشید که دنباله / مورد نیاز است.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

استنتاج با الگوریتم طبقه بندی متن TensorFlow

مدل های تولید شده را می توان برای استنتاج و پشتیبانی از متن به عنوان میزبان میزبانی کرد application/x-text نوع محتوا. خروجی شامل مقادیر احتمال، برچسب‌های کلاس برای همه کلاس‌ها و برچسب پیش‌بینی‌شده مربوط به شاخص کلاس با بالاترین احتمال کدگذاری شده در قالب JSON است. مدل در هر درخواست یک رشته واحد را پردازش می کند و تنها یک خط را خروجی می دهد. نمونه زیر نمونه ای از پاسخ فرمت JSON است:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept تنظیم شده است application/json، سپس مدل فقط احتمالات را خروجی می دهد. برای جزئیات بیشتر در مورد آموزش و استنباط، به نمونه یادداشت مقدمه مراجعه کنید مقدمه ای بر JumpStart – طبقه بندی متن.

از الگوریتم های داخلی SageMaker از طریق JumpStart UI استفاده کنید

همچنین می‌توانید از طبقه‌بندی متن SageMaker TensorFlow و هر یک از الگوریتم‌های داخلی دیگر با چند کلیک از طریق JumpStart UI استفاده کنید. JumpStart یک ویژگی SageMaker است که به شما امکان می دهد الگوریتم های داخلی و مدل های از پیش آموزش دیده را از چارچوب های مختلف ML و هاب مدل از طریق یک رابط گرافیکی آموزش و استقرار دهید. علاوه بر این، به شما امکان می‌دهد راه‌حل‌های ML کاملی را که مدل‌های ML و سرویس‌های مختلف AWS دیگر را برای حل یک مورد استفاده هدفمند با هم ترکیب می‌کنند، بکار ببرید.

در زیر دو ویدیو وجود دارد که نشان می‌دهد چگونه می‌توانید همان فرآیند تنظیم دقیق و استقرار را که با چند کلیک از طریق JumpStart UI انجام دادیم، تکرار کنید.

مدل از پیش آموزش دیده را تنظیم دقیق کنید

در اینجا فرآیند تنظیم دقیق همان مدل طبقه‌بندی متن از پیش آموزش دیده است.

مدل دقیق تنظیم شده را اجرا کنید

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

نتیجه

در این پست، راه اندازی الگوریتم داخلی طبقه بندی متن SageMaker TensorFlow را اعلام کردیم. ما کد نمونه ای برای نحوه انجام یادگیری انتقال بر روی یک مجموعه داده سفارشی با استفاده از یک مدل از پیش آموزش دیده از هاب TensorFlow با استفاده از این الگوریتم ارائه کردیم.

برای اطلاعات بیشتر ، به بخش مراجعه کنید مستندات و نمونه دفترچه یادداشت مقدمه ای بر JumpStart – طبقه بندی متن.


درباره نویسندگان

انتقال یادگیری برای مدل‌های طبقه‌بندی متن TensorFlow در Amazon SageMaker PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.دکتر ویوک مدان دانشمند کاربردی با تیم آمازون SageMaker JumpStart. او دکترای خود را از دانشگاه ایلینویز در Urbana-Champaign گرفت و پژوهشگر پست دکترا در جورجیا تک بود. او یک محقق فعال در یادگیری ماشین و طراحی الگوریتم است و مقالاتی در کنفرانس های EMNLP، ICLR، COLT، FOCS و SODA منتشر کرده است.

انتقال یادگیری برای مدل‌های طبقه‌بندی متن TensorFlow در Amazon SageMaker PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.ژائو مورا یک معمار راه حل های تخصصی AI/ML در خدمات وب آمازون است. او بیشتر روی موارد استفاده NLP و کمک به مشتریان برای بهینه سازی آموزش و استقرار مدل یادگیری عمیق متمرکز است. او همچنین یکی از حامیان فعال راه حل های ML با کد پایین و سخت افزار تخصصی ML است.

انتقال یادگیری برای مدل‌های طبقه‌بندی متن TensorFlow در Amazon SageMaker PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.دکتر آشیش ختان دانشمند ارشد کاربردی با الگوریتم های داخلی آمازون SageMaker و به توسعه الگوریتم های یادگیری ماشین کمک می کند. او دکترای خود را از دانشگاه ایلینویز Urbana Champaign گرفت. او یک محقق فعال در یادگیری ماشین و استنتاج آماری است و مقالات زیادی در کنفرانس های NeurIPS، ICML، ICLR، JMLR، ACL و EMNLP منتشر کرده است.

تمبر زمان:

بیشتر از آموزش ماشین AWS