mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-18 04:36:44 +02:00
Lot 14 : ligne de commande du moteur composée en Rust (LOKI_SERVE=rust)
loki-rs engine serve fait ce que faisait loki serve : lire la configuration (par l'API interne du Go), sonder le monde (aide du moteur, --version, --list-devices, GGUF, RAM, VRAM, cgroup, cpuset, variables LLAMA_ARG_*/GGML_*), composer la ligne de llama-server, vérifier le port, garder la commande pour l'interface, puis exec. Le superviseur le lance à la place de loki serve quand LOKI_SERVE=rust (expérimental ; le Go reste le défaut). serve/ porte backend_serve*.go fonction par fonction (couches GPU, --fit et sa marge, threads, files CUDA, second slot, mode tensor, cache de prompts, points de reprise, décodage spéculatif, fidélité, LOAD_GUARD, SLOT_PERSIST), toute la décision restant pure. Strata, l'essai de l'optimiseur et un lancement sans API interne passent toujours par loki serve (Go). La façade donne au Go l'adresse de son API interne (LOKI_GO_ADDR), héritée par le superviseur. Parité : parity_serve_test.go tire du Go 1 872 lancements (12 machines × 112 presets × 3 aides de moteur × 13 jeux de variables) et les sondes pures, rejoués argument par argument par tests/serve.rs ; deux essais de bout en bout lancent le vrai binaire contre un faux Go et un faux moteur. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
22 files changed
+66931
-5
No files matched your search
@@ -41,6 +41,10 @@ impl Paths {
|
||||
pub struct Opts {
|
||||
/// Binaire Go à lancer en `serve`.
|
||||
pub go_bin: PathBuf,
|
||||
/// Commande qui compose la ligne du moteur puis lui cède la place :
|
||||
/// `loki serve` (Go) par défaut, `loki-rs engine serve` quand
|
||||
/// `LOKI_SERVE=rust` (lot 14).
|
||||
pub serve: (PathBuf, Vec<String>),
|
||||
/// Délai avant de juger que le démarrage a tenu (2 s comme le Go).
|
||||
pub check_delay: Duration,
|
||||
/// SIGTERM → SIGKILL (4 s comme le Go).
|
||||
@@ -52,6 +56,7 @@ pub struct Opts {
|
||||
impl Opts {
|
||||
pub fn new(go_bin: PathBuf) -> Self {
|
||||
Opts {
|
||||
serve: (go_bin.clone(), vec!["serve".into()]),
|
||||
go_bin,
|
||||
check_delay: Duration::from_secs(2),
|
||||
grace: Duration::from_secs(4),
|
||||
@@ -124,8 +129,8 @@ mod imp {
|
||||
.open(paths.log())
|
||||
.map_err(|e| format!("ouverture du log {}: {e}", paths.log().display()))?;
|
||||
let log2 = log.try_clone().map_err(|e| e.to_string())?;
|
||||
let mut cmd = Command::new(&opts.go_bin);
|
||||
cmd.arg("serve")
|
||||
let mut cmd = Command::new(&opts.serve.0);
|
||||
cmd.args(&opts.serve.1)
|
||||
.stdin(Stdio::null())
|
||||
.stdout(log)
|
||||
.stderr(log2)
|
||||
|
||||
Reference in new issue
Block a user