LLM · embedding · VLMIl pianificatore non chiede direttamente
«Qwen» o «Claude»: chiede un ruolo come wise o
fast.micro. La configurazione dell'istanza decide quale fornitore,
modello ed endpoint devono svolgere quel ruolo. In questo modo si può cambiare
modello senza riscrivere il componente che lo usa.
La pagina Settings > Sistema > Modelli mostra sia
il collegamento configurato sia, quando il fornitore lo consente, il nome del
modello che il servizio dichiara di avere realmente in esecuzione. Per esempio,
un tier può essere configurato con provider=llamacpp e
model=Qwen….gguf; il riquadro Modello osservato
permette di confrontare quel valore con l'identità restituita dall'endpoint.
/admin/virt.La pagina si apre in modalità di consultazione. Il pulsante Rileggi configurazione rilegge i file e aggiorna la pagina; non salva modifiche, non riavvia i modelli e non forza una nuova interrogazione degli endpoint. Le modifiche sono separate tra LLM e VLM. L’embedding resta consultabile e non viene riscritto dalla UI.
Questa configurazione appartiene all'istanza Metnos eseguita da quell'account di sistema. Non è una preferenza personale dell'utente della conversazione.
Un componente dichiara il tipo di elaborazione di cui ha bisogno, non il
prodotto che deve fornirla. La risoluzione passa da tre interfacce pubbliche del pacchetto
runtime/virt:
| Famiglia | Ruoli | Interfaccia | Risultato |
|---|---|---|---|
| modello linguistico | fast.micro, fast.procedural, fast.fidelity, middle, wise, creative, frontier |
virt.get_llm(role, level=...) |
il fornitore linguistico associato al tier |
| embedding | text, image |
virt.get_embedder(role) |
un fornitore che produce vettori per la modalità richiesta |
| modello visivo-linguistico | default |
virt.get_vlm(role) |
la specifica effettiva del VLM, non un modello già caricato |
I nomi dei tier esprimono il tipo di lavoro richiesto, non garantiscono la
qualità del modello concreto. È l'amministratore a decidere quale fornitore e
quale modello associare a ciascun ruolo. Un file LLM parziale sostituisce solo
le sezioni che contiene: per fast, middle e
wise omessi restano validi i valori predefiniti. I tre livelli di
fast condividono normalmente la sua associazione, ma possono essere
personalizzati nelle sezioni [fast.level.micro],
[fast.level.procedural] e [fast.level.fidelity]. Se
creative manca, usa lo stesso fornitore e modello di
wise, mantenendo però i propri parametri di generazione.
frontier è facoltativo: un componente che lo richiede deve saper
gestire la sua eventuale indisponibilità.
from virt import get_embedder, get_llm, get_vlm
text_encoder = get_embedder("text")
planner = get_llm("wise")
translator = get_llm("fast", level="fidelity")
vision_spec = get_vlm("default")
La virtualizzazione separa quindi due decisioni: il componente sceglie il ruolo; la configurazione dell'istanza sceglie fornitore e modello. Cambiare l'associazione tra fornitori già supportati non richiede di modificare gli executor o il pianificatore. Aggiungere un tipo di fornitore che il runtime non conosce, invece, richiede una sua implementazione.
Per ciascuna famiglia la pagina presenta:
think, temperature e
reasoning_budget quando presenti;La pagina mostra i parametri di generazione effettivi, ottenuti unendo il file di configurazione ai valori predefiniti. La singola operazione sceglie un tier, ma non ne ridefinisce questi parametri. Può comunque imporre limiti propri, come la lunghezza massima della risposta, il tempo disponibile e lo schema che l'output deve rispettare.
Password, token, chiavi, credenziali e parti sensibili degli URL non vengono mostrati. Restano esclusi anche dai campi inviati dal modulo. I segreti già presenti nel documento vengono conservati durante il salvataggio, ma si gestiscono attraverso il flusso protetto delle credenziali o l'ambiente del servizio, non da questa pagina.
Configurato e osservato non sono sinonimi. Il primo valore è ciò che Metnos chiederà al fornitore; il secondo è ciò che quel fornitore dichiara attraverso la propria API. Se l'endpoint espone più identità, la pagina le mostra e segnala un risultato ambiguo. Se non risponde, non supporta il controllo o il dato è ormai vecchio, lo stato lo dice esplicitamente. L'osservazione aiuta a scoprire una configurazione incoerente, ma non cambia il routing e non costituisce una prova crittografica del modello caricato.
Il controllo degli endpoint avviene in un'attività di servizio separata, per impostazione predefinita una volta al minuto; dopo tre minuti un dato non aggiornato viene indicato come obsoleto. Aprire la pagina non inizializza fornitori, non carica modelli e non effettua chiamate di rete: costruisce una vista limitata e priva di segreti della configurazione e delle ultime osservazioni conservate in memoria.
Per LLM e VLM, premendo Modifica, Metnos rende modificabili soltanto i valori semplici che può rappresentare senza cambiarne il tipo. I campi sensibili e i valori non modificabili restano in sola lettura. Al salvataggio il runtime:
0600;Una configurazione non valida non sostituisce il file precedente. Dopo un salvataggio valido non servono una reinstallazione, una ricompilazione o il riavvio del server: le chiamate successive risolvono i nuovi valori. Un turno già in esecuzione conclude invece il proprio lavoro con le risorse che aveva già acquisito.
Il pulsante Ripristina opera su LLM o VLM e richiede conferma. Riscrive i valori iniziali forniti dalla versione di Metnos installata. Non sceglie automaticamente una vecchia configurazione personale e non ricostruisce le scelte compiute durante un'installazione precedente.
Prima del ripristino Metnos conserva una copia privata del file corrente, se
il file esiste. Le copie create da salvataggi e ripristini si trovano sotto
$METNOS_USER_STATE/virt-config-history/<famiglia>/; con i
percorsi predefiniti, la radice è
~/.local/state/metnos/virt-config-history/. La pagina non offre un
selettore delle versioni storiche: il recupero di una copia specifica è
un'operazione amministrativa distinta.
La pagina mostra sempre il percorso effettivo, che è più affidabile di un percorso ricordato a memoria. In assenza di sostituzioni, i documenti appartengono all'account di sistema che esegue Metnos.
| Famiglia | Ordine di risoluzione del file |
|---|---|
| LLM | METNOS_LLM_TIERS_CONFIG; poi
$METNOS_USER_CONFIG/llm_tiers.toml se esiste; infine il percorso
di compatibilità <install_root>/workspace/.config/llm_tiers.toml |
| embedding | METNOS_EMBEDDING_TIERS_CONFIG; altrimenti
$METNOS_USER_CONFIG/embedding_tiers.toml |
| VLM | METNOS_VLM_TIERS_CONFIG; altrimenti
$METNOS_USER_CONFIG/vlm_tiers.toml |
$METNOS_USER_CONFIG vale normalmente
~/.config/metnos. Se un file non esiste, il runtime usa i valori
iniziali della versione installata e la pagina lo dichiara. Se il documento
non è leggibile o non supera la validazione, la pagina segnala lo stato non
valido e distingue gli eventuali valori di ripiego da una configurazione
valida.
L'installer legge il file facoltativo
~/.config/metnos/services.toml dell'utente che lo avvia. Senza
file predispone i servizi localmente; con un file parziale riusa solo gli
indirizzi indicati e predispone localmente tutti gli altri componenti.
Il file non cerca server nella rete: nel container localhost
indica il container stesso.
Le sezioni disponibili sono llm, vlm,
searxng, photon e playwright; BGE-M3
resta locale. La verifica degli indirizzi precede download e avvio. Un
servizio indicato ma non disponibile ferma l'installazione, senza copie
locali né sostituzioni cloud. Il profilo mantiene frontier spento salvo
abilitazione esplicita. Un controllo del protocollo non sostituisce una
prova reale della chat o delle immagini.
Il percorso a sei fasi richiede accesso amministrativo e usa un account
Metnos separato. Prepara i componenti senza avviarli, verifica distribuzione
e catalogo iniziale e attiva le unità di sistema previste. Il profilo fa
parte della distribuzione firmata: i servizi esterni conservano la propria
gestione e non ricevono unità locali. Dopo la fase 2 il profilo resta
invariato durante la ripresa; per cambiarlo su un'istanza installata occorre
un aggiornamento amministrativo con finestra di riavvio. Le fasi completate
non sostituiscono i controlli di autorità. L'opzione --skip non
è supportata da questo percorso.
Il catalogo dei servizi comprende anche l'ingresso del coordinatore dell'installazione. Alla prima preparazione il proprietario del deposito crea le directory mancanti dopo averne verificato il percorso; i collegamenti simbolici non sono accettati come directory del deposito.
Gli aggiornamenti autenticano l'inventario dell'installazione originaria. Un nuovo componente che non ne ha mai fatto parte non richiede il ritiro di un file dalla copia di sviluppo. Restano obbligatori le prove dei ritiri esistenti, le protezioni dei servizi e i controlli sui processi in conflitto.
Il registro dei servizi e il Tutor osservano gli indirizzi verificati del profilo; per i servizi esterni non propongono comandi locali di avvio o arresto. Nel contenitore il controllo della memoria considera anche i limiti assegnati al contenitore stesso. Anche la compilazione iniziale del Tutor rispetta la quota CPU disponibile. La verifica HTTP finale richiede un sistema operativo, non la sola risposta della pagina di manutenzione.
Stato: raccordo alle sei fasi in collaudo, non ancora pubblicato. Esempi e procedura: manuale dei servizi esistenti.
| Famiglia | Confine operativo |
|---|---|
| LLM | Il router crea il fornitore dichiarato dal tier. Le associazioni supportate possono puntare a un endpoint locale o a un servizio remoto; credenziali e disponibilità del servizio restano requisiti separati. |
| embedding | I valori predefiniti usano fornitori locali nello stesso processo. Il cambio di
fornitore è una migrazione amministrativa dedicata, non un comando della pagina;
gli executor in sola lettura che dichiarano calcolo locale usano invece
get_local_embedder() e non acquisiscono autorità di rete per
effetto di quella scelta. |
| VLM | get_vlm() restituisce la configurazione. Il servizio viene
avviato solo quando serve: ensure_vlm_up() controlla /health, può
tentare una volta per processo lo script VLM configurato e restituisce
false se il servizio non diventa disponibile. Il chiamante decide
il ripiego. |
La virtualizzazione centralizza la scelta del backend; non trasforma un endpoint remoto in una risorsa locale e non concede da sola rete, credenziali o capacità aggiuntive a un executor.
I componenti di produzione scelgono normalmente un lavoro con un nome
canonico, per esempio intent.extract o
translation.i18n. Il registro centrale associa quel nome a un tier
e, nel caso di fast, a uno dei suoi tre livelli. Un nome sconosciuto
viene rifiutato. Il componente può fissare i limiti della singola operazione,
come max_tokens, un tempo massimo o una grammatica di output; non
sceglie fornitore, modello o endpoint.
| Tier | Uso corrente | Perché |
|---|---|---|
fast.micro | Riconoscimento dell'intento, decisioni brevi del Tutor, piccoli riepiloghi e riordino di risultati. | Risposte brevi e strutturate. |
fast.procedural | Estrattore NLU facoltativo, disattivato nell'installazione predefinita. | Estrazione JSON vincolata. |
fast.fidelity | Nessun lavoro del registro corrente. | Il ruolo resta disponibile e configurabile senza fingere che sia già usato. |
middle | Classificazione ed estrazione strutturata, fatture, Vaglio facoltativo, verifica dei telos, normalizzazione dei manifest e riordino di URL. | Trasformazioni procedurali con un risultato preciso. |
wise | Traduzione, risposte del Tutor, descrizioni estese, pianificazione, Synt e lavori durevoli sulle immagini. | Contesto ampio, fedeltà alle fonti e confronto fra alternative. |
creative | Proposte sui telos, commenti editoriali, ristrutturazione di manifest e descrizioni Synt. | Produce alternative da confrontare. |
frontier | Consultazione esterna richiesta esplicitamente. | Usa intenzionalmente il modello più capace configurato per questo ruolo. |
L'estrattore NLU è l'unico percorso corrente che sceglie direttamente
fast.procedural invece di passare dal registro dei lavori. È
disattivato per impostazione predefinita e può essere abilitato in modalità
di osservazione o come sostituto dell'analisi tradizionale. La pagina Modelli
mostra comunque tutti i ruoli configurabili, compresi quelli che al momento non
hanno un lavoro assegnato.
Un tier può puntare a un servizio locale o remoto e può essere modificato dall'amministratore. Cambiarlo cambia le chiamate successive di tutte le righe che lo usano: per questo è chi configura i tier a valutarne capacità, costo, riservatezza e disponibilità.
LRE usa requisiti espliciti dei contratti. La scelta del fornitore e il ciclo di vita del servizio appartengono alla virtualizzazione dei modelli. Un job non sceglie programmi da avviare, porte o file dei pesi. Il modello e la politica ammessi restano verificabili anche dopo l’avvio del servizio.
Il confine fra LRE e Virt espone risorse, identità del modello e disponibilità. L’adattatore locale visivo riutilizza l’avvio condiviso esistente; gli altri fornitori mantengono il proprio ciclo di vita. Non è ancora implementato l’aumento automatico del numero di repliche.
Più repliche richiedono un indirizzo logico stabile, distribuzione delle richieste e prenotazione delle risorse fra tutti i lavori. Sulla stessa CPU, replicare un modello è utile solo se aumenta la capacità misurata; RAM, memoria GPU condivisa e altri processi devono rientrare nella decisione. Un servizio disponibile non costituisce da solo una garanzia contro l’esaurimento della memoria.
Disponibilità del modello, consegna a LRE e conclusione del lavoro sono fatti distinti. Il dominio dichiara esplicitamente se il controllo ha richiesto azioni; LRE mostra Esente solo dopo una conclusione completa e senza modifiche confermata da tutte le fasi finali. Un lavoro bloccato ritrovato dalla manutenzione notturna produce un esito parziale. Vedi gli esiti delle attività.
runtime/virt/__init__.py — facciate e valori iniziali di
embedding e VLM;runtime/llm_router.py — tier LLM, associazioni, alias e
politica di inferenza;runtime/llm_workloads.py — registro dichiarativo che
associa ogni workload di produzione a un solo tier logico;runtime/virt/configuration.py — proiezione effettiva,
provenienza e oscuramento dei segreti;runtime/model_identity.py — osservazione limitata e
priva di segreti dei modelli dichiarati dai fornitori;runtime/virt/config_editor.py — modifica validata,
scrittura atomica, copie di recupero e ripristino.Per la mappa completa della chat web consulta la guida alla navigazione dell'interfaccia. Per capire come i componenti eseguibili consumano questi ruoli, prosegui con la guida agli executor o torna alla Guida all'architettura.