قم بتشغيل إنشاء النص باستخدام طرازي GPT و Bloom على Amazon SageMaker JumpStart

في ديسمبر 2020، أعلنت AWS توافر العام لل أمازون سيج ميكر جومب ستارت، قدرة الأمازون SageMaker يساعدك على البدء بسرعة وسهولة في التعلم الآلي (ML). يوفر JumpStart ضبطًا دقيقًا ونشر مجموعة متنوعة من النماذج المدربة مسبقًا عبر مهام ML الشائعة بنقرة واحدة ، بالإضافة إلى مجموعة مختارة من الحلول الشاملة التي تحل مشاكل العمل الشائعة. تعمل هذه الميزات على إزالة الأحمال الثقيلة من كل خطوة من خطوات عملية ML ، مما يسهل تطوير نماذج عالية الجودة ويقلل من وقت النشر.

هذا المنشور هو الرابع في سلسلة حول استخدام JumpStart في مهام ML محددة. في ال أول مشاركة، أوضحنا كيفية تشغيل حالات استخدام تصنيف الصور على JumpStart. في ال المنصب الثاني، أوضحنا كيفية تشغيل حالات استخدام تصنيف النص. في ال ثالث وظيفة، قمنا بتشغيل حالات استخدام تجزئة الصور.

في هذا المنشور ، نقدم شرحًا تفصيليًا خطوة بخطوة حول كيفية نشر نماذج إنشاء النصوص المدربة مسبقًا. نستكشف طريقتين للحصول على نفس النتيجة: من خلال واجهة JumpStart الرسومية أمازون ساجميكر ستوديو، وبرمجيًا من خلال واجهات برمجة تطبيقات 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 القوالب والبنى المرجعية للنشر السريع ، مما يعني أنها قابلة للتخصيص بالكامل.
  • الرجوع إلى أمثلة دفتر الملاحظات لخوارزميات SageMaker - يوفر SageMaker مجموعة من الخوارزميات المضمنة لمساعدة علماء البيانات وممارسي تعلم الآلة على البدء في التدريب ونشر نماذج التعلم الآلي بسرعة. يوفر JumpStart نماذج من دفاتر الملاحظات التي يمكنك استخدامها لاستخدام هذه الخوارزميات بسرعة.
  • مراجعة مقاطع الفيديو التدريبية والمدونات - يوفر JumpStart أيضًا العديد من منشورات المدونة ومقاطع الفيديو التي تعلمك كيفية استخدام وظائف مختلفة داخل SageMaker.

يقبل JumpStart إعدادات VPC المخصصة وملفات خدمة إدارة مفتاح AWS (AWS KMS) مفاتيح التشفير ، بحيث يمكنك استخدام النماذج والحلول المتاحة بأمان داخل بيئة مؤسستك. يمكنك تمرير إعدادات الأمان الخاصة بك إلى JumpStart داخل Studio أو من خلال SageMaker Python SDK.

توليد النص و GPT-2 و Bloom

توليد النص هو مهمة إنشاء نص بطلاقة ولا يمكن تمييزه عن النص المكتوب من قبل الإنسان. ومن المعروف أيضا باسم جيل اللغة الطبيعية.

GPT-2 هو نموذج جيل نصي شائع قائم على المحولات. لقد تم تدريبه مسبقًا على مجموعة كبيرة من النصوص الإنجليزية الخام بدون تسمية بشرية. يتم تدريبه على المهمة حيث يحتاج النموذج ، بالنظر إلى التسلسل الجزئي (جملة أو جزء من النص) ، إلى التنبؤ بالكلمة التالية أو الرمز المميز في التسلسل.

بلوم هو أيضًا نموذج إنشاء نص قائم على المحولات ويتم تدريبه بشكل مشابه لـ GPT-2. ومع ذلك ، تم تدريب Bloom مسبقًا على 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 UI وعبر واجهات برمجة تطبيقات JumpStart. نسير من خلال الخطوات التالية:

  1. قم بالوصول إلى JumpStart من خلال Studio UI لنشر وتشغيل الاستدلال على النموذج المدرب مسبقًا.
  2. استخدم JumpStart برمجيًا مع SageMaker Python SDK لنشر النموذج المدرب مسبقًا وتشغيل الاستدلال.

قم بالوصول إلى JumpStart من خلال Studio UI وقم بتشغيل الاستنتاج باستخدام نموذج مدرب مسبقًا

في هذا القسم ، نوضح كيفية تدريب نماذج JumpStart ونشرها من خلال Studio UI.

يوضح الفيديو التالي كيفية العثور على نموذج إنشاء نص تم تدريبه مسبقًا على JumpStart ونشره. تحتوي صفحة النموذج على معلومات قيمة حول النموذج وكيفية استخدامه. يمكنك نشر أي من النماذج المدربة مسبقًا والمتوفرة في JumpStart. للاستدلال ، نختار نوع المثيل ml.p3.2xlarge ، لأنه يوفر تسريع GPU اللازم لوقت استجابة الاستدلال المنخفض عند نقطة سعر منخفضة. بعد تكوين مثيل استضافة SageMaker ، اختر نشر. قد يستغرق الأمر من 20 إلى 25 دقائق حتى يتم تشغيل نقطة النهاية الثابتة.

