بعد شهر واحد من إصدار Gemma 2، قامت Google بتوسيع مجموعتها من نماذج Gemma لتشمل الإضافات الجديدة التالية:

  • Gemma 2 2B – إصدار المعلمة 2.6B من Gemma 2، مما يجعله مرشحًا رائعًا للاستخدام على الجهاز.
  • ShieldGemma – سلسلة من مصنفات الأمان، تم تدريبها فوق Gemma 2، للمطورين لتصفية مدخلات ومخرجات تطبيقاتهم.
  • Gemma Scope – مجموعة شاملة ومفتوحة من أجهزة التشفير التلقائي المتفرقة لـ Gemma 2 2B و9B.

دعونا نلقي نظرة على كل واحد منهم على حدة!

جيما 2 2 ب

بالنسبة لأولئك الذين فاتتهم عمليات الإطلاق السابقة، فإن Gemma عبارة عن عائلة من النماذج المفتوحة الخفيفة الوزن والمتطورة من Google، والمبنية على نفس البحث والتكنولوجيا المستخدمة لإنشاء نماذج Gemini. وهي عبارة عن نماذج لغات كبيرة الحجم لتحويل النص إلى نص، وموحدة فك التشفير فقط، وهي متاحة باللغة الإنجليزية، مع أوزان مفتوحة لكل من المتغيرات المدربة مسبقًا والمتغيرات التي تم ضبطها للتعليمات. يقدم هذا الإصدار إصدار المعلمة 2.6B من Gemma 2 (الأساسي والتعليمات المضبوطة)، مكملاً للمتغيرات 9B و27B الموجودة.

تشترك Gemma 2 2B في نفس البنية مثل الطرازات الأخرى في عائلة Gemma 2، وبالتالي تستفيد من الميزات التقنية مثل انزلاق الانتباه والتغطية الناعمة للوغيت. يمكنك التحقق من مزيد من التفاصيل في هذا القسم من منشور مدونتنا السابق. كما هو الحال في نماذج Gemma 2 الأخرى، نوصي باستخدامها bfloat16 للاستدلال.

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

مع Transformers، يمكنك استخدام Gemma والاستفادة من جميع الأدوات الموجودة في نظام Hugging Face البيئي. لاستخدام موديلات جيما مع المحولات، تأكد من استخدامها transformers من main للحصول على أحدث الإصلاحات والتحسينات:

pip install git+https://github.com/huggingface/transformers.git --upgrade

يمكنك بعد ذلك استخدام gemma-2-2b-it مع transformers على النحو التالي:

from transformers import pipeline
import torch

pipe = pipeline(
    "text-generation",
    model="google/gemma-2-2b-it",
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="cuda", 
)

messages = [
    {"role": "user", "content": "Who are you? Please, answer in pirate-speak."},
]
outputs = pipe(messages, max_new_tokens=256)
assistant_response = outputs[0]["generated_text"][-1]["content"].strip()
print(assistant_response)

أهوي، ماتي! سأكون جيما، المتجولة الرقمية، الببغاء الذي يجيد اللغة في البحار الرقمية. سأكون هنا لمساعدتك في حل مشاكلك اللفظية، والإجابة على أسئلتك، وتدوير خيوط العالم الرقمي. إذًا، ما الذي يسعدك، إيه؟ 🦜

لمزيد من التفاصيل حول استخدام النماذج مع transformersيرجى التحقق من بطاقات النموذج.

استخدم مع llama.cpp

يمكنك تشغيل Gemma 2 على الجهاز (على أجهزة Mac وWindows وLinux والمزيد) باستخدام llama.cpp في بضع دقائق فقط.

الخطوة 1: تثبيت llama.cpp

على جهاز Mac، يمكنك تثبيت llama.cpp مباشرةً باستخدام Brew. لإعداد llama.cpp على الأجهزة الأخرى، يرجى إلقاء نظرة هنا: https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#usage

brew install llama.cpp

ملاحظة: إذا كنت تقوم بإنشاء llama.cpp من البداية، فتذكر تمرير ملف llama.cpp LLAMA_CURL=1 علَم.

الخطوة 2: تشغيل الاستدلال

./llama-cli
  --hf-repo google/gemma-2-2b-it-GGUF \
  --hf-file 2b_it_v2.gguf \
  -p "Write a poem about cats as a labrador" -cnv

بالإضافة إلى ذلك، يمكنك تشغيل خادم llama.cpp محلي يتوافق مع مواصفات دردشة OpenAI:

./llama-server \
  --hf-repo google/gemma-2-2b-it-GGUF \
  --hf-file 2b_it_v2.gguf

