Автор: Питер Хамфри

В этом руководстве, части 1 из серии из двух частей, мы покажем вам, как создать модель машинного обучения, обучить ее и превратить в RestAPI с помощью Astra DB, бессерверной управляемой базы данных как a-Service, построенный на Apache Cassandra®.

В этом пошаговом видеоуроке, который преподает Джастин Митчел из Coding for Entrepreneurs и спонсирует DataStax, вы научитесь создавать модель машинного обучения, обучать ее и превращать в REST API. Независимо от того, являетесь ли вы новичком в области машинного обучения или хотите изучить лучшие практики, это фантастический практический проект по созданию пользовательской модели машинного обучения с нуля.

Это первая часть серии из двух частей, в которой рассказывается, как:

  • обучать и строить модель ИИ
  • интегрировать базу данных NoSQL (сохранение результатов вывода)
  • внедрить модель ИИ в производство

В части 1 вы создадите и обучите модель машинного обучения для обнаружения спама с нуля и превратите ее в готовый к работе REST API. Во второй части вы фактически развернете его в рабочей среде.

Благодаря глубокому обучению и искусственному интеллекту обработка спам-контента становится все проще и проще. Со временем (и с помощью прямой обратной связи с пользователями) наш классификатор спама будет редко давать ошибочные результаты.

В этой обучающей сборке используются следующие технологии:

  • Astra DB, управляемая DataStax база данных Apache Cassandra как услуга
  • Jupyter Notebook, интерактивная компьютерная веб-платформа.
  • Google Colaboratory, размещенная на Jupyter служба записных книжек для написания и выполнения произвольного кода Python.
  • Keras, высокоуровневый API глубокого обучения, разработанный Google для реализации нейронных сетей.
  • FastAPI,популярная веб-инфраструктура для разработки REST API в Python на основе pydantic
  • pydantic, библиотека для анализа и проверки данных.

Требования

Мы предполагаем, что у вас уже есть опыт работы с Python. Если нет, ознакомьтесь с серией статей Coding for Entrepreneurs 30 days of Python. Если у вас уже есть прочная основа в Python, вы можете сразу приступить к делу. Если нет, наш видеоурок покажет вам, как выполнить сборку шаг за шагом.

Весь наш код находится на GitHub: ИИ как API и Справочник по курсу AI как API, который со временем обновляется.

Мы будем использовать DataStax Astra DB для автоматического подключения к Cassandra, что дает нам до 80 гигабайт бесплатно. Начните с регистрации учетной записи здесь. Вы также можете просмотреть контрольный список того, что вам нужно скачать и установить в этом requirements.txt на GitHub.

Настройте проект на VSCode и подготовьте свои наборы данных

Первый шаг — настроить наш проект с помощью Python и Visual Studio Code. В этом руководстве мы использовали Python 3.9 и рекомендуем вам использовать как минимум 3.6 и выше. Загрузите Python и VSCode и сохраните проект в папке. Затем создайте и активируйте виртуальную среду. Если имя папки указано в скобках после кода, вы будете знать, что она активирована.

Когда все будет готово, вот обзор того, как настроить, подготовить и экспортировать наборы данных, чтобы подготовить обучающие данные для модели машинного обучения. Мы подробно расскажем вам об этих шагах в нашем видеоуроке.

  1. Подготовка наборов данных. Чтобы создать алгоритм ИИ, нам нужно начать с набора данных. Мы будем использовать набор данных из репозитория машинного обучения Калифорнийского университета в Ирвине (UCI). В UCI есть все виды наборов данных с открытым исходным кодом, которые мы можем использовать в наших проектах. Загрузите его, следуя руководству по этому процессу на ИИ как API GitHub.
  2. Загрузить и разархивировать наборы данных. Мы предпочитаем максимально автоматизировать процесс. Когда вы экспериментируете с созданием реальных моделей ИИ, вам нужен простой способ получить эти наборы данных из любого места без дополнительной настройки. Мы покажем вам, как это сделать на Jupyter Notebook и как создать базовый каталог с помощью Python здесь.
  3. Извлечение, просмотр и объединение набора данных.Используя Python pandas, введите код для просмотра и объединения наборов данных, а затем экспортируйте его с помощью этих пошаговых инструкций. После того, как вы экспортируете набор данных, вы увидите все данные о VS Code — около 7000 текстов из Набора данных для сбора SMS-спама UCI. Там могут быть дублированные тексты, но не беспокойтесь об этом, так как набор данных все еще мал. На данный момент нам просто нужно подготовить этот набор данных для целей обучения, превратив их в векторы.
  4. Преобразование набора данных в векторы. Большая часть машинного обучения основана на линейной алгебре, что означает, что мы работаем с умножением матриц и векторами. Проблема умножения матричных моделей заключается в том, что наши данные должны иметь одинаковую длину последовательности. Затем мы используем Keras для преобразования нашего набора данных в векторы, что мы объясняем в нашем учебнике.
  5. Разделите и экспортируйте векторизованный набор данных. Затем разделите и экспортируйте данные обучения, чтобы иметь варианты в ваших данных обучения. Итак, для этого шага представьте, что вы играете в игру с другом: этот друг побеждает вас в первых 10 играх, используя ту же стратегию. Если он никогда не изменит свою стратегию, вы, в конце концов, выучите его ходы и победите его. Машинное обучение — та же аналогия. Мы не можем слишком зацикливаться на одном способе быть правильным. Разделите данные как можно больше в первые дни создания этого алгоритма. Все коды и инструкции для этого вы найдете на GitHub и в нашем видеоуроке.

