back

Knowledge Centre

تعديل LLaMA لإعادة خلق أسلوب إمينيسكو الأدبي

| 23.01.2025

تنعيم LLaMA لإعادة إنشاء أسلوب إمينيسكو الأدبي

مع استمرار تطور الذكاء الاصطناعي، قمنا ببدء مشروع ممتع يجسر الفجوة بين الأدب الكلاسيكي والتكنولوجيا الحديثة. هدفنا كان تطوير نموذج AI بنجاح يمكنه توليد نص بالأسلوب المميز لميهاي إمينيسكو، الشاعر الروماني البارز والصوت الحاسم للشعر الروماني.

لقد استخدمنا Google Collab مع Python لهذا المشروع. 

فهم التحدي

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

الأساس التقني: نموذج LLaMA

اخترنا البناء على نموذج LLaMA التابع لـ Meta لعدة أسباب. يعتبر LLaMA مناسبًا بشكل خاص لمهام التحسين الدقيق بسبب هندسته الفعالة وقدراته متعددة اللغات القوية. قمنا بتجربة نسختين:

  • LLaMA-3.2-3B: تنفيذنا الأولي
  • LLaMA-3.1-8B: نسخة بديلة للمقارنة
  • LLaMA-3.3-70B-Instruct: آخر تكرار لدينا

عملية التحسين الدقيق

تحضير البيانات
كان الخطوة الأولى الحاسمة هي تحضير بيانات التدريب الخاصة بنا وتقسيمها إلى قطع صغيرة لجزء الترميز. هكذا تعاملنا مع معالجة النص:

def prepare_dataset(file_paths, chunk_size=1024, overlap=128):
   chunks = []
   total_chunks = 0
   
   for file_path in file_paths:
       with open(file_path, 'r', encoding='utf-8') as file:
           text = file.read()
           
       # Split text into overlapping chunks for better context preservation
       words = text.split()
       for i in range(0, len(words), chunk_size - overlap):
           chunk = ' '.join(words[i:i + chunk_size])
           chunks.append(chunk)
           
   return Dataset.from_dict({"text": chunks})

يقسم هذا الكود أعمال إمينيسكو إلى قطع مدارة مع الحفاظ على السياق من خلال التداخل. التداخل أمر حاسم لأنه يساعد النموذج على فهم الاعتماديات طويلة المدى في النص.

تحسين الذاكرة

كانت واحدة من أكبر تحدياتنا هي التعامل بكفاءة مع النموذج الكبير. قمنا بتنفيذ عدة تقنيات لتحسين الذاكرة:

bnb_config = BitsAndBytesConfig(
   load_in_4bit=True,  # Use 4-bit quantization
   bnb_4bit_compute_dtype=torch.float16,  # Use float16 for calculations
   bnb_4bit_quant_type="nf4",  # Normal format 4-bit quantization
   bnb_4bit_use_double_quant=False,  # Avoid double quantization
   bnb_4bit_cpu_offload=True  # Offload to CPU when necessary
)

تتيح لنا هذه التكوينات تشغيل نماذج اللغة الكبيرة على الأجهزة العتادية للمستهلكين مع الحفاظ على جودة النموذج. يقلل التكميم بـ 4 بت بشكل كبير من استخدام الذاكرة بينما يساعد التحميل على الوحدة المركزية للمعالجة في إدارة قيود ذاكرة الوحدة الرسومية.

التكيف منخفض الرتبة (LoRA)

لقد استخدمنا LoRA لتحسين النموذج بكفاءة دون تحديث جميع المعلمات:

lora_config = LoraConfig(
   r=16,  # Rank of the update matrices
   lora_alpha=32,  # Scaling factor
   target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],  # Which layers to fine-tune
   lora_dropout=0.05,  # Dropout for regularization
   bias="none",
   task_type="CAUSAL_LM"
)

تتيح لنا هذه الطريقة تحسين النموذج بمعلمات أقل بكثير، مما يجعل العملية أكثر كفاءة مع الحفاظ على الأداء. تركز الوحدات الهدف على آليات الانتباه، والتي هي حاسمة لالتقاط العناصر الأسلوبية في كتابة إمينيسكو.

التقييم والنتائج

قمنا بتطوير نظام تقييم شامل يقارن ناتج نموذجنا المحسن بشكل دقيق مع نموذج LLaMA الأساسي:

def generate_text(model, tokenizer, prompt, max_length=200):
   with torch.no_grad():
       inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
       outputs = model.generate(
           **inputs,
           max_length=max_length,
           num_return_sequences=1,
           temperature=0.8,  # Controls randomness
           do_sample=True,   # Enable sampling
           top_p=0.92,       # Nucleus sampling parameter
           top_k=50,         # Limit vocabulary choices
           repetition_penalty=1.1  # Avoid repetition
       )
       return tokenizer.decode(outputs[0], skip_special_tokens=True)

توازن هذه الوظيفة الإبداع والاتساق من خلال معلمات مضبوطة بعناية. يوفر درجة الحرارة 0.8 توازنًا جيدًا بين التنوع والتركيز، بينما يساعد المعلمتان top_p و top_k في الحفاظ على الجودة والصلة.

التطبيقات العملية

تتجاوز آثار هذا المشروع مجرد توليد نص بأسلوب إمينيسكو. يمكن تطبيق هذه التكنولوجيا على:

  • أدوات تعليمية لدراسة الأدب الروماني
  • مساعدة الكتابة الإبداعية
  • الحفاظ على التراث الثقافي
  • تحليل الأسلوب الأدبي والبحث

نحن مستمرون في تحسين النموذج بعدة مبادرات:

  • توسيع مجموعة بيانات التدريب مع المزيد من أعمال إمينيسكو
  • التجربة مع أنواع النماذج الأكبر
  • تطوير مقاييس تقييم أفضل للشعر الروماني
  • إنشاء أدوات تفاعلية للكتاب والباحثين

قاعدة الكود الكاملة متاحة على مستودع GitHub الخاص بنا، وقد جعلنا نماذجنا متاحة على HuggingFace لاستخدامها وبناؤها من قبل مجتمعات الذكاء الاصطناعي والأدبية.  

يمكنك مشاهدة فيديوهاتنا من السلسلة على YouTube. نأمل أن تقوم بتكرار خطواتنا والاستمتاع بقدر ما استمتعنا. الحلقة الأولى من هذه السلسلة متوفرة على YouTube والرابط هو هنا.

جاهز لتحويل عملك بحلول الذكاء الاصطناعي المخصصة؟

في Softescu، نحن متخصصون في تطوير تطبيقات الذكاء الاصطناعي الذكية التي تفهم احتياجات عملك الفريدة. يمكن لفريقنا من مهندسي الذكاء الاصطناعي وخبراء التعلم الآلي مساعدتك في استغلال قوة نماذج اللغة الكبيرة والذكاء الاصطناعي المحادثي مع ضمان التكامل السلس مع أنظمتك الحالية. سواء كنت تتطلع إلى تشغيل العمليات، أو تحسين تجارب العملاء، أو الحصول على رؤى أعمق للأعمال، اتصل بنا للحصول على استشارة حل الذكاء الاصطناعي المخصص.

  • المعرفة
    مركز المعرفة
    داخل عقل الذكاء الصناعي
  • المعرفة
    مركز المعرفة
    تبدأ عهدًا جديدًا: إطلاق نظام إدارة المحتوى دروبال 1.0
  • المعرفة
    مركز المعرفة
    إدخال الذكاء الصناعي إلى B2B