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

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

ブログ    
ブログ    

推薦する

敵対的 AI とは何ですか?なぜそれが重要なのでしょうか?

[[250514]] [51CTO.com クイック翻訳] 人工知能 (AI) は、政府、企業、国...

何百万人もの人々が「焼けた赤ちゃん」の写真を見ました!バークレー教授が噂を否定:AI画像検出器は役に立たない

AI画像検出器が再び攻撃を受けました!最近、中東紛争の写真が大量にインターネット上に公開され、極限状...

...

...

...

5GとエッジAI: トラフィック管理問題の解決

通勤方法は時代とともに変化してきたかもしれませんが、交通管理の方法は変わっていません。 INRIX世...

DeepMindの創設者:生成AIは単なる過渡期であり、将来AIは無料になり、インタラクティブAIは人類を変えるだろう

DeepMindの共同創設者であり、Inflection AIの創設者でもあるムスタファ・スレイマン...

Google、一般的な皮膚疾患を識別するための新しいAIツールを発表

5月19日、海外メディアの報道によると、人工知能はヘルスケア分野で多くの用途があるため、Google...

...

5000億の大台を突破?多くの国で人工知能が急速に進歩している

近年、モノのインターネット、クラウドコンピューティング、人工知能などの新世代技術が急速に発展し、特に...

...

GPT-4V オープンソース代替品!清華大学と浙江大学は、LLaVAやCogAgentなどのオープンソースの視覚モデルの爆発的な普及を先導した。

現在、GPT-4 Vision は言語理解と視覚処理において並外れた能力を発揮しています。ただし、パ...

AIに人間の思考や行動を模倣させる方法

AI システムは、人間の知能の特定の側面を模倣し、物体の検出、環境のナビゲーション、チェスのプレイ、...

そうだ!機械学習を使用してビリビリの株価動向を予測する

[[418764]]この記事では、主にPythonを使用してビリビリの株価を分析する方法について説明...

深い思考: テイクアウトの背後にある人工知能アルゴリズムの秘密_IT テクノロジーウィークリー 647 号

知識の蓄積は規模の拡大をもたらし、規模の拡大は市場の集中につながります。 産業が「組立ライン」の形で...