Как предотвратить перегрузку ядра процессора большой моделью случайного леса sklearn?Python

Программы на Python
Anonymous
Как предотвратить перегрузку ядра процессора большой моделью случайного леса sklearn?

Сообщение Anonymous »

Я обучил модель случайного леса с помощью sklearn, используя RandomizedSearchCV.
Я сохранил модель как файл joblib и теперь использую ее для ежедневного составления прогнозов на сервере в контейнере Docker.
По сути, это следующий процесс:
watcher.py:

Код: Выделить всё

def watch():

def run_script():
scripts = ["forecaster.py"]
for script in scripts:
subprocess.run(['python', script], check=True)
time.sleep(63)

while True:
now = datetime.datetime.now(pytz.utc).astimezone(berlin_tz)
if now.hour == 23 and now.minute == 0:
logging.info(f"Running scripts at {now}.")
run_script()
time.sleep(3)

if __name__ == '__main__':
logging.info("Watcher gestartet")
watch()
forecaster.py:

Код: Выделить всё

data = get_data_from_API(...)
features = ["list", "of", "variables", "contained", "in", "data"]

rf = load(model_path.joblib)
rf_pred = rf.predict(data[features])

table = pd.DataFrame({
'UTC': data['UTC'],
'Forecast': rf_pred
})
table.to_csv('somepath.csv')
Однако недавно я обучил несколько более качественных моделей, которые имеют больший размер (>100 000 КБ, так что я думаю, что они не такие большие), и теперь мой скрипт продолжает убиваться. (), и я вижу на рабочем столе Docker, что загрузка ЦП достигает 100% (ядро сервера имеет меньшие возможности, чем мой ноутбук, на котором я обучал модель).
Я пробовал модели разного размера. Меньшие модели работают без проблем, но большие модели дают сбой.
На данный момент я придерживаюсь меньших моделей, которые менее точны, и это работает, но я ищу решение, которое работает для любой модели, которую я хотел бы использовать. .
Я подумал, что, вероятно, параллельная обработка могла бы быть решением, но я нахожу только учебные пособия, которые либо работают только с другими библиотеками, такими как PyTorch, либо посвящены распараллеливанию при обучении модели, а не при ее применении. .
Будем рады любым предложениям!

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-cpu-core

Вернуться в «Python»