Meta’s Llama 3، الإصدار التالي من عائلة Llama ذات الوصول المفتوح، تم إصدارها الآن وهي متاحة على Hugging Face. من الرائع أن نرى Meta تواصل التزامها بفتح الذكاء الاصطناعي، ويسعدنا أن ندعم الإطلاق بشكل كامل من خلال التكامل الشامل في النظام البيئي Hugging Face.
يأتي Llama 3 بحجمين: 8B للنشر والتطوير الفعال على وحدة معالجة الرسومات بحجم المستهلك، و70B لتطبيقات الذكاء الاصطناعي الأصلية واسعة النطاق. كلاهما يأتي في المتغيرات الأساسية والتعليمات المضبوطة. بالإضافة إلى النماذج الأربعة، تم تحسين إصدار جديد من Llama Guard في Llama 3 8B وتم إصداره باسم Llama Guard 2 (ضبط السلامة الدقيق).
لقد تعاونا مع Meta لضمان أفضل تكامل في نظام Hugging Face البيئي. يمكنك العثور على جميع النماذج الخمسة ذات الوصول المفتوح (نموذجان أساسيان، ونموذجان مضبوطان بدقة وLlama Guard) على المحور. من بين الميزات والتكاملات التي تم إصدارها، لدينا:
جدول المحتويات
ما الجديد في لاما 3؟
يقدم إصدار Llama 3 4 نماذج LLM مفتوحة جديدة من Meta استنادًا إلى بنية Llama 2. وهي تأتي بحجمين: معلمات 8B و70B، ولكل منها إصدارات أساسية (مدربة مسبقًا) وإصدارات مضبوطة حسب التعليمات. يمكن تشغيل جميع المتغيرات على أنواع مختلفة من أجهزة المستهلك ويبلغ طول سياقها 8K من الرموز المميزة.
بالإضافة إلى هذه النماذج الأساسية الأربعة، تم إصدار Llama Guard 2 أيضًا. تم ضبطه بدقة على Llama 3 8B، وهو أحدث إصدار في عائلة Llama Guard. تم تصميم Llama Guard 2، المصمم لحالات استخدام الإنتاج، لتصنيف مدخلات LLM (المطالبات) بالإضافة إلى استجابات LLM من أجل اكتشاف المحتوى الذي قد يعتبر غير آمن في تصنيف المخاطر.
التغيير الكبير في Llama 3 مقارنة بـ Llama 2 هو استخدام أداة رمزية جديدة تعمل على توسيع حجم المفردات إلى 128,256 (من 32 ألف رمز في الإصدار السابق). يمكن لهذه المفردات الأكبر تشفير النص بشكل أكثر كفاءة (سواء بالنسبة للإدخال أو الإخراج) ومن المحتمل أن تؤدي إلى تعدد لغات أقوى. يأتي هذا بتكلفة، على الرغم من أن مصفوفات الإدخال والإخراج المضمنة أكبر، وهو ما يمثل جزءًا كبيرًا من زيادة عدد المعلمات في النموذج الصغير: فهو ينتقل من 7B في Llama 2 إلى 8B في Llama 3. بالإضافة إلى ذلك، يستخدم الإصدار 8B من النموذج الآن انتباه الاستعلام المجمع (GQA)، وهو تمثيل فعال من شأنه أن يساعد في السياقات الأطول.
تم تدريب نماذج Llama 3 بحوالي 8 أضعاف البيانات على أكثر من 15 تريليون رمز مميز على مزيج جديد من البيانات المتاحة للجمهور عبر الإنترنت في مجموعتين تحتويان على 24000 وحدة معالجة رسوميات. لا نعرف التفاصيل الدقيقة لمزيج التدريب، ولا يمكننا إلا أن نخمن أن تنظيم البيانات بشكل أكبر وأكثر دقة كان عاملاً كبيرًا في تحسين الأداء. تم تحسين Llama 3 Instruct لتطبيقات الحوار وتم تدريبه على أكثر من 10 مليون عينة من البيانات المشروحة بواسطة الإنسان مع مزيج من الضبط الدقيق الخاضع للإشراف (SFT)، وأخذ عينات الرفض، وتحسين السياسة القريبة (PPO)، وتحسين السياسة المباشرة (DPO).
فيما يتعلق بشروط الترخيص، يأتي Llama 3 مع ترخيص متساهل يسمح بإعادة التوزيع والضبط والأعمال المشتقة. يعد شرط الإسناد الصريح جديدًا في ترخيص Llama 3 ولم يكن موجودًا في Llama 2. على سبيل المثال، تحتاج النماذج المشتقة إلى تضمين “Llama 3” في بداية اسمها، كما تحتاج أيضًا إلى ذكر “Built with Meta Llama 3” في الأعمال أو الخدمات المشتقة. للحصول على التفاصيل الكاملة، يرجى التأكد من قراءة الترخيص الرسمي.
تقييم اللاما 3
هنا، يمكنك الاطلاع على قائمة بالنماذج ونتائج Open LLM Leaderboard الخاصة بهم. هذه ليست قائمة شاملة ونحن نشجعك على إلقاء نظرة على لوحة المتصدرين الكاملة. لاحظ أن LLM Leaderboard مفيد بشكل خاص لتقييم النماذج المدربة مسبقًا، حيث توجد معايير أخرى خاصة بنماذج المحادثة.
كيفية مطالبة اللاما 3
النماذج الأساسية ليس لها تنسيق فوري. مثل النماذج الأساسية الأخرى، يمكن استخدامها لمواصلة تسلسل الإدخال مع استمرار معقول أو للاستدلال على صفر طلقة/طلقة قليلة. كما أنها تشكل أساسًا رائعًا لضبط حالات الاستخدام الخاصة بك. تستخدم إصدارات Instruct بنية المحادثة التالية:
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
system_prompt <|eot_id|><|start_header_id|>user<|end_header_id|>
user_msg_1 <|eot_id|><|start_header_id|>assistant<|end_header_id|>
model_answer_1 <|eot_id|>
يجب إعادة إنتاج هذا التنسيق تمامًا للاستخدام الفعال. سنوضح لاحقًا مدى سهولة إعادة إنتاج موجه التعليمات باستخدام قالب الدردشة المتوفر في transformers.
تجريبي
يمكنك الدردشة مع تعليمات Llama 3 70B على Hugging Chat! تحقق من الرابط هنا: https://huggingface.co/chat/models/meta-llama/Meta-Llama-3-70B-instruct
باستخدام 🤗 المحولات
مع إصدار Transformers 4.40، يمكنك استخدام Llama 3 والاستفادة من جميع الأدوات الموجودة في نظام Hugging Face البيئي، مثل:
- البرامج النصية للتدريب والاستدلال والأمثلة
- تنسيق الملف الآمن (
safetensors) - التكامل مع أدوات مثل bitsandbytes (تكميم 4 بت)، PEFT (ضبط كفاءة المعلمة)، وFlash Attention 2
- المرافق والمساعدين لتشغيل الجيل مع النموذج
- آليات لتصدير النماذج للنشر
بالإضافة إلى ذلك، تتوافق نماذج Llama 3 مع torch.compile() مع الرسوم البيانية CUDA، مما يمنحهم تسريعًا يصل إلى 4x في وقت الاستدلال!
لاستخدام نماذج Llama 3 مع المحولات، تأكد من تثبيت إصدار حديث من transformers:
pip install --upgrade transformers
يوضح المقتطف التالي كيفية الاستخدام Llama-3-8b-instruct مع المحولات. ويتطلب حوالي 16 جيجابايت من ذاكرة الوصول العشوائي (RAM)، والتي تتضمن وحدات معالجة الرسومات الاستهلاكية مثل 3090 أو 4090.
from transformers import pipeline
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipe = pipeline(
"text-generation",
model=model_id,
model_kwargs="torch_dtype": torch.bfloat16,
device="cuda",
)
messages = [
"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!",
"role": "user", "content": "Who are you?",
]
terminators = [
pipe.tokenizer.eos_token_id,
pipe.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipe(
messages,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
assistant_response = outputs[0]["generated_text"][-1]["content"]
print(assistant_response)
Arrrr ، لي القلبية! اسمي أن أكون كابتن تشات، أكثر روبوت دردشة قرصنة فظًا أبحر في البحار السبعة على الإطلاق! سأكون هنا لمسح سطح عقلك بإجابات موثوقة، ذكي؟ سأكون مستعدًا لرفع جولي روجر والإبحار لقضاء وقت ممتع مغامر يا صديقي! إذًا، ما الذي أحضرك إلى هذه المياه العادلة؟
بعض التفاصيل:
- لقد قمنا بتحميل النموذج
bfloat16. هذا هو النوع الذي تستخدمه نقطة التحقق الأصلية التي نشرتها Meta، لذا فهي الطريقة الموصى بها للتشغيل لضمان أفضل دقة أو لإجراء التقييمات. للاستخدام في العالم الحقيقي، فهو آمن أيضًا للاستخدامfloat16، والذي قد يكون أسرع اعتمادًا على جهازك. - قد تنتهي استجابات المساعد بالرمز المميز
<|eot_id|>، ولكن يجب علينا أيضًا إيقاف الإنشاء إذا تم العثور على رمز EOS المميز. يمكننا إيقاف التوليد مبكرًا من خلال توفير قائمة بأجهزة الإنهاء في ملفeos_token_idالمعلمة. - استخدمنا معلمات أخذ العينات الافتراضية (
temperatureوtop_p) مأخوذ من قاعدة بيانات التعريف الأصلية. لم يكن لدينا الوقت لإجراء اختبارات مكثفة بعد، فلا تتردد في الاستكشاف!
يمكنك أيضًا تحديد حجم النموذج تلقائيًا، وتحميله في وضع 8 بت أو حتى 4 بت. يستغرق التحميل 4 بت حوالي 7 جيجابايت من الذاكرة للتشغيل، مما يجعله متوافقًا مع الكثير من بطاقات المستهلك وجميع وحدات معالجة الرسومات في Google Colab. هذه هي الطريقة التي يمكنك بها تحميل خط أنابيب التوليد في 4 بت:
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs=
"torch_dtype": torch.float16,
"quantization_config": "load_in_4bit": True,
"low_cpu_mem_usage": True,
,
)
لمزيد من التفاصيل حول استخدام النماذج مع المحولات، يرجى التحقق من بطاقات النماذج.
تكاملات الاستدلال
في هذا القسم، سنستعرض طرقًا مختلفة لتشغيل الاستدلال لنماذج Llama 3. قبل استخدام هذه النماذج، تأكد من أنك طلبت الوصول إلى أحد النماذج الموجودة في مستودعات Meta Llama 3 الرسمية.
التكامل مع نقاط النهاية الاستدلالية
يمكنك نشر Llama 3 على نقاط نهاية الاستدلال الخاصة بـ Hugging Face، والتي تستخدم استدلال إنشاء النص كواجهة خلفية. إن استدلال إنشاء النص عبارة عن حاوية استدلال جاهزة للإنتاج تم تطويرها بواسطة Hugging Face لتمكين النشر السهل لنماذج اللغات الكبيرة. إنه يحتوي على ميزات مثل التجميع المستمر، وتدفق الرموز المميزة، وتوازي الموتر للاستدلال السريع على وحدات معالجة الرسومات المتعددة، والتسجيل والتتبع الجاهزين للإنتاج.
لنشر Llama 3، انتقل إلى صفحة النموذج وانقر على عنصر واجهة المستخدم Deploy -> Inference Endpoints. يمكنك معرفة المزيد حول نشر LLMs باستخدام Hugging Face Inference Endpoints في منشور مدونة سابق. تدعم Inference Endpoints واجهة برمجة تطبيقات الرسائل من خلال استدلال إنشاء النص، مما يسمح لك بالتبديل من نموذج مغلق آخر إلى نموذج مفتوح بمجرد تغيير عنوان URL.
from openai import OpenAI
client = OpenAI(
base_url="<ENDPOINT_URL>" + "/v1/",
api_key="<HF_API_TOKEN>",
)
chat_completion = client.chat.completions.create(
model="tgi",
messages=[
"role": "user", "content": "Why is open-source software important?",
],
stream=True,
max_tokens=500
)
for message in chat_completion:
print(message.choices[0].delta.content, end="")
التكامل مع جوجل كلاود
يمكنك نشر Llama 3 على Google Cloud من خلال Vertex AI أو Google Kubernetes Engine (GKE)، باستخدام استدلال إنشاء النص.
لنشر نموذج Llama 3 من Hugging Face، انتقل إلى صفحة النموذج وانقر على Deploy -> Google Cloud. سينقلك هذا إلى Google Cloud Console، حيث يمكنك بنقرة واحدة نشر Llama 3 على Vertex AI أو GKE.
التكامل مع أمازون SageMaker
يمكنك نشر Llama 3 وتدريبها على Amazon SageMaker من خلال AWS Jumpstart أو باستخدام Hugging Face LLM Container.
لنشر نموذج Llama 3 من Hugging Face، انتقل إلى صفحة النموذج وانقر على Deploy -> Amazon SageMaker. سيعرض هذا مقتطف التعليمات البرمجية الذي يمكنك نسخه وتنفيذه في بيئتك. سيقوم Amazon SageMaker الآن بإنشاء نقطة نهاية استدلال مخصصة يمكنك استخدامها لإرسال الطلبات.
الضبط الدقيق باستخدام 🤗 TRL
يمكن أن يكون تدريب LLMs أمرًا صعبًا من الناحية الفنية والحسابية. في هذا القسم، سنلقي نظرة على الأدوات المتاحة في نظام Hugging Face البيئي لتدريب Llama 3 بكفاءة على وحدات معالجة الرسومات ذات الحجم الاستهلاكي. يوجد أدناه مثال لأمر لضبط Llama 3 في مجموعة بيانات No Robots. نحن نستخدم التكميم 4 بت، وسيقوم QLoRA وTRL’s SFTTrainer تلقائيًا بتنسيق مجموعة البيانات إلى chatml شكل. دعونا نبدأ!
أولاً، قم بتثبيت أحدث إصدار من 🤗 TRL.
pip install -U transformers trl accelerate
إذا كنت ترغب فقط في الدردشة مع العارضة الموجودة في الجهاز، يمكنك استخدام chat أمر TRL CLI (لمزيد من المعلومات، راجع المستندات):
trl chat \
--model_name_or_path meta-llama/Meta-Llama-3-8B-Instruct \
--device cuda \
--eos_tokens "<|end_of_text|>,<|eod_id|>"
يمكنك أيضًا استخدام TRL CLI للإشراف على الضبط الدقيق (SFT) Llama 3 على مجموعة البيانات المخصصة الخاصة بك. استخدم trl sft أمر وتمرير وسيطات التدريب الخاصة بك كوسيطة CLI. تأكد من تسجيل الدخول وإمكانية الوصول إلى نقطة تفتيش Llama 3. يمكنك القيام بذلك مع huggingface-cli login.
trl sft \
--model_name_or_path meta-llama/Meta-Llama-3-8B \
--dataset_name HuggingFaceH4/no_robots \
--learning_rate 0.0001 \
--per_device_train_batch_size 4 \
--max_seq_length 2048 \
--output_dir ./llama3-sft \
--use_peft \
--load_in_4bit \
--log_with wandb \
--gradient_checkpointing \
--logging_steps 10
سيؤدي هذا إلى تشغيل الضبط الدقيق من جهازك الطرفي ويستغرق حوالي 4 ساعات للتدريب على A10G واحد، ولكن يمكن موازنته بسهولة عن طريق التغيير والتبديل --num_processes إلى عدد وحدات معالجة الرسومات المتوفرة لديك.
ملاحظة: يمكنك أيضًا استبدال وسيطات CLI بـ yaml ملف. تعرف على المزيد حول TRL CLI هنا.
موارد إضافية
شكر وتقدير
إن إطلاق مثل هذه النماذج مع الدعم والتقييمات في النظام البيئي لن يكون ممكنًا بدون مساهمات العديد من أفراد المجتمع، بما في ذلك
- كليمنتين فورييه، وناثان حبيب، وإليوثر إيفاليوشن هارنس لتقييمات ماجستير إدارة الأعمال
- أوليفييه ديهين ونيكولاس باتري لدعم استدلال إنشاء النص
- ظهور Arthur Zucker وLysandre لأول مرة لإضافة دعم Llama 3 في المحولات والرموز المميزة
- ناثان سارازين، وفيكتور موستار، وكيفن كاتالي لإتاحتهم لعبة Llama 3 في Hugging Chat.
- يوفراج شارما في عرض Gradio.
- Xenova وVaibhav Srivastav لتصحيح الأخطاء والتجريب باستخدام قوالب القياس الكمي والسريع.
- بريجيت توزينانت، وفلورنت داودنز، ومورجان فونتوفيتش، وسيمون برانديز لعناصر مختلفة أثناء الإطلاق!
- شكرًا لفريق ميتا بأكمله، بما في ذلك صامويل سيلفان، وإليونورا بريساني، وحميد شوجانازيري، وأزاده يزدان، وأيمن فاروق، وروان سيلفا، وآشلي غابرييل، وعيسى جميل، وبينه تانغ، وماتياس ريسو، ولوفيش مادان، وجو سبيساك، وسيرجي إيدونوف.
شكرًا لفريق Meta على إطلاق Llama 3 وإتاحتها لمجتمع الذكاء الاصطناعي مفتوح المصدر!