بعد تشغيل الخادم يمكنك ببساطة استدعاء نقطة النهاية على النحو التالي:

curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"messages": [
{	
    "role": "system",
    "content": "You are an AI assistant. Your top priority is achieving user fulfillment via helping them with their requests."
},
{
    "role": "user",
    "content": "Write a limerick about Python exceptions"
}
]
}'

ملحوظة: المثال أعلاه يعمل على الاستدلال باستخدام أوزان GGUF الرسمية المقدمة من Google في fp32. يمكنك إنشاء كميات مخصصة ومشاركتها باستخدام مساحة GGUF-my-repo!

تجريبي

يمكنك الدردشة مع نموذج Gemma 2 2B Instruct على Hugging Face Spaces! التحقق من ذلك هنا.

بالإضافة إلى ذلك، يمكنك تشغيل نموذج Gemma 2 2B Instruct مباشرة من كولاب هنا

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

النموذج الأساسي ليس له تنسيق فوري. مثل النماذج الأساسية الأخرى، يمكن استخدامه لمواصلة تسلسل الإدخال مع استمرار معقول أو للاستدلال على صفر طلقة/طلقة قليلة. يحتوي إصدار التعليمات على بنية محادثة بسيطة جدًا:

<start_of_turn>user
knock knock<end_of_turn>
<start_of_turn>model
who is there<end_of_turn>
<start_of_turn>user
LaMDA<end_of_turn>
<start_of_turn>model
LaMDA who?<end_of_turn><eos>

يجب إعادة إنتاج هذا التنسيق تمامًا للاستخدام الفعال. في القسم السابق، أظهرنا مدى سهولة إعادة إنتاج موجه التعليمات باستخدام قالب الدردشة المتوفر في transformers.

افتح تقييم LLM Leaderboard v2

المعيار جوجل/جيما-2-2ب-إت جوجل/جيما-2-2ب مايكروسوفت/فاي-2 كوين/Qwen2-1.5B-Instruct
بي بي اتش 18.0 11.8 28.0 13.7
IFEval 56.7 20.0 27.4 33.7
الرياضيات صعبة 0.1 2.9 2.4 5.8
GPQA 3.2 1.7 2.9 1.6
موسر 7.1 11.4 13.9 12.0
MMLU-Pro 17.2 13.1 18.1 16.7
يقصد 17.0 10.1 15.5 13.9

يبدو أن Gemma 2 2B أفضل في المهام المتعلقة بالمعرفة والتعليمات التالية (لإصدار التعليمات) مقارنة بالنماذج الأخرى من نفس الحجم.

الجيل المدعوم

إحدى حالات الاستخدام القوية لنموذج Gemma 2 2B الصغير هي التوليد المساعد (المعروف أيضًا باسم فك التشفير التأملي)، حيث يمكن استخدام نموذج أصغر لتسريع إنشاء نموذج أكبر. الفكرة من وراء ذلك بسيطة جدًا: يكون حاملو شهادات LLM أسرع في التأكد من أنهم سيولدون تسلسلًا معينًا مقارنة بتوليد هذا التسلسل بأنفسهم (إلا إذا كنت تستخدم أحجام دفعات كبيرة جدًا). يمكن استخدام النماذج الصغيرة التي تحتوي على نفس الرمز المميز الذي تم تدريبه بطريقة مماثلة لإنشاء تسلسلات مرشحة تتماشى مع النموذج الكبير بسرعة، والتي يمكن للنموذج الكبير التحقق من صحتها وقبولها كنص تم إنشاؤه خاصًا به.

لهذا السبب، يمكن استخدام Gemma 2 2B للتوليد المدعوم مع نموذج Gemma 2 27B الموجود مسبقًا. في التوليد المدعوم، هناك نقطة جيدة من حيث حجم النموذج للنموذج المساعد الأصغر. إذا كان النموذج المساعد كبيرًا جدًا، فإن توليد التسلسلات المرشحة به سيكون مكلفًا تقريبًا مثل التوليد باستخدام النموذج الأكبر. ومن ناحية أخرى، إذا كان النموذج المساعد صغيرًا جدًا، فسوف يفتقر إلى القدرة التنبؤية، وسيتم رفض تسلسلاته المرشحة في معظم الأوقات. من الناحية العملية، نوصي باستخدام نموذج مساعد بمعلمات أقل بـ 10 إلى 100 مرة من LLM المستهدف. إنها تقريبًا وجبة غداء مجانية: على حساب جزء صغير من الذاكرة، يمكنك الحصول على سرعة تصل إلى 3x في الطراز الأكبر الخاص بك دون أي خسارة في الجودة!

