Un sistema che a volte dovrà utilizzare un modello di apprendimento automatico preliminare. Quel modello è di circa 10 GB su disco, e quando caricato utilizza circa 10 GB di RAM.
Il caricamento da disco richiede una quantità di tempo non banale, quindi in generale vorrei non farlo troppo spesso. Certamente non tutte le funzioni chiamano contro di esso.
In questo momento, sto usando un modello Lazy Loading- (ish), dove la prima volta viene effettuata una chiamata di funzione contro di essa viene caricato quindi memorizzato in una variabile globale.
Questo è bello, perché fare alcune analisi del mio sistema non sarà mai necessario. Quindi caricarlo pigramente consente di risparmiare un paio di minuti su quelle piste.
Tuttavia, altre volte il mio sistema è in esecuzione come processo a esecuzione prolungata (esposto tramite un'API Web). In questi casi, non voglio usare fino a 10 GB di RAM tutto il tempo, potrebbero essere giorni (o settimane) tra le persone che utilizzano i metodi dell'API che si basano su quel modello, quindi potrebbero essere utilizzati 1000 volte nell'arco di 1 ora e quindi non essere utilizzati per giorni.
Ci sono altri programmi (e altri utenti) su questo sistema, quindi non voglio fare il hogging di tutte le risorse per questo programma, quando non vengono utilizzate.
Quindi la mia idea è che dopo un certo periodo di tempo, se nessuna chiamata API ha utilizzato il modello, il codice verrà attivato per lo scaricamento il modello (spazzatura che raccoglie la memoria), lasciandolo di nuovo pigro-caricato la prossima volta che è necessario.
- È un piano ragionevole?
- È uno schema noto?
- Forse non è necessario e dovrei semplicemente fidarmi del mio sistema operativo su SWAP che lo invia al disco.
Questo è legato a Esiste un nome per il controparte del modello di caricamento pigro? Tuttavia, questa domanda non è chiara se in realtà si stia solo chiedendo dei modelli di gestione della memoria in generale.