بمجرد تشغيل نقطة النهاية ، تصبح جاهزة للرد على طلبات الاستدلال!

لتسريع وقتك في الاستدلال ، يوفر JumpStart نموذج دفتر ملاحظات يوضح لك كيفية تشغيل الاستدلال على نقطة النهاية التي تم نشرها حديثًا. يختار افتح المفكرة مع استخدم نقطة النهاية من الاستوديو.

استخدم JumpStart برمجيًا مع SageMaker SDK

في القسم السابق ، أوضحنا كيف يمكنك استخدام JumpStart UI لنشر نموذج مدرب مسبقًا بشكل تفاعلي ، في بضع نقرات. ومع ذلك ، يمكنك أيضًا استخدام نماذج JumpStart برمجيًا باستخدام واجهات برمجة التطبيقات المدمجة في SageMaker SDK.

في هذا القسم ، نراجع مثالًا سريعًا لكيفية تكرار العملية السابقة باستخدام SageMaker SDK. نختار نموذجًا مناسبًا تم تدريبه مسبقًا في JumpStart ، وننشر هذا النموذج في نقطة نهاية SageMaker ، ونقوم بتشغيل الاستدلال على نقطة النهاية المنشورة. جميع الخطوات في هذا العرض التوضيحي متوفرة في دفتر الملاحظات المصاحب مقدمة إلى JumpStart - إنشاء النص.

انشر النموذج المدرب مسبقًا

SageMaker عبارة عن نظام أساسي يستخدم بشكل مكثف حاويات Docker لمهام الإنشاء والتشغيل. يستخدم JumpStart الإطار الخاص المتاح حاويات التعلم العميق من SageMaker (DLCs). نقوم أولاً بإحضار أي حزم إضافية ، بالإضافة إلى البرامج النصية للتعامل مع التدريب والاستدلال على المهمة المحددة. أخيرًا ، يتم جلب القطع الأثرية للنموذج المدربة مسبقًا بشكل منفصل 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")

يعد نموذج Bloom نموذجًا كبيرًا جدًا ويمكن أن يستغرق ما يصل إلى 20-25 دقيقة لنشره. يمكنك أيضًا استخدام نموذج أصغر مثل GPT-2. لنشر نموذج GPT-2 مدرب مسبقًا ، يمكنك تعيين model_id = huggingface-textgeneration-gpt2. للحصول على قائمة بالموديلات الأخرى المتوفرة في JumpStart ، راجع JumpStart نموذج الجدول المتاح.

بعد ذلك ، نقوم بتغذية الموارد في ملف نموذج 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,
)

بعد نشر نموذجنا ، يمكننا الحصول على تنبؤات منه في الوقت الفعلي!

تشغيل الاستدلال

يمنحك مقتطف الشفرة التالي لمحة عن شكل المخرجات. لإرسال طلبات إلى نموذج تم نشره ، يجب توفير نص الإدخال في ملف 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 video.


حول المؤلف

قم بتشغيل إنشاء النص باستخدام نماذج GPT وBloom على Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.الدكتور فيفيك مادان هو عالم تطبيقي مع فريق Amazon SageMaker JumpStart. حصل على الدكتوراه من جامعة إلينوي في Urbana-Champaign وكان باحثًا بعد الدكتوراه في Georgia Tech. وهو باحث نشط في التعلم الآلي وتصميم الخوارزمية وقد نشر أوراقًا علمية في مؤتمرات EMNLP و ICLR و COLT و FOCS و SODA.

قم بتشغيل إنشاء النص باستخدام نماذج GPT وBloom على Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.سانتوش كولكارني هو مهندس حلول المؤسسات في Amazon Web Services ويعمل مع العملاء الرياضيين في أستراليا. إنه متحمس لبناء تطبيقات موزعة على نطاق واسع لحل مشاكل الأعمال باستخدام معرفته في الذكاء الاصطناعي / التعلم الآلي والبيانات الضخمة وتطوير البرمجيات.

قم بتشغيل إنشاء النص باستخدام نماذج GPT وBloom على Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.د. أشيش خيتان هو عالم تطبيقي أقدم مع خوارزميات Amazon SageMaker المضمنة ويساعد في تطوير خوارزميات التعلم الآلي. حصل على درجة الدكتوراه من جامعة إلينوي في أوربانا شامبين. وهو باحث نشط في التعلم الآلي والاستدلال الإحصائي وقد نشر العديد من الأوراق البحثية في مؤتمرات NeurIPS و ICML و ICLR و JMLR و ACL و EMNLP.

الطابع الزمني:

اكثر من التعلم الآلي من AWS