تولید متن را با مدل‌های GPT و Bloom در Amazon SageMaker JumpStart اجرا کنید

در ماه دسامبر 2020 AWS اعلام کرد در دسترس بودن عمومی Amazon SageMaker JumpStart، قابلیتی از آمازون SageMaker که به شما کمک می کند تا به سرعت و به راحتی با یادگیری ماشینی (ML) شروع کنید. JumpStart تنظیم دقیق و استقرار طیف گسترده ای از مدل های از پیش آموزش داده شده را با یک کلیک در سراسر وظایف محبوب ML و همچنین مجموعه ای از راه حل های پایان به انتها که مشکلات رایج تجاری را حل می کند، ارائه می دهد. این ویژگی‌ها بار سنگین را از هر مرحله از فرآیند ML حذف می‌کنند و توسعه مدل‌های با کیفیت بالا را آسان‌تر می‌کنند و زمان استقرار را کاهش می‌دهند.

این پست چهارمین پست از مجموعه استفاده از JumpStart برای وظایف خاص ML است. در اولین پست، نحوه اجرای موارد استفاده طبقه بندی تصاویر را در JumpStart نشان دادیم. در پست دوم، نحوه اجرای موارد استفاده طبقه بندی متن را نشان دادیم. در پست سوم، موارد استفاده از بخش بندی تصویر را اجرا کردیم.

در این پست، ما یک روش گام به گام در مورد نحوه استقرار مدل های تولید متن از پیش آموزش دیده ارائه می دهیم. ما دو راه برای به دست آوردن یک نتیجه را بررسی می کنیم: از طریق رابط گرافیکی JumpStart در Amazon SageMaker Studio، و به صورت برنامه ای از طریق API های JumpStart.

اگر می خواهید مستقیماً به کد JumpStart API که در این پست به آن پرداخته ایم بروید، می توانید به نمونه نوت بوک Jupyter زیر مراجعه کنید: مقدمه ای بر JumpStart – تولید متن.

نمای کلی JumpStart

JumpStart به شما کمک می کند تا با مدل های ML برای کارهای مختلف بدون نوشتن یک خط کد شروع کنید. در حال حاضر، JumpStart شما را قادر می سازد تا کارهای زیر را انجام دهید:

  • استقرار مدل های از پیش آموزش دیده برای کارهای رایج ML – JumpStart شما را قادر می‌سازد تا با ارائه استقرار آسان مدل‌های از پیش آموزش‌دیده‌شده در مجموعه داده‌های بزرگ و در دسترس عموم، به وظایف رایج ML بدون هیچ تلاشی برای توسعه رسیدگی کنید. جامعه تحقیقاتی ML تلاش زیادی کرده است تا اکثر مدل‌های توسعه‌یافته اخیر را برای استفاده در دسترس عموم قرار دهد. JumpStart مجموعه ای از بیش از 300 مدل را میزبانی می کند که شامل 15 کار محبوب ML مانند تشخیص اشیا، طبقه بندی متن و تولید متن است و استفاده از آنها را برای مبتدیان آسان می کند. این مدل ها از هاب های مدل محبوب مانند TensorFlow، PyTorch، Hugging Face و MXNet گرفته شده اند.
  • مدل های از پیش آموزش دیده را تنظیم کنید - JumpStart به شما امکان می دهد مدل های از پیش آموزش دیده را بدون نیاز به نوشتن الگوریتم آموزشی خود تنظیم کنید. در ML، توانایی انتقال دانش آموخته شده در یک حوزه به حوزه دیگر نامیده می شود انتقال یادگیری. می‌توانید از یادگیری انتقالی برای تولید مدل‌های دقیق روی مجموعه داده‌های کوچک‌تر خود، با هزینه‌های آموزشی بسیار پایین‌تر از مواردی که در آموزش مدل اصلی دخیل هستند، استفاده کنید. JumpStart همچنین شامل الگوریتم‌های آموزشی محبوب مبتنی بر LightGBM، CatBoost، XGBoost و Scikit-learn است که می‌توانید از ابتدا برای رگرسیون جدولی و طبقه‌بندی آموزش دهید.
  • از راه حل های از پیش ساخته شده استفاده کنید – JumpStart مجموعه‌ای از 17 راه‌حل را برای موارد استفاده رایج از ML، مانند پیش‌بینی تقاضا و برنامه‌های صنعتی و مالی ارائه می‌کند که می‌توانید تنها با چند کلیک آن‌ها را اجرا کنید. راه‌حل‌ها برنامه‌های کاربردی ML سرتاسری هستند که خدمات مختلف AWS را برای حل یک مورد استفاده تجاری خاص با هم ترکیب می‌کنند. آنها استفاده می کنند AWS CloudFormation قالب ها و معماری های مرجع برای استقرار سریع، به این معنی که آنها کاملا قابل تنظیم هستند.
  • به نمونه های نوت بوک برای الگوریتم های SageMaker مراجعه کنید – SageMaker مجموعه‌ای از الگوریتم‌های داخلی را برای کمک به دانشمندان داده و پزشکان ML ارائه می‌کند تا با آموزش و استقرار سریع مدل‌های ML شروع کنند. JumpStart نمونه نوت بوک هایی را ارائه می دهد که می توانید برای استفاده سریع از این الگوریتم ها از آنها استفاده کنید.
  • ویدئوهای آموزشی و وبلاگ ها را مرور کنید – JumpStart همچنین پست‌ها و ویدیوهای وبلاگ متعددی را ارائه می‌کند که به شما می‌آموزد چگونه از قابلیت‌های مختلف در SageMaker استفاده کنید.

