Разверните модель, обученную в Regression Learner к MATLAB Production Server

В этом примере показано, как обучить модель в Regression Learner и экспортировать его для развертывания на MATLAB® Production Server™. Этот рабочий процесс требует MATLAB Compiler SDK™.

Выберите Trained Model to Deploy

  1. В Командном окне симулируйте 100 наблюдений из модели регрессии с четырьмя переменными предикторами. Создайте случайный матричный X, чьи строки соответствуют наблюдениям и чьи столбцы соответствуют переменным предикторам. Добавьте отсутствующие значения в матрицу путем случайной установки приблизительно 2% значений в каждом столбце как NaNs. Создайте переменную отклика y от переменных в X.

    rng("default")
    numRows = 100;
    numCols = 4;
    X = rand(numRows,numCols);
    
    randIdx = randi(numRows*numCols,floor(0.02*numRows)*numCols,1);
    X(randIdx) = NaN;
    
    y = 10*X(:,1) + 5*X(:,2) + 3*X(:,3) + 7*X(:,4) + 0.1*randn(numRows,1);

  2. Из Командного окна откройте приложение Regression Learner. Заполните диалоговое окно New Session from Arguments с матрицей предиктора X и переменная отклика y.

    regressionLearner(X,y)
    Опция валидации по умолчанию является 5-кратной перекрестной проверкой, чтобы защитить от сверхподбора кривой. В данном примере не изменяйте настройки валидации по умолчанию.

  3. Чтобы принять выборы в диалоговом окне New Session from Arguments и продолжиться, нажмите Start Session.

  4. Обучите все предварительно установленные модели. На вкладке Regression Learner, в разделе Model Type, кликают по стреле, чтобы открыть галерею. В группе Get Started нажмите All. В разделе Training нажмите Train. Приложение обучает все предварительно установленные модели и отображает модели в панели Models.

    Совет

    Если у вас есть Parallel Computing Toolbox™, можно обучить все модели (All) одновременно путем нажатия кнопки Use Parallel в разделе Training перед нажатием Train. После того, как вы нажимаете Train, диалоговое окно Opening Parallel Pool открывается и остается открытым, в то время как приложение открывает параллельный пул рабочих. В это время вы не можете взаимодействовать с программным обеспечением. После того, как пул открывается, приложение обучает все модели одновременно.

    Отображения приложения график отклика для первой модели. Синие точки являются истинными значениями, и желтые точки являются ожидаемыми значениями. Панель Models слева показывает валидации RMSE (среднеквадратическая ошибка) для каждой модели.

  5. Сортировка моделей на основе валидации RMSE. В панели Models откройте список Sort by и выберите RMSE (Validation). Приложение обрисовывает в общих чертах метрику для модели (или моделей) с самой низкой валидацией RMSE.

  6. Выберите модель в панели Models с самой низкой валидацией RMSE.

Модель экспорта для развертывания

  1. Экспортируйте выбранную модель для развертывания на MATLAB Production Server. На вкладке Regression Learner, в разделе Export, нажимают Export Model и выбирают Export Model for Deployment.

  2. В диалоговом окне Select Project File for Model Deployment выберите местоположение и имя для вашего файла проекта. В данном примере используйте название проекта по умолчанию RegressionLearnerDeployedModel.prj. Нажмите Save.

    Программное обеспечение открывает приложение Production Server Compiler и автоматически сгенерированный predictFunction.m файл.

  3. Во вкладке Compiler приложения Production Server Compiler раздел Exported Functions включает файлы modelInformation.m и predictFunction.m. Раздел Additional files required for your archive to run включает файлы processInputData.m и TrainedRegressionModel.mat. Для примера, где необходимо обновить код в некоторых из этих файлов, чтобы включать шаги предварительной обработки, смотрите, Развертывают Модель, Обученную в Classification Learner к MATLAB Production Server. В данном примере смотрите predictFunction.m код и близко файл.

(Необязательно) симулируйте развертывание модели

Прежде, чем группировать ваш код для развертывания на MATLAB Production Server, можно симулировать развертывание модели с помощью клиента MATLAB. Завершение этого процесса требует открытия другого экземпляра MATLAB. Для примера, который показывает, как использовать демонстрационный Java® клиент для отправки данных к функции MATLAB, развернутой на сервере, смотрите, Оценивают Развернутые Модели Машинного обучения Используя Клиент Java (MATLAB Production Server).

  1. В приложении Production Server Compiler нажмите кнопку Test Client в разделе Test по вкладке Compiler.

  2. На вкладке Test, в разделе Server Actions, нажимают кнопку Start. Отметьте адрес, перечисленный в панели Server Address, которая в этом примере является http://localhost:9910/DeployedRegressionModel.

  3. Откройте новый экземпляр MATLAB.

    В новом экземпляре MATLAB автоматически открывается приложение Production Server Compiler. Закройте этот экземпляр приложения.

  4. В Командном окне нового экземпляра MATLAB загрузите данные о предикторе, которые имеют тот же формат как обучающие данные, используемые в Regression Learner.

    rng("default")
    numRows = 100;
    numCols = 4;
    X = rand(numRows,numCols);
    
    randIdx = randi(numRows*numCols,floor(0.02*numRows)*numCols,1);
    X(randIdx) = NaN;

  5. Отправьте данные в MATLAB Production Server. Используйте адрес сервера, отображенный в приложении Production Server Compiler.

    Поскольку X числовая матрица, аргумент не требует последующей обработки прежде чем быть отправленным в MATLAB Production Server. Необходимо преобразовать категориальные переменные и таблицы к массивам ячеек и структурам, соответственно, прежде, чем отправить их в MATLAB Production Server. Для примера смотрите, Развертывают Модель, Обученную в Classification Learner к MATLAB Production Server.

    jsonData = mps.json.encoderequest({X},"Nargout",1, ...
        "OutputFormat","large");
    URL = "http://localhost:9910/DeployedRegressionModel/predictFunction";
    options = weboptions("MediaType","application/json","Timeout",30);
    response = webwrite(URL,jsonData,options);
    

    В исходном экземпляре MATLAB, в открытом приложении Production Server Compiler, панель MATLAB Execution Requests под вкладкой Test показывает успешный запрос между сервером и клиентом MATLAB.

  6. В Командном окне нового экземпляра MATLAB извлеките предсказанные ответы из response переменная. Преобразуйте предсказанные ответы на числовой вектор и проверяйте, что значения правильны.

    cellResults = response.lhs.mwdata;
    numericResults = arrayfun(@str2double,string(cellResults));
    Обратите внимание на то, что тип данных response.lhs.mwdata изменения в зависимости от присутствия NaN значения. Например, response.lhs.mwdata числовой вектор, когда предсказанные ответы не включают NaN значения.

  7. В исходном экземпляре MATLAB, в приложении Production Server Compiler, нажимают Stop в разделе Server Actions по вкладке Test. В разделе Close нажмите Close Test.

Код пакета

  1. Используйте приложение Production Server Compiler, чтобы группировать вашу функцию модели и предсказания. На вкладке Compiler, в разделе Package, нажимают кнопку Package.

  2. В диалоговом окне Package проверьте, что опция Open output folder when process completes выбрана.

    После концов процесса развертывания исследуйте сгенерированный выход.

    • for_redistribution — Папка, содержащая DeployedRegressionModel.ctf файл

    • for_testing — Папка, содержащая сырые данные, сгенерировала файлы, требуемые создать инсталлятор

    • PackagingLog.html — Файл журнала сгенерирован MATLAB Compiler SDK

Похожие темы