[51CTO.com クイック翻訳] 機械学習の分野を見ると、ソフトウェアエンジニアリングの原理を機械学習に適用することに重点を置いたプロジェクトの数が急増していることが大きな傾向です。たとえば、Cortex は推論パイプラインの助けを借りて、サーバーレス関数のデプロイのエクスペリエンスを再現します。同様に、DVC は機械学習向けに最新のバージョン管理と CI/CD パイプラインを実装します。
PyTorch Lightning にも同様の概念がありますが、トレーニング専用です。このフレームワークは PyTorch 用の Python ラッパーを提供し、データ サイエンティストやエンジニアがクリーンかつ管理しやすく、パフォーマンスの高いトレーニング コードを作成できるようにします。 私たちがこのデプロイメント プラットフォーム全体を構築した理由の 1 つは、定型コードを書くのが嫌いで、PyTorch Lightning の大ファンだからです。その精神で、私は PyTorch Lightning モデルを本番環境にデプロイするためのこのガイドを作成しました。途中で、PyTorch Lightning モデルをエクスポートして推論パイプラインに含めるいくつかの方法について説明します。 推論用の PyTorch Lightning モデルを展開するさまざまな方法 PyTorch Lightning モデルをデプロイ用にエクスポートする方法は 3 つあります。
Cortex を使用すると、これら 3 つのアプローチすべてを満たすことができます。 1. PyTorch Lightningモジュールを直接パッケージ化してデプロイする 最もシンプルなアプローチから始めて、変換手順なしで PyTorch Lightning モデルをデプロイしてみましょう。 PyTorch Lightning Trainer は、定型的なトレーニング コード (トレーニングと検証の手順など) を抽象化するクラスであり、モデルを .ckpt ファイルとして保存する save_checkpoint() 関数が組み込まれています。モデルをチェックポイントとして保存するには、トレーニング スクリプトに次のコードを追加するだけです。 図1 さて、このチェックポイントのデプロイを始める前に、私が「PyTorch Lightning モデル」と言い続けているものの、PyTorch Lightning は PyTorch のラッパーであることに注意してください。プロジェクトの README には、実際に「PyTorch Lightning は、単に組織化された PyTorch です」と書かれています。したがって、エクスポートされたモデルは通常の PyTorch モデルであり、それに応じてデプロイできます。 保存されたチェックポイントを使用すると、Cortex にモデルを簡単にデプロイできます。 Cortex に詳しくない場合は、ここで簡単にツアーに参加できますが、Cortex の展開プロセスの簡単な概要は次のとおりです。
私たちの予測 API は、Cortex の Python Predictor クラスを使用して init() 関数を定義し、API を初期化してモデルをロードし、クエリ時に predict() 関数を使用して予測を行います。
とても簡単です。トレーニング コードの一部のコードを再利用し、推論ロジックを少し追加しました。注意すべき点は、モデルを S3 にアップロードする場合 (推奨)、モデルにアクセスするためのロジックを追加する必要があることです。 次に、YAML を使用してインフラストラクチャを構成します。
非常にシンプルです。 API に名前を付け、必要な予測 AI を Cortex に伝え、CPU リソースを割り当てます。 次に、それをデプロイします。 注: Cortex によって開始および管理されるクラスターにデプロイすることもできます。 図3 すべてのデプロイメントにおいて、Cortex は API をコンテナ化し、Web サービスとして公開します。クラウド展開の場合、Cortex は負荷分散、自動スケーリング、監視、更新、およびその他の多くのインフラストラクチャ機能を構成します。 これで完了です。これで、リクエストに応じてモデル予測を処理する実際の Web API ができました。 2. ONNXにエクスポートし、ONNXランタイム経由でデプロイする 通常の PyTorch チェックポイントをデプロイしたので、もう少し複雑なものにしてみましょう。 PyTorch Lightning には最近、モデルを ONNX にエクスポートするための便利な抽象化が追加されました (以前は PyTorch の組み込み変換関数を使用できましたが、少しだけ定型コードが必要でした)。モデルを ONNX にエクスポートするには、トレーニング スクリプトに次のコードを追加するだけです。 図4 入力サンプルは実際のモデル入力の形状を模倣する必要があることに注意してください。 ONNX モデルをエクスポートしたら、Cortex の ONNX Predictor を使用してデプロイできます。コードは基本的に同じに見え、プロセスも同じです。たとえば、ONNX 予測 API は次のとおりです。
基本的に同じです。唯一の違いは、モデルを直接初期化するのではなく、Cortex がモデルを展開するために起動する ONNX ランタイム コンテナーである onnx_client を介してモデルにアクセスすることです。 YAML は次のようになります。
ここで監視フラグを追加したのは、設定がいかに簡単かを示すためです。ONNX 固有のフィールドがいくつかありますが、それ以外は同じ YAML です。 最後に、以前と同じ $ cortex deploy コマンドを使用してデプロイし、ONNX API がアクティブになります。 3. TorchscriptのJITコンパイラを使用して初期化する 最終的なデプロイメントとしては、PyTorch Lightning モデルを Torchscript にエクスポートし、PyTorch の JIT コンパイラを使用してデプロイします。モデルをエクスポートするには、トレーニング スクリプトに次のセクションを追加するだけです。 図5 このための Python API は通常の PyTorch の例と同じです。
YAML は以前と同じで、もちろん CLI コマンドも同じです。必要であれば、古い predictor.py スクリプトを新しいスクリプトに置き換えて、$ cortex deploy を再度実行するだけで、以前の PyTorch API を更新して新しいモデルを使用することもできます。 図6 Cortex はここでローリング アップデートを自動化し、新しい API を作成して古い API と交換することで、モデルの更新間のダウンタイムを防止します。 それでおしまい。これで、Torchscript モデルから予測を行うためのリアルタイム推論用の完全に機能する予測 API が手に入りました。 では、どの方法を使用すればよいのでしょうか? 当然の疑問は、どのアプローチが最も効果的かということです。実のところ、ここでは簡単な答えはなく、モデルによって異なります。 ONNX は、BERT や GPT-2 などの Transformer モデルに対して優れた最適化を提供します (CPU で 40 倍のスループット向上を測定)。他のモデルの場合、Torchscript は標準の PyTorch よりもパフォーマンスが優れている可能性がありますが、すべてのモデルを Torchscript にきれいにエクスポートできるわけではないため、いくつか注意点があります。 幸いなことに、3 つのアプローチをすべて並行してテストして、特定の API に最も適したものを確認できます。 元のタイトル: PyTorch Lightning モデルを本番環境にデプロイする方法、著者: Caleb Kaiser [51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください] |
<<: AIが伝統的な製造業のデジタル進化を促し、国内のスマート工場は活力に満ち溢れている
>>: AI業界は依然として寒い冬に:資金調達規模はピーク時の半分以下、上場ブームは倒産の波を伴う
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
9月22日は秋分の日であり、私の国では3回目の「農民の収穫祭」でもあります。収穫の季節と重なる黄金...
今日のいわゆるスマート ビルディングの多くは、実際にはビルディング オートメーション システムに加え...
12月15日、第1回テンセントクラウド+コミュニティ開発者会議で、テンセントクラウドの副社長である王...
1月8日、OpenAIのCEOサム・アルトマン氏は、タイム誌編集長とのインタビューで、昨年末に同社と...
[[254687]]少し前に同時通訳者がiFlytekを「AI同時通訳詐欺」と非難し、ネット上で騒...
メディア専門家は、2023年の「失業」について多かれ少なかれ不安を抱いています。メディア専門家は、C...
「私は今、Miqu が Perplexity Labs の Mistral-Medium と同じモデ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
AI導入の最大の推進要因はインフラのアップグレードです。近年、ビッグデータ分析やAIなどの分野が注目...
グラフについてはあまり知らないかもしれませんが、ナレッジグラフについて言えば、それは間違いなく現在ホ...