第8章. 制作におけるPyTorch
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
さて、PyTorchを使って画像、テキスト、音声を分類する方法を学んだので、次はPyTorchアプリケーションを本番環境でデプロイする方法を見ていこう。この章では、HTTPとgRPCでPyTorchモデルの推論を実行するアプリケーションを作成する。そして、それらのアプリケーションをDockerコンテナにパッケージし、Google Cloud上で動作するKubernetesクラスタにデプロイする。
後半では、PyTorch 1.0で導入された新技術であるTorchScriptについて見ていく。TorchScriptは、ジャストインタイム(JIT)トレースを使って、C++から実行できる最適化されたモデルを生成することができる。また、量子化を使ってモデルを圧縮する方法についても簡単に説明する。最初に、モデルサービングを見てみよう。
モデル・サービング
これまでの6章ではPyTorchでモデルを構築してきたが、モデルの構築はDeep Learningアプリケーション構築の一部に過ぎない。結局のところ、モデルは驚くべき精度(または他の関連メトリック)を持っているかもしれないが、もしそれが何の予測もしなければ、何の価値もないのだろうか?我々が求めているのは、モデルを簡単にパッケージ化し、(後述するようにウェブやその他の手段で)リクエストに応答できるようにし、最小限の労力で本番環境で実行できるようにすることだ。
ありがたいことに、Pythonを使えば、Flaskフレームワークを使ってウェブサービスを素早く立ち上げて実行することができる。このセクションでは、ResNetベースの猫と魚のモデルをロードし、画像のURLを含むリクエストを受け付け、画像に猫と魚のどちらが含まれているかを示すJSONレスポンスを返すシンプルなサービスを構築する。
注
モデルに犬の写真を送ったらどうなるか?モデルは魚か猫だと言うだろう。モデルには利用可能な選択肢以外の概念はなく、常にどちらかを選ぶ。Deepラーニングの実践者の中には、トレーニング中に追加のクラス(Unknown )を追加し、必要なクラスのいずれでもないラベル付き例を投入する人もいる。これはある程度うまくいくが、本質的にニューラルネットに猫や魚でないものをすべて学習させようとするもので、一連の行列計算はおろか、あなたや私にも表現するのは難しい!もうひとつの選択肢は、最終的なsoftmax によって生成された確率出力を見ることだ。もしモデルが、猫と魚がほぼ半々、あるいはクラス全体に分散した予測を出しているのであれば、Unknown 。
Flaskサービスを構築する
Webサービス対応版のモデルを立ち上げて動かしてみよう。FlaskはPythonでWebサービスを作成するための有名なフレームワークで、この章ではこれをベースとして使うことにする。pip またはconda のどちらかを使ってFlaskライブラリをインストールする:
conda install -c anaconda flask pip install flask
catfishという新しいディレクトリを作成し、モデル定義をmodel.pyとしてコピーする:
fromtorchvisionimportmodelsCatfishClasses=["cat","fish"]CatfishModel ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access