x
This commit is contained in:
+41
-28
@@ -1,10 +1,9 @@
|
||||
from functools import lru_cache
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from app.model_catalog import load_catalog, resolve_model_profile, resolve_runtime_settings
|
||||
from app.model_catalog import load_app_config
|
||||
|
||||
|
||||
class Settings(BaseModel):
|
||||
@@ -35,35 +34,49 @@ class Settings(BaseModel):
|
||||
enable_auto_tool_choice: bool = False
|
||||
revision: Optional[str] = None
|
||||
api_key: Optional[str] = None
|
||||
quantization: Optional[str] = None
|
||||
model_impl: Optional[str] = None
|
||||
reasoning_parser: Optional[str] = None
|
||||
kv_cache_dtype: Optional[str] = None
|
||||
enable_prefix_caching: bool = False
|
||||
max_num_batched_tokens: int = 0
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def get_settings() -> Settings:
|
||||
catalog = load_catalog("config.json")
|
||||
runtime = resolve_runtime_settings(catalog)
|
||||
settings = Settings(
|
||||
config = load_app_config("config.json")
|
||||
return Settings(
|
||||
config_file="config.json",
|
||||
model_key=runtime["model_key"],
|
||||
host=runtime["host"],
|
||||
port=runtime["port"],
|
||||
openai_host=runtime["openai_host"],
|
||||
openai_port=runtime["openai_port"],
|
||||
vllm_openai_internal_url=runtime["vllm_openai_internal_url"],
|
||||
public_model_name=runtime["public_model_name"],
|
||||
default_enable_thinking=runtime["default_enable_thinking"],
|
||||
reasoning_enabled=runtime["reasoning_enabled"],
|
||||
model_root=runtime["model_root"],
|
||||
offline_mode=runtime["offline_mode"],
|
||||
api_key=runtime["api_key"],
|
||||
tensor_parallel_size=runtime["tensor_parallel_size"],
|
||||
dtype=runtime["dtype"],
|
||||
revision=runtime["revision"],
|
||||
model_key=config.get("model_key"),
|
||||
selected_model=config.get("selected_model"),
|
||||
model_name=config.get("model_name", ""),
|
||||
served_model_name=config.get("served_model_name"),
|
||||
host=config.get("host", "0.0.0.0"),
|
||||
port=config.get("port", 8000),
|
||||
openai_host=config.get("openai_host", "0.0.0.0"),
|
||||
openai_port=config.get("openai_port", 8001),
|
||||
vllm_openai_internal_url=config.get("vllm_openai_internal_url", "http://127.0.0.1:8001/v1"),
|
||||
public_model_name=config.get("public_model_name", "Qwen_local_model"),
|
||||
default_enable_thinking=config.get("default_enable_thinking", False),
|
||||
reasoning_enabled=config.get("reasoning_enabled", False),
|
||||
model_root=config.get("model_root", "/opt/model"),
|
||||
offline_mode=config.get("offline_mode", True),
|
||||
max_model_len=config.get("max_model_len", 8192),
|
||||
gpu_memory_utilization=config.get("gpu_memory_utilization", 0.92),
|
||||
tensor_parallel_size=config.get("tensor_parallel_size", 2),
|
||||
max_num_seqs=config.get("max_num_seqs", 64),
|
||||
max_tokens=config.get("max_tokens", 4096),
|
||||
dtype=config.get("dtype", "bfloat16"),
|
||||
enforce_eager=config.get("enforce_eager", False),
|
||||
trust_remote_code=config.get("trust_remote_code", False),
|
||||
tool_call_parser=config.get("tool_call_parser"),
|
||||
enable_auto_tool_choice=config.get("enable_auto_tool_choice", False),
|
||||
revision=config.get("revision"),
|
||||
api_key=config.get("api_key"),
|
||||
quantization=config.get("quantization"),
|
||||
model_impl=config.get("model_impl"),
|
||||
reasoning_parser=config.get("reasoning_parser"),
|
||||
kv_cache_dtype=config.get("kv_cache_dtype"),
|
||||
enable_prefix_caching=config.get("enable_prefix_caching", False),
|
||||
max_num_batched_tokens=config.get("max_num_batched_tokens", 0),
|
||||
)
|
||||
_, updates, env_vars = resolve_model_profile(
|
||||
content=catalog,
|
||||
requested_model=settings.model_key,
|
||||
requested_tp=settings.tensor_parallel_size,
|
||||
)
|
||||
for key, value in env_vars.items():
|
||||
os.environ[key] = value
|
||||
return settings.model_copy(update=updates | runtime)
|
||||
|
||||
Reference in New Issue
Block a user