JumpStart تنظیمات سفارشی VPC و سرویس مدیریت کلید AWS (AWS KMS) کلیدهای رمزگذاری، بنابراین می توانید از مدل ها و راه حل های موجود به طور ایمن در محیط سازمانی خود استفاده کنید. می توانید تنظیمات امنیتی خود را در استودیو یا از طریق SageMaker Python SDK به JumpStart منتقل کنید.

تولید متن، GPT-2 و بلوم

تولید متن وظیفه تولید متنی است که روان باشد و به نظر می رسد از متن نوشته شده توسط انسان قابل تشخیص نیست. همچنین به عنوان شناخته شده است نسل زبان طبیعی.

GPT-2 یک مدل محبوب تولید متن مبتنی بر ترانسفورماتور است. این از قبل روی مجموعه بزرگی از متن خام انگلیسی بدون برچسب گذاری انسانی آموزش داده شده است. در این کار آموزش داده شده است که در آن، با توجه به یک دنباله جزئی (جمله یا قطعه متن)، مدل باید کلمه یا نشانه بعدی را در دنباله پیش بینی کند.

بلوم همچنین یک مدل تولید متن مبتنی بر ترانسفورماتور است و مشابه GPT-2 آموزش دیده است. با این حال، بلوم روی 46 زبان مختلف و 13 زبان برنامه نویسی از قبل آموزش دیده است. در زیر نمونه ای از اجرای تولید متن با مدل Bloom آورده شده است:

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

بررسی اجمالی راه حل

بخش‌های زیر یک نسخه نمایشی گام به گام برای انجام استنتاج، هم از طریق رابط کاربری Studio و هم از طریق APIهای JumpStart ارائه می‌کنند. مراحل زیر را طی می کنیم:

  1. از طریق استودیو UI به JumpStart دسترسی داشته باشید تا استنتاج را روی مدل از پیش آموزش دیده اجرا و اجرا کنید.
  2. از JumpStart به صورت برنامه نویسی با SageMaker Python SDK برای استقرار مدل از پیش آموزش دیده و اجرای استنتاج استفاده کنید.

از طریق استودیو UI به JumpStart دسترسی پیدا کنید و استنتاج را با یک مدل از پیش آموزش دیده اجرا کنید

در این بخش، نحوه آموزش و استقرار مدل‌های JumpStart را از طریق رابط کاربری Studio نشان می‌دهیم.

ویدئوی زیر به شما نشان می دهد که چگونه یک مدل تولید متن از پیش آموزش دیده را در JumpStart پیدا کنید و آن را به کار بگیرید. صفحه مدل حاوی اطلاعات ارزشمندی در مورد مدل و نحوه استفاده از آن است. شما می توانید هر یک از مدل های از پیش آموزش دیده موجود در JumpStart را مستقر کنید. برای استنتاج، نوع نمونه ml.p3.2xlarge را انتخاب می‌کنیم، زیرا شتاب GPU مورد نیاز برای تأخیر استنتاج کم را با قیمت پایین فراهم می‌کند. پس از پیکربندی نمونه میزبانی SageMaker، را انتخاب کنید گسترش. ممکن است 20 تا 25 دقیقه طول بکشد تا نقطه پایان دائمی شما آماده و اجرا شود.

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

برای تسریع زمان شما برای استنتاج، JumpStart یک دفترچه یادداشت نمونه ارائه می دهد که به شما نشان می دهد چگونه استنتاج را در نقطه پایانی تازه مستقر شده خود اجرا کنید. انتخاب کنید نوت بوک را باز کنید زیر از Endpoint از Studio استفاده کنید.

