شعار زيفيرنت

كود Llama 70B متوفر الآن في Amazon SageMaker JumpStart | خدمات الويب الأمازون

التاريخ:

اليوم، يسعدنا أن نعلن أن نماذج مؤسسة Code Llama، التي طورتها شركة Meta، متاحة للعملاء من خلال أمازون سيج ميكر جومب ستارت للنشر بنقرة واحدة لتشغيل الاستدلال. Code Llama هو نموذج لغة كبير متطور (LLM) قادر على إنشاء تعليمات برمجية ولغة طبيعية حول التعليمات البرمجية من كل من التعليمات البرمجية واللغة الطبيعية. يمكنك تجربة هذا النموذج باستخدام SageMaker JumpStart، وهو مركز التعلم الآلي (ML) الذي يوفر الوصول إلى الخوارزميات والنماذج وحلول تعلم الآلة حتى تتمكن من بدء استخدام تعلم الآلة بسرعة. في هذا المنشور، سنتعرف على كيفية اكتشاف نموذج Code Llama ونشره عبر SageMaker JumpStart.

كود اللاما

Code Llama هو نموذج تم إصداره بواسطة مييتااا المبني على Llama 2. تم تصميم هذا النموذج المتطور لتحسين إنتاجية مهام البرمجة للمطورين من خلال مساعدتهم على إنشاء تعليمات برمجية عالية الجودة وموثقة جيدًا. تتفوق النماذج في Python وC++ وJava وPHP وC# وTypeScript وBash، ولديها القدرة على توفير وقت المطورين وجعل سير عمل البرامج أكثر كفاءة.

يأتي في ثلاثة أشكال مختلفة، تم تصميمه لتغطية مجموعة واسعة من التطبيقات: النموذج التأسيسي (Code Llama)، ونموذج Python المتخصص (Code Llama Python)، ونموذج متابعة التعليمات لفهم تعليمات اللغة الطبيعية (Code Llama Instruct). تأتي جميع متغيرات Code Llama بأربعة أحجام: معلمات 7B و13B و34B و70B. تدعم متغيرات القاعدة والتعليمات 7B و13B عملية التعبئة بناءً على المحتوى المحيط، مما يجعلها مثالية لتطبيقات مساعد التعليمات البرمجية. تم تصميم النماذج باستخدام Llama 2 كقاعدة ثم تم تدريبها على 500 مليار رمز مميز من بيانات التعليمات البرمجية، مع تدريب إصدار Python المتخصص على 100 مليار رمز إضافي. توفر نماذج Code Llama للأجيال المستقرة ما يصل إلى 100,000 رمز مميز للسياق. يتم تدريب جميع النماذج على تسلسلات مكونة من 16,000 رمز مميز وتظهر تحسينات على المدخلات بما يصل إلى 100,000 رمز مميز.

النموذج متاح تحت نفس ترخيص المجتمع باسم Llama 2.

نماذج الأساس في SageMaker

يوفر SageMaker JumpStart إمكانية الوصول إلى مجموعة من النماذج من مراكز النماذج الشائعة، بما في ذلك Hugging Face وPyTorch Hub وTensorFlow Hub، والتي يمكنك استخدامها ضمن سير عمل تطوير تعلم الآلة في SageMaker. أدت التطورات الأخيرة في تعلم الآلة إلى ظهور فئة جديدة من النماذج المعروفة باسم نماذج الأساس، والتي يتم تدريبها عادةً على مليارات المعلمات وتكون قابلة للتكيف مع فئة واسعة من حالات الاستخدام، مثل تلخيص النص وتوليد الفن الرقمي وترجمة اللغة. نظرًا لأن تدريب هذه النماذج مكلف، يرغب العملاء في استخدام النماذج الأساسية الحالية المدربة مسبقًا وضبطها حسب الحاجة، بدلاً من تدريب هذه النماذج بأنفسهم. يوفر SageMaker قائمة منسقة من النماذج التي يمكنك الاختيار من بينها على وحدة تحكم SageMaker.

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

اكتشف نموذج Code Llama في SageMaker JumpStart

لنشر نموذج Code Llama 70B، أكمل الخطوات التالية أمازون ساجميكر ستوديو:

  1. في الصفحة الرئيسية لـ SageMaker Studio، اختر بداية القفز في جزء التنقل.

  2. ابحث عن موديلات Code Llama واختر موديل Code Llama 70B من قائمة الموديلات المعروضة.

    يمكنك العثور على مزيد من المعلومات حول النموذج على بطاقة طراز Code Llama 70B.

    توضح لقطة الشاشة التالية إعدادات نقطة النهاية. يمكنك تغيير الخيارات أو استخدام الخيارات الافتراضية.

  3. اقبل اتفاقية ترخيص المستخدم النهائي (EULA) واختر نشر.

    سيؤدي هذا إلى بدء عملية نشر نقطة النهاية، كما هو موضح في لقطة الشاشة التالية.

