ps1811 commited on
Commit
be506d7
·
1 Parent(s): 50888e4

llm.py updated

Browse files
Files changed (1) hide show
  1. app/models/llm.py +15 -4
app/models/llm.py CHANGED
@@ -2,18 +2,19 @@ from __future__ import annotations
2
 
3
  import os
4
  import threading
 
5
 
6
  from huggingface_hub import hf_hub_download
7
- from llama_cpp import Llama
8
 
9
  HF_REPO = os.getenv("LLAMA_HF_REPO", "openbmb/MiniCPM5-1B-GGUF")
10
  HF_FILENAME = os.getenv("LLAMA_HF_FILENAME", "MiniCPM5-1B-Q4_K_M.gguf")
11
 
12
- _model: Llama | None = None
13
  _init_lock = threading.Lock()
14
 
15
 
16
  def _preload_cuda_libs() -> None:
 
17
  try:
18
  import ctypes
19
 
@@ -22,16 +23,24 @@ def _preload_cuda_libs() -> None:
22
  except ImportError:
23
  return
24
 
 
25
  for module, lib_name in (
26
  (nvidia.cublas, "libcublas.so.12"),
27
  (nvidia.cuda_runtime, "libcudart.so.12"),
28
  ):
29
- lib_path = os.path.join(module.__path__[0], "lib", lib_name)
 
30
  if os.path.isfile(lib_path):
31
  ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
 
32
 
 
 
 
 
33
 
34
- def load_model() -> Llama:
 
35
  global _model
36
  print("🧠 [load_model] called", flush=True)
37
 
@@ -48,6 +57,8 @@ def load_model() -> Llama:
48
  print(f"✅ [load_model] model downloaded at {model_path}", flush=True)
49
 
50
  _preload_cuda_libs()
 
 
51
  gpu_layers = int(os.getenv("LLAMA_GPU_LAYERS", "-1"))
52
  n_ctx = int(os.getenv("LLAMA_N_CTX", "2048"))
53
  n_threads = int(os.getenv("LLAMA_N_THREADS", "4"))
 
2
 
3
  import os
4
  import threading
5
+ from typing import Any
6
 
7
  from huggingface_hub import hf_hub_download
 
8
 
9
  HF_REPO = os.getenv("LLAMA_HF_REPO", "openbmb/MiniCPM5-1B-GGUF")
10
  HF_FILENAME = os.getenv("LLAMA_HF_FILENAME", "MiniCPM5-1B-Q4_K_M.gguf")
11
 
12
+ _model: Any = None
13
  _init_lock = threading.Lock()
14
 
15
 
16
  def _preload_cuda_libs() -> None:
17
+ """Expose pip-installed CUDA runtime to llama.cpp on ZeroGPU (no system libcudart)."""
18
  try:
19
  import ctypes
20
 
 
23
  except ImportError:
24
  return
25
 
26
+ lib_dirs: list[str] = []
27
  for module, lib_name in (
28
  (nvidia.cublas, "libcublas.so.12"),
29
  (nvidia.cuda_runtime, "libcudart.so.12"),
30
  ):
31
+ lib_dir = os.path.join(module.__path__[0], "lib")
32
+ lib_path = os.path.join(lib_dir, lib_name)
33
  if os.path.isfile(lib_path):
34
  ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
35
+ lib_dirs.append(lib_dir)
36
 
37
+ if lib_dirs:
38
+ existing = os.environ.get("LD_LIBRARY_PATH", "")
39
+ merged = lib_dirs + ([existing] if existing else [])
40
+ os.environ["LD_LIBRARY_PATH"] = ":".join(merged)
41
 
42
+
43
+ def load_model() -> Any:
44
  global _model
45
  print("🧠 [load_model] called", flush=True)
46
 
 
57
  print(f"✅ [load_model] model downloaded at {model_path}", flush=True)
58
 
59
  _preload_cuda_libs()
60
+ from llama_cpp import Llama
61
+
62
  gpu_layers = int(os.getenv("LLAMA_GPU_LAYERS", "-1"))
63
  n_ctx = int(os.getenv("LLAMA_N_CTX", "2048"))
64
  n_threads = int(os.getenv("LLAMA_N_THREADS", "4"))