Spaces:
Running
on
Zero
Running
on
Zero
adds HF_TOKEN and loads the model
Browse files
app.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import gradio as gr
|
2 |
import json
|
3 |
import torch
|
|
|
4 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
5 |
import spaces
|
6 |
|
@@ -12,31 +13,59 @@ model = None
|
|
12 |
tokenizer = None
|
13 |
|
14 |
def load_model():
|
15 |
-
"""Load the Osmosis Structure model and tokenizer"""
|
16 |
global model, tokenizer
|
17 |
|
18 |
try:
|
19 |
print("Loading Osmosis Structure model...")
|
20 |
|
21 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
tokenizer = AutoTokenizer.from_pretrained(
|
23 |
MODEL_NAME,
|
24 |
-
trust_remote_code=True
|
|
|
|
|
25 |
)
|
26 |
|
27 |
-
|
|
|
28 |
model = AutoModelForCausalLM.from_pretrained(
|
29 |
MODEL_NAME,
|
30 |
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
|
31 |
device_map="auto" if torch.cuda.is_available() else None,
|
32 |
-
trust_remote_code=True
|
|
|
|
|
33 |
)
|
34 |
|
35 |
print("β
Osmosis Structure model loaded successfully!")
|
36 |
return True
|
37 |
|
38 |
except Exception as e:
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
return False
|
41 |
|
42 |
@spaces.GPU
|
@@ -45,7 +74,7 @@ def text_to_json(input_text, max_tokens=512, temperature=0.6, top_p=0.95, top_k=
|
|
45 |
global model, tokenizer
|
46 |
|
47 |
if model is None or tokenizer is None:
|
48 |
-
return "β Model not loaded. Please
|
49 |
|
50 |
try:
|
51 |
# Create a structured prompt for JSON conversion
|
@@ -150,8 +179,10 @@ def create_demo():
|
|
150 |
|
151 |
Convert unstructured text into well-formatted JSON using the Osmosis Structure 0.6B model.
|
152 |
This model is specifically trained for structured data extraction and format conversion.
|
|
|
|
|
153 |
""")
|
154 |
-
|
155 |
gr.Markdown("""
|
156 |
### βΉοΈ About Osmosis Structure
|
157 |
|
@@ -159,8 +190,16 @@ def create_demo():
|
|
159 |
- **Architecture**: Qwen3 (specialized for structured data)
|
160 |
- **Purpose**: Converting unstructured text to structured JSON format
|
161 |
- **Optimizations**: Fine-tuned for data extraction and format conversion tasks
|
|
|
162 |
|
163 |
The model automatically identifies key information in your text and organizes it into logical JSON structures.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
""")
|
165 |
|
166 |
with gr.Row():
|
@@ -237,6 +276,7 @@ def create_demo():
|
|
237 |
label="Click on any example to try it"
|
238 |
)
|
239 |
|
|
|
240 |
# Event handlers
|
241 |
convert_btn.click(
|
242 |
fn=text_to_json,
|
@@ -259,17 +299,22 @@ def create_demo():
|
|
259 |
if __name__ == "__main__":
|
260 |
print("π Initializing Osmosis Structure Demo...")
|
261 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
262 |
# Load model at startup
|
263 |
if load_model():
|
264 |
print("π Creating Gradio interface...")
|
265 |
demo = create_demo()
|
266 |
demo.launch(
|
267 |
-
share=
|
268 |
show_error=True,
|
269 |
show_tips=True,
|
270 |
-
enable_queue=True
|
271 |
-
ssr_mode=False,
|
272 |
-
mcp_server=True
|
273 |
)
|
274 |
else:
|
275 |
-
print("β Failed to load model. Please check your
|
|
|
1 |
import gradio as gr
|
2 |
import json
|
3 |
import torch
|
4 |
+
import os
|
5 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
6 |
import spaces
|
7 |
|
|
|
13 |
tokenizer = None
|
14 |
|
15 |
def load_model():
|
16 |
+
"""Load the Osmosis Structure model and tokenizer with HF token for gated repos"""
|
17 |
global model, tokenizer
|
18 |
|
19 |
try:
|
20 |
print("Loading Osmosis Structure model...")
|
21 |
|
22 |
+
# Get HF token from environment variables
|
23 |
+
hf_token = os.environ.get("HF_KEY")
|
24 |
+
if not hf_token:
|
25 |
+
print("β οΈ Warning: HF_KEY not found in environment variables")
|
26 |
+
print("Attempting to load without token...")
|
27 |
+
hf_token = None
|
28 |
+
else:
|
29 |
+
print("β
HF token found, accessing gated repository...")
|
30 |
+
|
31 |
+
# Load tokenizer with token
|
32 |
+
print("Loading tokenizer...")
|
33 |
tokenizer = AutoTokenizer.from_pretrained(
|
34 |
MODEL_NAME,
|
35 |
+
trust_remote_code=True,
|
36 |
+
token=hf_token,
|
37 |
+
use_auth_token=hf_token # Backward compatibility
|
38 |
)
|
39 |
|
40 |
+
print("Loading model...")
|
41 |
+
# Load model with token
|
42 |
model = AutoModelForCausalLM.from_pretrained(
|
43 |
MODEL_NAME,
|
44 |
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
|
45 |
device_map="auto" if torch.cuda.is_available() else None,
|
46 |
+
trust_remote_code=True,
|
47 |
+
token=hf_token,
|
48 |
+
use_auth_token=hf_token # Backward compatibility
|
49 |
)
|
50 |
|
51 |
print("β
Osmosis Structure model loaded successfully!")
|
52 |
return True
|
53 |
|
54 |
except Exception as e:
|
55 |
+
error_msg = f"β Error loading model: {e}"
|
56 |
+
print(error_msg)
|
57 |
+
|
58 |
+
# Provide helpful error messages for common issues
|
59 |
+
if "401" in str(e) or "authentication" in str(e).lower():
|
60 |
+
print("π‘ This appears to be an authentication error.")
|
61 |
+
print("Please ensure:")
|
62 |
+
print("1. HF_KEY is set correctly in your Space secrets")
|
63 |
+
print("2. Your token has access to the gated repository")
|
64 |
+
print("3. You have accepted the model's license agreement")
|
65 |
+
elif "404" in str(e) or "not found" in str(e).lower():
|
66 |
+
print("π‘ Model repository not found.")
|
67 |
+
print("Please check if the model name is correct and accessible")
|
68 |
+
|
69 |
return False
|
70 |
|
71 |
@spaces.GPU
|
|
|
74 |
global model, tokenizer
|
75 |
|
76 |
if model is None or tokenizer is None:
|
77 |
+
return "β Model not loaded. Please check the console for loading errors."
|
78 |
|
79 |
try:
|
80 |
# Create a structured prompt for JSON conversion
|
|
|
179 |
|
180 |
Convert unstructured text into well-formatted JSON using the Osmosis Structure 0.6B model.
|
181 |
This model is specifically trained for structured data extraction and format conversion.
|
182 |
+
|
183 |
+
> **Note**: This model requires authentication. Ensure your HF_KEY is properly configured in Space secrets.
|
184 |
""")
|
185 |
+
|
186 |
gr.Markdown("""
|
187 |
### βΉοΈ About Osmosis Structure
|
188 |
|
|
|
190 |
- **Architecture**: Qwen3 (specialized for structured data)
|
191 |
- **Purpose**: Converting unstructured text to structured JSON format
|
192 |
- **Optimizations**: Fine-tuned for data extraction and format conversion tasks
|
193 |
+
- **Access**: Requires HF authentication token for gated repository
|
194 |
|
195 |
The model automatically identifies key information in your text and organizes it into logical JSON structures.
|
196 |
+
|
197 |
+
### π Authentication Setup
|
198 |
+
|
199 |
+
To use this model, ensure you have:
|
200 |
+
1. Set `HF_KEY` in your Space secrets with a valid Hugging Face token
|
201 |
+
2. Accepted the model's license agreement on Hugging Face
|
202 |
+
3. Ensured your token has access to the gated repository
|
203 |
""")
|
204 |
|
205 |
with gr.Row():
|
|
|
276 |
label="Click on any example to try it"
|
277 |
)
|
278 |
|
279 |
+
|
280 |
# Event handlers
|
281 |
convert_btn.click(
|
282 |
fn=text_to_json,
|
|
|
299 |
if __name__ == "__main__":
|
300 |
print("π Initializing Osmosis Structure Demo...")
|
301 |
|
302 |
+
# Check HF token availability
|
303 |
+
hf_token = os.environ.get("HF_KEY")
|
304 |
+
if hf_token:
|
305 |
+
print("β
HF_KEY found in environment")
|
306 |
+
else:
|
307 |
+
print("β οΈ HF_KEY not found - this may cause issues with gated repositories")
|
308 |
+
|
309 |
# Load model at startup
|
310 |
if load_model():
|
311 |
print("π Creating Gradio interface...")
|
312 |
demo = create_demo()
|
313 |
demo.launch(
|
314 |
+
share=False,
|
315 |
show_error=True,
|
316 |
show_tips=True,
|
317 |
+
enable_queue=True
|
|
|
|
|
318 |
)
|
319 |
else:
|
320 |
+
print("β Failed to load model. Please check your HF_KEY and model access permissions.")
|