Kubernetes にディープラーニング モデルをデプロイする方法

Kubernetes にディープラーニング モデルをデプロイする方法
  • Kubermatic Kubernetes プラットフォームを使用して、画像認識予測用のディープラーニング モデルをデプロイ、スケーリング、管理する方法を学びます。

企業が人工知能 (AI)、機械学習 (ML)、ディープラーニング (DL) の利用を増やすにつれて、機械学習開発をどのように拡張し、産業化するかという重要な疑問が生じます。これらの議論は、多くの場合、機械学習モデル自体に焦点を当てていますが、モデルは完全なソリューションの一部にすぎません。本番環境での導入と拡張を実現するには、モデル開発プロセスに、開発前と開発後の主要なアクティビティと公開可能なプロセスを説明する繰り返し可能なプロセスも含める必要があります。

この記事では、Kubermatic Kubernetes プラットフォームを使用して、画像認識予測用のディープラーニング モデルをデプロイ、スケーリング、管理する方法を説明します。

[[421057]]

Kubermatic Kubernetes プラットフォームは、柔軟性と自動化、機械学習/ディープラーニング ワークフローとの統合、完全なクラスター ライフサイクル管理を提供する、本番環境レベルのオープン ソース Kubernetes クラスター管理ツールです。

始める

この例では、画像認識用のディープラーニング モデルをデプロイします。これは、10 のカテゴリに属する​​ 60,000 枚の 32x32 カラー画像を含む CIFAR-10 データセットを使用し、高速コンピューティングに Apache MXNet の Gluon と NVIDIA GPU を使用します。 CIFAR-10 データセットで事前トレーニング済みのモデルを使用する場合は、入門ガイドを参照してください。

トレーニング セットのサンプルを使用して、モデルを 200 回トレーニングします。トレーニング エラーがゆっくりと減少し続ける限り、モデルは過剰適合されません。次の図はトレーニング プロセスを示しています。

ディープラーニングモデルのトレーニング損失グラフ

トレーニング後、モデル トレーニングから取得したパラメーターは、後で読み込むことができるように保存する必要があります。

  1. ファイル名 = "net.params"  
  2. net.save_parameters(ファイル名)

