AhmedBenElsayedBenAhmed commited on
Commit
84b6ff3
·
1 Parent(s): b66e99e
Files changed (2) hide show
  1. app.py +10 -26
  2. requirements.txt +2 -0
app.py CHANGED
@@ -10,13 +10,13 @@ from flask import Flask, request, jsonify
10
  from flask_cors import CORS
11
  import threading, torch, json
12
  from datasets import Dataset
13
- from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments, BitsAndBytesConfig
14
  from peft import LoraConfig, get_peft_model, TaskType, PeftModel
15
 
16
  # ===============================
17
  # 2️⃣ إعداد المتغيرات
18
  # ===============================
19
- MODEL_NAME = "Qwen/Qwen2.5-7B-Instruct" # ✅ موديل 7B
20
  FLASK_PORT = 7860
21
 
22
  SAVE_DIR = "/tmp/lora_model"
@@ -33,30 +33,17 @@ device = "cuda" if torch.cuda.is_available() else "cpu"
33
  print("🔹 Using device:", device)
34
 
35
  # ===============================
36
- # 4️⃣ تحميل الموديل مع 4bit Quantization
37
  # ===============================
38
- print("🔄 Loading base model with 4-bit quantization...")
39
-
40
- bnb_config = BitsAndBytesConfig(
41
- load_in_4bit=True, # ✅ تشغيل 4bit quantization
42
- bnb_4bit_use_double_quant=True,
43
- bnb_4bit_quant_type="nf4",
44
- bnb_4bit_compute_dtype=torch.bfloat16
45
- )
46
-
47
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
48
 
49
- try:
50
- model = AutoModelForCausalLM.from_pretrained(
51
- MODEL_NAME,
52
- device_map="auto",
53
- quantization_config=bnb_config,
54
- trust_remote_code=True
55
- )
56
- print("✅ Base model loaded in 4-bit!")
57
- except Exception as e:
58
- print("⚠️ Failed to load base model:", e)
59
- raise e
60
 
61
  # ===============================
62
  # 5️⃣ إعداد LoRA
@@ -79,7 +66,6 @@ if os.path.exists(SAVE_DIR):
79
  base_model = AutoModelForCausalLM.from_pretrained(
80
  MODEL_NAME,
81
  device_map="auto",
82
- quantization_config=bnb_config,
83
  trust_remote_code=True
84
  )
85
  model = PeftModel.from_pretrained(base_model, SAVE_DIR)
@@ -121,7 +107,6 @@ def generate():
121
 
122
  user_name = user_info["name"]
123
 
124
- # توليد نصوص من الموديل
125
  inputs = tokenizer(prompt, return_tensors="pt").to(device)
126
  outputs = model.generate(
127
  **inputs,
@@ -201,7 +186,6 @@ def train():
201
  else:
202
  return jsonify({"error": "No file uploaded or JSON provided"}), 400
203
 
204
- # الحفظ في dataset.json
205
  with open(DATASET_FILE, "w", encoding="utf-8") as f:
206
  json.dump(data, f, ensure_ascii=False, indent=2)
207
 
 
10
  from flask_cors import CORS
11
  import threading, torch, json
12
  from datasets import Dataset
13
+ from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments
14
  from peft import LoraConfig, get_peft_model, TaskType, PeftModel
15
 
16
  # ===============================
17
  # 2️⃣ إعداد المتغيرات
18
  # ===============================
19
+ MODEL_NAME = "Qwen/Qwen2.5-7B-Instruct"
20
  FLASK_PORT = 7860
21
 
22
  SAVE_DIR = "/tmp/lora_model"
 
33
  print("🔹 Using device:", device)
34
 
35
  # ===============================
36
+ # 4️⃣ تحميل الموديل (بدون quantization)
37
  # ===============================
38
+ print("🔄 Loading base model...")
 
 
 
 
 
 
 
 
39
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
40
 
41
+ model = AutoModelForCausalLM.from_pretrained(
42
+ MODEL_NAME,
43
+ device_map="auto",
44
+ trust_remote_code=True
45
+ )
46
+ print("✅ Base model loaded!")
 
 
 
 
 
47
 
48
  # ===============================
49
  # 5️⃣ إعداد LoRA
 
66
  base_model = AutoModelForCausalLM.from_pretrained(
67
  MODEL_NAME,
68
  device_map="auto",
 
69
  trust_remote_code=True
70
  )
71
  model = PeftModel.from_pretrained(base_model, SAVE_DIR)
 
107
 
108
  user_name = user_info["name"]
109
 
 
110
  inputs = tokenizer(prompt, return_tensors="pt").to(device)
111
  outputs = model.generate(
112
  **inputs,
 
186
  else:
187
  return jsonify({"error": "No file uploaded or JSON provided"}), 400
188
 
 
189
  with open(DATASET_FILE, "w", encoding="utf-8") as f:
190
  json.dump(data, f, ensure_ascii=False, indent=2)
191
 
requirements.txt CHANGED
@@ -1,4 +1,6 @@
1
  transformers
 
 
2
  peft
3
  torch
4
  datasets
 
1
  transformers
2
+ accelerate
3
+ bitsandbytes
4
  peft
5
  torch
6
  datasets