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兆ドルの帝国を築くという野望を明かすが、投資家は躊躇する

ブログ    
ブログ    

推薦する

Facebook の応用機械学習チームを訪問: 研究と応用の間に橋を架けるにはどうすればよいでしょうか?

Facebook では、応用機械学習チームがソーシャル ネットワークの視覚、会話、理解を支援してお...

AI+サイエンス: PaddlePaddle をベースにした AlphaFold2 でタンパク質構造予測を実現

1958 年、FHC クリックは、生物学における重要なセントラルドグマである DNA -> R...

コンピュータービジョンを使用してフィッシング攻撃を検出するにはどうすればよいでしょうか?

好きでも嫌いでも、あるいは恐れていても、ChatGPT に代表される新興の人工知能 (AI) プラッ...

人間を倒すのは人間自身であり、人工知能は人間を倒すだろう

私たちが住む世界では、炭素をベースとするほぼすべての生物は、遺伝子をその特異性の根拠として利用してい...

AI教育の知能化、パーソナライゼーション、多様化は今後さらに発展するだろう

人工知能教育は主に、ユーザーの学習行動データを分析・処理することで、パーソナライズされた学習コンテン...

OpenAIがChatGPTをアップデート:画像と音声入力をサポート

最近、OpenAI は ChatGPT の新バージョンのリリースを発表し、音声入力と画像入力という ...

AI | 人工知能プロジェクトを成功させるための 8 つの重要な役割

企業が AI プロジェクトをさらに展開するにつれて、特定の役割がビジネスの成功に不可欠であることがわ...

無料ですか?寄生? ChatGPTに夢中です!

51CTOウェブサイトコンテンツ調査に参加するにはクリックしてくださいマット・アセイ編纂者:Qia...

DeeCamp 2019は産学連携を促進するためにKuaishouとInnovation Worksを正式に立ち上げました

4月8日、イノベーションワークスが主催する「DeeCamp2019 人工知能サマートレーニングキャン...

マイクロソフトは2022年にリモートワーカー向けに3Dワークスペースを提供する予定

Microsoft は、仮想会議用に Mesh for Teams と呼ばれる没入型 3D プラット...

C# バイナリ ツリー トラバーサル アルゴリズムの実装の簡単な分析

C# アルゴリズムは、バイナリ ツリーの定義、既知のバイナリ ツリーの構築方法、および C# でバイ...

エンコーダー・デコーダーアーキテクチャを放棄し、エッジ検出に拡散モデルを使用する方が効果的です。国立国防科学技術大学はDiffusionEdgeを提案しました。

既存のディープ エッジ検出ネットワークは通常、マルチレベルの特徴をより適切に抽出するためのアップサン...

...