mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-21 22:18:13 +02:00
Add per-model GPU and context profiles
This commit is contained in:
1 parent
cdbb5f03fa
commit
e24d397d31
12 files changed
+224
-215
No files matched your search
@@ -42,7 +42,7 @@ async def chat(req: ChatRequest) -> StreamingResponse:
|
||||
raise HTTPException(404, "session introuvable")
|
||||
|
||||
model = req.model or session.get("model") or settings.default_model
|
||||
cfg = agent_config.get_config()
|
||||
cfg = agent_config.get_config(model)
|
||||
|
||||
# Premier message : titre la session avec un extrait.
|
||||
if not db.list_messages(req.session_id):
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
"""Routes de configuration de l'agent (lecture / mise à jour / auto-réglage)."""
|
||||
"""Routes de lecture et mise à jour de la configuration de l'agent."""
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
|
||||
from .. import agent_config, autotune
|
||||
from ..config import settings
|
||||
from .. import agent_config
|
||||
|
||||
router = APIRouter(prefix="/api/config", tags=["config"])
|
||||
|
||||
@@ -17,48 +16,21 @@ class ConfigPatch(BaseModel):
|
||||
top_k: int | None = None
|
||||
max_tokens: int | None = None
|
||||
num_ctx: int | None = None
|
||||
num_gpu: int | None = None
|
||||
num_batch: int | None = None
|
||||
tools: dict[str, bool] | None = None
|
||||
confirm_shell: bool | None = None
|
||||
|
||||
|
||||
class AutoTuneRequest(BaseModel):
|
||||
model: str
|
||||
apply: bool = True
|
||||
|
||||
|
||||
@router.get("")
|
||||
async def get_config() -> dict:
|
||||
async def get_config(model: str | None = None) -> dict:
|
||||
return {
|
||||
"config": agent_config.get_config(),
|
||||
"config": agent_config.get_config(model),
|
||||
"available_tools": agent_config.AVAILABLE_TOOLS,
|
||||
}
|
||||
|
||||
|
||||
@router.put("")
|
||||
async def put_config(patch: ConfigPatch) -> dict:
|
||||
cfg = agent_config.save_config(patch.model_dump(exclude_none=True))
|
||||
async def put_config(patch: ConfigPatch, model: str | None = None) -> dict:
|
||||
cfg = agent_config.save_config(patch.model_dump(exclude_none=True), model)
|
||||
return {"config": cfg}
|
||||
|
||||
|
||||
@router.post("/auto")
|
||||
async def auto_tune(req: AutoTuneRequest) -> dict:
|
||||
"""Détecte le GPU + le modèle, calcule les réglages optimaux, et (par
|
||||
défaut) les applique. Renvoie le détail de la détection pour l'UI."""
|
||||
reco = await autotune.recommend(req.model)
|
||||
placement = await autotune.placement(req.model)
|
||||
|
||||
applied = None
|
||||
if req.apply:
|
||||
applied = agent_config.save_config(
|
||||
{
|
||||
"num_ctx": reco["recommended"]["num_ctx"],
|
||||
"max_tokens": reco["recommended"]["max_tokens"],
|
||||
}
|
||||
)
|
||||
|
||||
return {
|
||||
"detection": reco,
|
||||
"placement": placement,
|
||||
"config": applied or agent_config.get_config(),
|
||||
"vram_override": settings.gpu_vram_mb,
|
||||
}
|
||||
Reference in new issue
Block a user