Обучение нашей модели машинного обучения

Теперь, когда мы подготовили наш набор данных, пришло время обучить наш ИИ-классификатор спама. Этот пост в блоге от Coding for Entrepreneurs будет содержать самую актуальную информацию о фактическом обучении самого классификатора. Мы рекомендуем вам запустить эту записную книжку в Google Colab, поскольку она предлагает бесплатные графические процессоры, и скопировать ее на свой диск, чтобы вы могли внести в нее изменения.

В Keras вы найдете обширную документацию, созданную другими великими специалистами по машинному обучению, которые тратят много времени на поиск лучших моделей для любой заданной проблемной области. Модель, которую мы используем, — это Long Short-Term Memory (LSTM), модель, которая является общей для текстовых данных, созданных Keras. LSTM — одна из лучших моделей межкатегориальной классификации, которая работает для двух или более меток, как наш классификатор спама, который имеет только две метки: спам или ветчина.

После того, как вы закончите с обучением модели, которое мы описали в нашем видео и в нашем посте, важно загрузить вашу модель, токенизатор и метаданные в хранилище объектов. Поскольку наша модель машинного обучения станет массовой, облачные сервисы лучше всего подходят для хранения почти неограниченного объема данных. Вы можете настроить два провайдера хранения объектов, Linode и Digital Ocean, и загрузить эти три файла в один или оба из них:

  • метаданные классификатора спама
  • токенизатор классификатора спама
  • модель спама H5 (не файл CSV или pickle)

Следующим шагом является реализация конвейера и скрипта в поставщике облачных хранилищ, который вы выбрали для многократной загрузки одних и тех же трех файлов. Убедитесь, что у вас установлены pypyr и boto3. Нажмите здесь для кода и следуйте видео для инструкций и примеров.

Настройка FastAPI

Теперь давайте обратимся к части API этого проекта. Вам нужно сделать три вещи:

  1. Создать базовый каталог для FastAPI.
  2. Загрузить его в модель Keras и токенизатор на FastAPI.
  3. Реализовать метод прогнозирования с помощью Keras и FastAPI.

Как только эти шаги будут выполнены, мы собираемся создать многоразовый класс модели ИИ. Этот процесс утомителен, потому что мы повторно реализуем то, что уже сделали, поэтому на самом деле делать этот рефакторинг или смотреть, как это делается, нет необходимости. Но рефакторинг может улучшить класс данных или модель. Если вы хотите как можно скорее сосредоточиться на развертывании модели ИИ в рабочей среде, пропустите эту часть.

После того, как вы настроите свое базовое приложение FastAPI и загрузите свою модель и прогнозы Keras, у вас будет готовый к машинному обучению REST API.

Настройка AstraDB и интеграция Cassandra

Этот REST API имеет три основные цели:

  1. предоставлять точные прогнозы о том, является ли строка текста спамом или нет
  2. улучшить условия для модели, чтобы делать более точные прогнозы
  3. открыто развернуть модель для производства для других приложений и пользователей по всему миру

Чтобы улучшить условия модели, вы будете хранить свои спам- или нестандартные запросы длиной до 280 символов, а также некоторые результаты прогнозирования в базе данных NoSQL Cassandra, управляемой DataStax через службу Astra DB.

После регистрации бесплатной учетной записи Astra DB вы сможете ежемесячно хранить до 80 гигабайт бесплатных данных и получать ключи API, необходимые для настройки переменных среды, с помощью этих пошаговых инструкций. .

