Heroku クラウドにディープラーニング Web アプリケーションをデプロイするためのヒントとコツ

Heroku クラウドにディープラーニング Web アプリケーションをデプロイするためのヒントとコツ

[51CTO.com クイック翻訳] Heroku Cloud は、Web 開発者や機械学習愛好家の間でよく知られています。このプラットフォームは、Web アプリケーションの導入と保守を簡単に行う方法を提供しますが、ディープラーニング アプリケーションの導入を初めて行う場合は、扱いにくいストレージや依存関係の問題に遭遇する可能性があります。この記事を読めば、デプロイメント プロセスがスムーズになり、優れた Web アプリケーションの作成に集中できるようになります。 DVC 統合、Git および CLI ベースのデプロイメント、エラー コード H10、Python パッケージの使用、ストレージの最適化について学習します。

1. GitとCLIに基づくデプロイメント

Streamlit アプリケーションは、Git、GitHub 統合、または Docker を使用してデプロイできます。 Git ベースのアプローチは、Heroku サーバーにデータ アプリケーションをデプロイするためのより高速で簡単な方法です。

シンプルなGitベースのアプローチ

Streamlit アプリケーションは、次のコマンドを使用してデプロイできます。

  1. git リモートでheroku を追加https://heroku:[email protected]/.git
  2.  
  3. git push -f heroku HEAD:master

これを行うには、次のものが必要です。

  • Heroku API キー
  • Heroku アプリ: CLI 経由または Web サイトにアクセスして。
  • Gitベースのプロジェクト
  • 設定ファイル

CLIベースの方法

CLI ベースのデプロイメントは基本的で、簡単に習得できます。

1. ここで無料の Heroku アカウントを作成します。

2. このリンクを使用して Heroku CLI をインストールします。

3. リモート リポジトリをクローンするか、git init を使用します。

4. heroku login と heroku create dagshub-pc-app を入力します。これにより、サーバーにログインし、Web サーバー上にアプリケーションが作成されます。

5. アプリケーションを実行するコマンドを含む Procfile を作成します: web: streamlit run --server.port $PORT streamlit_app.py

6. 最後に、コードをコミットしてHerokuサーバーにプッシュします。git push heroku master

2. ポート

streamlit run app.py を使用してアプリを実行すると、エラー コード H10 が生成されます。これは、Streamlit アプリがサーバーによって割り当てられた $PORT を使用していないことを意味します。

必要なもの:

  • Heroku CLI を使用してポートを設定します。
  1. heroku config: PORT=8080を設定します
  • Procfile に変更を加え、パラメータにサーバー ポートを追加します。
  1. ウェブ: streamlit run --server.port $PORT app.py  

3. Python パッケージの調整

Heroku クラウドには 500 MB の制限があり、新しい TensorFlow パッケージは 489.6 MB であるため、この部分のデバッグには 2 日かかりました。依存関係とストレージの問題を回避するには、requirements.txt ファイルに変更を加える必要があります。

1. tensorflow の代わりに tensorflow-cpu を追加すると、スラッグ サイズが 765 MB から 400 MB に削減されます。

2. 外部依存関係のインストールを回避するために、opencv-python の代わりに opencv-python-headless を追加します。これにより、すべての cv2 エラーが解決されます。

3. numpy、Pillow、streamlit 以外の不要なパッケージをすべて削除します。

4. DVC統合

DVC サーバーからデータを正常に抽出するには、いくつかの手順が必要です。

1. まず、Heroku API を使用して apt-files ビルドパックのインストールを有効にします。

  1. herokuビルドパック:追加  --index 1 heroku-community/apt  

2. Aptfile というファイル名を作成し、最新の DVC バージョンを追加します https://github.com/iterative/dvc/releases/download/2.8.3/dvc_2.8.3_amd64.deb

3. app.py ファイルに次のコード行を追加します。

  1. インポートOS
  2. 「DYNO」の場合  os.environおよびos.path.isdir( ".dvc" )の場合:
  3. os.system( "dvc config core.no_scm true" )
  4. os.system(f "dvc pull" ) != 0 の場合:
  5. exit( "dvc pull に失敗しました" )
  6. os.system( "rm -r .dvc .apt/usr/lib/dvc" )

