Huawei Cloud Yaoyun Server L インスタンスの評価 | Docker 視覚化 Porttainer を使用して AI 認識用の Yolov5 プロジェクトを展開

目次

初期設定では Xshell 接続を使用します

プロジェクトの準備

ドッカー構成

Dockerfile

.dockerignore

サーバーで Docker プロジェクトを開始する


初期設定ではXshell 接続を使用します

私はサーバーの操作に xshell を使用することを好むため、Huawei Online の CloudShell またはその他の方法を使用している場合は、接続操作の最初のステップをスキップできます。

サーバーを選択する際には、Yunyao Cloud Server L インスタンスの Docker 可視化 Porttainer を選択しましたが、必要な Docker 環境は既にデプロイされているため、自分で手動でインストールする必要はありません。

まず、サーバーが正常に購入された後の最初のステップは、コンソールを見つけ、次に使用するサーバーをクリックし、サーバーのニックネームをクリックして、基本情報の詳細ページに入り、詳細ページで [リセット] をクリックすることです。右上隅のドロップダウン ボックスのパスワード。

ポップアップ ウィンドウに設定したいパスワードを入力します。この秘密は後で必要になるので覚えておいてください。

入力が完了したら、認証方法を選択し、認証コードを入力し、「確認」をクリックするとパスワード変更操作は完了です。

次に、Elastic Network Card をクリックし、以下の Elastic パブリック IP アドレスをコピーします。

または、コンソールに戻り、マウスをその上に置いたままにすると、プロンプト ボックスがポップアップ表示され、IP アドレスが表示されます。

xshellを開き、ホスト番号に上記のIPアドレスを入力し、「確認」をクリックすると認証画面が表示されるので、リセットパスワードに先ほど入力したパスワードを入力すると接続成功です。

プロジェクトの準備

この章のテーマは、YOLO の Ai プロジェクトを docker を使用してサーバーにデプロイすることであるため、前のプロジェクトのビルド方法については詳しく説明せず、docker の構成部分のみを説明します。

これまでのプロジェクトを簡単に振り返ってみましょう。

最初のブログでは、必要なシステム依存関係をインストールし、yolov5 ソース コードを取得し、.pt 重みファイルをトレーニングしました。

ブログリンク: https://blog.csdn.net/weixin_65243968/article/details/127189585

2 番目のブログでは、トレーニングされた重みファイルを使用して、認識 Web と API インターフェイスをローカルに構築しました。

ブログリンク: yolov5 モデルは Web にデプロイされ、認識により json 形式が返されます。 file_yolov5 は Web にデプロイされます。バナナを愛する Ahao のブログ - CSDN ブログ

上記の手順が完了したら、プロジェクトをアプリ フォルダーに配置し、docker-compose、dockerfile、および .dockerignore を作成します。

次に、これら 3 つのファイルをエンコードしましょう。

ドッカー構成

version: '1'
services:
  core-api:
    build:
      context: .
      dockerfile: ./Dockerfile
    command: python server.py --host 0.0.0.0
    restart: always
    volumes:
      - "./apps:/apps"
    ports:
      - 8005:8005
    environment:
      - TZ=Asia/Guangzhou
    deploy: 
      resources:
        limits:
          cpus: '4'
          memory: 20000M
    platform: "linux/amd64"

この docker-compose では

バージョンはバージョン番号を指します

services は作成するサービスのリストを定義します

core-api はサービスの名前で、必要に応じてカスタマイズできます。

build は、ビルド コンテキストと Dockerfile の場所を指定します。

command はコンテナの起動時に実行するコマンドを指定し、コンテナが任意のネットワーク インターフェイスからのリクエストを受信できるようにホスト アドレスを 0.0.0.0 に設定します。

再起動とは、コンテナが終了時に自動的に再起動することを意味します。

ボリューム: コンテナとホスト間のデータ ボリューム マッピング関係を定義します。

ポート: コンテナ内のサービスにホストのポート経由でアクセスできるように、コンテナ内のポート 8005 をホストのポート 8005 にマップします。

- TZ=Asia/Shanghai: タイムゾーンを上海 (アジア/上海) に設定します。

cpus: '4': コンテナーが使用できる CPU コアの最大数が 4 であることを指定します。

メモリ: 20000M: 指定されたコンテナが使用できる最大メモリは 2GB です。

platform: "linux/amd64": プラットフォーム イメージ タイプを Linux/AMD64 として指定します。これは、生成されたコンテナー イメージが x86_64 アーキテクチャの Linux オペレーティング システムに基づくことを意味します。

Dockerfile

FROM python:3.8.6-buster  AS build
WORKDIR /apps
COPY ./apps ./
RUN apt-get update && apt-get install -y \
    libgl1-mesa-glx
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir 

ファイル file では、まずベース イメージを python:3.8.6-buster として指定します。

作業ディレクトリを apps に設定し、COPY コマンドを使用してそこにプロジェクトをコピーします。

コンテナ内で apt-get コマンドを実行してパッケージリストを更新し、libgl1-mesa-glx パッケージをインストールします。

最後に、コンテナーで pip コマンドを実行して、requirements.txt ファイルで指定された依存関係パッケージをインストールし、清華大学の PyPI ミラー ソースを通じてダウンロードしてインストールし、キャッシュを無効にします。

.dockerignore

__pycache__/*

*/__pycache__/*

dockerignore ファイルは、Docker イメージにコピーする必要のないファイルまたはディレクトリを Docker に指示するために使用されます。

__pycache__/* は __pycache__ ディレクトリ内のすべてのファイルを表し、*/__pycache__/* はすべてのサブディレクトリ内の __pycache__ ファイルを表します

これらは Python インタープリターによって生成されたバイトコード ファイルに保存されるため、イメージにコピーする必要はありません。

サーバーで Docker プロジェクトを開始する

私が購入したサーバーは Yunyaoyun の Docker 可視化 Porttainer なので、既に内部に Docker 環境が存在しており、自分でデプロイする必要がなく、非常に便利です。

Xftp を開き、プロジェクトをそこにコピーします。

xshell でプロジェクトのフォルダーを入力し、docker-compse up を実行します。この時点では、イメージは既にダウンロードされています。バックグラウンドで実行する必要がある場合は、docker-compse up -d を使用してください

ビルドが完了したら、dockers ps -a を使用してイメージを表示できます。

次に、Huawei Cloudコンソールに戻り、セキュリティグループを見つけて、「ルールの構成」をクリックします。

IP 経由でアクセスできるように、プロジェクトによって構成されたポートを追加します。

テストし、パブリック IP を使用してプロジェクトにアクセスすると、正常にアクセスできます。

API インターフェースを再度テストして写真を送信してみましょう。認識結果は正常に返されます。

プロジェクトを 1 日実行した後、サーバーの監視を確認したところ、大規模な AI モデルなどの高性能アプリケーションをデプロイする場合でも、Yunyao Cloud Server の L インスタンスのパフォーマンスが非常に優れていることがわかりました。

おすすめ

転載: blog.csdn.net/weixin_65243968/article/details/132701334