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は急速に変化しています。コンピュータービジョンの未来はどこにあるのでしょうか?

ブログ    

推薦する

「人工知能+ヘルスケア」は有望な未来を秘めている

現在、医療分野における人工知能の応用には、医用画像診断、健康管理、医療研究が含まれます。最近、国立神...

...

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

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

スマートシティ開発:廃棄物管理と大気質監視

廃棄物管理と空気質監視におけるスマートシティの進歩を通じて、都市生活の未来を探ります。 「スマート ...

製造および産業環境監視アプリケーション向けの AI 搭載マシンビジョン

従来の産業および製造現場では、作業者の安全の監視、オペレーターの効率性の向上、品質検査の改善はすべて...

...

今後、セキュリティ分野で顔認識技術はどのように発展していくのでしょうか?

顔認識とは、顔の特徴情報の本人分析を利用して本人認証を行う生体認証技術を指します。人気の生体認証技術...

Baidu Apollo がインテリジェント時代のモバイル空間「Apollo II」を正式に開始

2021年8月5日、百度アポロの新世代自動運転ミニバス「アポロII」が広州市黄埔で正式に公開されまし...

...

ネットワーク管理における人工知能の役割

AI の主な利点の 1 つは、従業員を日常的な単純作業から解放することです。 AI は、ネットワーク...

...

複合 AI: エンタープライズ AI の成功の鍵

最近、Dynatrace は、AI への投資が増加し続けるにつれて、「複合 AI」が企業による AI...

...

...