関数計算に基づくAI推論の実現

シーン紹介

アリババクラウドファンクションコンピューティングに基づいて、TensorFlowサーバーレスAI推論プラットフォームを構築します。

背景知識

Function Computeは、イベント駆動型のフルマネージドコンピューティングサービスです。機能コンピューティングを使用すると、サーバーなどのインフラストラクチャを購入して管理する必要はなく、コードを記述してアップロードするだけです。関数コンピューティングは、コンピューティングリソースを準備し、タスクを柔軟かつ確実に実行し、ログクエリ、パフォーマンスモニタリング、アラームなどの関数を提供します。ファンクションコンピューティングは、サーバーを管理する必要がなく(サーバーレス)、ファンクションコードのみに集中してアプリケーションをすばやく構築するのに役立ちます。関数の計算は柔軟にスケーリングでき、使用した分だけ支払う必要があります。
利点の概要:関数計算に基づくCPU集約型AI推論の主な利点
1.開始が簡単で、ビジネスロジック開発のみに焦点を当てることで、エンジニアリング開発の効率が大幅に向上します。

自作のソリューションは、学習と構成のコストが高すぎます。たとえば、さまざまなシナリオで、ESSはさまざまなパラメーター構成
システム環境のメンテナンスとアップグレードを行う必要があります。

  1. 無料の運用と保守、機能実行レベルの粒度監視とアラーム。

3.遅延やコストに敏感なタイプをカバーしながら、高い柔軟性と可用性を確保するためのミリ秒単位の弾性拡張。

4. CPUを集中的に使用するコンピューティングのシナリオでは、合理的な組み合わせ課金モデルを設定することにより、次のシナリオでコスト上の利点があります。

リクエストアクセスには明らかな山と谷があり、それ以外の時間はリクエストがありません。
一定の安定したロードリクエストがありますが、一定の期間中にリクエスト量が突然変化します。

シーン体験

このシナリオでは、関数コンピューティング製品を使用して、関数コンピューティングに基づいた深層学習AI推論プラットフォームを展開するためのベストプラクティスを紹介します。

人工知能の分野の開発者は、アルゴリズムモデルのトレーニングとビジネスロジックの開発にさらに集中でき、コンピューティングクラスターの運用と保守を機能コンピューティングに委任して作業効率を向上させることができます。

最終結果:
猫または犬の写真をアップロードすることにより、写真の動物が猫であるか犬であるかを認識することができます。デモ効果の入り口:http//sz.mofangdegisn.cn

ステップ1:ECSサーバーに接続する

ECSリソースアドレス:https//developer.aliyun.com/adc/scenario/35a73acbb9cb477e8a4a5b22021f23a9
参照記事の手順はECSにリンクしています

ステップ2:オープンファンクションコンピューティングサービス

関数計算を使用する前に、AlibabaCloud製品の詳細ページでサービスをアクティブ化する必要があります

ステップ3:楽しいツールをインストールする

Funは、サーバーレスアプリケーションの展開をサポートするために使用されるツールであり、関数コンピューティング、APIゲートウェイ、ログサービスなどのリソースを便利に管理するのに役立ちます。リソース構成ファイル(template.yml)を使用して、操作の開発、構築、および展開を支援します。
1.Funインストールパッケージをローカルにダウンロードします。以下のFUN_VERSION変数の値を最新バージョン番号に設定してください。最新バージョン番号については、リリースを参照してください。次の操作は、ECSサーバーにFunをインストールして構成します。

FUN_VERSION="v3.6.1" 
curl -o fun-linux.zip https://gosspublic.alicdn.com/fun/fun-$FUN_VERSION-linux.zip

2.解凍ツールunzipをインストールし、unzipを使用して、ダウンロードしたFunインストールパッケージを現在のディレクトリに解凍します。

yum -y install unzip 
unzip fun-linux.zip

3.解凍した実行可能ファイルをシステムパスに移動します。

mv fun-*-linux /usr/local/bin/fun

4.Funに関連付けられたAlibabaCloudアカウントと、SDKを呼び出すためのタイムアウト期間を構成します。

fun config

以下の情報を参照して、Alibaba CloudアカウントID、AccessKeyID、およびAccessKeyキー情報を入力してください。

  • Aliyunアカウント
    ID:サブユーザー名の@記号の後の部分は、割り当てられたメインアカウントIDです。たとえば u-zftb79nc @ 105997185439に含まれるアカウントIDは105997185439です。
  • AliyunアクセスキーIDとAliyunアクセスキーシークレット:プラットフォームから提供されたサブアカウントAKIDとAK
    シークレットを使用してください
    ここに写真の説明を挿入

  • 呼び出す各SDKクライアントのタイムアウト(秒単位):デプロイメントパッケージをアップロードするときのタイムアウトの中断を防ぐために、タイムアウト時間を長く(たとえば、10000)設定することをお勧めします。
    正しい設定は次のとおりです。
    ここに写真の説明を挿入

ステップ4:Dockerをインストールする

1.Dockerの依存ライブラリをインストールします。

yum install -y yum-utils device-mapper-persistent-data lvm2

2.docker-ceのソフトウェアソース情報を追加します。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.docker-ceをインストールします。

yum makecache fast
yum -y install docker-ce

4.Dockerサービスを開始します。

systemctl start docker

ステップ5:NASファイルシステムのマウントポイントを作成する

