ضبط Gemma لاستدعاء الدوال

مرحباً بك في هذا الدليل الشامل حول ضبط نموذج Gemma لاستدعاء الدوال. سيرشدك هذا الدرس خلال العملية بأكملها، من إعداد بيئتك إلى تدريب واختبار النموذج. سنستخدم Torch XLA وإطار عمل التعلم التعزيزي للمحولات (TRL) من Hugging Face لتحقيق ذلك.
مقدمة إلى Gemma
Gemma هي عائلة من النماذج المفتوحة الخفيفة والمتطورة من Google، مصممة لمجموعة متنوعة من مهام توليد النص. هذه النماذج هي نماذج لغة كبيرة من نص إلى نص ومفككة فقط، متوفرة بالإنجليزية، ومناسبة تماماً للبيئات ذات الموارد المحدودة.
إعداد البيئة
اختيار بيئة وقت التشغيل
يمكنك اختيار إما Google Colab أو Kaggle كمنصتك. لهذا الدليل، سنركز على Kaggle.
إعداد Kaggle
- انقر على Open in Kaggle.
- انقر على Settings في الشريط الجانبي الأيمن.
- تحت Accelerator، اختر TPUs.
- احفظ الإعدادات، وسيعيد دفتر الملاحظات التشغيل مع دعم TPU.
Gemma باستخدام Hugging Face
- إنشاء حساب Hugging Face: سجل للحصول على حساب مجاني إذا لم يكن لديك واحد.
- الوصول إلى نموذج Gemma: قم بزيارة صفحة نموذج Gemma واقبل شروط الاستخدام.
- توليد رمز Hugging Face: اذهب إلى صفحة إعدادات Hugging Face الخاصة بك وقم بتوليد رمز وصول جديد.
تكوين بيانات الاعتماد
للوصول إلى النماذج ومجموعات البيانات الخاصة، تحتاج إلى تسجيل الدخول إلى نظام Hugging Face البيئي.
import os
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
os.environ['HF_TOKEN'] = user_secrets.get_secret("HF_TOKEN")تثبيت التبعيات
إعداد البيئة عن طريق تثبيت جميع حزم Python اللازمة لضبط نموذج Gemma على TPU VM باستخدام Torch XLA.
!pip install transformers==4.46.1 datasets==3.1.0 trl==0.12.0 peft==0.13.2 accelerate==0.34.0 torch~=2.5.0 torch_xla[tpu]~=2.5.0 tpu-infoضبط Gemma 2 لاستدعاء الدوال
تهيئة نموذج Gemma 2
قم بتهيئة AutoModelForCausalLM من مكتبة transformers عن طريق تحميل نموذج Gemma 2 المدرب مسبقاً من HuggingFace.
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "google/gemma-2-2b-it"
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)
model.config.use_cache = False
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.padding_side = "right"تحميل مجموعة بيانات
استخدم مجموعة بيانات موجودة من Hugging Face، مثل lilacai/glaive-function-calling-v2-sharegpt.
from datasets import load_dataset
dataset = load_dataset("lilacai/glaive-function-calling-v2-sharegpt", split="train[:15%]")إنشاء قالب دردشة مخصص
عرّف قالب دردشة لتحويل المحادثات إلى سلسلة واحدة قابلة للترميز.
chat_template = "{{ bos_token }}{% if messages[0]['from'] == 'system' %}{{'<start_of_turn>user\n' + messages[0]['value'] | trim + ' ' + messages[1]['value'] | trim + '<end_of_turn>\n'}}{% set messages = messages[2:] %}{% endif %}{% for message in messages %}{% if message['from'] == 'human' %}{{'<start_of_turn>user\n' + message['value'] | trim + '<end_of_turn>\n'}}{% elif message['from'] == 'gpt' %}{{'<start_of_turn>model\n' + message['value'] | trim + '<end_of_turn>\n' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<start_of_turn>model\n' }}{% endif %}"
tokenizer.chat_template = chat_templateتكوين LoRA
إعداد تكوين LoRA (التكيف منخفض الرتبة).
from peft import LoraConfig
peft_config = LoraConfig(lora_alpha=16, lora_dropout=0, r=16, bias="none", task_type="CAUSAL_LM", target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"])تعيين تكوين التدريب
عرّف وسيطات التدريب للنموذج.
from trl import SFTTrainer, SFTConfig
training_arguments = SFTConfig(output_dir="./results", max_steps=100, per_device_train_batch_size=32, optim="adafactor", learning_rate=0.0002, bf16=True, max_seq_length=1024, dataset_text_field="text", packing=True, logging_steps=1, seed=42)تدريب النموذج
استخدم فئة SFTTrainer من Huggingface TRL لتدريب النموذج.
trainer = SFTTrainer(model=model, train_dataset=dataset, peft_config=peft_config, args=training_arguments)
trainer.train()حفظ النموذج المضبوط
بعد التدريب، احفظ النموذج المضبوط.
trainer.model.to('cpu').save_pretrained("gemma-func-ft")استخدام النموذج المضبوط حديثاً
أعد تحميل النموذج المضبوط واختبره بمطالبة نموذجية.
base_model = AutoModelForCausalLM.from_pretrained(model_name, low_cpu_mem_usage=True, torch_dtype=torch.bfloat16)
model = PeftModel.from_pretrained(base_model, "gemma-func-ft")
model = model.merge_and_unload()
input_text = "<start_of_turn>user\nأنت مساعد مفيد..."
input_ids = tokenizer(input_text, return_tensors="pt").to("cpu")
outputs = model.generate(**input_ids, max_new_tokens=512)
print(tokenizer.decode(outputs[0]))الخلاصة
مبروك! لقد نجحت في ضبط Gemma لاستدعاء الدوال باستخدام Torch XLA و PEFT مع LoRA على وحدات TPU. استكشف أكثر من خلال تجربة مجموعات بيانات مختلفة وضبط المعاملات الفائقة.
المرجع: Google Gemma Cookbook بواسطة Google LLC.
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.
مقالات ذات صلة

ضبط Gemma للغة العربية
تعلم كيفية ضبط نموذج Gemma لمهام اللغة العربية المنطوقة.

البدء مع ALLaM-7B-Instruct-preview
تعلم كيفية استخدام نموذج ALLaM-7B-Instruct-preview مع Python، وكيفية التفاعل معه من JavaScript عبر واجهة برمجة تطبيقات مستضافة (مثل Hugging Face Spaces).

البدء مع ALLaM-7B-Instruct-preview
تعلم كيفية استخدام نموذج ALLaM-7B-Instruct-preview مع Python، وكيفية التفاعل معه من JavaScript عبر واجهة برمجة مستضافة (مثل Hugging Face Spaces).