تدقيق نموذج

Home PDF

import os
import glob
import json
من مكتبة النقاط البيضاء import load_dotenv
من مكتبة التحولات import AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments, DataCollatorForLanguageModeling, LlamaTokenizerFast
من مجموعة البيانات import Dataset, load_dataset
import torch

load_dotenv()

اسم_النموذج = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"  # تم تغييره الى النموذج المحدد
دليل_الاخراج = "trained_model"
ملف_التدريب = "train.jsonl"
حد_الطول_القصوى = 512
حجم_الدفعة = 8
العوارض = 3

def إنشاء_بيانات_التدريب(دليل_المنشورات):
    جميع_النصوص = []
    for دليل_اللغة in os.listdir(دليل_المنشورات):
        دليل_اللغة = os.path.join(دليل_المنشورات, دليل_اللغة)
        if not os.path.isdir(دليل_اللغة):
            استمر
        for مسار_الملف in glob.glob(os.path.join(دليل_اللغة, "*.md")):
            نشطه_بالقراءة_في_الملف = سعة_فتح(مسار_الملف, 'r', encoding='utf-8')
            محتوى = القراءة.read()
            # تبديل بيانات البداية
            محتوى = محتوى.split("---", 2)[-1].strip()
            النصوص.append(محتوى)
        except Exception as e:
            print(f"خطأ في قراءة الملف {مسار_الملف}: {e}")
    return النصوص

def إعداد_مجموعة_البيانات(نصوص, توكنايزر):
    تشفير = توكنايزر(نصوص, truncation=True, padding=True, max_length=MAX_LENGTH, return_tensors="pt")
    استرجاع مجموعة_البيانات.from_dict(تشفير)

def تدريب_النموذج(مجموعة_البيانات, توكنايزر):
    الإعدادات_التدريبية = TrainingArguments(
        output_dir=OUTPUT_DIR,
        overwrite_output_dir=True,
        num_train_epochs=EPOCHS,
        per_device_train_batch_size=BATCH_SIZE,
        save_steps=10_000,
        save_total_limit=2,
        prediction_loss_only=True,
        remove_unused_columns=False,
    )
    النموذج = AutoModelForCausalLM.from_pretrained(MODEL_NAME, trust_remote_code=True)
    جمع_البيانات = DataCollatorForLanguageModeling(توكنايزر=توكنايزر, mlm=False)
    المدرب = Trainer(
        model=النموذج,
        args=الإعدادات_التدريبية,
        train_dataset=مجموعة_البيانات,
        data_collator=جمع_البيانات,
    )
    المدرب.train()
    المدرب.save_model(OUTPUT_DIR)

def من_خلال():
    دليل_المنشورات = "_posts"
    النصوص = إنشاء_بيانات_التدريب(دليل_المنشورات)
    التوكنايزر = LlamaTokenizerFast.from_pretrained(MODEL_NAME, trust_remote_code=True, use_fast=True)
    التوكنايزر.pad_token = التوكنايزر.eos_token
    مجموعة_البيانات = إعداد_مجموعة_البيانات(النصوص, التوكنايزر)
    تدريب_النموذج(مجموعة_البيانات, التوكنايزر)

if __name__ == "__main__":
    من_خلال()


Back 2025.02.22 Donate