Проблема загрузки модели PyTorch в приложение с виртуальной машины
У меня возникла проблема с загрузкой модели PyTorch в приложение, которое я разрабатываю на виртуальной машине. Я создал экземпляр модели, используя тот же путь к файлу, который корректно работает в автономном сценарии, но когда я пытаюсь загрузить его из приложения, я получаю ошибку сегментации.
Вот код из файла test.py
на виртуальной машине:
model = UC_Model(pModel_filepath="/mnt/confiance/common/UC_Data_Folder/UC_La_Organisacion_Anomaly_Detection/models/trained_perceiver/best_model_spectra")
print("model: ", model)
Модель загружается нормально:
model: <UCLaOrganisacionAnomalyDetection.UC_Model object at 0x7f687d869a00>
Но когда я делаю это из разрабатываемого приложения, возникает следующая проблема:
.create Model from '/mnt/confiance/common/UC_Data_Folder/UC_La_Organisacion_Anomaly_Detection/models/trained_perceiver/best_model_spectra'
./kaa.sh: line 48: 1870463 Segmentation fault (core dumped) python3 kaa.py $1
Así que estoy en la misma máquina virtual.
Вот код приложения, которое я создал для загрузки модели из файла :
#-------------------------------------------------------------------------------
## Launch the inference computation
# @param pDictParams : parameter dictionary
# @return parameter dictionary updated
def launchInference(pDictParams):
TUI.TUIprint("Action: Inference","Action")
# create the model instance
if has_method(pDictParams['pluginUCXAI'],'UCXAI_createModel'):
print("pDictParams['pluginUCXAI']: ", pDictParams['pluginUCXAI'])
aiModel=pDictParams['pluginUCXAI'].UCXAI_createModel(pDictParams)
В pDictParams['pluginUCXAI']
у нас есть экземпляр класса UCLaOrganisationAnomalyDetection_Xplique
:
import UCLaOrganisacionAnomalyDetection
##------------------------------------------------------------------------------
## Class for Use case vs Library
class UCLaOrganisacionAnomalyDetection_Xplique(kaasrc.plugin_collection.Plugin):
#---------------------------------------------------------------------------------
## Class constructor
# @param self : l'instance de la classe
def __init__(self):
super().__init__()
self.nom = "UCLaOrganisacionAnomalyDetection"
self.description = "Detect bad vibrations in time series"
self.modeles = ["PerceiverLogit"]
self.bibliotheque = "Xplique"
self.methodes = ["Hsic","Occlusion","KernelShap","Rise","Lime","Sobol"]
self.metriques = None
self.UC=UCLaOrganisacionAnomalyDetection
#---------------------------------------------------------------------------
## Create an instance of the model
# @param pDictParams : parameter dictionary
# @return the instance of the model
# @remark Call directly UC_createModel() of UC model
def UCXAI_createModel(self,pDictParams):
return self.UC.UC_createModel(pDictParams)
А UC.UC_createModel(pDictParams) - это:
#-------------------------------------------------------------------------------
## Create an instance of the model
# @param pDictParams : parameter dictionary
# @return the instance of the model
def UC_createModel(pDictParams):
# shortcuts
pModelBase=pDictParams['modelBase']
pModelpath=pDictParams['modelpath']
pModelfile=pDictParams['modelfile']
pCode=pDictParams['code']
# get model file
ficModel=os.path.join(pModelBase,pModelpath,pModelfile)
print(" .create Model from '%s'"%ficModel,flush=True)
# create model instance from 'model' parameter
aiModel=UC_Model(ficModel)
print(" ",aiModel.name,"-/-",pCode,flush=True)
И я думаю, что дамп ядра приходит с aiModel=UC_Model(ficModel)
.
Я думаю, что это должно быть проблемой видеокарты. Я всегда ставлю CUDA=0 в приложении