この記事は公開から3年以上経過しています。
過去のエントリで紹介しているML.NETのML.TimeSeriesを使った新型コロナ感染率予測プログラムをLinux(Debian 10)+.NET 5で動かしたところエラー(例外)が発生して動作しなかったため、その解決策についての備忘録。
2021.8.17追記:
openSUSE(LEAP15.3)などでIntel® MKL
パッケージが見つからない、若しくはシステムにIntel® MKL
パッケージをグローバルインストールしたくないという場合は、こちらのエントリ「LinuxでML.NETのTimeSeriesを使用するとMklImportsでエラーが発生する問題の解決策(その2)」をご覧ください。
問題
ML.NETのML.TimeSeriesを使うとModelのFit()
で以下のような例外が発生する。
Exception has occurred: CLR/System.DllNotFoundException
型 'System.DllNotFoundException' のハンドルされていない例外が Microsoft.ML.TimeSeries.dll で発生しました: 'Unable to load shared library 'MklImports' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libMklImports: cannot open shared object file: No such file or directory'
場所 Microsoft.ML.Transforms.TimeSeries.EigenUtils.Dsytrd(Layout matrixLayout, Uplo uplo, Int32 n, Double[] a, Int32 lda, Double[] d, Double[] e, Double[] tau)
場所 Microsoft.ML.Transforms.TimeSeries.EigenUtils.MklSymmetricEigenDecomposition(Single[] input, Int32 size, Single[]& eigenValues, Single[]& eigenVectors)
場所 Microsoft.ML.Transforms.TimeSeries.TrajectoryMatrix.ComputeSvd(Single[]& singularValues, Single[]& leftSingularvectors)
場所 Microsoft.ML.Transforms.TimeSeries.AdaptiveSingularSpectrumSequenceModelerInternal.TrainCore(Single[] dataArray, Int32 originalSeriesLength)
場所 Microsoft.ML.Transforms.TimeSeries.AdaptiveSingularSpectrumSequenceModelerInternal.Train(RoleMappedData data)
場所 Microsoft.ML.Transforms.TimeSeries.SsaForecastingTransformer..ctor(IHostEnvironment env, Options options, IDataView input)
場所 Microsoft.ML.Transforms.TimeSeries.SsaForecastingEstimator.Fit(IDataView input)
場所 Covid19InJapan.Program.Main(String[] args) (/media/yoshiboo/SSDPUTA512/.NETCore/Covid19InJapan/Covid19InJapan/Program.cs):行 102
原因
システムにIntel® MKL
パッケージがインストールされていないことで、ネイティブライブラリのロードに失敗している。
対応
以下のコマンドでシステムにIntel® MKL
パッケージをインストールする。
Debian 10
sudo apt install intel-mkl
以上です。