diff --git a/application/backend/src/main.py b/application/backend/src/main.py index 5d753c8dcf..35a3b0c675 100644 --- a/application/backend/src/main.py +++ b/application/backend/src/main.py @@ -1,6 +1,7 @@ # Copyright (C) 2025 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +import multiprocessing as mp import os import uvicorn @@ -63,6 +64,9 @@ if __name__ == "__main__": + if mp.get_start_method(allow_none=True) != "spawn": + mp.set_start_method("spawn", force=True) + settings = get_settings() uvicorn_port = int(os.environ.get("HTTP_SERVER_PORT", settings.port)) uvicorn.run("main:app", loop="uvloop", host=settings.host, port=uvicorn_port, log_config=None) diff --git a/application/backend/src/services/training_service.py b/application/backend/src/services/training_service.py index ec54009ed6..73798cf058 100644 --- a/application/backend/src/services/training_service.py +++ b/application/backend/src/services/training_service.py @@ -9,6 +9,7 @@ from anomalib.data.utils import ValSplitMode from anomalib.deploy import ExportType from anomalib.engine import Engine +from anomalib.engine.strategy.xpu_single import SingleXPUStrategy from anomalib.loggers import AnomalibTensorBoardLogger from anomalib.models import get_model from loguru import logger @@ -214,6 +215,7 @@ def _train_model( max_epochs=max_epochs, callbacks=[GetiInspectProgressCallback(synchronization_parameters)], accelerator=training_device, + **({"strategy": SingleXPUStrategy()} if training_device == "xpu" else {}), ) # Execute training and export