از JumpStart به صورت برنامه نویسی با SageMaker SDK استفاده کنید

در بخش قبل، نشان دادیم که چگونه می‌توانید از JumpStart UI برای استقرار یک مدل از پیش آموزش‌دیده به صورت تعاملی، در چند کلیک استفاده کنید. با این حال، می‌توانید با استفاده از APIهایی که در SageMaker SDK ادغام شده‌اند، از مدل‌های JumpStart به صورت برنامه‌نویسی استفاده کنید.

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

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

SageMaker پلتفرمی است که از کانتینرهای Docker برای کارهای ساخت و زمان اجرا استفاده زیادی می کند. JumpStart از چارچوب خاص موجود استفاده می کند ظروف یادگیری عمیق SageMaker (DLC ها). ابتدا بسته‌های اضافی و همچنین اسکریپت‌هایی را برای رسیدگی به آموزش و استنتاج برای کار انتخاب‌شده واکشی می‌کنیم. در نهایت، مصنوعات مدل از پیش آموزش دیده به طور جداگانه با آنها واکشی می شوند model_uris، که انعطاف پذیری را برای پلتفرم فراهم می کند. شما می توانید از هر تعداد مدلی که از قبل برای همان کار آموزش دیده اند با یک اسکریپت استنتاج استفاده کنید. کد زیر را ببینید:

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

بلوم یک مدل بسیار بزرگ است و می تواند 20 تا 25 دقیقه برای استقرار طول بکشد. همچنین می توانید از مدل کوچکتری مانند GPT-2 استفاده کنید. برای استقرار یک مدل GPT-2 از پیش آموزش دیده، می توانید تنظیم کنید model_id = huggingface-textgeneration-gpt2. برای لیستی از سایر مدل های موجود در JumpStart، مراجعه کنید جدول مدل در دسترس JumpStart.

در مرحله بعد، منابع را به a تغذیه می کنیم مدل SageMaker نمونه و استقرار یک نقطه پایانی:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

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

استنتاج را اجرا کنید

قطعه کد زیر به شما نگاهی اجمالی به خروجی ها می دهد. برای ارسال درخواست‌ها به یک مدل مستقر، متن ورودی باید در a ارائه شود utf-8 فرمت کدگذاری شده

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

پاسخ نقطه پایانی یک شی JSON است که حاوی متن ورودی به دنبال متن تولید شده است:

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

خروجی ما به شرح زیر است:

"Some people like dogs, some people like cats some people like birds, some people like fish,"

نتیجه

در این پست نحوه استقرار یک مدل تولید متن از پیش آموزش دیده با استفاده از JumpStart را نشان دادیم. شما می توانید این کار را بدون نیاز به نوشتن کد انجام دهید. راه حل را خودتان امتحان کنید و نظرات خود را برای ما ارسال کنید. برای کسب اطلاعات بیشتر در مورد JumpStart و نحوه استفاده از مدل های از پیش آموزش داده شده منبع باز برای انواع دیگر وظایف ML، موارد زیر را بررسی کنید. ویدیوی AWS re:Invent 2020.


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

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.دکتر ویوک مدان یک دانشمند کاربردی با تیم آمازون SageMaker JumpStart است. او دکترای خود را از دانشگاه ایلینویز در Urbana-Champaign گرفت و پژوهشگر پست دکترا در جورجیا تک بود. او یک محقق فعال در یادگیری ماشین و طراحی الگوریتم است و مقالاتی در کنفرانس های EMNLP، ICLR، COLT، FOCS و SODA منتشر کرده است.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.سانتوش کولکارنی یک معمار راه حل های سازمانی در خدمات وب آمازون است که با مشتریان ورزشی در استرالیا کار می کند. او مشتاق ساخت برنامه های کاربردی توزیع شده در مقیاس بزرگ برای حل مشکلات تجاری با استفاده از دانش خود در AI/ML، داده های بزرگ و توسعه نرم افزار است.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.دکتر آشیش ختان یک دانشمند کاربردی ارشد با الگوریتم های داخلی Amazon SageMaker است و به توسعه الگوریتم های یادگیری ماشین کمک می کند. او دکترای خود را از دانشگاه ایلینویز Urbana Champaign گرفت. او یک محقق فعال در یادگیری ماشین و استنتاج آماری است و مقالات زیادی در کنفرانس های NeurIPS، ICML، ICLR، JMLR، ACL و EMNLP منتشر کرده است.

تمبر زمان:

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