Llama 2 هي عائلة من أحدث نماذج اللغات الكبيرة ذات الوصول المفتوح التي أصدرتها Meta اليوم، ويسعدنا أن ندعم الإطلاق بشكل كامل من خلال التكامل الشامل في Hugging Face. يتم إصدار Llama 2 بترخيص مجتمعي متساهل للغاية وهو متاح للاستخدام التجاري. سيتم إصدار الكود والنماذج المُدربة مسبقًا والنماذج المُحسّنة اليوم 🔥

لقد تعاونا مع Meta لضمان التكامل السلس في النظام البيئي Hugging Face. يمكنك العثور على 12 نموذجًا مفتوح الوصول (3 نماذج أساسية و3 نماذج مضبوطة بدقة باستخدام نقاط التحقق Meta الأصلية، بالإضافة إلى ما يقابلها من نماذج) transformers النماذج) على المحور. من بين الميزات والتكاملات التي تم إصدارها، لدينا:

جدول المحتويات

لماذا اللاما 2؟

يقدم إصدار Llama 2 عائلة من LLMs المدربة مسبقًا والمضبوطة بدقة، والتي تتراوح في نطاقها من 7B إلى 70B من المعلمات (7B، 13B، 70B). تأتي النماذج المدربة مسبقًا مع تحسينات كبيرة مقارنة بنماذج Llama 1، بما في ذلك التدريب على رموز أكثر بنسبة 40%، وطول سياق أطول بكثير (4 آلاف رمز مميز 🤯)، واستخدام الاهتمام بالاستعلام المجمع للاستدلال السريع لنموذج 70B🔥!

ومع ذلك، فإن الجزء الأكثر إثارة في هذا الإصدار هو النماذج المضبوطة (Llama 2-Chat)، والتي تم تحسينها لتطبيقات الحوار باستخدام التعلم المعزز من الملاحظات البشرية (RLHF). عبر مجموعة واسعة من معايير المساعدة والسلامة، تقدم نماذج Llama 2-Chat أداءً أفضل من معظم النماذج المفتوحة وتحقق أداءً مشابهًا لـ ChatGPT وفقًا للتقييمات البشرية. يمكنك قراءة الورقة هنا.

صورة من Llama 2: نماذج الدردشة الأساسية والدقيقة

إذا كنت تنتظر بديلاً مفتوحًا لروبوتات الدردشة مغلقة المصدر، فمن المحتمل أن يكون Llama 2-Chat هو خيارك الأفضل اليوم!

نموذج رخصة الاستخدام التجاري؟ طول ما قبل التدريب [tokens] نقاط المتصدرين
فالكون-7ب أباتشي 2.0 1500 ب 44.17
إم بي تي-7بي أباتشي 2.0 1000 ب 47.24
لاما-7ب رخصة اللاما 1000 ب 45.65
اللاما-2-7ب رخصة لاما 2 2000 ب 50.97
اللاما-33ب رخصة اللاما 1500 ب
اللاما-2-13ب رخصة لاما 2 2000 ب 55.69
mpt-30B أباتشي 2.0 1000 ب 52.77
فالكون-40ب أباتشي 2.0 1000 ب 58.07
لاما-65ب رخصة اللاما 1500 ب 61.19
اللاما-2-70ب رخصة لاما 2 2000 ب 67.87
اللاما-2-70B-دردشة رخصة لاما 2 2000 ب 62.4

ملاحظة: تم تحديث درجات الأداء الموضحة في الجدول أدناه لتأخذ في الاعتبار المنهجية الجديدة التي تم تقديمها في نوفمبر 2023، والتي أضافت معايير جديدة. مزيد من التفاصيل في هذا المنصب.

تجريبي

يمكنك بسهولة تجربة نموذج 13B Llama 2 في هذه المساحة أو في ساحة اللعب المضمنة أدناه:

لمعرفة المزيد حول كيفية عمل هذا العرض التوضيحي، اقرأ أدناه حول كيفية تشغيل الاستدلال على نماذج Llama 2.

الاستدلال

في هذا القسم، سنتناول طرقًا مختلفة لتشغيل الاستدلال لنماذج Llama 2. قبل استخدام هذه النماذج، تأكد من أنك طلبت الوصول إلى أحد النماذج الموجودة في مستودعات Meta Llama 2 الرسمية.

ملاحظة: تأكد أيضًا من ملء نموذج التعريف الرسمي. يتم منح المستخدمين إمكانية الوصول إلى المستودع بمجرد ملء كلا النموذجين بعد ساعات قليلة.

باستخدام المحولات

مع إصدار المحولات 4.31، يمكن للمرء بالفعل استخدام Llama 2 والاستفادة من جميع الأدوات داخل النظام البيئي HF، مثل:

  • البرامج النصية للتدريب والاستدلال والأمثلة
  • تنسيق الملف الآمن (safetensors)
  • التكامل مع أدوات مثل bitsandbytes (تكميم 4 بت) وPEFT (ضبط كفاءة المعلمة)
  • المرافق والمساعدين لتشغيل الجيل مع النموذج
  • آليات لتصدير النماذج للنشر