Затем установите pydantic для FastAPI. По умолчанию включены все ваши конфигурации переменных среды и другие, которые могут понадобиться в вашем проекте, поэтому вам просто нужно создать базовые настройки для pydantic. Смотрите, как это сделать здесь.

Когда ваш проект будет готов к интеграции с базой данных Astra DB, перейдите в консоль Astra DB, создайте базу данных и загрузите драйвер Cassandra в виде защищенного пакета. Затем настройте свой кластер БД Astra и сеанс с помощью этих инструкций.

Затем давайте продолжим и создадим модель Cassandra для хранения ваших данных: первый — это фактический запрос, который использовался в наших данных логического вывода на рис. 4. Второй — сам вывод/прогноз. В этом случае есть только две метки, и вам просто нужно сохранить одну из них — метку для ветчины и доверительный коэффициент. Посмотрите видео здесь, чтобы создать модель Cassandra, и здесь, чтобы сохранить данные вывода в модели. Наконец, вы также захотите разбить модель Cassandra на страницы, чтобы увидеть все объекты данных, которые вы там перечислили.

К настоящему времени у вас будет замечательный способ извлечь большую часть данных, которые вы сохранили в своей базе данных Astra DB. Cassandra предлагает возможную согласованность, то есть весь наш кластер набора данных в конечном итоге будет содержать правильные данные, поскольку он хранит данные с использованием первичных ключей.

Что нам действительно нравится в Astra DB, так это то, что мы можем очень быстро добавлять любые поля и данные, которые нам нужны. Было бы интересно проверить свои пределы (если вам удобно) и посмотреть, как быстро Astra DB отреагирует, если вы введете миллион записей. Дайте нам знать в комментариях, если вы пробовали это!

Тестирование

Прежде чем вы приступите к работе, давайте протестируем ваш ИИ как API через ngrok. Это эмулирует производственную среду, открывая локальный проект всему миру, чтобы вы могли протестировать его в Google CoLab. Вам также нужно будет добавить схему с pydantic, чтобы получать правильные данные, поступающие из ваших данных публикации. Посмотрите видео, чтобы протестировать свой ИИ как API.

Заключение

Если вы читали эту статью и ознакомились с нашим видеоуроком, теперь вы знаете, как:

  • подготовить наборы данных для машинного обучения с помощью Python, Jupyter Notebook и Keras
  • тренироватьдолгую краткосрочную память (LSTM) модель машинного обучения, используя Keras
  • преобразуйте свою модель машинного обучения в готовый к работе REST API с помощью FastAPI
  • интегрируйте свой ИИ как API с Astra DB, управляйте базой данных Apache Cassandra и тестируйте ее с помощью ngrok

Но это еще не все. Во второй части этой серии вы развернете это приложение с нуля на виртуальной машине в рабочей среде, чтобы его мог использовать любой человек в мире. Это немного отличается от стандартного веб-приложения Python из-за характера нашей модели машинного обучения. Мы рассмотрим все, что вам нужно, чтобы ваша модель работала идеально, так что следите за обновлениями! А пока ознакомьтесь с нашей серией блогов Машинное обучение в реальном мире с Apache Cassandra и Apache Spark.

Подпишитесь на Технический блог DataStax, чтобы узнать больше историй разработчиков. Посетите наш канал YouTube для учебных пособий и здесь Разработчики DataStax в Твиттере, чтобы узнать последние новости о нашем сообществе разработчиков.

Ресурсы

  1. DataStax: открытый стек для современных приложений для работы с данными
  2. Astra DB: мультиоблачная база данных как услуга, построенная на Cassandra
  3. Ссылка для регистрации в Astra DB
  4. Apache Cassandra: база данных NoSQL с открытым исходным кодом
  5. ДатаСтакс Медиум
  6. Канал DataStax на YouTube
  7. Твиттер разработчиков DataStax
  8. Мастерские разработчиков DataStax Cassandra
  9. Академия DataStax: Курс Apache Cassandra
  10. Машинное обучение в реальном мире с Apache Cassandra и Apache Spark, часть 1
  11. Машинное обучение в реальном мире с Apache Cassandra и Apache Spark, часть 2
  12. Учебник YouTube: ИИ как API, часть 1
  13. Кодинг для предпринимателей
  14. Кодирование для предпринимателей YouTube канал
  15. Кодинг для предпринимателей GitHub
  16. ИИ как API GitHub
  17. ИИ как ссылка на курс API GitHub
  18. Серия 30 дней Python