تم الإعلان عن Gemma 3n كـ معاينة أثناء مؤتمر Google I/O. لقد أصبح مجتمع الجهاز متحمسًا جدًا، لأن هذا نموذج مصمم من الألف إلى الياء تشغيل محليا على أجهزتك. وفوق كل ذلك فهو أصلي الوسائط المتعددةدعم مدخلات الصور والنصوص والصوت والفيديو 🤯
اليوم، أصبحت Gemma 3n متاحة أخيرًا في المكتبات مفتوحة المصدر الأكثر استخدامًا. يتضمن ذلك المحولات & timm، وMLX، وllama.cpp (إدخالات النص)، وtransformers.js، وollama، وGoogle AI Edge، وغيرها.
يمر هذا المنشور سريعًا بمقتطفات عملية لتوضيح كيفية استخدام النموذج مع هذه المكتبات، ومدى سهولة ضبطه ليناسب المجالات الأخرى.
النماذج التي تم إصدارها اليوم
إليكم مجموعة إصدار Gemma 3n
تم إصدار حجمين من النماذج اليوم، مع متغيرين (قاعدي وتعليمي) لكل منهما. تتبع أسماء النماذج تسميات غير قياسية: يتم استدعاؤها gemma-3n-E2B و gemma-3n-E4B. ال E يسبق عدد المعلمات Effective. أعداد المعلمات الفعلية الخاصة بهم هي 5B و 8B، على التوالي، ولكن بفضل التحسينات في كفاءة الذاكرة، تمكنوا من الحاجة فقط إلى 2B و4B في VRAM (ذاكرة GPU).
وبالتالي، فإن هذه النماذج تتصرف مثل 2B و4B من حيث دعم الأجهزة، لكنها تتفوق على 2B/4B من حيث الجودة. ال E2B يمكن تشغيل الطراز بذاكرة وصول عشوائي (GPU) تصل إلى 2 جيجابايت فقط، بينما E4B يمكن تشغيله باستخدام 3 جيجابايت فقط من ذاكرة الوصول العشوائي GPU.
تفاصيل النماذج
بالإضافة إلى وحدة فك ترميز اللغة، يستخدم Gemma 3n التشفير الصوتي و أ تشفير الرؤية. نسلط الضوء على ميزاتها الرئيسية أدناه، ونصف كيف تمت إضافتها إليها transformers و timm، لأنها مرجع للتطبيقات الأخرى.
- تشفير الرؤية (MobileNet-V5). تستخدم Gemma 3n إصدارًا جديدًا من MobileNet: MobileNet-v5-300، والذي تمت إضافته إلى الإصدار الجديد من MobileNet
timmصدر اليوم.- يتميز بمعلمات 300M.
- يدعم قرارات
256x256,512x512، و768x768. - يحقق 60 إطارًا في الثانية على Google Pixel، متفوقًا على ViT Giant مع استخدام معلمات أقل بثلاث مرات.
- التشفير الصوتي:
- استنادًا إلى نموذج الكلام العالمي (USM).
- يعالج الصوت في
160msقطع. - تمكين وظائف تحويل الكلام إلى نص والترجمة (على سبيل المثال، من الإنجليزية إلى الإسبانية/الفرنسية).
- جيما 3N نموذج العمارة واللغة. تمت إضافة البنية نفسها إلى الإصدار الجديد من
transformersصدر اليوم. يتفرع هذا التنفيذ إلىtimmلتشفير الصور، لذلك يوجد تطبيق مرجعي واحد لبنية MobileNet.
يسلط الضوء على الهندسة المعمارية
- هندسة ماتفورمر:
- يسمح تصميم المحول المتداخل، المشابه لتضمينات ماتريوشكا، باستخراج مجموعات فرعية مختلفة من الطبقات كما لو كانت نماذج فردية.
- تم تدريب E2B وE4B معًا، مما أدى إلى تكوين E2B كنموذج فرعي لـ E4B.
- يمكن للمستخدمين “مزج الطبقات ومطابقتها”، اعتمادًا على خصائص أجهزتهم وميزانية الذاكرة الخاصة بهم.
- التضمينات لكل طبقة (PLE): يقلل من استخدام ذاكرة التسريع عن طريق إلغاء تحميل التضمينات إلى وحدة المعالجة المركزية. هذا هو السبب في أن نموذج E2B، على الرغم من احتوائه على 5B من المعلمات الحقيقية، فإنه يستهلك نفس القدر من ذاكرة وحدة معالجة الرسومات كما لو كان نموذجًا من 2B.
- مشاركة ذاكرة التخزين المؤقت لـ KV: يعمل على تسريع معالجة السياق الطويل للصوت والفيديو، مما يحقق تعبئة مسبقة أسرع مرتين مقارنة بـ Gemma 3 4B.
الأداء والمعايير:
- نقاط ليمارينا: E4B هو أول نموذج فرعي من 10B يحقق درجة 1300+.
- نتائج MMLU: تُظهر Gemma 3n أداءً تنافسيًا عبر مختلف الأحجام (E4B، وE2B، والعديد من تكوينات Mix-n-Match).
- دعم متعدد اللغات: يدعم 140 لغة للنص و35 لغة للتفاعلات متعددة الوسائط.
الفضاء التجريبي
أسهل طريقة للتحقق من النموذج هي من خلال مساحة Hugging Face Space المخصصة للنموذج. يمكنك تجربة مطالبات مختلفة، بطرائق مختلفة، هنا.
📱 الفضاء
الاستدلال مع المحولات
قم بتثبيت أحدث إصدار من timm (لجهاز تشفير الرؤية) والمحولات لتشغيل الاستدلال، أو إذا كنت تريد ضبطه.
pip install -U -q timm
pip install -U -q transformers
الاستدلال مع خط الأنابيب
أسهل طريقة لبدء استخدام Gemma 3n هي استخدام تجريد خطوط الأنابيب في المحولات:
import torch
from transformers import pipeline
pipe = pipeline(
"image-text-to-text",
model="google/gemma-3n-E4B-it",
device="cuda",
torch_dtype=torch.bfloat16
)
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/airplane.jpg"},
{"type": "text", "text": "Describe this image"}
]
}
]
output = pipe(text=messages, max_new_tokens=32)
print(output[0]["generated_text"][-1]["content"])
الإخراج:
The image shows a futuristic, sleek aircraft soaring through the sky. It's designed with a distinctive, almost alien aesthetic, featuring a wide body and large
الاستدلال التفصيلي مع المحولات
قم بتهيئة النموذج والمعالج من Hub، واكتب ملف model_generation وظيفة تعتني بمعالجة المطالبات وتشغيل الاستدلال على النموذج.
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
model_id = "google/gemma-3n-e4b-it"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id).to(device)
def model_generation(model, messages):
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
)
input_len = inputs["input_ids"].shape[-1]
inputs = inputs.to(model.device, dtype=model.dtype)
with torch.inference_mode():
generation = model.generate(**inputs, max_new_tokens=32, disable_compile=False)
generation = generation[:, input_len:]
decoded = processor.batch_decode(generation, skip_special_tokens=True)
print(decoded[0])
نظرًا لأن النموذج يدعم جميع الأساليب كمدخلات، فإليك شرحًا موجزًا للكود لكيفية استخدامها عبر المحولات.
النص فقط
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is the capital of France?"}
]
}
]
model_generation(model, messages)
الإخراج:
The capital of France is **Paris**.
معشق مع الصوت
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the following speech segment in English:"},
{"type": "audio", "audio": "https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/speech.wav"},
]
}
]
model_generation(model, messages)
الإخراج:
Send a text to Mike. I'll be home late tomorrow.
معشق مع الصورة / الفيديو
يتم دعم مقاطع الفيديو كمجموعة من إطارات الصور
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/airplane.jpg"},
{"type": "text", "text": "Describe this image."}
]
}
]
model_generation(model, messages)
الإخراج:
The image shows a futuristic, sleek, white airplane against a backdrop of a clear blue sky transitioning into a cloudy, hazy landscape below. The airplane is tilted at
الاستدلال مع MLX
يأتي Gemma 3n مع دعم اليوم 0 لـ MLX عبر جميع الأساليب الثلاثة. تأكد من ترقية تثبيت mlx-vlm الخاص بك.
pip install -u mlx-vlm
ابدأ بالرؤية:
python -m mlx_vlm.generate --model google/gemma-3n-E4B-it --max-tokens 100 --temperature 0.5 --prompt "Describe this image in detail." --image https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/airplane.jpg
والصوت:
python -m mlx_vlm.generate --model google/gemma-3n-E4B-it --max-tokens 100 --temperature 0.0 --prompt "Transcribe the following speech segment in English:" --audio https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/audio-samples/jfk.wav
الاستدلال باستخدام llama.cpp
بالإضافة إلى MLX، يعمل Gemma 3n (النص فقط) بشكل خارج الصندوق مع llama.cpp. تأكد من تثبيت llama.cpp/ Ollama من المصدر.
تحقق من تعليمات التثبيت لـ llama.cpp هنا: https://github.com/ggml-org/llama.cpp/blob/master/docs/install.md
يمكنك تشغيله على النحو التالي:
llama-server -hf ggml-org/gemma-3n-E4B-it-GGUF:Q8_0
الاستدلال باستخدام Transformers.js وONNXRuntime
أخيرًا، نقوم أيضًا بإصدار أوزان ONNX لمتغير نموذج Gemma-3n-E2B-it، مما يتيح النشر المرن عبر أوقات التشغيل والأنظمة الأساسية المتنوعة. بالنسبة لمطوري JavaScript، تم دمج Gemma3n في Transformers.js وهو متاح اعتبارًا من الإصدار 3.6.0.
لمزيد من المعلومات حول كيفية تشغيل النموذج باستخدام هذه المكتبات، راجع قسم الاستخدام في بطاقة النموذج.
ضبط دقيق في Google Colab المجاني
نظرًا لحجم النموذج، من الملائم جدًا ضبطه لمهام محددة في المراحل النهائية عبر الطرائق. لتسهيل عملية ضبط النموذج، قمنا بإنشاء دفتر ملاحظات بسيط يتيح لك تجربة Google Colab مجانًا!
نوفر أيضًا دفترًا مخصصًا لضبط المهام الصوتية، بحيث يمكنك بسهولة تكييف النموذج مع مجموعات بيانات ومعايير الكلام الخاصة بك!
معانقة الوجه وصفات جيما
مع هذا الإصدار، نقدم أيضًا مستودع Hugging Face Gemma Recipes. سوف يجد المرء notebooks و scripts لتشغيل النماذج وضبطها.
نود أن تستخدمي مجموعة موديلات جيما وتضيفي المزيد من الوصفات إليها! لا تتردد في فتح المشكلات وإنشاء طلبات السحب إلى المستودع.
خاتمة
يسعدنا دائمًا استضافة Google وعائلة عارضات Gemma. نأمل أن يجتمع المجتمع معًا ويستفيد إلى أقصى حد من هذه النماذج. متعدد الوسائط، صغير الحجم، وقدرة عالية، يعد إصدارًا رائعًا للنموذج!
إذا كنت تريد مناقشة النماذج بمزيد من التفاصيل، فابدأ وابدأ مناقشة مباشرة أسفل منشور المدونة هذا. سنكون أكثر من سعداء للمساعدة!
شكرًا جزيلاً لآرثر وسيريل وروشان وليساندر وكل شخص في Hugging Face الذين اهتموا بالتكامل وجعلوه متاحًا للمجتمع!