Kubernetes 上で生成 AI アプリケーションをデプロイするためのステップバイステップ ガイド

Kubernetes 上で生成 AI アプリケーションをデプロイするためのステップバイステップ ガイド

翻訳者 |李睿

レビュー | Chonglou

今日の急速に変化するテクノロジーと市場環境では、人工知能 (AI)/機械学習 (ML) アプリケーションを効率的に導入することが重要です。 Kubernetes は、コンテナ化されたアプリケーションを管理および拡張し、さまざまな環境でシームレスに実行できるようにする主要なソリューションとなった強力なオープンソース プラットフォームです。

このガイドでは、開発者向けに、Kubernetes 上に AI/ML アプリケーションをデプロイするプロセスを説明します。アプリケーションのコンテナ化から Kubernetes クラスターのセットアップ、AI/ML アプリケーションのデプロイまで、すべてが網羅されています。

Kubernetes に生成 AI アプリケーションをデプロイする理由は何ですか?

Kubernetes に AI/ML アプリケーションをデプロイすると、複雑な AI/ML ワークロードを管理するための強力なソリューションが提供されます。その主な利点の 1 つはスケーラビリティです。 Kubernetes はインフラストラクチャを自動的に拡張して、さまざまなワークロードに効率的に適応し、需要に基づいてリソースが効率的に割り当てられるようにします。この自動スケーリング機能は、AI/ML タスクに関連する大規模な計算を処理するために不可欠です。

さらに、Kubernetes はマルチクラウドおよびハイブリッド クラウド環境をサポートし、柔軟性を提供し、ベンダー ロックインを回避します。開発、テスト、展開のための一貫性のある統合された運用環境を提供し、データ サイエンティストとエンジニア間のコラボレーションを強化します。

Kubernetes は、高可用性とフォールト トレランスも保証し、障害が発生したコンテナを自動的に置き換えたり再スケジュールしたりして、AI/ML アプリケーションの信頼性と堅牢性を確保します。さらに、更新やロールバックなどの多くの操作が簡素化されるため、チームはインフラストラクチャの管理ではなく AI/ML モデルの構築に集中できるようになります。

前提条件

  • Docker Desktop はコンテナ化されたアプリケーションをインストールします。
  • Minikube をインストールしたら、Minikube を使用して単一ノード クラスターを作成します。
  • サンプル アプリケーションは Node.js アプリケーションなので、Node.js をダウンロードしてインストールします。
  • アプリケーションをデータベースと統合するには、無料の SingleStore Database Cloud アカウントにサインアップしてください。

チュートリアル

まず GitHub アカウントにサインアップします。

次にすでに利用可能な openai-quickstart-node リポジトリをローカルにクローンします。

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

プロジェクト ディレクトリに再度移動します。

 cd openai-quickstart-node

プロジェクトの要件と依存関係をインストールします。

 npm install

.env ファイルを作成し、OpenAI API キーを追加します。

 touch .env

.env ファイルに、次のように OpenAI キーを環境変数として追加します

 OPENAI_API_KEY=<Add Your OpenAI API Key>

次のコマンドを使用してアプリケーションを実行します。

 npm run dev

アプリはLocal 3000でご覧いただけます

アプリケーションをコンテナ化するためのDockerfileを作成します

Dockerfile touch Dockerfile

そこに次の 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 にアクセスすると、イメージがプッシュされたことを確認できます。

Kubernetes 上でアプリケーションをデプロイして公開する

アプリケーションをデプロイして公開するには、 deployment.yamlservice.yaml の2 つの yaml ファイルが必要です

1 つのファイルには展開手順が含まれ、もう 1 つのファイルにはサービス公開手順が含まれます。

まず deployment.yaml ファイルを確認します。

 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ファイルです

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

表示される出力は次のようになります。

: Kubernetes を有効にした状態でDocker Desktopを実行し続けてください以下の写真は参考用です。

以下のコマンドを使用してデプロイメント ファイルを適用します。

 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 を使用してコンテナ化、デプロイ、公開されました。

データベースとアプリケーションを統合する

Kubernetes 上で AI/ML アプリケーションを正常にデプロイして公開した後、アプリケーション データを処理するために堅牢でスケーラブルなデータベースが必要になる場合があります。 SingleStore は、AI/ML アプリケーションに最適な、高性能でスケーラブルな SQL データベースです。このセクションでは、SingleStore データベースを Kubernetes でデプロイされたアプリケーションに統合するプロセスについて説明します。

無料の SingleStore Cloud アカウントが必要です。

ワークスペースを作成し、アプリケーションに適したデータベースとテーブルを作成します。

以下に示すように、SQL エディターに移動します

新しいデータベースを作成するには、次の SQL ステートメントを使用します

 -- create a database CREATE DATABASE <database name>;

次に、USE コマンドを使用して新しいデータベースに切り替えます。

 USE <database name>;

