Dongjin1203's picture
Initial commit for HF Spaces deployment
4739096
from unsloth import FastLanguageModel
import torch
import os
import glob
# ==========================================
# [Smart Export Script] μ΅œμ‹  체크포인트 μžλ™ 감지
# ==========================================
print(">>> [System] GGUF λ³€ν™˜ μž‘μ—…μ„ μ‹œμž‘ν•©λ‹ˆλ‹€...")
# 1. μ΅œμ‹  체크포인트 폴더 μ°ΎκΈ° (핡심!)
output_dir = "outputs_final"
if not os.path.exists(output_dir):
print(f">>> [Error] '{output_dir}' 폴더가 μ—†μŠ΅λ‹ˆλ‹€!")
exit()
# checkpoint- 숫자 폴더듀을 λ‹€ μ°Ύμ•„μ„œ μˆ«μžκ°€ 제일 큰 λ†ˆμ„ 고름
subfolders = [f.path for f in os.scandir(output_dir) if f.is_dir() and "checkpoint" in f.name]
if not subfolders:
print(">>> [Error] 체크포인트 폴더λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€!")
exit()
# 숫자둜 μ •λ ¬ν•΄μ„œ κ°€μž₯ λ§ˆμ§€λ§‰ 것 선택 (예: checkpoint-3171)
latest_checkpoint = max(subfolders, key=lambda x: int(x.split('-')[-1]))
print(f">>> [Found] κ°€μž₯ ν•™μŠ΅μ΄ 잘 된 λͺ¨λΈμ„ μ°Ύμ•˜μŠ΅λ‹ˆλ‹€: {latest_checkpoint}")
print(">>> [Model] λͺ¨λΈ λ‘œλ“œ 쀑... (xFormers κ²½κ³ λŠ” λ¬΄μ‹œν•˜μ„Έμš”)")
# 2. λͺ¨λΈ λ‘œλ“œ (μ •ν™•ν•œ 경둜 μž…λ ₯)
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = latest_checkpoint, # <--- μžλ™μœΌλ‘œ 찾은 경둜
max_seq_length = 2048,
dtype = None,
load_in_4bit = True,
)
# 3. GGUF λ³€ν™˜
print(f">>> [Convert] '{latest_checkpoint}' -> GGUF λ³€ν™˜ μ‹œμž‘ (5~10λΆ„ μ†Œμš”)")
# q4_k_m: μš©λŸ‰/μ„±λŠ₯ λ°ΈλŸ°μŠ€ν˜•
model.save_pretrained_gguf("BiddinMate_Model", tokenizer, quantization_method = "q4_k_m")
print(">>> [Success] λ³€ν™˜ μ™„λ£Œ!")
print(f">>> 'BiddinMate_Model' 폴더 μ•ˆμ— .gguf 파일이 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")