spcv commited on
Commit
f1a72dc
·
verified ·
1 Parent(s): 1453eb5

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. main.py +48 -17
main.py CHANGED
@@ -4,6 +4,34 @@ import json
4
  import traceback
5
  import threading
6
  import queue
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  from fastapi import FastAPI, HTTPException
8
  from fastapi.staticfiles import StaticFiles
9
  from fastapi.responses import FileResponse, JSONResponse, StreamingResponse
@@ -40,7 +68,9 @@ shared_tokenizer = None
40
  class Qwen35ONNXModel:
41
  def __init__(self, model_dir):
42
  self.model_dir = os.path.abspath(model_dir)
43
- import onnxruntime as ort
 
 
44
  opts = ort.SessionOptions()
45
  opts.intra_op_num_threads = 4
46
 
@@ -53,7 +83,9 @@ class Qwen35ONNXModel:
53
 
54
  class Qwen35ONNXTokenizer:
55
  def __init__(self, model_or_dir):
56
- from tokenizers import Tokenizer
 
 
57
  if isinstance(model_or_dir, Qwen35ONNXModel):
58
  tok_path = os.path.join(model_or_dir.model_dir, "tokenizer.json")
59
  elif isinstance(model_or_dir, str):
@@ -85,7 +117,8 @@ class Qwen35ONNXGenerator:
85
  self.max_tokens = 128
86
 
87
  def append_tokens(self, tokens):
88
- import numpy as np
 
89
  self.tokens_history.extend(tokens)
90
  input_ids = np.array([self.tokens_history], dtype=np.int64)
91
  seq_len = input_ids.shape[1]
@@ -108,9 +141,9 @@ class Qwen35ONNXGenerator:
108
  return self.done
109
 
110
  def generate_next_token(self):
111
- if self.done:
112
  return
113
- import numpy as np
114
  if self.step > 0:
115
  next_token = self.next_tokens[0]
116
  cur_pos = len(self.tokens_history)
@@ -153,19 +186,18 @@ class Qwen35ONNXGenerator:
153
  def get_shared_onnx_genai():
154
  global shared_model, shared_tokenizer
155
  if shared_model is None:
156
- import onnxruntime_genai as og
157
  if not os.path.exists(os.path.join(MODEL_PATH, "onnx", "decoder_model_merged_quantized.onnx")):
158
  print(f"[System] Qwen 3.5 0.8B ONNX model not found at {MODEL_PATH}. Downloading onnx-community/Qwen3.5-0.8B-ONNX...")
159
- from huggingface_hub import snapshot_download
160
- snapshot_download(
161
- repo_id="onnx-community/Qwen3.5-0.8B-ONNX",
162
- local_dir=MODEL_PATH,
163
- allow_patterns=[
164
- "config.json", "generation_config.json", "tokenizer.json",
165
- "tokenizer_config.json", "chat_template.jinja",
166
- "onnx/decoder_model_merged_quantized.*", "onnx/embed_tokens_quantized.*"
167
- ]
168
- )
169
 
170
  print(f"[System] Initializing shared Qwen 3.5 0.8B ONNX model from: {MODEL_PATH}...")
171
  shared_model = Qwen35ONNXModel(MODEL_PATH)
@@ -427,7 +459,6 @@ def run_web_agent(inputs):
427
  f"<|assistant|>\n"
428
  )
429
 
430
- import onnxruntime_genai as og
431
  model, tokenizer = get_shared_onnx_genai()
432
  params = og.GeneratorParams(model)
433
  params.set_search_options(max_length=128, temperature=0.0)
 
4
  import traceback
5
  import threading
6
  import queue
7
+ import urllib.request
8
+ import re
9
+
10
+ try:
11
+ import numpy as np
12
+ except ImportError:
13
+ np = None
14
+
15
+ try:
16
+ import onnxruntime as ort
17
+ except ImportError:
18
+ ort = None
19
+
20
+ try:
21
+ from tokenizers import Tokenizer
22
+ except ImportError:
23
+ Tokenizer = None
24
+
25
+ try:
26
+ import onnxruntime_genai as og
27
+ except ImportError:
28
+ og = None
29
+
30
+ try:
31
+ from huggingface_hub import snapshot_download
32
+ except ImportError:
33
+ snapshot_download = None
34
+
35
  from fastapi import FastAPI, HTTPException
36
  from fastapi.staticfiles import StaticFiles
37
  from fastapi.responses import FileResponse, JSONResponse, StreamingResponse
 
68
  class Qwen35ONNXModel:
69
  def __init__(self, model_dir):
70
  self.model_dir = os.path.abspath(model_dir)
71
+ if ort is None:
72
+ raise ImportError("onnxruntime is not installed. Please run: pip install onnxruntime")
73
+
74
  opts = ort.SessionOptions()
75
  opts.intra_op_num_threads = 4
76
 
 
83
 
84
  class Qwen35ONNXTokenizer:
85
  def __init__(self, model_or_dir):
86
+ if Tokenizer is None:
87
+ raise ImportError("tokenizers is not installed. Please run: pip install tokenizers")
88
+
89
  if isinstance(model_or_dir, Qwen35ONNXModel):
90
  tok_path = os.path.join(model_or_dir.model_dir, "tokenizer.json")
91
  elif isinstance(model_or_dir, str):
 
117
  self.max_tokens = 128
118
 
119
  def append_tokens(self, tokens):
120
+ if np is None:
121
+ return
122
  self.tokens_history.extend(tokens)
123
  input_ids = np.array([self.tokens_history], dtype=np.int64)
124
  seq_len = input_ids.shape[1]
 
141
  return self.done
142
 
143
  def generate_next_token(self):
144
+ if self.done or np is None:
145
  return
146
+
147
  if self.step > 0:
148
  next_token = self.next_tokens[0]
149
  cur_pos = len(self.tokens_history)
 
186
  def get_shared_onnx_genai():
187
  global shared_model, shared_tokenizer
188
  if shared_model is None:
 
189
  if not os.path.exists(os.path.join(MODEL_PATH, "onnx", "decoder_model_merged_quantized.onnx")):
190
  print(f"[System] Qwen 3.5 0.8B ONNX model not found at {MODEL_PATH}. Downloading onnx-community/Qwen3.5-0.8B-ONNX...")
191
+ if snapshot_download is not None:
192
+ snapshot_download(
193
+ repo_id="onnx-community/Qwen3.5-0.8B-ONNX",
194
+ local_dir=MODEL_PATH,
195
+ allow_patterns=[
196
+ "config.json", "generation_config.json", "tokenizer.json",
197
+ "tokenizer_config.json", "chat_template.jinja",
198
+ "onnx/decoder_model_merged_quantized.*", "onnx/embed_tokens_quantized.*"
199
+ ]
200
+ )
201
 
202
  print(f"[System] Initializing shared Qwen 3.5 0.8B ONNX model from: {MODEL_PATH}...")
203
  shared_model = Qwen35ONNXModel(MODEL_PATH)
 
459
  f"<|assistant|>\n"
460
  )
461
 
 
462
  model, tokenizer = get_shared_onnx_genai()
463
  params = og.GeneratorParams(model)
464
  params.set_search_options(max_length=128, temperature=0.0)