Spaces:
Running
on
Zero
Running
on
Zero
adjusted model loading
Browse files- app.py +29 -34
- tests/conftest.py +12 -0
app.py
CHANGED
@@ -28,37 +28,30 @@ model_3n_id = os.getenv("MODEL_3N_ID", "google/gemma-3n-E4B-it")
|
|
28 |
MAX_VIDEO_SIZE = 100 * 1024 * 1024 # 100 MB
|
29 |
MAX_IMAGE_SIZE = 10 * 1024 * 1024 # 10 MB
|
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 |
-
if model_3n is None:
|
56 |
-
model_3n = Gemma3nForConditionalGeneration.from_pretrained(
|
57 |
-
model_3n_id,
|
58 |
-
torch_dtype=torch.bfloat16,
|
59 |
-
device_map="auto",
|
60 |
-
attn_implementation="eager",
|
61 |
-
)
|
62 |
|
63 |
|
64 |
def check_file_size(file_path: str) -> bool:
|
@@ -229,9 +222,6 @@ def run(
|
|
229 |
repetition_penalty: float,
|
230 |
) -> Iterator[str]:
|
231 |
|
232 |
-
# Load models only when needed (not during testing)
|
233 |
-
load_models()
|
234 |
-
|
235 |
# Define preset system prompts
|
236 |
preset_prompts = {
|
237 |
"General Assistant": "You are a helpful AI assistant capable of analyzing images, videos, and PDF documents. Provide clear, accurate, and helpful responses to user queries.",
|
@@ -259,6 +249,11 @@ def run(
|
|
259 |
)
|
260 |
|
261 |
selected_model = model_12 if model_choice == "Gemma 3 12B" else model_3n
|
|
|
|
|
|
|
|
|
|
|
262 |
|
263 |
messages = []
|
264 |
if system_prompt:
|
|
|
28 |
MAX_VIDEO_SIZE = 100 * 1024 * 1024 # 100 MB
|
29 |
MAX_IMAGE_SIZE = 10 * 1024 * 1024 # 10 MB
|
30 |
|
31 |
+
# Skip model loading during tests
|
32 |
+
SKIP_MODEL_LOADING = os.getenv("SKIP_MODEL_LOADING", "false").lower() == "true"
|
33 |
+
|
34 |
+
if not SKIP_MODEL_LOADING:
|
35 |
+
input_processor = Gemma3Processor.from_pretrained(model_12_id)
|
36 |
+
|
37 |
+
model_12 = Gemma3ForConditionalGeneration.from_pretrained(
|
38 |
+
model_12_id,
|
39 |
+
torch_dtype=torch.bfloat16,
|
40 |
+
device_map="auto",
|
41 |
+
attn_implementation="eager",
|
42 |
+
)
|
43 |
+
|
44 |
+
model_3n = Gemma3nForConditionalGeneration.from_pretrained(
|
45 |
+
model_3n_id,
|
46 |
+
torch_dtype=torch.bfloat16,
|
47 |
+
device_map="auto",
|
48 |
+
attn_implementation="eager",
|
49 |
+
)
|
50 |
+
else:
|
51 |
+
# Mock objects for testing
|
52 |
+
input_processor = None
|
53 |
+
model_12 = None
|
54 |
+
model_3n = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
|
57 |
def check_file_size(file_path: str) -> bool:
|
|
|
222 |
repetition_penalty: float,
|
223 |
) -> Iterator[str]:
|
224 |
|
|
|
|
|
|
|
225 |
# Define preset system prompts
|
226 |
preset_prompts = {
|
227 |
"General Assistant": "You are a helpful AI assistant capable of analyzing images, videos, and PDF documents. Provide clear, accurate, and helpful responses to user queries.",
|
|
|
249 |
)
|
250 |
|
251 |
selected_model = model_12 if model_choice == "Gemma 3 12B" else model_3n
|
252 |
+
|
253 |
+
# If models are skipped (during testing), return a mock response
|
254 |
+
if SKIP_MODEL_LOADING or selected_model is None or input_processor is None:
|
255 |
+
yield "Mock response for testing - models are not loaded."
|
256 |
+
return
|
257 |
|
258 |
messages = []
|
259 |
if system_prompt:
|
tests/conftest.py
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import pytest
|
3 |
+
|
4 |
+
# Set environment variable before any imports
|
5 |
+
os.environ["SKIP_MODEL_LOADING"] = "true"
|
6 |
+
|
7 |
+
@pytest.fixture(autouse=True)
|
8 |
+
def skip_model_loading():
|
9 |
+
"""Automatically set environment variable to skip model loading for all tests."""
|
10 |
+
# Environment variable is already set above
|
11 |
+
yield
|
12 |
+
# Keep the variable set for the entire test session
|