Spaces:
Runtime error
Runtime error
File size: 2,642 Bytes
e66ee38 59bc69e c8b0b86 e66ee38 c8b0b86 59bc69e c8b0b86 59bc69e 4d73c77 a74cc7e 4d73c77 c8b0b86 4d73c77 59bc69e e66ee38 4d73c77 c8b0b86 e66ee38 c8b0b86 59bc69e ea2466c fa412e4 e66ee38 c8b0b86 e66ee38 c8b0b86 be1a16c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import os
import zipfile
from huggingface_hub import login
import torch
from transformers import AutoTokenizer
from peft import AutoPeftModelForCausalLM
# 🔹 گرفتن توکن از محیط
hf_token = os.environ.get("HF_TOKEN")
if not hf_token:
raise ValueError("❌ HF_TOKEN not found in environment secrets.")
# 🔹 لاگین به HuggingFace
login(hf_token)
# 🔹 مسیر فایل زیپ
LORA_ZIP_PATH = "dorna-diabetes-finetuned-20250514T183411Z-1-001.zip"
EXTRACT_DIR = "lora" # پوشهای که فایلها داخلش اکسترکت میشن
# ✅ اکسترکت فایل ZIP در صورت نیاز
if not os.path.exists(EXTRACT_DIR):
with zipfile.ZipFile(LORA_ZIP_PATH, 'r') as zip_ref:
zip_ref.extractall(EXTRACT_DIR)
print("✅ فایل LoRA اکسترکت شد.")
# ✅ پیدا کردن مسیر فولدر واقعی شامل adapter_config.json
# معمولاً zip یک زیرپوشه میسازه داخل خودش
for root, dirs, files in os.walk(EXTRACT_DIR):
if "adapter_config.json" in files:
LORA_PATH = root
break
else:
raise FileNotFoundError("❌ adapter_config.json در هیچ زیرپوشهای یافت نشد.")
# ✅ تغییر نام فایل .safetensors به adapter_model.safetensors اگر لازم بود
for filename in os.listdir(LORA_PATH):
if filename.endswith(".safetensors") and filename != "adapter_model.safetensors":
os.rename(
os.path.join(LORA_PATH, filename),
os.path.join(LORA_PATH, "adapter_model.safetensors")
)
print("✅ اسم فایل تغییر کرد.")
break
# 🔹 بارگذاری مدل و توکنایزر
print("🔹 در حال بارگذاری مدل پایه + LoRA...")
model = AutoPeftModelForCausalLM.from_pretrained(
LORA_PATH,
torch_dtype=torch.float16,
low_cpu_mem_usage=True,
device_map="auto",
token=hf_token,
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
model.base_model.config._name_or_path,
token=hf_token,
trust_remote_code=True
)
print("✅ مدل و توکنایزر با موفقیت بارگذاری شدند.")
while True:
prompt = input("📝 یک دستور وارد کن (exit برای خروج): ")
if prompt.lower() == "exit":
break
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("🧠 پاسخ:", response) |