ihatebaselines commited on
Commit
a5cbcbd
·
verified ·
1 Parent(s): 90640c8

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +26 -20
app.py CHANGED
@@ -1,6 +1,7 @@
1
  from __future__ import annotations
2
 
3
  import os
 
4
  import time
5
  from typing import Any
6
 
@@ -37,6 +38,7 @@ app.add_middleware(
37
  _model: Any | None = None
38
  _tokenizer: Any | None = None
39
  _loaded_at: float | None = None
 
40
 
41
 
42
  def load_runtime() -> tuple[Any, Any]:
@@ -44,26 +46,30 @@ def load_runtime() -> tuple[Any, Any]:
44
  if _model is not None and _tokenizer is not None:
45
  return _model, _tokenizer
46
 
47
- from transformers import AutoModelForCausalLM, AutoTokenizer
48
-
49
- started = time.time()
50
- tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, token=HF_TOKEN)
51
- model = AutoModelForCausalLM.from_pretrained(
52
- MODEL_ID,
53
- token=HF_TOKEN,
54
- trust_remote_code=True,
55
- )
56
- if DEVICE.type == "cuda":
57
- model = model.to(device=DEVICE, dtype=torch.float16)
58
- else:
59
- model = model.to(DEVICE)
60
- model.eval()
61
- model.attach_tokenizer(tokenizer)
62
-
63
- _model = model
64
- _tokenizer = tokenizer
65
- _loaded_at = started
66
- return model, tokenizer
 
 
 
 
67
 
68
 
69
  def format_prompt(value: str) -> str:
 
1
  from __future__ import annotations
2
 
3
  import os
4
+ import threading
5
  import time
6
  from typing import Any
7
 
 
38
  _model: Any | None = None
39
  _tokenizer: Any | None = None
40
  _loaded_at: float | None = None
41
+ _load_lock = threading.Lock()
42
 
43
 
44
  def load_runtime() -> tuple[Any, Any]:
 
46
  if _model is not None and _tokenizer is not None:
47
  return _model, _tokenizer
48
 
49
+ with _load_lock:
50
+ if _model is not None and _tokenizer is not None:
51
+ return _model, _tokenizer
52
+
53
+ from transformers import AutoModelForCausalLM, AutoTokenizer
54
+
55
+ started = time.time()
56
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, token=HF_TOKEN)
57
+ model = AutoModelForCausalLM.from_pretrained(
58
+ MODEL_ID,
59
+ token=HF_TOKEN,
60
+ trust_remote_code=True,
61
+ )
62
+ if DEVICE.type == "cuda":
63
+ model = model.to(device=DEVICE, dtype=torch.float16)
64
+ else:
65
+ model = model.to(DEVICE)
66
+ model.eval()
67
+ model.attach_tokenizer(tokenizer)
68
+
69
+ _model = model
70
+ _tokenizer = tokenizer
71
+ _loaded_at = started
72
+ return model, tokenizer
73
 
74
 
75
  def format_prompt(value: str) -> str: