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 PC と生成 AI スマートフォンの出荷台数は 2024 年に 2 億 9,500 万台に達すると予測

ガートナーの最新予測によると、人工知能(AI)パーソナルコンピュータ(PC)と生成型人工知能(ジェネ...

焦点: 注目すべき 6 つのスマート セキュリティ トレンド

スマート セキュリティは、新しい AI 機能のおかげで、静的なセキュリティ ビデオ録画からリアルタイ...

神々の中年の戦いが始まった。どの国内大型モデルが華山の頂上を勝ち取ることができるのか?

2023年も半ばを過ぎた現在、ビッグモデルは爆発後のメタバースのように冷めることなく、ますます活発...

...

人工知能のコスト問題をどう解決するか?顔認識によって情報セキュリティはどのように確保されるのでしょうか?

[[422539]] 9月7日午後、第19回「海南省科学技術会議」に新たに追加されたホットトピック...

...

Facebook、ロボット開発プラットフォームDroidletをオープンソース化

最近、Facebook は、自然言語処理とコンピューター ビジョンを使用してロボットが周囲の世界を理...

ラスベガスの「チャイナナイト」:中国の人工知能が外国人に人生への疑問を抱かせ始める!

CES は世界最大かつ最も影響力のある消費者向け電子機器展示会です。米国時間1月8日、ラスベガスで...

Java プログラミング スキル - データ構造とアルゴリズムの「スタック」

[[387145]]基本的な紹介1. スタックはFILO(先入れ後出し)順序付きリストです2. ス...

7年間の変革:WOT2018がテクノロジーの背後にある真実を明らかにする

2018 年のインターネット業界が新たな変化の時期を迎えていることは否定できません。新たなアップグレ...

デジタルコンテンツ制作のためのDIY AI

背景今年、chatgpt に代表される大型モデルの驚異的なパフォーマンスは、AICG の分野に完全に...

データ変換ツールにおけるAIの未来

人工知能はデータ変換ツールに革命をもたらし、効率、精度、リアルタイム処理を向上させます。シームレスな...

AI時代に医療データの品質が重要な理由

効果的な医療データ分析においては、データの品質は主観的なものになります。データから得られる情報の正確...

幼少期から始める:AIを学ぶのに最適な時期は中学生

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

機械学習、人工知能、ディープラーニングの関係は何ですか?ついに誰かが明らかにした

「機械学習」、「人工知能」、「ディープラーニング」という 3 つの用語は混同されることが多いですが、...