この記事は公開アカウント「Reading Core Technique」(ID: AI_Discovery)から転載したものです。 優れた機械学習モデルを開発するのは難しいですが、作業はそこで終わりません。展開されるまでは役に立たず、他の人が簡単にアクセスできるようになります。 モデルをデプロイする方法は多数ありますが、ここでは基本的な MVP に有効な非常にシンプルなソリューションについてお話ししたいと思います。Flask を使用してモデルの API を作成し、ソフトウェア サーバーに Gunicorn を使用し、Web サイト サーバーに Nginx を使用し、それを Docker でラップして他のマシン (特に AWS と GCP) へのデプロイを容易にします。
サーバーの設定 私は、個人または仕事用のハードウェアを使用するのではなく、この目的のために特別にレンタルしたサーバーを使用して新しい構成を実験することを好みます。そうすれば、何かがひどく損傷したとしても、問題にはなりません。 したがって、Linode の使用をお勧めします。私は個人的に実験に使用していますが、そのハードウェアは使い心地が良いです。 Ubuntu 18.04 LTS を使用している限り、他の必要なサービスも使用できます。 この部分はLinidesを使用する人に適しています。 Linodes に移動し、「Linode の追加」をクリックします。記入しなければならない事項がいくつかあります。ディストリビューションバージョンでは、Ubuntu 18.04 LTS イメージを選択することをお勧めします。
次に、「作成」をクリックします。数分ほど経つと、「ネットワーク」に移動し、SSH 経由でサーバーにアクセスするための情報を確認できます。 次のステップは、サーバーに接続し、sudo 権限を持つ非 root ユーザーを作成することです。この背後にあるロジックは非常に単純です。サーバー上ですべてを root として実行したくないのです。そうすると、物事を壊すのがはるかに簡単だからです。
最後に、新しいユーザーに切り替えます。
アプリケーションコンテナを作成する システム全体の構成は、アプリケーション コンテナー (Flask + Gunicorn) と Web コンテナー (Nginx Web サーバー) の 2 つの部分に分かれています。 (1)ステップ0 - DockerとDocker Composeをインストールする Docker と Docker-compose のインストールは非常に簡単で、それぞれ 4 行と 2 行で実行できます。 (2)ステップ1 - FlaskAppとWSGIエントリポイントを作成する ホームディレクトリに flask アプリディレクトリを作成し、次のファイルを配置します。
これは、ほとんど機能のない最も基本的な Flask アプリケーションです。モデルをロードせず、GET / POST リクエストやコンテンツ (以下に表示されます) を追加しません。現在、「helloworld」と書かれたホームページを持つアプリケーションがあります。 この部分は非常に簡単です。Gunicorn をポート 8000 で実行するための別のファイルを作成するだけです。 (3)ステップ2 - Flask用のDockerイメージを作成する ここで、これらのファイルを取得して後で実行できるイメージを作成する Dockerfile を作成する必要があります。
Docker に詳しくない人のために、このスクリプトが行うことを説明します。
次に、RUN コマンドを使用して必要なすべてのパッケージがインストールされ、最後にすべてのファイルが flaskdir からコンテナー内の usrscrflask アプリケーションにコピーされます。次に、このファイルを同じ flask_app ディレクトリに配置し、requirements.txt を追加します。
ディレクトリと内容について混乱した場合は、記事の最後にある完全なプロジェクト構造を確認するか、GitHub リポジトリにアクセスしてください。 (4)ステップ3 - Nginxファイルを作成する Nginx を実行するには、いくつかの設定が必要です。ただし、次の手順に進む前に、ホーム ディレクトリ内 (flask_app と同じレベル) に nginx ディレクトリを作成してください。その後、最初に必要なファイルは nginx.conf です。このファイルには、ほぼすべての基本的な Nginx 情報と変数が含まれています。 基本的な Nginx 設定を見てみましょう。
2 番目のファイル - アプリケーション固有の構成。これを行うには、2 つの一般的な方法があります。
注意すべき点がいくつかあります。まず、アプリケーションが実行されるポートを指定する listen80 を確認します。デフォルトのポートとして、80 を選択します。次に、サーバー名です。 Linode から取得した IP アドレスを指定することも、Docker イメージ名を使用することもできます。 最後に、proxy pass コマンドは、Nginx 構成を flask プロジェクトにポイントする必要があります。 Flask コンテナの名前は flask_app (後ほど紹介します) なので、コンテナの名前と Flask プロジェクトで指定したポートだけを使用すれば大丈夫です。 (5)ステップ4 — Nginx用のDockerイメージの作成 この特定の Docker イメージは非常にシンプルです。 Flask と同様に、わずか 5 行で構成され、次の 2 つのことだけを実行します。
nginx イメージをインポートし、ファイルをコピーして、デフォルトのファイルに置き換えます。 (6)ステップ5 — Dockerfilesとdocker-composeを組み合わせる 現在、2 つの Dockerfile があります。
今度は、それらを相互作用させてシステム全体を実行させます。これを実現するには、docker-compose が使用されます。ホームディレクトリに docker-compose.yml ファイルを作成するだけです。
これがどのように機能するかを理解するために、いくつかの重要な問題について考えてみましょう。
また、この Docker セットアップを簡単に実行できるようにするために、もう 1 つ追加する必要があるものがあります。それが run_docker.sh ファイルです。
セットアップは docker-compose up を実行するのと同じくらい簡単ですが、まずこの時点で古い docker プロセスがアクティブになっていないことを確認してください。 (7)ステップ6 - すべてをまとめる 現在のプロジェクト構造は次のようになります。
すべての準備が整ったことを確認したら、Docker を実行できます。
Linode から取得した IP に移動し、ブラウザでメイン ページを表示します。 (8)ステップ7 - 結果が得られない場合はどうすればいいですか? まず Linode でサーバーをレンタルし、docker と docker-compose をインストールし、git リポジトリをクローンして bash run_docker.sh を実行します。 正常に実行されることを確認したら、変更を開始します。何かが失敗するまで、Flask、Dockerfiles、または docker-compose を使用してみてください。その後、問題を特定し、解決に取り組みます。 (9)ステップ8 - 次は何ですか? 次に追加するのは、FlaskApp での POST リクエストのサポートです。この方法では、モデルにリクエストを送信し、応答を受け取ることができます。 必要なのは、リクエストを処理できるモデルと、POST リクエストが自立できることの 2 つです。
便宜上、この場合、モデルはカラー リストの i 番目の要素のみを返します。しかし、実際にはどのモデルを実行するかは重要ではなく、すべてのメソッド (server = Flask(__name__) がある場所) でモデルのインスタンスを作成するだけで、準備は完了です。 ここで、IP アドレスに移動すると、「モデルは起動して実行中です。POST リクエストを送信しています」というメッセージが表示されます。これは、IP に移動するだけで GET リクエストとして扱われるためです。 ただし、モデル インデックスを含む json ファイルを使用して POST リクエストを送信してみましょう。私は Postman を使用していますが、好みに応じて何でも使用できます (例: Curl)。 うまくいきました! これで、GET / POST リクエストを受信するための他のルートを追加できます。このアイデアの背後にある理由は、複数のモデルをロードすることで、URL に基づいて特定のモデルにリクエストを送信できるためです。 (10)ステップ9 - さらに進むには? 実は、もう 1 つ重要なステップがあります。この Docker セットアップを迅速に展開するには、クラウド スペースに展開することをお勧めします。このアプローチの主な利点は、AWS がクラスター管理インフラストラクチャを提供することです。 学びましたか? |
<<: 人工知能技術は将来のネットワークセキュリティの起爆点と原動力となるかもしれない
>>: 2020 年に最も注目される人工知能 (AI) アプリケーション トップ 10
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
人工知能(今ではよく知られている頭字語 AI で説明されます)がさまざまな業界をどのように変革してい...
AI は IIoT から生成される膨大な量のデータを管理できるため、その基盤となるアーキテクチャはセ...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
「アレックス・コントロヴィッチと私が率いる新しいリーン形式化プロジェクトが正式に発表されました。この...
ロボットの皮膚、空気圧触覚手袋... Meta は将来のメタバースに、よりリアルな触覚インタラクショ...
[[429763]]今日の世界はデータ主導であり、手動のプロセスだけではすべてのデータを監視または保...
近年、インドは深刻な駐車スペース不足という差し迫った問題に直面している。自動車の数が日々増加している...
たった今、テスラはまた別の技術専門家を失いました!テスラAIのシニアディレクターであり、自動運転ビジ...
今日は、pytorch についてお話します。今日は、9 つの最も重要な pytorch 操作をま...
近年の新興技術として、人工知能は人々の生活のあらゆる側面に静かに浸透し、比較的ホットな産業に発展しま...
一般的に、AIGC とは、人間が作成したコンテンツに非常によく似た画像、音楽、テキストなどのコンテン...