تطبيق عملي على LoRA

تعرف على كيفية ضبط LLM على مجموعة بيانات مخصصة باستخدام LoRA.

سنغطي ما يلي...

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

سنستخدم مجموعة بيانات openai/gsm8k من Hugging Face للضبط الدقيق. GSM8K (رياضيات المرحلة الابتدائية 8K) هي مجموعة بيانات تضم 8.5 ألف مسألة كلامية في الرياضيات للمرحلة الابتدائية، تتضمن التفكير متعدد الخطوات، مع حلولها في تعبيرات رياضية بحتة.

لنبدأ برحلة ضبط نموذج Meta's Llama 3.1 على مجموعة بيانات openai/gsm8k باستخدام LoRA.

تثبيت التبعيات

أولاً، لنثبّت المكتبات اللازمة للضبط الدقيق. سنقوم بتثبيت أحدث إصدارات المكتبات (وقت كتابة هذا المقال).

pip3 install transformers==4.44.1
pip3 install accelerate
pip3 install bitsandbytes==0.43.3
pip3 install datasets==2.21.0
pip3 install trl==0.9.6
pip3 install peft==0.12.0
!pip install -U "huggingface_hub[cli]"
Install the dependencies
  • الخط 1: نقوم بتثبيت مكتبة transformers ، وهي مكتبة Hugging Face التي توفر واجهات برمجة التطبيقات والأدوات اللازمة لتنزيل وتدريب النماذج المدربة مسبقًا على أحدث طراز.

  • الخط الثاني: نُثبّت مكتبة accelerate ، المُصمّمة لتسهيل تدريب نماذج التعلم العميق عبر مختلف الأجهزة. فهي تُتيح التدريب والاستنتاج بشكل بسيط وفعال وقابل للتكيّف.

  • السطر 3: نقوم بتثبيت مكتبة bitsandbytes ، وهي مكتبة محولات تساعد في تحديد كمية النموذج.

  • السطر 4: نقوم بتثبيت مكتبة dataset لمشاركة مجموعات البيانات والوصول إليها للمهام اللاحقة.

  • الخط 5: نقوم بتثبيت مكتبة trl لتدريب نماذج المحولات باستخدام التعلم التعزيزي والضبط الدقيق الخاضع للإشراف.

  • السطر 6: نقوم بتثبيت مكتبة peft لضبط النماذج اللغوية الكبيرة بكفاءة عالية للمهام اللاحقة.

  • السطر 7: نقوم بتثبيت Hugging Face CLI لتسجيل الدخول والوصول إلى النموذج ومجموعة البيانات من Hugging Face.

Hugging Face CLI

بعد تثبيت المكتبات المطلوبة، حان وقت تسجيل الدخول إلى CLI Hugging Face . يتطلب Hugging Face هذه الخطوة للوصول إلى أي نموذج أو مجموعة بيانات من Hugging Face.

!huggingface-cli login --token "Enter your token" --add-to-git-credential
Logging in to Hugging Face using CLI

سيطلب منا الأمر أعلاه إدخال رمز . أدخل رمز Hugging Face الذي أنشأته أثناء إعداد حساب Hugging Face . عندما يطلب منك "إضافة رمز كبيانات اعتماد git؟"، اضغط على مفتاح"y". بعد التحقق من رمز، سيتم تسجيل الدخول بنجاح إلى Hugging Face.

Press + to interact
Logging into Hugging Face
Logging into Hugging Face

التكميم

الآن، دعنا نحمل النموذج المدرب مسبقًا بالكمية ونرى كيف يستجيب لمسألة كلمة رياضية.

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch
bnb_config = BitsAndBytesConfig(
load_in_8bit=True,
)
model_name = "meta-llama/Meta-Llama-3.1-8B-Instruct"
quantized_model = AutoModelForCausalLM.from_pretrained(model_name,
quantization_config = bnb_config,
device_map = "auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
input = tokenizer("Natalia sold clips to 48 of her friends in April, and then she sold half as \
many clips in May. How many clips did Natalia sell altogether in April and May?", return_tensors="pt").to('cuda')
response = quantized_model.generate(**input, max_new_tokens = 100)
print(tokenizer.batch_decode(response, skip_special_tokens=True))
Load the model with 8-bit quantization
  • السطر 1: نقوم باستيراد وحدات AutoModelForCausalLM و AutoTokenizer و ...