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

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

推薦する

マスク氏の元従業員が「宇宙工場」を建設し、スペースXのロケットで打ち上げられた新型コロナウイルス治療薬パクスロビドの製造を開始した。

人類が宇宙に建設した最初の工場がここにあります。しかも無人工場です!先週、この衛星はマスク氏のスペー...

人工知能はコロナウイルスの流行との戦いにどのように役立つのでしょうか?

新型コロナウイルス感染者数がほぼ指数関数的に増加し、世界は機能停止状態に陥っている。世界保健機関によ...

マイア:人間を模倣するが、人間を超えることはないチェスAI

[[378769]]海外メディアの報道によると、AIは長年にわたり、あらゆる古典的なボードゲームで...

オーストラリアの裁判所が判決:人工知能システムDABUSが特許発明者として認められる!

[[416531]]この記事はLeiphone.comから転載したものです。転載する場合は、Lei...

人工知能の長所と短所について知っておくべき10の事実

AIの進歩は、人工的に生み出された富がどのように課税され、分配されるかによって、すべての人々が贅沢な...

2020 年にチャットボットはどこに向かうのでしょうか?

チャットボットはかつて大々的に宣伝された期待に応えようとしており、Intercom が委託した新しい...

...

...

年次レビュー: 2017 年の「愚かな」 AI 製品 8 つ

2017年は「人工知能実装元年」と言われています。 AIは人々の生活の隅々にまで浸透しており、AIハ...

ジャック・マー:将来的には仕事の50%が人工知能に置き換えられるだろう。そしてこの2つの業界はすでに始まっている。

インターネットとオンラインショッピングの普及は、一部のオフライン業界に前例のない影響をもたらしました...

...

Jenkins 独自のユーザー データベース暗号化アルゴリズムの簡単な分析

Jenkins のアクセス制御は、セキュリティ ドメイン (認証) と承認戦略に分かれています。その...

...

1300億のパラメータを持つ中国初の大規模数学モデルMathGPTがリリースされました!複数のベンチマークがGPT-4を上回る

数学的 AI ビッグモデルはこの分野の将来を変える可能性があります。本日、中国初の兆スケール数学モデ...