GenAI — это платформа для простого создания приложений искусственного интеллекта. В этом руководстве вы узнаете, как развертывать приложения GenAI на Kubernetes, популярной платформе для оркестрации контейнеров.
Развертывание приложений AI/ML в Kubernetes обеспечивает надежное решение для управления сложными рабочими нагрузками AI/ML. Одним из основных преимуществ является масштабируемость. Kubernetes может автоматически масштабировать инфраструктуру, эффективно справляясь с различными рабочими нагрузками и обеспечивая эффективное распределение ресурсов в зависимости от спроса. Эта функция автоматического масштабирования имеет решающее значение для обработки больших вычислений, связанных с задачами AI/ML.
Кроме того, Kubernetes поддерживает мультиоблачные и гибридные облачные среды, обеспечивая гибкость и избегая привязки к поставщику. Он обеспечивает согласованную и унифицированную среду для разработки, тестирования и развертывания, улучшая сотрудничество между учеными, работающими с данными, и инженерами.
Kubernetes также обеспечивает высокую доступность и отказоустойчивость, автоматически заменяя или перепланируя вышедшие из строя контейнеры, обеспечивая надежность и надежность приложений AI/ML. Кроме того, он упрощает многие эксплуатационные аспекты, включая обновления и откаты, позволяя командам больше сосредоточиться на создании моделей AI/ML, а не на управлении инфраструктурой.
Надеюсь, у вас есть учетная запись GitHub.
Сначала мы клонируем уже доступный репозиторий openai-quickstart-node в наш локальный.
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=<Add Your OpenAI API Key>
Запустите приложение, используя команду ниже.
npm run dev
Вы должны увидеть приложение на Local 3000.
Докерфайл
touch Dockerfile
Добавьте в него следующие инструкции Dockerfile.
Докерфайл
# Use the official Node.js image as a parent image
FROM node:14-alpine as build
# Set the working directory in the Docker container
WORKDIR /app
# Copy the package.json and package-lock.json files into the container at /app
COPY package*.json ./
# Install the dependencies
RUN npm install
# Copy the local files into the container at /app
COPY . .
# Build the application
RUN npm run build
# Start from a smaller image to reduce image size
FROM node:14-alpine as run
# Set the working directory in the Docker container
WORKDIR /app
# Copy over dependencies
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/.next ./.next
COPY --from=build /app/public ./public
COPY --from=build /app/package*.json ./
# Expose port 3000 for the app to be accessible externally
EXPOSE 3000
# Command to run the application
CMD ["npm", "start"]
Давайте создадим, пометим и отправим это в наш DockerHub.
docker build -t <image name> .
Примечание: я называю свое изображение generativeai-node-app
Давайте запустим наш контейнер.
Образ построен! Пришло время запустить Docker-контейнер с назначенными портами с помощью следующей команды:
docker run -p 3002:3002 generativeai-node-app
Давайте создадим его снова, используя наши учетные данные DockerHub.
docker build -t <your dockerhub username>/<image name> .
Давайте отправим изображение в DockerHub.
docker push <your dockerhub username>/<image name>
Вы можете проверить, отправлено ли изображение, перейдя на DockerHub.
Для развертывания и предоставления доступа к приложению нам нужны два файла yaml.
deployment.yaml и service.yaml.
Один файл содержит инструкции по развертыванию, а другой — по предоставлению услуг.
Давайте сначала посмотрим наш deployment.yaml файл.
ЯМЛ
apiVersion: apps/v1
kind: Deployment
metadata:
name: genai-app
spec:
replicas: 2
selector:
matchLabels:
app: genai-app
template:
metadata:
labels:
app: genai-app
spec:
containers:
- name: genai-app
image: pavansa/generativeai-node-app:latest
ports:
- containerPort: 3000
Ниже находится наш service.yaml файл.
ЯМЛ
apiVersion: v1
kind: Service
metadata:
name: genai-app-service
spec:
selector:
app: genai-app
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: LoadBalancer
Мы используем 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 <add your application service name> --url
Вы должны увидеть результат ниже и сможете получить доступ к своему приложению.
Вы можете увидеть URL-ссылку, по которой можно перейти и получить доступ к нашему приложению.
Поздравляем! Мы поместили наше приложение в контейнер, развернули и представили его с помощью Kubernetes.
После успешного развертывания и предоставления доступа к вашему приложению AI/ML в Kubernetes вам может понадобиться надежная и масштабируемая база данных для обработки данных вашего приложения. SingleStore — это высокопроизводительная масштабируемая база данных SQL, которая хорошо подходит для приложений искусственного интеллекта и машинного обучения. В этом разделе мы проведем вас через процесс интеграции базы данных SingleStore в ваше приложение, развернутое в Kubernetes.
Вам понадобится бесплатная облачная учетная запись SingleStore.
Перейдите в редактор SQL, как показано на изображении ниже.
-- create a database
CREATE DATABASE <database name>;
Затем переключитесь на новую базу данных с помощью команды USE.
USE <database name>;
Затем создайте таблицу в новой базе данных с нужной схемой.
-- create a table
CREATE TABLE <table name> (
);
Вы можете вставить эти команды SQL в редактор SQL, выделить их и нажать кнопку «Выполнить».
Вы можете найти весь процесс создания базы данных, таблиц и подачи информации в таблицы в этом руководстве.
Если ваша база данных SingleStore работает за пределами кластера Kubernetes, обновите конфигурацию развертывания Kubernetes вашего приложения, чтобы разрешить подключения к базе данных SingleStore.
ЯМЛ
apiVersion: apps/v1
kind: Deployment
...
spec:
containers:
- name: genai-app
...
env:
- name: DB_HOST
value: "<Your SingleStore DB Host>"
- name: DB_PORT
value: "<Your SingleStore DB Port>"
...
Примените обновленную конфигурацию развертывания Kubernetes, чтобы повторно развернуть приложение с интеграцией SingleStore.
kubectl apply -f deployment.yaml
После повторного развертывания убедитесь, что ваше приложение успешно подключено к базе данных SingleStore и выполняет операции с базой данных должным образом.
Выполнив эти шаги, вы успешно интегрировали базу данных SingleStore в развернутое в Kubernetes приложение AI/ML, предоставив надежное и масштабируемое решение для управления данными вашего приложения.