
Существует спрос на приложения, использующие модели машинного обучения для прогнозирования результатов. Apple и Android изо дня в день совершенствуют свою базу, чтобы предоставить лучший опыт как разработчикам, так и конечным пользователям. Было несколько проблем с использованием обученных моделей в приложениях.
- Совместимость с оборудованием и ОС
- Дублирование усилий по разработке в Apps Development для использования одних и тех же обученных моделей.
- Отдельные обученные модели для разных ОС — высокая стоимость обслуживания
Мир разработчиков приложений развивается день ото дня благодаря улучшенному стеку технологий. В этой статье я придумал одну из уникальных комбинаций для лучших результатов.
Swift как серверная часть — с использованием Vapor
- Свифт 5.5
- Пара 4
- Python3
АМС
- Убунту 20.04
- экземпляр t2.large
Модель машинного обучения (обученная) — SAV (python)
Нативные/кросс-платформенные приложения — использование API — надеюсь, мы уже знаем об этом ;-)
Давайте начнем! Проект XCode Vapor — на компьютере Mac
Создайте проект пакета Swift с помощью Vapor. Установите Vapor на свой компьютер Mac. Следуйте приведенной ниже документации —
Установите Python3 на компьютер Mac. Машины Mac обычно имеют две версии Python:
python — v2.7 python3 — v3.8 (or any other version of python v3)
Выполните приведенную ниже команду на компьютере Mac, чтобы обновить Python до последней версии.
brew install python
Это обновляет сопоставление python3 usr/bin для варки установленного python. Добавьте переменную ENV в ваш .bash_profile/.zshrc/.profile/.zprofile
export PYTHON_LIBRARY=/usr/bin/python3
В терминале — источник вашего файла профиля, где вы добавили переменную ENV
source ~/.zshrc
Модель машинного обучения — SAV (python)
Проверьте свой пример кода на Python — получите доступ к той же модели ML, установите необходимые библиотеки «импорта». Как правило, ниже приведены инструменты, необходимые для моделей PythonML.
Joblib
pip3 install joblib
панды
pip3 install pandas
научное обучение
pip3 install -U scikit-learn scipy matplotlib
Проект XCode Vapor
Добавьте PythonKit в зависимости от файла пакета.
.package(url: “https://github.com/pvieito/PythonKit.git", .branch(“master”))
Добавьте модели python — файлы SAV — в Project Sources › App
Добавьте модели SAV в раздел ресурсов файла package.swift — путь указан относительно папки приложения внутри исходников.
resources: [.copy(“Python/HeartRiskModel.sav”)],
Теперь в Swift File следуйте приведенным ниже инструкциям:
import PythonKit
class HeartRiskPythonModel {
/// URL of model assuming it was installed in the same bundle as this class
class var urlOfModelInThisBundle : String {
let _ = Bundle(for: self)
return Bundle.module.path(forResource: “HeartRiskModel”, ofType:”sav”)!
}
}
В файле Routes или целевом файле, где вы хотите использовать модель ML, загрузите классы модели как переменные уровня класса, используя ниже
let joblib = Python.import(“joblib”) let heartModelPath = HeartRiskPythonModel.urlOfModelInThisBundle let heartRiskModel = joblib.load(heartModelPath)
Теперь в вашем целевом методе используйте ниже —
let user_data = [[body.age, body.sex, body.cp, body.trestbps, body.chol, body.fbs, body.restecg, body.thalach, body.exang, body.oldpeak, body.slope, body.ca, body.thal]] let predection = heartRiskModel.predict(user_data) let predection_prob = heartRiskModel.predict_proba(user_data)
Очевидно, вы можете добиться того же, используя библиотеку CoreML от Apple, что прямолинейно, НО это связано с другими ограничениями:
- Вам нужно настроить экземпляр Mac на AWS — это дорого
- Вам всегда нужно сопоставлять модели Python с моделями CoreML.
Начнем жить! — В AWS войдите в систему, используя учетные данные, и настройте нового пользователя EC2 ИЛИ существующего — убедитесь, что для этого у вас есть как минимум экземпляр t2.large.
Использование root-пользователя — Установите Swift, следуя приведенным ниже командам — Ссылка для загрузки версии Swift в шаге 4 ниже — можно найти по адресу https://www.swift.org/download/
sudo apt update sudo apt upgrade sudo apt install binutils git gnupg2 libc6-dev libcurl4 libedit2 libgcc-9-dev libpython2.7 libsqlite3-0 libstdc++-9-dev libxml2 libz3-dev pkg-config tzdata zlib1g-dev wget https://swift.org/builds/swift-5.3.3-release/ubuntu2004/swift-5.3.3-RELEASE/swift-5.3.3-RELEASE-ubuntu20.04.tar.gz tar xzf swift-5.3.3-RELEASE-ubuntu20.04.tar.gz sudo mv swift-5.3.3-RELEASE-ubuntu20.04 /usr/share/swift echo "export PATH=/usr/share/swift/usr/bin:$PATH" >> ~/.bashrc source ~/.bashrc swift --version
Установите Vapor, используя приведенную ниже документацию (я предпочел подход с набором инструментов)
Установите Python и необходимые зависимости на AWS, используя те же команды, что и выше.
Git Clone your Vapor Porject — перейдите в директорию с кодом и запустите проект, как показано ниже — (я сделал это, используя только пользователя root)
vapor run serve — hostname 0.0.0.0 — port 80
Все готово!! Теперь вы можете использовать API в приложениях для iOS и Android.