次に、新しいデータベースに必要なスキーマを持つテーブルを作成します。

 -- create a table CREATE TABLE <table name> ( );

これらの SQL コマンドを SQL エディターに貼り付けて強調表示し、[実行] ボタンをクリックできます。

このチュートリアルでは、データベースとテーブルを作成し、テーブルに情報を提供するプロセス全体を説明します。

Kubernetes デプロイメント構成を更新する

SingleStore データベースが Kubernetes クラスターの外部で実行されている場合は、アプリケーションの Kubernetes デプロイメント構成を更新して、SingleStore データベースへの接続を許可できます。

 YAML 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 deploy .yaml

統合を確認する

再デプロイ後、アプリケーションが SingleStore データベースに正常に接続し、期待どおりにデータベース操作を実行することを確認する必要があります。

これらの手順に従うことで、SingleStore データベースをKubernetesでデプロイされた AI/ML アプリケーションに正常に統合し、アプリケーション データを管理するための堅牢でスケーラブルなソリューションを提供できます。

結論は

これで、Kubernetes に AI/ML アプリケーションをデプロイするための包括的な手順が正常に完了しましたこのガイドでは、アプリケーションのコンテナ化から Kubernetes へのアプリケーションのデプロイと公開までの各重要な段階を開発者に説明します。

AI/ML の導入を継続的に検討し、強化していく際には、SingleStore のような高性能データベースを統合して、アプリケーション データをシームレスに管理することを検討してください。 SingleStore は、スケーラビリティ、スピード、効率性を提供し、強力なデータベース バックエンド上で AI/ML アプリケーションが最適に実行されるようにします。

原題: Kubernetes への GenAI アプリケーションのデプロイ: ステップバイステップ ガイド、著者: Pavan Belagatti

<<:  Sora では 1 分間のビデオを生成するのに 1 時間以上かかります。これによりユーザー エクスペリエンスにどのような変化がもたらされるのでしょうか?

>>:  OpenAI はキャッシュフローがなくなる前に GPT-5 を作成できるでしょうか?アルトマン氏は7兆ドルの帝国を築くという野望を明かすが、投資家は躊躇する

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

機械学習と古典的なアルゴリズムの概念をわかりやすい言葉で説明しました。初心者必読

データ分野では、多くの人が機械学習について語っていますが、それが何であるかを明確に説明できる人はごく...

Google Brain の最新の操作は「レトロ」: 畳み込み注意は不要、画像分類は SOTA に近い

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

北京はインターネット診断と治療の監督を強化し、AIによる処方箋の自動生成を厳しく禁止する

8月21日、北京日報によると、北京市衛生健康委員会は最近、「北京市インターネット医療監督実施弁法(試...

知能の時代に、人工知能はこれらの歴史上の人物を復元し、AIの現実的な技術を完全に実証しました

Nathan Shipley は、サンフランシスコを拠点とするテクノロジー ディレクター、クリエイテ...

オペレーティング システムのプロセス スケジューリング アルゴリズムとは何ですか?

スケジューラは、次に実行するプロセスを選択する役割を担うオペレーティング システム カーネルの一部で...

GPT-4/Llama2のパフォーマンスを大幅に向上させるためにRLHFは必要ない、北京大学のチームはAlignerの新しいアライメントパラダイムを提案

背景大規模言語モデル (LLM) は強力な機能を発揮していますが、不快な応答、虚偽の情報、漏洩した個...

軽量で大規模な機械学習アルゴリズムライブラリ Fregata オープンソース: 高速、パラメータ調整不要

1. 大規模機械学習の課題インターネットとモバイルインターネットの普及により、利用可能なデータの量は...

AIと機械学習でデータセンターを強化

人工知能(AI)と機械学習は、インテリジェントデータセンターにおいてますます重要な役割を果たしていま...

Testin Cloud TestingがHuawei Hongmeng HarmonyOSイノベーションソリューションチーム賞を受賞

9月10日、ファーウェイHarmonyOSテクノロジーコミュニティの年間優秀共同構築パートナー選定結...

清華大学のFaceWall Intelligenceは、大規模なモデルを16,000以上の実際のAPIに接続し、オープンソースのToolLLMはChatGPTに近い

人工知能の分野では、大規模なモデルを使用してインテリジェントエージェントを制御することは避けられない...

自動化によってセキュリティアナリストがいなくなる可能性はありますか?

否定できない現実として、私たちは自動化の時代に入り、それに伴い人工知能 (AI)、機械学習 (ML)...

マスク氏は突然、xAI の「奇妙な」モデルを公開し、ユーモアのセンスを見せつけた。 ChatGPTのメジャーアップデートが事前にリークされる

11月3日、マスク氏は週末に突然エキサイティングなニュースをもたらしました。xAIの最初の製品が明日...

もしエイリアンが本当に存在するなら、AIは最終的に彼らを見つけるだろう

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...