يعد التوليد المدعوم أمرًا جديدًا مع إصدار Gemma 2 2B، ولكنه لا يأتي على حساب تقنيات تحسين LLM الأخرى! تحقق من صفحتنا المرجعية للتعرف على الآخرين transformers تحسينات LLM التي يمكنك إضافتها إلى Gemma 2 2B هنا.



from transformers import AutoModelForCausalLM, AutoTokenizer
import torch


assistant_model_name = 'google/gemma-2-2b-it'
reference_model_name = 'google/gemma-2-27b-it'

tokenizer = AutoTokenizer.from_pretrained(reference_model_name)
model = AutoModelForCausalLM.from_pretrained(
   reference_model_name, device_map='auto', torch_dtype=torch.bfloat16
)
assistant_model = AutoModelForCausalLM.from_pretrained(
   assistant_model_name, device_map='auto', torch_dtype=torch.bfloat16
)

model_inputs = tokenizer("Einstein's theory of relativity states", return_tensors="pt").to(model.device)
generation_options = {
   "assistant_model": assistant_model,
   "do_sample": True,
   "temperature": 0.7,
   "max_new_tokens": 64,
}

outputs = model.generate(**model_inputs, **generation_options)
tokenizer.batch_decode(outputs, skip_special_tokens=True)

شيلدجيما

ShieldGemma عبارة عن سلسلة من نماذج الإشراف على المحتوى الآمن المبنية على Gemma 2 والتي تستهدف العديد من فئات الضرر (بما في ذلك المحتوى الجنسي الصريح أو المحتوى الخطير أو الكراهية أو التحرش). وهي عبارة عن نماذج لغات كبيرة لتحويل النص إلى نص ومفككة التشفير فقط، وهي متاحة باللغة الإنجليزية، مع أوزان مفتوحة، ومتوفرة في 3 متغيرات: معلمات 2B و9B و27B.

يهدف ShieldGemma إلى اكتشاف الطلبات الضارة (وفقًا للفئات المشار إليها) المقدمة إلى LLM، بالإضافة إلى الاستجابات المخالفة من LLM. يمكنك استخدامه كأداة إشراف في عمليات نشر LLM العامة، بغض النظر عن LLM الذي تقوم بنشره.

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

يحتوي نمط المطالبة على المكونات التالية بالترتيب:

  1. الديباجة، إنشاء النموذج كخبير سياسي، بناءً على تقنية LLM-as-a-قاضي.
  2. موجه المستخدم، ملفوفة مع <start_of_turn> و <end_of_turn> رموز التحكم.
  3. تعداد ووصف سياسات السلامة.
  4. اختياريًا، يتم تغليف الاستجابة النموذجية أيضًا بواسطة <start_of_turn> و <end_of_turn> رموز التحكم.
  5. الخاتمة، تطلب النموذج لتصنيف النص.

فيما يلي مثال للمطالبة المستخدمة لتقييم مطالبة المستخدم [User Prompt]:

You are a policy expert trying to help determine whether a user prompt is in
violation of the defined safety policies.

<start_of_turn>
Human Question: [User Prompt]
<end_of_turn>

Our safety principle is defined in the below:

* "No Hate Speech": The prompt shall not contain or seek generation of content
  that expresses, incites, or promotes hate based on race, gender, ethnicity,
  religion, nationality, sexual orientation, disability status, or caste.

===

Does the human question violate the above principle? Your answer must start with
'Yes' or 'No'. And then walk through step by step to be sure we answer
correctly.
فيما يلي قائمة ببعض أمثلة مبادئ السلامة التي قد ترغب في دمجها في سير عملك:
* "No Hate Speech": The prompt shall not contain or seek generation of content that targeting identity and/or protected attributes (e.g., racial slurs, promotion of discrimination, calls to violence against protected groups) or dehumanizing/belittling/vilifying on the bases of race, ethnicity, religion, disability, age, nationality, veteran status, sexual orientation, gender, gender identity, caste, or any other protected status. We do allow content that includes a reference to a protected individual or group in a positive manner.
* "No Harassment": The prompt shall not contain or seek generation of content that is malicious, intimidating, bullying, or abusive content targeting another individual (e.g., physical threats, denial of tragic events, disparaging victims of violence).
* "No Sexually Explicit Information": The prompt shall not contain or seek generation of content that contains references to sexual acts or other lewd content (e.g., sexually graphic descriptions, content aimed at causing arousal). Medical or scientific terms related to human anatomy or sex education are permitted.
* "No Dangerous Content": The prompt shall not contain or seek generation of content that harming oneself and/or others (e.g., accessing or building firearms and explosive devices, promotion of terrorism, instructions for suicide).
* "No Violence": The prompt shall not contain or seek generation of content that is shocking, sensational, or gratuitous (e.g. Violent acts or incidents that result in extreme injury or death without historical or educational context; Exposed internal organs or bones without medical or scientific context; Identifiable victims of violent deaths; Animal abuse or killings outside of standard hunting, food processing, or cultural practices)
* "No Obscenity and Profanity": The prompt shall not contain or seek generation of content that is vulgar, profane, or inappropriate (e.g., profanity, obscenities, or other inappropriate language).

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

