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

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

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

  1. В Командном окне загрузите patients набор данных, и составляет таблицу от подмножества переменных в наборе данных. Каждая строка в patientTbl соответствует пациенту, и каждый столбец соответствует диагностической переменной.

    load patients
    patientTbl = table(Age,Diastolic,Gender,Height, ...
        SelfAssessedHealthStatus,Systolic,Weight,Smoker);

  2. Преобразуйте SelfAssessedHealthStatus переменная к порядковому категориальному предиктору.

    patientTbl.SelfAssessedHealthStatus = categorical(patientTbl.SelfAssessedHealthStatus, ...
        ["Poor","Fair","Good","Excellent"],"Ordinal",true);

  3. Из Командного окна откройте приложение Classification Learner. Заполните диалоговое окно New Session from Arguments с данными о предикторе в patientTbl и переменная отклика Smoker.

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

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

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

    Совет

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

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

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

  7. Выберите модель в панели Models с самой высокой точностью валидации.

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

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

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

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

    Во вкладке Compiler приложения Production Server Compiler раздел Exported Functions включает файлы modelInformation.m и predictFunction.m. Раздел Additional files required for your archive to run включает файлы processInputData.m и TrainedClassificationModel.mat.

  3. Обновите код в файлах processInputData.m и predictFunction.m включать шаги предварительной обработки, выполняемые, прежде чем вы импортировали данные в Classification Learner. Откройте processInputData.m файл от ClassificationLearnerDeployedModel_resources папка и изменение код, чтобы включать преобразование SelfAssessedHealthStatus переменная к порядковому категориальному предиктору.

    function processedData = processInputData(T)
        T.SelfAssessedHealthStatus = categorical(T.SelfAssessedHealthStatus, ...
            ["Poor","Fair","Good","Excellent"],"Ordinal",true);
        processedData = T;
    end

  4. В predictFunction.m файл, не комментируют следующие строки кода так, чтобы predictFunction вызовы функции processInputData функция.

    processedData = processInputData(T);
    T = processedData;

  5. Отредактируйте predictFunction.m код так, чтобы функция возвратила два выходных параметра, labels и scores, вместо одного выхода result. Обновите функциональную подпись в первой строке кода.

    function [labels,scores] = predictFunction(varargin)
    Затем обновите result = model.predictFcn(T); строка кода, чтобы включать эти два выходных аргумента.
    [labels,scores] = model.predictFcn(T);

    Также обновите прокомментированное описание predictFunction функция, чтобы включать описания новых выходных аргументов. labels содержит предсказанные метки, возвращенные обученной моделью и scores содержит предсказанные оценки, возвращенные обученной моделью.

  6. Закройте файлы predictFunction.m и processInputData.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/DeployedClassificationModel.

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

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

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

    load patients
    patientTbl = table(Age,Diastolic,Gender,Height, ...
        SelfAssessedHealthStatus,Systolic,Weight,Smoker);
    patientTbl.SelfAssessedHealthStatus = categorical(patientTbl.SelfAssessedHealthStatus, ...
        ["Poor","Fair","Good","Excellent"],"Ordinal",true);

  5. Подготовьте данные, чтобы отправить его в MATLAB Production Server.

    Необходимо преобразовать категориальные переменные и таблицы к массивам ячеек и структурам, соответственно, прежде, чем отправить их в MATLAB Production Server. Поскольку SelfAssessedHealthStatus категориальная переменная и patientTbl таблица, обработайте входные данные далее прежде, чем отправить ее.

    inputTbl = patientTbl;
    columnNames = patientTbl.Properties.VariableNames;
    for i=1:length(columnNames)
       if iscategorical(patientTbl.(columnNames{i}))
           inputTbl.(columnNames{i}) = cellstr(patientTbl.(columnNames{i}));
       end
    end
    inputData = table2struct(inputTbl);
    

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

    jsonData = mps.json.encoderequest({inputData},"Nargout",2);
    URL = "http://localhost:9910/DeployedClassificationModel/predictFunction";
    options = weboptions("MediaType","application/json","Timeout",30);
    response = webwrite(URL,jsonData,options);
    

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

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

    labels = response.lhs{1};
    scores = response.lhs{2};

  8. В исходном экземпляре 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 — Папка, содержащая DeployedClassificationModel.ctf файл

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

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

Похожие темы