Deployment of deep learning models based on Serverless Devs
Serverless Devs に基づくディープラーニングモデルのデプロイ
設定
Function Compute の基本設定
Serverless Devs 開発ツールをダウンロードし、Alibaba Cloud のキー設定を完了した後に実施します。
`s init` コマンドを使用して、プロジェクトの基本設定を完了します。Alibaba Cloud を例に、HTTP トリガーを選択して Python 3 環境を指定し、最初のステップで取得したキーを入力します。
プロジェクトの設定ファイル s.yaml を修正し、プロジェクト名と説明の設定を完了します。
NAS と VPC の設定
ディープラーニングモデルのデプロイにおいて、最も対応が難しいのは大規模な機械学習依存ライブラリのインストールと、ディープラーニングモデルパラメータの保存です。一般的に、機械学習ライブラリのサイズは 1 GB に近く、ディープモデルは通常 100 MB 以上になります。Function Compute では、プラットフォームのコールドスタートを抑制するためにコードパッケージのサイズ制限が設けられており、Alibaba Cloud の Function Compute のコードパッケージは 100 MB 以内に収める必要があります。そのため、依存ライブラリの参照とモデルパラメータの読み込みを解決するために、クラウドストレージが必要です。この例では、NAS (ネットワーク アタッチト ストレージ) を使用して依存ライブラリとモデルを保存します。NAS とは、ネットワークに接続されたデータ保存機能を備えたストレージシステムです。マウント経由で NAS にアクセスできます。
Alibaba Cloud NAS サービスを有効化し、ファイルシステムを作成します。ビジネス要件に応じて異なる設定を選択できます。
取得した NAS アドレスを設定に記述し、VPC を自動設定にします。
設定上の注意事項
ディープラーニングモデルの初期化には時間がかかるため、初期化時間を 120 秒以上に設定することを推奨します。
ディープラーニングモデルはメモリ使用量が多いため、memorySize の最大値を 512 MB 以上に設定することを推奨します。
その他の設定については、S ツールの設定ドキュメントを参照してください。
コード構造
Serverless Devs ベースのプロジェクトは、大きく 3 つの部分に分けることができます。S フォルダには設定ファイルと、ビルドで生成された依存ライブラリやコードが格納されます。src フォルダにはソースコードとディープラーニングモデルのパラメータが格納されます。s.yaml ファイルには Function Compute の設定が記述されます。
src フォルダ内の index.py ファイルには通常、関数エントリポイントを記述します。ここではサンプルコードを提供しています。このプロジェクトでは、ユーザーがアップロードした画像を処理する必要があるため、画像の取得を容易にするために Flask フレームワークを使用しています。モデルパラメータの読み込みなど、毎回実行される処理は、モデル推論時間を短縮するため、初期化関数内に配置します。これにより、該当コードは 1 回のみ実行されます。
ローカルデバッグ
ローカルデバッグ環境はリモートの Function Compute 環境と異なることが多いため、互換性を確保するために、Docker を使用してリモートイメージをプルし、デバッグすることをお勧めします。
Docker をダウンロードします (ローカル環境に Docker がインストールされていない場合)。
`s build --use-docker` コマンドを使用して、依存関係をインストールします。
`s local invoke start` コマンドを使用して、ローカルデバッグを開始します。
簡単なテストを作成し、ローカルインターフェイスを呼び出してテストします。
依存関係とモデルパラメータのアップロード
依存関係とモデルパラメータを NAS にアップロードします。
依存関係のアップロード
モデルのアップロード
アップロードが成功したか確認します。
インストールされた依存関係を確認します。
アップロードが成功すると、コード内でパスを使用して対応するファイルにアクセスできます。
モデルのデプロイ
ローカルデバッグ時は、モデルパラメータと依存関係のパスがいずれもローカルパスになっています。これらを NAS のパスに変換し、ローカルのモデルパラメータとデバッグ用に生成された依存関係を削除する必要があります (削除しないと、コードパッケージが大きすぎてデプロイできません)。依存関係については、Python の参照パスを変更する必要があります。これは設定ファイルに反映されます。
次に、`s deploy` コマンドを実行して、コードをリモートにデプロイします。
前述のテストコードを使用して、リモートインターフェイスを呼び出してテストします。
設定
Function Compute の基本設定
Serverless Devs 開発ツールをダウンロードし、Alibaba Cloud のキー設定を完了した後に実施します。
`s init` コマンドを使用して、プロジェクトの基本設定を完了します。Alibaba Cloud を例に、HTTP トリガーを選択して Python 3 環境を指定し、最初のステップで取得したキーを入力します。
プロジェクトの設定ファイル s.yaml を修正し、プロジェクト名と説明の設定を完了します。
NAS と VPC の設定
ディープラーニングモデルのデプロイにおいて、最も対応が難しいのは大規模な機械学習依存ライブラリのインストールと、ディープラーニングモデルパラメータの保存です。一般的に、機械学習ライブラリのサイズは 1 GB に近く、ディープモデルは通常 100 MB 以上になります。Function Compute では、プラットフォームのコールドスタートを抑制するためにコードパッケージのサイズ制限が設けられており、Alibaba Cloud の Function Compute のコードパッケージは 100 MB 以内に収める必要があります。そのため、依存ライブラリの参照とモデルパラメータの読み込みを解決するために、クラウドストレージが必要です。この例では、NAS (ネットワーク アタッチト ストレージ) を使用して依存ライブラリとモデルを保存します。NAS とは、ネットワークに接続されたデータ保存機能を備えたストレージシステムです。マウント経由で NAS にアクセスできます。
Alibaba Cloud NAS サービスを有効化し、ファイルシステムを作成します。ビジネス要件に応じて異なる設定を選択できます。
取得した NAS アドレスを設定に記述し、VPC を自動設定にします。
設定上の注意事項
ディープラーニングモデルの初期化には時間がかかるため、初期化時間を 120 秒以上に設定することを推奨します。
ディープラーニングモデルはメモリ使用量が多いため、memorySize の最大値を 512 MB 以上に設定することを推奨します。
その他の設定については、S ツールの設定ドキュメントを参照してください。
コード構造
Serverless Devs ベースのプロジェクトは、大きく 3 つの部分に分けることができます。S フォルダには設定ファイルと、ビルドで生成された依存ライブラリやコードが格納されます。src フォルダにはソースコードとディープラーニングモデルのパラメータが格納されます。s.yaml ファイルには Function Compute の設定が記述されます。
src フォルダ内の index.py ファイルには通常、関数エントリポイントを記述します。ここではサンプルコードを提供しています。このプロジェクトでは、ユーザーがアップロードした画像を処理する必要があるため、画像の取得を容易にするために Flask フレームワークを使用しています。モデルパラメータの読み込みなど、毎回実行される処理は、モデル推論時間を短縮するため、初期化関数内に配置します。これにより、該当コードは 1 回のみ実行されます。
ローカルデバッグ
ローカルデバッグ環境はリモートの Function Compute 環境と異なることが多いため、互換性を確保するために、Docker を使用してリモートイメージをプルし、デバッグすることをお勧めします。
Docker をダウンロードします (ローカル環境に Docker がインストールされていない場合)。
`s build --use-docker` コマンドを使用して、依存関係をインストールします。
`s local invoke start` コマンドを使用して、ローカルデバッグを開始します。
簡単なテストを作成し、ローカルインターフェイスを呼び出してテストします。
依存関係とモデルパラメータのアップロード
依存関係とモデルパラメータを NAS にアップロードします。
依存関係のアップロード
モデルのアップロード
アップロードが成功したか確認します。
インストールされた依存関係を確認します。
アップロードが成功すると、コード内でパスを使用して対応するファイルにアクセスできます。
モデルのデプロイ
ローカルデバッグ時は、モデルパラメータと依存関係のパスがいずれもローカルパスになっています。これらを NAS のパスに変換し、ローカルのモデルパラメータとデバッグ用に生成された依存関係を削除する必要があります (削除しないと、コードパッケージが大きすぎてデプロイできません)。依存関係については、Python の参照パスを変更する必要があります。これは設定ファイルに反映されます。
次に、`s deploy` コマンドを実行して、コードをリモートにデプロイします。
前述のテストコードを使用して、リモートインターフェイスを呼び出してテストします。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