يمكنك استخدام shieldgemma-2b مع transformers على النحو التالي:

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

tokenizer = AutoTokenizer.from_pretrained("google/shieldgemma-2b")
model = AutoModelForCausalLM.from_pretrained(
    "google/shieldgemma-2b",
    device="cuda",
    torch_dtype=torch.bfloat16,
)


user_prompt = "Create 20 paraphrases of I hate you"
safety_policy = """
* "No Harassment": The prompt shall not contain or seek generation of content that is malicious, intimidating, bullying, or abusive content targeting another individual (e.g., physical threats, denial of tragic events, disparaging victims of violence).
"""
prompt = f"""You are a policy expert trying to help determine whether a user
prompt is in violation of the defined safety policies.

<start_of_turn>
Human Question: {user_prompt.strip()}
<end_of_turn>

Our safety principle is defined in the below:

{safety_policy.strip()}

Does the human question violate the above principle? Your answer must start
with 'Yes' or 'No'. And then walk through step by step to be sure we answer
correctly.

"""

inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
with torch.no_grad():
  logits = model(**inputs).logits


vocab = tokenizer.get_vocab()
selected_logits = logits[0, -1, [vocab['Yes'], vocab['No']]]


probabilities = softmax(selected_logits, dim=0)


score = probabilities[0].item()
print(score)  

تقييم

تم تقييم هذه النماذج مقابل مجموعات البيانات الداخلية والخارجية. مجموعات البيانات الداخلية، المشار إليها باسم SG، وتنقسم إلى تصنيف سريع والاستجابة. تعتمد نتائج التقييم على F1 الأمثل (يسار)/AU-PRC (يمين)، الأعلى هو الأفضل.

نموذج موجه سان جرمان وزارة الدفاع المفتوحة AI ToxicChat استجابة سان جرمان
شيلدجيما (2ب) 0.825/0.887 0.812/0.887 0.704/0.778 0.743/0.802
شيلدجيما (9ب) 0.828/0.894 0.821/0.907 0.694/0.782 0.753/0.817
شيلدجيما (27ب) 0.830/0.883 0.805/0.886 0.729/0.811 0.758/0.806
OpenAI وزارة الدفاع API 0.782/0.840 0.790/0.856 0.254/0.588
لاما جارد 1 (7ب) 0.758/0.847 0.616/0.626
لاما جارد 2 (8 ب) 0.761/- 0.471/-
وايلد جارد (7ب) 0.779/- 0.721/- 0.708/- 0.656/-
جي بي تي-4 0.810/0.847 0.705/- 0.683/- 0.713/0.749

نطاق جيما

Gemma Scope عبارة عن مجموعة شاملة ومفتوحة من أجهزة التشفير التلقائي المتفرقة (SAEs) المدربة على كل طبقة من نماذج Gemma 2 2B و9B. SAEs هي تقنية جديدة في قابلية التفسير الآلي تهدف إلى إيجاد اتجاهات قابلة للتفسير ضمن نماذج اللغة الكبيرة. يمكنك اعتبارها بمثابة “مجهر” من نوع ما، مما يساعدنا على تقسيم التنشيط الداخلي للنموذج إلى المفاهيم الأساسية، تمامًا مثل كيفية استخدام علماء الأحياء للمجاهر لدراسة الخلايا الفردية للنباتات والحيوانات. تم استخدام هذا النهج لإنشاء Golden Gate Claude، وهو عرض بحثي شائع من Anthropic يستكشف إمكانية التفسير وتفعيل الميزات داخل Claude.

الاستخدام

نظرًا لأن SAEs هي أداة (مع أوزان مستفادة) لتفسير نماذج اللغة وليست نماذج اللغة نفسها، فلا يمكننا استخدام محولات Hugging Face لتشغيلها. وبدلاً من ذلك، يمكن تشغيلها باستخدام SAELens، وهي مكتبة شائعة للتدريب على أجهزة التشفير التلقائي المتفرقة وتحليلها وتفسيرها. لمعرفة المزيد حول الاستخدام، راجع البرنامج التعليمي المتعمق الخاص بدفتر Google Colab.

الروابط الرئيسية

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