Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -130,21 +130,49 @@ def do_web_search(query: str) -> str:
|
|
130 |
logger.error(f"Web search failed: {e}")
|
131 |
return f"Web search failed: {str(e)}"
|
132 |
|
|
|
133 |
##############################################################################
|
134 |
-
#
|
135 |
##############################################################################
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
|
149 |
##############################################################################
|
150 |
# CSV, TXT, PDF ๋ถ์ ํจ์
|
|
|
130 |
logger.error(f"Web search failed: {e}")
|
131 |
return f"Web search failed: {str(e)}"
|
132 |
|
133 |
+
|
134 |
##############################################################################
|
135 |
+
# ๋ชจ๋ธ ๋ฐ ํ ํฌ๋์ด์ ๋ก๋ (Space ํ๊ฒฝ์์ ์ต์ ํ)
|
136 |
##############################################################################
|
137 |
+
@spaces.GPU
|
138 |
+
def load_model(model_name="VIDraft/Gemma-3-R1984-1B", adapter_name="openfree/Gemma-3-R1984-1B-0613"):
|
139 |
+
logger.info(f"๋ชจ๋ธ ๋ก๋ฉ ์์: {model_name} (์ด๋ํฐ: {adapter_name})")
|
140 |
+
clear_cuda_cache() # ์บ์ ์ ๋ฆฌ
|
141 |
+
|
142 |
+
bnb_config = BitsAndBytesConfig(
|
143 |
+
load_in_4bit=True,
|
144 |
+
bnb_4bit_use_double_quant=True,
|
145 |
+
bnb_4bit_quant_type="nf4",
|
146 |
+
bnb_4bit_compute_dtype=torch.bfloat16,
|
147 |
+
# nf4_nested_quant=False, # ํ์์ ํ์ฑํ
|
148 |
+
)
|
149 |
+
|
150 |
+
# ๋ฒ ์ด์ค ๋ชจ๋ธ ๋ก๋
|
151 |
+
model = AutoModelForCausalLM.from_pretrained(
|
152 |
+
model_name,
|
153 |
+
quantization_config=bnb_config,
|
154 |
+
device_map="auto",
|
155 |
+
trust_remote_code=False,
|
156 |
+
)
|
157 |
+
|
158 |
+
# ํ ํฌ๋์ด์ ๋ก๋ (๋ฒ ์ด์ค ๋ชจ๋ธ๊ณผ ๋์ผํ ํ ํฌ๋์ด์ ์ฌ์ฉ)
|
159 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
160 |
+
tokenizer.pad_token = tokenizer.eos_token
|
161 |
+
|
162 |
+
# PEFT ์ด๋ํฐ ๋ก๋ ๋ฐ ๋ฒ ์ด์ค ๋ชจ๋ธ์ ๋ณํฉ
|
163 |
+
from peft import PeftModel
|
164 |
+
try:
|
165 |
+
model = PeftModel.from_pretrained(model, adapter_name)
|
166 |
+
logger.info(f"PEFT ์ด๋ํฐ ๋ก๋ฉ ๋ฐ ๋ณํฉ ์๋ฃ: {adapter_name}")
|
167 |
+
except Exception as e:
|
168 |
+
logger.error(f"PEFT ์ด๋ํฐ ๋ก๋ฉ ์ค๋ฅ: {e}")
|
169 |
+
logger.warning("์ด๋ํฐ ๋ก๋ฉ์ ์คํจํ์ต๋๋ค. ๋ฒ ์ด์ค ๋ชจ๋ธ๋ก ์งํํฉ๋๋ค.")
|
170 |
+
# ์ด๋ํฐ ๋ก๋ฉ ์คํจ ์ ๋ฒ ์ด์ค ๋ชจ๋ธ ๊ทธ๋๋ก ์ฌ์ฉํ๊ฑฐ๋ ์ค๋ฅ ์ฒ๋ฆฌ
|
171 |
+
|
172 |
+
model.eval() # ์ถ๋ก ๋ชจ๋๋ก ์ค์
|
173 |
+
|
174 |
+
logger.info("๋ชจ๋ธ ๋ฐ ํ ํฌ๋์ด์ ๋ก๋ฉ ์๋ฃ")
|
175 |
+
return model, tokenizer
|
176 |
|
177 |
##############################################################################
|
178 |
# CSV, TXT, PDF ๋ถ์ ํจ์
|