目次
初期設定では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 インターフェイスをローカルに構築しました。
上記の手順が完了したら、プロジェクトをアプリ フォルダーに配置し、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 インスタンスのパフォーマンスが非常に優れていることがわかりました。