その後、コードをコミットし、Heroku サーバーにプッシュします。展開が成功すると、アプリケーションは DVC サーバーからデータを自動的に取得します。

5. ストレージを最適化する

ストレージを最適化する方法は多数ありますが、最も一般的なのは Docker を使用することです。 Docker アプローチを使用すると、500 MB の制限を回避でき、サードパーティの統合やパッケージを自由にインストールすることもできます。 Docker の使用について詳しくは、このガイドをご覧ください。

ストレージを最適化するには:

  • requiremnets.txt に、モデル推論 Python ライブラリのみを追加します。
  • 次のコマンドを使用して、DVC から選択データを抽出できます。
  1. dvc プル {モデル} {sample_data1} {sample_data2}..
  • 必要なモデル推論ファイルは 1 つだけなので、残りのファイルを .gitignore と同様に機能する .slugignore に追加します。詳細については、Slug コンパイラを参照してください。
  • サーバーからデータを正常に取得したら、.dvc ディレクトリと .apt/usr/lib/dvc ディレクトリを削除します。

6. 結果

元のスラッグ サイズは 850 MB でしたが、ストレージとパッケージの最適化により、最終的なスラッグ サイズは 400 MB に削減されました。簡単なコマンドでエラー コード H10 を解決し、依存関係の問題を解決するために opencv-python-headless パッケージを追加しました。この記事の目的は、Heroku サーバーで初心者が直面する一般的な問題を解決することです。

Docker ベースのデプロイメントは多くのストレージの問題を解決できますが、複雑さとデプロイメント プロセスの遅延ももたらします。 heroku container:push web を使用することもできますが、その前にまず Docker をビルドしてテストし、ローカルですべての問題が解決された後にプッシュする必要があります。このアプローチは、上級の Heroku ユーザーに好まれています。

次の課題は、Webhook を使用して Web アプリケーションをデプロイすることです。これにより、あらゆるプラットフォームから機械学習エコシステム全体を自動化できるようになります。自動化プロセスでは、シェル コマンドを実行する単純な Flask Web サーバーを作成する必要があります。

元のタイトル: Heroku Cloud にディープラーニング Web アプリをデプロイするためのヒントとコツ、著者: Abid Ali Awan

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください]

<<:  アリババ副社長でDAMOアカデミーの自動運転部門責任者の王剛氏が辞任し、自身のビジネスを立ち上げる予定

>>:  AIは急速に変化しています。コンピュータービジョンの未来はどこにあるのでしょうか?

ブログ    

推薦する

...

2020年の人工知能業界に関する7つの予測

ついに2020年が到来しました。これは、火星探査、バイオニックロボット、自動運転、遺伝子編集、複合現...

AIはイベント業界の未来を形作ることができるでしょうか?

ライブイベントは優れたマーケティング形式であり、ビジネスと顧客との関係を強化する優れた方法です。調査...

10 分でチャットボットを作成するにはどうすればよいでしょうか?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

先日の清明節にはドローンが頻繁に登場しました!

近年、飛行制御、ナビゲーション、センシングなどの技術の急速な発展に伴い、ドローン業界はますます大きく...

人工知能開発の重要な要素と気候変動への影響

人工知能は世界的な流行語となり、ほぼすべての企業のデジタル変革計画に不可欠な要素となっています。 A...

...

ルーティングテーブルとルーター選択アルゴリズム

標準ルーティングテーブル1.次駅経路選定の基本的な考え方ルーティング テーブルは、宛先までの完全なパ...

...

虐殺後に行方不明になった親族をAIで探す! Googleのエンジニアが第二次世界大戦の70万枚以上の古い写真を識別できる顔認識プログラムを開発

AI顔認識の分野で新たなビジネスが開拓されているのでしょうか?今回の課題は、第二次世界大戦の古い写真...

IBC識別パスワードSM9アルゴリズムに基づくID認証ソリューション

最近、ネットユーザーによってオンラインフォーラムで有名なブラウザにセキュリティ上の脆弱性があることが...

拡散モデルはオートエンコーダです。ディープマインドの研究者は新しいアイデアを提案し、

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

将来の量子コンピューティング攻撃の脅威に対処するため、我が国は新たなデータ保護暗号アルゴリズムの研究を開始しました。

量子コンピューティングの継続的な進歩により、コンピュータ能力の大幅な向上がネットワーク セキュリティ...

...