例えば画像認識モデルをTensorFlowで作ったとして、それをWebサービスやスマートフォンのアプリから呼び出して推論処理をさせようとするためには、作ったモデルをどこかのサーバにデプロイしておく必要があります。
そのサーバを独自に作ることもできますが(例えばTensorFlow Servingを使って)、クラウドサービスを使うということも多いでしょう。実際、弊社(株式会社ビビンコ)で携わった例でもクラウド(IBM Cloud)上にモデルをデプロイしています。
クラウドサービスによって対応しているTensorFlowのバージョンに違いがあったり、使用するインスタンスタイプによって性能や料金が違ったりするので、一概にどこのサービスが良いとは言えないのですが、ここでは「最も安価」という一点に絞って、クラウドサービスを比較してみたいと思います。
※クラウドサービス各社のWebサイト上の情報から、2020年7月15日現在で読み取った情報で記載しています。誤りがあるかもしれませんので、ご注意ください。
※ここではWeb APIを使ったオンライン推論について調査しています。バッチ処理の場合は別の課金体系になるサービスがほとんどです。
IBM Cloud
IBM Cloudでは、Machine Learningというサービス上にデプロイすることができます。
標準の料金プランでは、1000件の予測処理ごとに0.50USDと、キャパシティー・ユニット時間(CUH)ごとに0.50USDがかかるということになっています。
CUHは使用するコンピュータの性能によって異なるのですが、例えば2コアの仮想CPUと8GBのメモリを備えたコンピュータを使う場合は1CUH/時間、1個のNVIDIA K80 GPUを使う場合は3CUH/時間ということになっています。
ただ、CUHはモデルのトレーニングを行う際に使用するもので、すでに完成しているモデルをデプロイするだけの場合は、使用するコンピュータ性能を選ぶ必要もなく、課金は行われません。(そのはずです。)
よって、モデルをデプロイして使うだけなら、1000件の予測ごとの課金だけになります(なるはずです)。これは他のサービスと比べると極めて安価な設定です。
さらに、IBM Cloudには期間無制限のライトプランが準備されており、月に5000件の予測と50CUHは無料で使えるようになっています。(これがIBM Cloudの凄いところで、研修などでも使いやすいのです。)
AWS
Amazon Web Services(AWS)では、SageMakerがモデルのデプロイのために使用するサービスです。オンライン推論を行う場合は、「リアルタイム推論用のオンデマンドMLホスティングインスタンス」が必要となり、これは実際に推論を行なっている時間だけではなく、その待ち受けをしている時間も変わらず課金されます。
使用するインスタンスによって料金が異なりますが、東京リージョンで最も安いml.t2.medium(2コアの仮想CPUと4GBのメモリ)では、0.0851USD/時間です。1ヶ月分(24時間×30日)に換算すると、61.272USDとなります。
また、MLストレージが1GBあたり0.168USD、データ処理量として入出力ともに1GBあたり0.016USDとなっています。
どの程度、推論を行うかによってデータ処理量が変わってくるので料金が変動しますが、インスタンスの時間課金が最も大きな割合になるでしょうから、ざっくり月に最低7000〜8000円はかかるものと考えておくことになります。
商用サービスではこの程度の課金は特に問題にならないでしょうが、個人的にやる程度ならちょっと気になる料金ですね。
GCP
Google Cloud Platform(GCP)では、AI Platform Predictionを使ってモデルをデプロイします。
GCPも実際の推論を行った時間以外に、その待ち受けをしている時間も課金対象です。アジア太平洋でデフォルトのmls1-c1-m2(1コアの仮想CPUと2GBのメモリ)インスタンスを使った場合、0.0515USD/時間です。AWSの場合と同様に1ヶ月あたりに換算すると37.08USDとなります。だいたい4000円くらいですから、性能がAWSの半分な分、半額くらいで使えるということになります。(現時点で一般提供されているインスタンスタイプはmls1-c1-m2だけです。)
Microsoft Azure
Microsoft Azureでは、モデルをデプロイする先はいくつか準備されており、運用フェーズにおいてはAzure Kubernetes Serviceの使用が推奨されています。(開発/テストフェーズでは、Azure Machine Learningコンピューティングインスタンスの使用も推奨されます。)
いずれにせよコンピューティング性能を選択して、時間単位の課金ということになります。AWSのプランに合わせて2コアの仮想CPUに4GBのメモリであるB2Sを使用すると、1ヶ月あたり39.17USDですから、かなり安く使うことができそうです。
ちょっとやってみます
ということで、IBM Cloudだけはちょっと特殊な料金体系(結構おトク)ですが、他社はIaaSのサービスと同様にインスタンスタイプを選んでそれをずっと稼働させた場合の料金ということになっています。
IBM CloudとAWSは実際にモデルのデプロイをしたことがあるのですが、GCPとAzureについてはやったことがなく、本当に公開されているWebサイトの情報を読んで得た情報だけなので、何か勘違いがあるかもしれません。
今後、実際にデプロイを試してみて、誤りに気づけば修正したいと思います。(ついでに、デプロイの方法についてもこちらのブログでまとめていこうと思います。)