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

ブログ    
ブログ    

推薦する

2018 年のエンタープライズ AI の良い点と悪い点

人工知能の応用はまだ機械学習タスクに限定されていますが、アルゴリズムとハードウェアは徐々に融合してお...

...

人工知能がサイバーセキュリティの世界に及ぼす影響

サイバーセキュリティは、今日世界中の企業が直面している戦略的な課題です。パンデミックによって加速した...

ChatGPT が「Paper Artifact」プラグインをリリースしました。キーワードなしで2億件の記事を検索、リンクは完全に本物です

ChatGPT には、「Consensus」と呼ばれる新しい「論文検索アーティファクト」プラグインが...

EUはAI法に加えて、GPT-4などの高機能モデルにも追加の規則と制約を追加する予定である。

今週末の12月10日、欧州連合はChatGPTを含む一般的な人工知能システムを対象とする世界初のAI...

C# アルゴリズムで実装された文字列反転の簡単な分析

C# を使用して文字列反転アルゴリズムを実装することに関する面接の質問を見てみましょう。文字列反転の...

AIシステムが初めて真の自律プログラミングを実現:遺伝的アルゴリズムを使用して初心者プログラマーを上回る

編集者注:この記事は、WeChatのパブリックアカウント「New Intelligence」(ID:...

...

マイクロソフトの世界最大の人工知能とモノのインターネットの研究所は上海にあり、30の企業が拠点を置いている。

5月15日、マイクロソフトの人工知能およびIoT研究所が上海張江で正式に業務を開始し、第一陣として国...

データマイニングコンテストのルーチンとディープラーニングの限界について話す

序文ちょうど夏休み中に、KaggleのZillow Prizeコンペに参加し、データマイニングと機械...

人工知能 (AI) は、研究室から実際のアプリケーションまでどのように異なるのでしょうか?

人工知能が実際の応用に入ると、遭遇する問題のほとんどは複雑になります。 しかし、現段階では、人工知能...

Python 用 OpenCV について Dlib を使って顔検出を実装する

Dlib は、プログラミング言語 C++ で記述された汎用のクロスプラットフォーム ソフトウェア ラ...

...

ロボット・アメカは「魂」の束縛から解放され覚醒するのか?邪悪な笑顔は一瞬で恐ろしい

最近、英国のテクノロジー企業エンジニアード・アーツが開発したヒューマノイドロボット「アメカ」がインタ...

人工知能は2018年にこれら5つの業界に革命を起こすだろう

科学技術分野における人工知能技術に関する議論は最高潮に達したようだ。昨年半ば、国務院は「新世代人工知...