|
|
--- |
|
|
license: mit |
|
|
--- |
|
|
```python |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline |
|
|
import os |
|
|
|
|
|
# خطوة تشخيصية: دعنا نرى محتويات المجلد للتأكد |
|
|
main_output_dir = "/content/gpt2-openhermes-finetuned-tpu" |
|
|
print(f"محتويات المجلد '{main_output_dir}':") |
|
|
# قد يكون المجلد فارغًا أو يحتوي فقط على مجلدات الـ checkpoints |
|
|
# وهذا سيؤكد سبب المشكلة |
|
|
!ls -l {main_output_dir} |
|
|
|
|
|
# تحديد مسار نقطة التفتيش التي تريد اختبارها |
|
|
checkpoint_path = "/content/gpt2-openhermes-finetuned-tpu/checkpoint-4000" |
|
|
|
|
|
# اسم النموذج الأصلي الذي تم التدريب عليه |
|
|
base_model_name = "gpt2" |
|
|
|
|
|
# 1. تحميل النموذج من نقطة التفتيش المحلية |
|
|
print(f"\nتحميل النموذج من: {checkpoint_path}") |
|
|
finetuned_model = AutoModelForCausalLM.from_pretrained(checkpoint_path) |
|
|
|
|
|
# 2. تحميل المُرمِّز من المصدر الأصلي على Hugging Face Hub |
|
|
# <--- هذا هو الحل النهائي الذي يتجاوز مشكلة الملفات المفقودة |
|
|
print(f"تحميل المُرمِّز الأصلي من: '{base_model_name}'") |
|
|
finetuned_tokenizer = AutoTokenizer.from_pretrained(base_model_name) |
|
|
|
|
|
# GPT-2 لا يملك pad_token افتراضيًا، لذلك يجب تعيينه |
|
|
# هذه خطوة ضرورية جدًا لتجنب الأخطاء والتحذيرات أثناء التوليد |
|
|
if finetuned_tokenizer.pad_token is None: |
|
|
finetuned_tokenizer.pad_token = finetuned_tokenizer.eos_token |
|
|
# نقوم بتحديث إعدادات النموذج أيضًا |
|
|
finetuned_model.config.pad_token_id = finetuned_model.config.eos_token_id |
|
|
|
|
|
|
|
|
# إعداد pipeline لتوليد النصوص |
|
|
generator = pipeline( |
|
|
"text-generation", |
|
|
model=finetuned_model, |
|
|
tokenizer=finetuned_tokenizer, |
|
|
device=-1 # استخدام CPU للاختبار |
|
|
) |
|
|
|
|
|
# قائمة بالأسئلة |
|
|
questions = [ |
|
|
"What is the capital of Egypt and what is it famous for", |
|
|
|
|
|
"How does a computer work", |
|
|
|
|
|
] |
|
|
|
|
|
# اختبار النموذج على الأسئلة |
|
|
print("\n--- اختبار النموذج من Checkpoint-4000 ---") |
|
|
for prompt in questions: |
|
|
result = generator( |
|
|
prompt, |
|
|
max_new_tokens=150, |
|
|
do_sample=True, |
|
|
temperature=0.7, |
|
|
top_p=0.9, |
|
|
top_k=50, |
|
|
pad_token_id=finetuned_tokenizer.eos_token_id # ممارسة جيدة لتمرير هذا |
|
|
) |
|
|
print(f"\nالسؤال: {prompt}") |
|
|
print(f"إجابة النموذج:\n{result[0]['generated_text']}") |
|
|
``` |