Я сохранил модель как файл 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()
Код: Выделить всё
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')
Я пробовал модели разного размера. Меньшие модели работают без проблем, но большие модели дают сбой.
На данный момент я придерживаюсь меньших моделей, которые менее точны, и это работает, но я ищу решение, которое работает для любой модели, которую я хотел бы использовать. .
Я подумал, что, вероятно, параллельная обработка могла бы быть решением, но я нахожу только учебные пособия, которые либо работают только с другими библиотеками, такими как PyTorch, либо посвящены распараллеливанию при обучении модели, а не при ее применении. .
Будем рады любым предложениям!
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-cpu-core