モデルのトレーニングが完了したら、それを Flask サーバーでラップできます。次のプログラムは、リクエスト内のパラメータとして画像を受け取り、モデルの予測結果をレスポンスで返す方法を示しています。

  1. gluoncv.model_zooからget_model をインポートします
  2. matplotlib.pyplot をpltとしてインポートします。
  3. mxnetからgluon、nd、image をインポート
  4. mxnet.gluon.data.visionから変換をインポートする
  5. gluoncvからutilsをインポート
  6. PIL インポート画像から
  7. インポートio
  8. 輸入フラスコ
  9. アプリ = flask.Flask(__name__)
  10. @app.route( "/predict" 、メソッド=[ "POST" ])
  11. def 予測():
  12. flask.request.method == "POST"の場合:
  13. flask.request.files.get( "img" )の場合:
  14. img = Image.open (io.BytesIO(flask.request.files[ "img" ]. read ()))
  15. transform_fn = transforms.Compose([
  16. 変換.サイズ変更(32)
  17. 変換.CenterCrop(32)、
  18. 変換.ToTensor()、
  19. 変換.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010])])
  20. img = transform_fn(nd.array(img))
  21. ネット = get_model( 'cifar_resnet20_v1' 、クラス=10)
  22. net.load_parameters( 'net.params' ) は、
  23. pred = ネット(img.expand_dims(axis=0))
  24. class_names = [ '飛行機' , '自動車' , '鳥' , '猫' , '鹿' ,
  25. [「犬」 「カエル」 「馬」 「船」 「トラック」 ]
  26. ind = nd.argmax(pred, axis=1).astype( 'int' )
  27. prediction = '入力画像は [%s] に分類され、確率は %.3f です。' %
  28. (クラス名[ind.asscalar()]、nd.softmax(pred)[0][ind].asscalar())
  29. リターン予測
  30. __name__ == '__main__'の場合:
  31. app.run(ホスト = '0.0.0.0' )

コンテナ化モデル

モデルを Kubernetes にデプロイする前に、Docker をインストールし、モデルを含むイメージを作成する必要があります。

Docker をダウンロード、インストールして起動します。

  1. sudo yum install -y yum-utils デバイスマッパー永続データ lvm2
  2. sudo yum-config-manager --add-repo <https://download.docker.com/linux/centos/docker-ce.repo>  
  3. sudo yum で docker-ce をインストールします
  4. sudo systemctl dockerを起動します

コードと依存関係を管理するフォルダーを作成します。

  1. mkdir kubermatic-dl
  2. kubermatic-dl の CD

コードの実行に必要なすべての依存関係を管理するには、 requirements.txt ファイルを作成します。

  1. フラスコ
  2. グルオン
  3. マットプロット
  4. MXネット
  5. リクエスト

Dockerfile を作成すると、Docker はこのファイルに基づいてイメージを作成します。

  1. Python:3.6から
  2. ワークディレクトリ /app
  3. requirements.txt /app をコピーする
  4. pip install -r ./requirements.txt を実行します。
  5. app.py /app をコピーする
  6. コマンド [ "python" "app.py" ]

この Dockerfile は 3 つの主要な部分に分けられます。まず、Docker は Python のベースイメージをダウンロードします。次に、Docker は Python のパッケージ管理ツール pip を使用して、requirements.txt に記録されているパッケージをインストールします。最後に、Docker は python app.py を実行してスクリプトを実行します。

Docker コンテナをビルドします。

  1. sudo docker build -t kubermatic-dl:latest を実行します。

このコマンドは、kubermatic-dl イメージを使用して、現在の作業ディレクトリにコード用のコンテナーを作成します。

使用

  1. sudo docker run -d -p 5000:5000 kubermatic-dl

このコマンドは、コンテナがホスト上で適切に実行できるかどうかを確認します。

使用

  1. sudo docker ps -a

ローカル コンテナの実行ステータスを表示するコマンド:

コンテナの実行ステータスを表示する

モデルをDocker Hubにアップロードする

モデルを Kubernetes にデプロイする前に、まずイメージを一般公開する必要があります。モデルを Docker Hub にアップロードすることで公開できます。 (Docker Hub アカウントをお持ちでない場合は、まずアカウントを作成する必要があります)

ターミナルで Docker Hub アカウントにログインします。

  1. sudo dockerログイン

イメージにタグを付けると、Docker Hub にアップロードされた後にモデルにバージョン情報が含まれるようになります。

  1. sudo docker tag <イメージID> <dockerハブ>/<アプリ>
  2. sudo docker push <Docker ハブ>/<アプリ>

画像にタグを付ける

使用

  1. sudo docker イメージ

イメージの ID を確認するコマンド。

モデルをKubernetesクラスターにデプロイする

まず、Kubermatic Kubernetes プラットフォームでプロジェクトを作成し、クイック スタート ガイドに従って Kubernetes クラスターを作成します。

Kubernetes クラスターを作成する

クラスターにアクセスするための kubeconfig をダウンロードし、ダウンロード ディレクトリに配置します。環境がそれを見つけられるように、適切な環境変数を設定することを忘れないでください。

Kubernetes クラスターの例

kubectl コマンドを使用して、クラスター情報を確認します。たとえば、クラスター内で kube-system が正常に起動されているかどうかを確認する必要がある場合は、kubectl cluster-info コマンドを使用できます。

クラスター情報を表示する

クラスターでコンテナを実行するには、デプロイメント構成ファイル (deployment.yaml) を作成し、apply コマンドを実行してクラスターに適用する必要があります。

  1. APIバージョン: アプリ/v1
  2. 種類: デプロイメント
  3. メタデータ:
  4. 名前: kubermatic-dl-deployment
  5. 仕様:
  6. セレクタ:
  7. 一致ラベル:
  8. アプリ: kubermatic-dl
  9. レプリカ: 3
  10. テンプレート:
  11. メタデータ:
  12. ラベル:
  13. アプリ: kubermatic-dl
  14. 仕様:
  15. コンテナ:
  16. -名前: kubermatic-dl
  17. 画像: kubermatic00/kubermatic-dl:latest
  18. imagePullPolicy: 常に
  19. ポート:
  20. - コンテナポート: 8080
  1. kubectl apply -f デプロイメント.yaml`

デプロイメントをパブリック インターネットに公開するには、コンテナーに対して外部からアクセス可能な IP アドレスを作成できるサービスが必要です。

  1. kubectl 公開デプロイメント kubermatic-dl-deployment --type=LoadBalancer --port 80 --target-port 5000`  

もうすぐ完了です。まずはデプロイしたサービスのステータスを確認し、IP 経由で画像認識 API をリクエストします。

  1. kubectl サービスを取得する

画像認識APIをリクエストするためのIPアドレスを取得する

最後に、外部 IP に基づいて次の 2 つの画像を使用して画像認識サービスをテストします。

[[421059]]

[[421060]]

APIのテスト

要約する

このチュートリアルでは、ディープラーニング モデルを作成し、Flask を使用して REST API として提供します。アプリケーションを Docker コンテナに配置する方法、このイメージを Docker Hub にアップロードする方法、Kubernetes を使用してサービスをデプロイする方法について説明します。いくつかの簡単なコマンドを実行するだけで、Kubermatic Kubernetes プラットフォームを使用してアプリケーションをデプロイし、他のユーザーがサービスを利用できるようにすることができます。

<<:  PyTorch のデータセット Torchvision と Torchtext

>>:  二度とアルゴリズムの罠に陥らないでください!背後にいる人物を見つけ出す

ブログ    

推薦する

市場規模は300億に迫る! 2021年の農業用ドローンの発展の見通し

植物保護ドローンは、現在の農業分野において間違いなく新たな人気機器です。高効率、利便性、精度、環境保...

なぜソートするのですか?ソートアルゴリズムのパフォーマンスを向上させる方法

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

マイクロソフトアジアリサーチは、知識蒸留を使用して小さなViTを改善するTinyMIMを提案

1. 研究の動機マスクモデリング (MIM、MAE) は、非常に効果的な自己教師ありトレーニング方法...

...

...

イノベーションに関する対話 - 51CTO 初の開発者コンテストが始まりました!

/* 世界を変えるために生きるここでは、あらゆる作品が市場に参入するための種となる可能性があります...

AIチップのスタートアップ企業が実装の道を探り、開発が成熟

ここ数年、AIチップの新興企業が雨後の筍のように出現した。現在、初期の参加者グループは、優れたチップ...

...

...

GPT-4 はチューリングテストに合格しませんでした。 60年前、古いAIはChatGPTに勝利しましたが、人間の勝率はわずか63%でした。

長い間、「チューリングテスト」は、コンピュータが「知性」を持っているかどうかを判断するための中心的な...

世界を変える 7 つの AI アプリケーション | Frontier Exploration

カリフォルニア大学サンディエゴ校で開発・実装されている AI 主導のテクノロジーとイノベーションの多...

エンタープライズ電気システムにおける機械学習の 5 つのメリット

機械学習技術は企業の電気システムの作業と保守において重要な役割を果たしており、人々は機械学習を採用す...

あなたの周りの偽のAI

他のインターネットの概念と同様に、AI は人気が出ると数え切れないほどの支持者を獲得しました。彼らは...

中国科学院研究員蔡少偉:SATソルバーEDA基本エンジン

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

...