انشر النموذج باستخدام SageMaker Python SDK

وبدلاً من ذلك، يمكنك النشر من خلال مثال دفتر الملاحظات عن طريق الاختيار افتح المفكرة ضمن صفحة تفاصيل النموذج في Classic Studio. يوفر نموذج دفتر الملاحظات إرشادات شاملة حول كيفية نشر النموذج للاستدلال وتنظيف الموارد.

للنشر باستخدام دفتر الملاحظات، نبدأ بتحديد النموذج المناسب، المحدد بواسطة model_id. يمكنك نشر أي من النماذج المحددة على SageMaker باستخدام الكود التالي:

from sagemaker.jumpstart.model import JumpStartModel

model = JumpStartModel(model_id="meta-textgeneration-llama-codellama-70b")
predictor = model.deploy(accept_eula=False)  # Change EULA acceptance to True

يؤدي هذا إلى نشر النموذج على SageMaker مع التكوينات الافتراضية ، بما في ذلك نوع المثيل الافتراضي وتكوينات VPC الافتراضية. يمكنك تغيير هذه التكوينات عن طريق تحديد قيم غير افتراضية بتنسيق نموذج JumpStart. لاحظ أنه بشكل افتراضي، accept_eula ومن المقرر أن False. تحتاج إلى تعيين accept_eula=True لنشر نقطة النهاية بنجاح. ومن خلال القيام بذلك، فإنك توافق على اتفاقية ترخيص المستخدم وسياسة الاستخدام المقبول كما ذكرنا سابقًا. بامكانك ايضا بإمكانك تحميله اتفاقية الترخيص.

قم باستدعاء نقطة نهاية SageMaker

بعد نشر نقطة النهاية، يمكنك تنفيذ الاستدلال باستخدام Boto3 أو SageMaker Python SDK. في التعليمة البرمجية التالية، نستخدم SageMaker Python SDK لاستدعاء النموذج للاستدلال وطباعة الاستجابة:

def print_response(payload, response):
    print(payload["inputs"])
    print(f"> {response[0]['generated_text']}")
    print("n==================================n")

وظيفة print_response يأخذ حمولة تتكون من الحمولة واستجابة النموذج ويطبع المخرجات. يدعم Code Llama العديد من المعلمات أثناء إجراء الاستدلال:

  • الحد الاقصى للطول - يولد النموذج نصًا حتى يصل طول الإخراج (الذي يتضمن طول سياق الإدخال) max_length. إذا تم تحديده ، يجب أن يكون عددًا صحيحًا موجبًا.
  • max_new_tokens - يقوم النموذج بإنشاء نص حتى يصل طول الإخراج (باستثناء طول سياق الإدخال). max_new_tokens. إذا تم تحديده ، يجب أن يكون عددًا صحيحًا موجبًا.
  • عدد_الكتف – يحدد هذا عدد الحزم المستخدمة في البحث الجشع. إذا تم تحديده، فيجب أن يكون عددًا صحيحًا أكبر من أو يساوي num_return_sequences.
  • no_repeat_ngram_size - يضمن النموذج تسلسل كلمات no_repeat_ngram_size لا يتكرر في تسلسل الإخراج. إذا تم تحديده ، يجب أن يكون عددًا صحيحًا موجبًا أكبر من 1.
  • درجة الحرارة - هذا يتحكم في العشوائية في الإخراج. أعلى temperature يؤدي إلى تسلسل إخراج بكلمات ذات احتمالية منخفضة وأقل temperature يؤدي إلى تسلسل إخراج بكلمات ذات احتمالية عالية. لو temperature هو 0، فإنه يؤدي إلى فك التشفير الجشع. إذا تم تحديده، يجب أن يكون تعويمًا إيجابيًا.
  • في وقت مبكر - إذا True، يتم الانتهاء من إنشاء النص عندما تصل جميع فرضيات الشعاع إلى نهاية الجملة. إذا تم تحديده، فيجب أن يكون منطقيًا.
  • do_sample - إذا True، يقوم النموذج باختبار الكلمة التالية حسب الاحتمالية. إذا تم تحديده، فيجب أن يكون منطقيًا.
  • top_k - في كل خطوة من خطوات إنشاء النص، يتم أخذ عينات النموذج من الملف فقط top_k على الأرجح الكلمات. إذا تم تحديده ، يجب أن يكون عددًا صحيحًا موجبًا.
  • top_p - في كل خطوة من خطوات إنشاء النص، يأخذ النموذج عينات من أصغر مجموعة ممكنة من الكلمات ذات الاحتمالية التراكمية top_p. إذا تم تحديده، فيجب أن يكون عائمًا بين 0 و1.
  • return_full_text - إذا True، سيكون نص الإدخال جزءًا من النص الناتج الذي تم إنشاؤه. إذا تم تحديده، فيجب أن يكون منطقيًا. القيمة الافتراضية لذلك هي False.
  • توقف - إذا تم تحديدها، يجب أن تكون قائمة من السلاسل. يتوقف إنشاء النص في حالة إنشاء أي من السلاسل المحددة.

