Система, която понякога ще трябва да използва предварително обучен модел за машинно обучение. Този модел е около 10Gb на диск, а при зареждане използва около 10Gb RAM.

разширяване

Зареждането му от диск отнема нетривиално време, така че като цяло искам да не го правя твърде често. Със сигурност не всяка функция извиква срещу него.

В момента използвам модел на Lazy Loading- (ish), при който първото извикване на функция срещу него се зарежда, след което се съхранява в глобална променлива.

Това е хубаво, защото извършването на някои изпълнения на моята система никога няма да е необходимо. Така че зареждането му лениво спестява няколко минути при тези писти.

Обаче друг път системата ми работи като дълготраен процес (изложен чрез уеб API). В тези случаи не искам да използвам 10GB RAM през цялото време, може да са дни (или седмици) между хората, използващи методите на API, които разчитат на този модел, а след това може да се използва 1000 пъти за 1 час, а след това да не се използва дни.

В тази система има други програми (и други потребители), така че не искам да пренасочвам всички ресурси към тази програма, когато те не се използват.

Така че идеята ми е, че след определен период от време, ако нито едно извикване на API не е използвало модела, ще задействам някакъв код за разтоварване на модела (събиране на боклука в паметта), оставяйки го да се зарежда мързеливо отново при следващия път, когато е необходимо.

  • Това разумен план ли е?
  • Добре известен модел ли е?
  • Може би не е задължително и просто трябва да се доверя на операционната си система, за да го прехвърля на диск.

Това е свързано с Има ли име за двойник на модела на мързеливо зареждане? Този въпрос обаче изглежда неясен дали всъщност просто се пита за моделите на управление на паметта като цяло.