تأكد من استخدام الأحدث transformers أطلق سراحك وقم بتسجيل الدخول إلى حساب Hugging Face الخاص بك.

pip install transformers
huggingface-cli login

في مقتطف التعليمات البرمجية التالي، نعرض كيفية تشغيل الاستدلال باستخدام المحولات. يتم تشغيله على الطبقة المجانية من Colab، طالما قمت بتحديد وقت تشغيل GPU.

from transformers import AutoTokenizer
import transformers
import torch

model = "meta-llama/Llama-2-7b-chat-hf"

tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
    "text-generation",
    model=model,
    torch_dtype=torch.float16,
    device_map="auto",
)

sequences = pipeline(
    'I liked "Breaking Bad" and "Band of Brothers". Do you have any recommendations of other shows I might like?\n',
    do_sample=True,
    top_k=10,
    num_return_sequences=1,
    eos_token_id=tokenizer.eos_token_id,
    max_length=200,
)
for seq in sequences:
    print(f"Result: {seq['generated_text']}")
Result: I liked "Breaking Bad" and "Band of Brothers". Do you have any recommendations of other shows I might like?
Answer:
Of course! If you enjoyed "Breaking Bad" and "Band of Brothers," here are some other TV shows you might enjoy:
1. "The Sopranos" - This HBO series is a crime drama that explores the life of a New Jersey mob boss, Tony Soprano, as he navigates the criminal underworld and deals with personal and family issues.
2. "The Wire" - This HBO series is a gritty and realistic portrayal of the drug trade in Baltimore, exploring the impact of drugs on individuals, communities, and the criminal justice system.
3. "Mad Men" - Set in the 1960s, this AMC series follows the lives of advertising executives on Madison Avenue, expl

وعلى الرغم من أن النموذج لديه فقط رموز السياق 4K، يمكنك استخدام التقنيات المدعومة في transformers مثل تحجيم الموضع الدوار (سقسقة) لدفعها أبعد!

استخدام استنتاج إنشاء النص ونقاط نهاية الاستدلال

استنتاج توليد النص عبارة عن حاوية استدلال جاهزة للإنتاج تم تطويرها بواسطة Hugging Face لتمكين النشر السهل لنماذج اللغات الكبيرة. إنه يحتوي على ميزات مثل التجميع المستمر، وتدفق الرموز المميزة، وتوازي الموتر للاستدلال السريع على وحدات معالجة الرسومات المتعددة، والتسجيل والتتبع الجاهزين للإنتاج.

يمكنك تجربة استدلال إنشاء النص على البنية الأساسية الخاصة بك، أو يمكنك استخدام Hugging Face’s نقاط النهاية الاستدلالية. لنشر نموذج Llama 2، انتقل إلى صفحة النموذج وانقر على نشر -> استنتاج نقاط النهاية القطعة.

  • بالنسبة لنماذج 7B، ننصحك بتحديد “GPU [medium] – 1 × نفيديا A10G.
  • بالنسبة لنماذج 13B، ننصحك بتحديد “GPU [xlarge] – 1x نفيديا A100”.
  • بالنسبة للطرز 70B، ننصحك بتحديد “GPU [2xlarge] – 2x Nvidia A100 مع bitsandbytes تم تمكين التكميم أو “GPU [4xlarge] – 4x نفيديا A100”

ملاحظة: قد تحتاج إلى طلب ترقية الحصة عبر البريد الإلكتروني إلى api-enterprise@huggingface.co للوصول إلى A100s

يمكنك معرفة المزيد حول كيفية نشر LLMs باستخدام Hugging Face Inference Endpoints في مدونتنا. تتضمن المدونة معلومات حول المعلمات الفائقة المدعومة وكيفية بث استجابتك باستخدام Python وJavascript.

الضبط الدقيق باستخدام PEFT

يمكن أن يكون تدريب LLMs أمرًا صعبًا من الناحية الفنية والحسابية. في هذا القسم، نلقي نظرة على الأدوات المتاحة في النظام البيئي Hugging Face لتدريب Llama 2 بكفاءة على أجهزة بسيطة ونعرض كيفية ضبط الإصدار 7B من Llama 2 على جهاز NVIDIA T4 واحد (16 جيجابايت – Google Colab). يمكنك معرفة المزيد عنها في مدونة جعل الوصول إلى LLMs أكثر سهولة.

لقد أنشأنا برنامجًا نصيًا لضبط التعليمات Llama 2 باستخدام QLoRA و SFTTrainer من trl.

