Развертывание приложений GenAI на Kubernetes пошаговое руководство.

Пошаговое руководство по развертыванию приложений GenAI на Kubernetes

В современном быстром технологическом ландшафте высокая эффективность и эффективность внедрения приложений ИИ/МО являются важнейшими. Kubernetes, мощная платформа с открытым исходным кодом, стала ведущим решением для управления и масштабирования контейнерных приложений, обеспечивая их беспроблемную работу в различных средах.

В этом подробном руководстве мы расскажем вам о пошаговом процессе развертывания любого приложения ИИ/МО на Kubernetes. От контейнеризации вашего приложения до настройки кластера Kubernetes и развертывания ваших приложений ИИ/МО, это руководство охватывает все.

Поехали в этое увлекательное путешествие вместе!

Почему внедрять приложения GenAI на Kubernetes?

Внедрение приложений ИИ/МО на Kubernetes предоставляет надежное решение для управления сложными рабочими нагрузками ИИ/МО. Одним из основных преимуществ является масштабируемость. Kubernetes может автоматически масштабировать инфраструктуру, эффективно справляться с изменяющимися нагрузками и обеспечивать эффективное распределение ресурсов в зависимости от спроса. Эта функция автоматического масштабирования является важной для обработки больших вычислений, связанных с задачами ИИ/МО.

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

Kubernetes также обеспечивает высокую доступность и устойчивость к отказам, автоматически заменяя или перепланируя отказавшие контейнеры, обеспечивая надежность и надежность работоспособности приложений ИИ/МО. Кроме того, он упрощает многие операционные аспекты, включая обновления и откаты, позволяя командам сосредоточиться больше на создании моделей ИИ/МО, а не на управлении инфраструктурой.

Необходимые условия

  • Docker Desktop установлен для контейнеризации нашего приложения.
  • Minikube установлен. Мы будем использовать Minikube для создания одноузлового кластера.
  • Загрузите и установите Node.js, так как примером приложения является приложение на Node.js.
  • Зарегистрируйтесь для получения бесплатной учетной записи в облачной базе данных SingleStore для интеграции нашего приложения с базой данных.

Учебное пособие

Надеюсь, у вас есть учетная запись GitHub.

Сначала мы склонируем уже доступный репозиторий openai-quickstart-node repository на наш компьютер.

git clone https://github.com/pavanbelagatti/openai-quickstart-node.git

Далее перейдем в директорию проекта.

cd openai-quickstart-node

Установим требования и зависимости проекта.

npm install

Создайте файл .env и добавьте в него ваш ключ API OpenAI.

touch .env

В вашем файле .env добавьте ключ OpenAI как переменную среды, как показано ниже.

OPENAI_API_KEY=<Введите ваш ключ API OpenAI>

Запустите приложение с помощью следующей команды.

npm run dev

Вы должны увидеть приложение на localhost:3000.

Напишем Dockerfile для нашего приложения, чтобы его контейниризовать

Добавьте следующие инструкции Dockerfile в него.

Давайте соберем, пометим и отправим это в DockerHub.

docker build -t <имя образа> .

Примечание: Я назвал свой образ generativeai-node-app

Запустим наш контейнер.

Образ готов! Пришло время запустить контейнер Docker с присвоенными портами с помощью следующей команды:

docker run -p 3002:3002 generativeai-node-app

Соберем его еще раз с учетными данными нашего DockerHub.

docker build -t <ваше имя пользователя DockerHub>/<имя образа> .

Давайте разместим изображение на DockerHub.

docker push <ваше имя пользователя DockerHub>/<имя изображения>

Вы можете подтвердить, что изображение было сохранено, перейдя на свою страницу DockerHub.

Запуск и размещение нашего приложения в Kubernetes

Для запуска и размещения приложения нам понадобятся два файла YAML: deployment.yaml и service.yaml.

Один файл содержит инструкции для размещения, а другой – для размещения сервиса.

Посмотрим наш файл deployment.yaml сначала.

Ниже представлен файл service.yaml.

Мы используем Minikube для создания одноузлового кластера Kubernetes, и будем использовать его для размещения нашего приложения.

Запустите Minikube с помощью следующей команды.

minikube start

Вы должны увидеть следующий вывод.

Примечание: Поддерживайте запущенным Docker Desktop и включите в нем Kubernetes. Ниже приведено изображение только для вашего ориентира.

Примените наш файл размещения с помощью следующей команды.

kubectl apply -f deployment.yaml

Аналогично примените наш файл сервиса YAML.

kubectl apply -f service.yaml

Давайте сначала проверим статус наших подов с помощью следующей команды.

kubectl get pods

Вы должны увидеть желаемый результат, как показано ниже.

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

kubectl get deployment

Давайте проверим статус сервиса нашего приложения.

kubectl get service

Давайте посмотрим, сможем ли мы предоставить доступ к нашему приложению.

minikube service <добавьте имя вашего сервиса приложения> --url

Вы должны увидеть следующий результат и сможете получить доступ к вашему приложению.

Вы можете увидеть ссылку на URL, по которой можно получить доступ к нашему приложению.

Поздравляем! Мы создали контейнер для нашего приложения, разместили его и предоставили доступ с помощью Kubernetes.

Интеграция базы данных в наше приложение

После успешного развертывания и предоставления вашего приложения искусственного интеллекта/машинного обучения в Kubernetes вам может понадобиться надежная и масштабируемая база данных для работы с данными вашего приложения. SingleStore это высокопроизводительная, масштабируемая SQL база данных, которая хорошо подходит для приложений искусственного интеллекта/машинного обучения. В этом разделе мы расскажем вам о процессе интеграции базы данных SingleStore в ваше приложение, развернутое в Kubernetes.

Вам нужна бесплатная учетная запись в облаке SingleStore.

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

Перейдите в SQL редактор, как показано на приведенном ниже изображении.

Создание новой базы данных, используя следующее SQL выражение

-- Создание базы данныхCREATE DATABASE <имя базы данных>;

Далее переключитесь на новую базу данных с помощью команды USE.

USE <имя базы данных>;

Затем создайте таблицу в новой базе данных с желаемой схемой.

-- Создание таблицыCREATE TABLE <имя таблицы> ();

Вы можете вставить эти SQL-команды в редакторе SQL, выделить их и затем нажать кнопку “Run”.

Полный процесс создания базы данных, таблиц и заполнения информацией в таблицах можно найти в этом руководстве.

Обновление конфигурации разворачивания Kubernetes

Если ваша база данных SingleStore работает вне кластера Kubernetes, обновите конфигурацию развертывания вашего приложения Kubernetes, чтобы разрешить подключения к базе данных SingleStore.

Повторное развертывание вашего приложения

Примените обновленную конфигурацию развертывания Kubernetes, чтобы повторно развернуть ваше приложение с SingleStore.

kubectl apply -f deployment.yaml

Проверка интеграции

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

Следуя этим шагам, вы успешно интегрировали базу данных SingleStore в ваше приложение по искусственному интеллекту/машинному обучению, развернутое в Kubernetes, обеспечивая надежное и масштабируемое решение для управления данными вашего приложения.

Заключение

Поздравляю с успешным прохождением всех этапов развёртывания приложения по искусственному интеллекту/машинному обучению на Kubernetes! Руководство провело вас через каждую необходимую фазу, от создания контейнера для вашего приложения до развёртывания и экспонирования его в Kubernetes.

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