1.NASコンソールにログインします
2. [ファイルシステム]> [ファイルシステムリスト]を選択します。
3.左上隅で、クラウドリソースの場所を選択します。
ここに写真の説明を挿入
4.エクスペリエンスページの左側にあるリソース情報列でNASファイルシステムIDに対応するファイルシステムを見つけ、[その他]> [マウントポイントの追加]をクリックします。
5. [マウントポイントの追加]ページで、次のパラメーターを構成します。
ここに写真の説明を挿入
6.以下に示すように、マウントポイントアドレスを確認します。
ここに写真の説明を挿入

ステップ6:プロジェクトコードをダウンロードする

1. Gitツールをインストールし、Gitを使用してプロジェクトコードをローカルに複製します。

yum -y install git
git clone https://github.com/awesome-fc/cat-dog-classify.git

2.プロジェクト内のFUNデプロイメントテンプレートファイルtemplate.ymlを編集し、ログサービスプロジェクト名とNASストレージのマウント構成を変更します。
a。vimを使用してテンプレートファイルを開きます。

cd cat-dog-classify
vim template.yml

b。次のコマンドを入力して、ログサービスプロジェクト名をグローバルに置き換えます。

:%s/log-ai-pro/log-ai-test/g

コマンドでは、log-ai-testは変更されたプロジェクト名であり、カスタムプロジェクト名に置き換えることができます。

c。NASマウント構成を変更します。デフォルトのautoメソッドは、NASファイルシステムを自動的に作成します。ここでは、プラットフォーム用に事前に作成されたNASファイルシステムの情報を変更して入力します。

      VpcConfig:
        VpcId: 'vpc-uf6u8*****zf1r4'
        VSwitchIds: [ 'vsw-uf6******038fy' ]
        SecurityGroupId: 'sg-uf6e******w6qz'
      NasConfig:
        UserId: 10003
        GroupId: 10003
        MountPoints:
          - ServerAddr: '33****u83.cn-shanghai.nas.aliyuncs.com:/'
            MountDir: '/mnt/auto'

変更されたパラメータは次のとおりです。

  • VpcConfigのVpcId、VSwitchId、およびSecurityGroupIdの情報については、ECSコンソールのインスタンスの詳細ページを確認してください。
  • 手順3で、ServerAddrの値をマウントポイントアドレスに変更します。
    変更後、次の図に示します。
    ここに写真の説明を挿入

ステップ7:依存ファイルをNASにアップロードする

1.次のコマンドを実行して、NASを初期化します。

fun nas init

2.ローカルNASのディレクトリの場所を表示します。

fun nas info

コマンド出力は次のとおりです。
ここに写真の説明を挿入

3.次のコマンドを実行して、関連する依存関係をインストールします。

fun install -v

コマンドが正常に実行された結果を以下に示します。

ここに写真の説明を挿入
コマンドは、Funfileファイルの定義に基づいています。

  • 依存関係を.fun / nas / auto-default / classify / pythonディレクトリにダウンロードします。
  • モデル内のモデルファイルを.fun / nas / auto-default / classify / model /ディレクトリにコピーします。
    4.ローカルNASディレクトリをAlibabaCloudNASストレージに同期します。
fun nas sync

コマンド実行結果を以下に示します。
ここに写真の説明を挿入
同期されるファイルは約700Mで、コンテンツが多く、同期時間は約40分ですので、しばらくお待ちください。

5.ファイルがリモートNASディレクトリにアップロードされているかどうかを確認します。

fun nas ls nas://classify:/mnt/auto/

ステップ9:機能的なコンピューティングプラットフォームにデプロイする

関数を関数コンピューティングプラットフォームに展開するには、次の手順を実行します。

fun deploy -y

実行結果を下図に示します。この図では、19176540-18576685985 *****。test.functioncompute.comは、関数コンピューティングプラットフォームによって割り当てられた一時的なドメイン名です。10日間有効で、1日あたりの呼び出し回数は1000回に制限されています。
ここに写真の説明を挿入
展開中に次のエラーメッセージが表示された場合。
ここに写真の説明を挿入
問題の原因:テンプレート構成ファイルで定義されているログ項目名は既に存在します。
解決策:template.ymlファイルのログ項目名を変更してください。

ステップ9:予測サービスをテストする

1.展開が完了したら、次の図に示すように、約30秒待ってから、ブラウザーで一時ドメイン名を開きます。
ここに写真の説明を挿入
ページにアクセスしたときに、次のようなモジュールエラーが発生した場合。
ここに写真の説明を挿入
問題の原因:ネットワークの問題により、NAS同期コンテンツが不完全です。
解決策:コマンドfun nassyncをもう一度実行してください。

2.猫または犬の写真をアップロードします。
ここに写真の説明を挿入
3. [予測]ボタンをクリックして、予測された認識結果を表示します。
ここに写真の説明を挿入
関数コンピューティングには動的スケーリングの特性があり、同時リクエストの量に応じて、実行環境が自動的かつ弾力的に拡張され、環境を実行します。予約されたインスタンスが関数を呼び出す要求を満たすことができない場合、関数の計算は関数の実行のためにオンデマンドでインスタンスを自動的に拡張し、このときの呼び出しにはコールドスタートプロセスがあります。予約モードを使用すると、コールドスタートの不具合を解消できます。詳細については、予約インスタンスを参照してください。

おすすめ

転載: blog.51cto.com/14981263/2545051