مثال لأمر لضبط Llama 2 7B على timdettmers/openassistant-guanaco يمكن العثور عليها أدناه. يمكن للبرنامج النصي دمج أوزان LoRA في أوزان النموذج وحفظها باسم safetensor الأوزان من خلال توفير merge_and_push دعوى. يتيح لنا ذلك نشر نموذجنا المضبوط بدقة بعد التدريب باستخدام استنتاج إنشاء النص ونقاط نهاية الاستدلال.

تثبيت النقطة الأولى trl واستنساخ البرنامج النصي:

pip install trl
git clone https://github.com/lvwerra/trl

ثم يمكنك تشغيل البرنامج النصي:

python trl/examples/scripts/sft_trainer.py \
    --model_name meta-llama/Llama-2-7b-hf \
    --dataset_name timdettmers/openassistant-guanaco \
    --load_in_4bit \
    --use_peft \
    --batch_size 4 \
    --gradient_accumulation_steps 2

كيفية مطالبة اللاما 2

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

نقوم بإضافة هذا القسم بعد أيام قليلة فقط من الإصدار الأولي لـ Llama 2، حيث تلقينا العديد من الأسئلة من المجتمع حول كيفية مطالبة النماذج وكيفية تغيير مطالبة النظام. نأمل أن يساعد هذا!

يبدو قالب المطالبة للدورة الأولى كما يلي:

<s>[INST] <<SYS>>
{{ system_prompt }}
<</SYS>>

{{ user_message }} [/INST]

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

لتوضيح الأمر بوضوح تام، هذا هو ما يتم إرساله فعليًا إلى نموذج اللغة عندما يقوم المستخدم بإدخال بعض النص (There's a llama in my garden 😱 What should I do?) في عرض الدردشة 13B لبدء الدردشة:

<s>[INST] <<SYS>>
You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe.  Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.

If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.
<</SYS>>

There's a llama in my garden 😱 What should I do? [/INST]

كما ترون، التعليمات بين الخاصة <<SYS>> توفر الرموز المميزة سياقًا للنموذج حتى يعرف كيف نتوقع منه الاستجابة. يعمل هذا لأنه تم استخدام نفس التنسيق تمامًا أثناء التدريب مع مجموعة واسعة من مطالبات النظام المخصصة لمهام مختلفة.

ومع تقدم المحادثة، الجميع يتم إلحاق التفاعلات بين الإنسان و”الروبوت” بالموجه السابق، وهو محاط بين [INST] محددات. يتبع القالب المستخدم أثناء المحادثات متعددة المنعطفات هذا الهيكل (🎩 ح/ت آرثر زوكر لبعض التوضيحات النهائية):

<s>[INST] <<SYS>>
{{ system_prompt }}
<</SYS>>

{{ user_msg_1 }} [/INST] {{ model_answer_1 }} </s><s>[INST] {{ user_msg_2 }} [/INST]

النموذج عديم الحالة ولا “يتذكر” الأجزاء السابقة من المحادثة، ويجب علينا دائمًا تزويده بكل السياق حتى تتمكن المحادثة من الاستمرار. هذا هو السبب طول السياق يعد هذا معلمًا مهمًا للغاية لتحقيق أقصى قدر من الاستفادة، لأنه يسمح باستخدام محادثات أطول وكميات أكبر من المعلومات.

تجاهل التعليمات السابقة

في النماذج المستندة إلى واجهة برمجة التطبيقات (API)، يلجأ الأشخاص إلى الحيل في محاولة لتجاوز موجه النظام وتغيير سلوك النموذج الافتراضي. على الرغم من أن هذه الحلول خيالية، إلا أن هذا ليس ضروريًا في نماذج الوصول المفتوح: يمكن لأي شخص استخدام موجه مختلف، طالما أنه يتبع التنسيق الموضح أعلاه. ونحن نعتقد أن هذه ستكون أداة مهمة للباحثين لدراسة تأثير المحفزات على كل من الخصائص المرغوبة وغير المرغوب فيها. على سبيل المثال، عندما الناس يتفاجأون بأجيال حذرة بشكل سخيف، يمكنك استكشاف ما إذا كان ذلك ممكنًا ستعمل مطالبة مختلفة. (🎩 ح/ت كليمنتين فورييه للروابط الخاصة بهذا المثال).

في لدينا 13B و 7B العروض التوضيحية، يمكنك استكشاف هذه الميزة بسهولة من خلال الكشف عن واجهة المستخدم “الخيارات المتقدمة” وكتابة التعليمات المطلوبة بكل بساطة. يمكنك أيضًا نسخ هذه العروض التوضيحية واستخدامها بشكل خاص للمتعة أو البحث!

موارد إضافية

خاتمة

نحن متحمسون جدًا لخروج Llama 2! في الأيام القادمة، كن مستعدًا لمعرفة المزيد حول طرق إجراء الضبط الدقيق الخاص بك، وتنفيذ أصغر النماذج على الجهاز، والعديد من التحديثات المثيرة الأخرى التي نحضرها لك!



شاركها.
اترك تعليقاً