يمكنك تحديد أي مجموعة فرعية من هذه المعلمات أثناء استدعاء نقطة النهاية. بعد ذلك، نعرض مثالاً لكيفية استدعاء نقطة النهاية باستخدام هذه الوسيطات.

اكتمال الرمز

توضح الأمثلة التالية كيفية تنفيذ إكمال التعليمات البرمجية حيث تكون استجابة نقطة النهاية المتوقعة هي الاستمرار الطبيعي للموجه.

نقوم أولاً بتشغيل الكود التالي:

prompt = """
import socket

def ping_exponential_backoff(host: str):
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

نحصل على الناتج التالي:

"""
    Pings the given host with exponential backoff.
    """
    timeout = 1
    while True:
        try:
            socket.create_connection((host, 80), timeout=timeout)
            return
        except socket.error:
            timeout *= 2

في مثالنا التالي، نقوم بتشغيل الكود التالي:

prompt = """
import argparse
def main(string: str):
    print(string)
    print(string[::-1])
if __name__ == "__main__":
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
predictor.predict(payload)

نحصل على الناتج التالي:

parser = argparse.ArgumentParser(description='Reverse a string')
    parser.add_argument('string', type=str, help='String to reverse')
    args = parser.parse_args()
    main(args.string)

رمز الجيل

توضح الأمثلة التالية إنشاء كود Python باستخدام Code Llama.

نقوم أولاً بتشغيل الكود التالي:

prompt = """
Write a python function to traverse a list in reverse.
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

نحصل على الناتج التالي:

def reverse(list1):
    for i in range(len(list1)-1,-1,-1):
        print(list1[i])

list1 = [1,2,3,4,5]
reverse(list1)

في مثالنا التالي، نقوم بتشغيل الكود التالي:

prompt = """
Write a python function to to carry out bubble sort.
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.1, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

نحصل على الناتج التالي:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

arr = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(arr))

هذه بعض الأمثلة على المهام المتعلقة بالرمز باستخدام Code Llama 70B. يمكنك استخدام النموذج لإنشاء تعليمات برمجية أكثر تعقيدًا. نحن نشجعك على تجربتها باستخدام حالات الاستخدام والأمثلة المتعلقة بالرمز!

تنظيف

بعد اختبار نقاط النهاية، تأكد من حذف نقاط نهاية استدلال SageMaker والنموذج لتجنب تكبد رسوم. استخدم الكود التالي:

predictor.delete_endpoint()

وفي الختام

في هذا المنشور، قدمنا ​​Code Llama 70B على SageMaker JumpStart. يعد Code Llama 70B نموذجًا متطورًا لإنشاء التعليمات البرمجية من مطالبات اللغة الطبيعية بالإضافة إلى التعليمات البرمجية. يمكنك نشر النموذج من خلال بضع خطوات بسيطة في SageMaker JumpStart ثم استخدامه لتنفيذ المهام المتعلقة بالتعليمات البرمجية مثل إنشاء التعليمات البرمجية وملء التعليمات البرمجية. كخطوة تالية، حاول استخدام النموذج مع حالات الاستخدام والبيانات المتعلقة بالرمز الخاصة بك.


عن المؤلفين

دكتور كايل أولريش هو عالم تطبيقي مع فريق Amazon SageMaker JumpStart. تشمل اهتماماته البحثية خوارزميات التعلم الآلي القابلة للتطوير ، والرؤية الحاسوبية ، والسلاسل الزمنية ، والمعاملات البايزية غير البارامترية ، والعمليات الغاوسية. حصل على درجة الدكتوراه من جامعة ديوك وقد نشر أبحاثًا في NeurIPS و Cell و Neuron.

د.فاروق صابر هو مهندس حلول متخصص في الذكاء الاصطناعي وتعلم الآلة في AWS. وهو حاصل على درجتي الدكتوراه والماجستير في الهندسة الكهربائية من جامعة تكساس في أوستن ودرجة الماجستير في علوم الكمبيوتر من معهد جورجيا للتكنولوجيا. لديه أكثر من 15 عامًا من الخبرة العملية ويحب أيضًا تعليم وإرشاد طلاب الجامعات. في AWS ، يساعد العملاء على صياغة مشاكل أعمالهم وحلها في علوم البيانات والتعلم الآلي ورؤية الكمبيوتر والذكاء الاصطناعي والتحسين العددي والمجالات ذات الصلة. من مقره في دالاس ، تكساس ، يحب هو وعائلته السفر والقيام برحلات طويلة على الطريق.

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

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة