CRAN Task View: Model Deployment with Rの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。

Maintainer: Yuan Tang, James Joseph Balamuta
Contact: terrytangyuan at gmail.com
Version: 2022-08-24
URL: https://CRAN.R-project.org/view=ModelDeployment
Source: https://github.com/cran-task-views/ModelDeployment
Contributions: このタスクビューに対する提案や改良は、GitHubのissueやpull request、またはメンテナのアドレスに電子メールで送ってください。詳しくはContributing guideをご覧ください。
Installation: このタスクビューからのパッケージは、ctvパッケージを使用して自動的にインストールすることができます。例えばctv::install.views(“ModelDeployment”, coreOnly = TRUE)は全てのコアパッケージをインストールし、 ctv::update.views(“ModelDeployment”)はまだインストールされていない最新状態のパッケージを全てインストールします。詳しくは CRAN Task View Initiativeをご覧ください。

このCRANタスクビューには、モバイルデバイス、エッジデバイス、クラウド、GPUなどのさまざまな環境にモデルを展開して新しいデータのスコアリングや推論を行うプロセスを合理化する機能を提供する、トピック別に分類されたパッケージのリストが含まれています。 これは、関連するHighPerformanceComputingMachineLearningのタスクビューを補完するものです。

モデルの展開は、さまざまな理由から困難な場合があります。いくつかの課題の例は次のとおりです。

  • これは、異機種混在環境でのモデルの展開を伴います。例えば エッジデバイス、モバイルデバイス、GPUなど。
  • モデルを非常に小さいサイズに圧縮することは、ストレージが限られているデバイスに適合し、同じ精度を維持し、推論のためにモデルをロードするためのオーバーヘッドを最小限に抑えることは困難です。
  • デプロイされたモデルは、小型デバイス上の限られたメモリ内で新しいデータレコードを処理する必要があることがあります。
  • 多くのデプロイメント環境ではネットワーク接続が悪いため、クラウドソリューションが要件を満たしていないことがあります。
  • ユーザーデータがモバイルデバイスを離れる必要がない、より強力なユーザーデータプライバシーパラダイムへの関心があります。
  • データを収集する前に、デバイス上のモデルベースのデータフィルタリングを実行するという要求がますます高まっています。

このタスクビューで取り上げた分野の多くは、産業界や学術界で急速に変化しています。何か提案があれば、メンテナにメールで送るか、上記リンク先のGitHubリポジトリにイシューまたはプルリクエストを提出してください。他の方からの提案や修正は、すべてありがたくお受けします。

さまざまな種類の成果物による展開:

このセクションでは、モバイルデバイス(Android、iOSなど)やエッジデバイス(Rasberri Pi)などの小型デバイスに適した成果物に訓練モデルをエクスポートするための機能を提供するパッケージについて説明します。これらのパッケージは、異なるモデル形式に基づいて構築されています。

  • PMML(Predictive Model Markup Language)はXMLベースの言語で、アプリケーションが統計およびデータマイニングモデルを定義し、PMML準拠のアプリケーション間でモデルを共有する方法を提供します。次のパッケージは、PMMLに基づいています。
    • pmmlは、PMMLへのメインインタフェースを提供します。
    • pmmlTransformationsを使用すると、モデルを構築する前にデータを変換できます。構造を作成して、PMMLパッケージ内の関数が、結果のPMMLファイル内のモデルに加えて変換の詳細を出力できるようにします。
    • arulesは、トランザクションデータとパターン(度数項目セットと関連ルール)を表現、操作、分析するためのインフラストラクチャを提供します。この関連付けは、PMMLでディスクに書き込むことができます。
    • arulesSequencesは、arulesが頻繁なシーケンスを処理およびマイニングするためのアドオンです。
    • arulesCBAは、データフレーム用の関連ルールベースの分類器を構築し、このような分類器を使用して入力データフレームを分類する機能を提供します。
  • Plain Old Java Object(POJO)またはOptimized(MOJO)モデルオブジェクトは、どのJava環境にも簡単に埋め込むことができます。生成されたモデルの唯一のコンパイルおよび実行時の依存関係は、これらのパッケージのビルド出力として生成されたh2o-genmodel.jarファイルです。h2oは、xgboostに基づくGLM、DRF、XGBoostなどの幅広い機械学習モデルを構築するための使いやすいインタフェースを提供し、MOJOおよびPOJO形式としてエクスポートすることができます。次に、MOJOおよびPOJO成果物は、RESTインターフェースおよび異なる言語バインディング(例えば、 Java、Scala、R、およびPythonが含まれます。
  • TensorFlowSavedModelとその最適化バージョンTensorFlow Liteは、モバイルアプリケーション用のカーネルの最適化、事前融合アクティベーション、より小さくより速い(固定小数点数学)モデルを可能にする量子化されたカーネルなど、低遅延を達成するための多くのテクニックを使用します 。低レイテンシでバイナリサイズが小さく、オンデバイスのマシン学習の推論が可能です。下記のパッケージは、この形式のモデルを生成することができます。これらのパッケージは、reticulateに基づいた対応するPython APIのRラッパーです。モデルの作成にはPythonバイナリが必要ですが、デプロイの推論時間中には必要ありません。
    • tensorflowは、データフローグラフを使用した数値計算のためのTensorFlow APIへのフルアクセスを提供します。
    • tfestimatorsは、高度にカスタマイズされたニューラルネットワークアーキテクチャだけでなく、機械学習モデルにも高度なAPIを提供します。
    • kerasは、さまざまなタイプのニューラルネットワークを構築するための高水準APIが含まれています。
  • onnxは、異なるフレームワーク(例えば、TensorFlow、MXNet、PyTorch、CNTKなど)を使用して構築されたモデルの標準フォーマットであるOpen Neural Network Exchange (ONNX) へのインタフェースを提供します。これは、拡張可能な計算グラフモデルと、組み込み演算子と標準データ型の定義を定義します。あるフレームワークで訓練されたモデルは、推論のために別のフレームワークに容易に移すことができます。このオープンソース形式は、さまざまなフレームワーク間の相互運用性を可能にし、研究から生産までの道筋を合理化することで、AIコミュニティの革新のスピードを高めます。このパッケージは元のPython APIとインターフェースするためのreticulateに基づいているため、Pythonバイナリがデプロイメントに必要です。
  • xgboostlightgbmを使用して、勾配ブースト決定木 (GBDT) モデルを作成し、それらをテキストおよびバイナリ形式にシリアライズして、Apache SparkおよびDasktreeliteなどの R 以外の技術で予測値を作成するために使用できます。

クラウド/サーバーによる展開:

多くのデプロイメント環境は、クラウド/サーバーに基づいています。以下のパッケージは、これらのタイプの環境にモデルをデプロイするための機能を提供します。

  • yhatrを使用すると、Yhat REST APIを介してモデルをデプロイメント、メンテナンス、および呼び出すことができます。
  • cloudmlは、Google Cloud ML Engineにモデルを簡単にデプロイする機能を提供します。
  • tfdeployは、CloudMLおよびRStudio Connectと同じREST APIをサポートするローカルテストサーバーを実行するための関数が用意されています。
  • vetiverは、学習済みモデルのバージョンアップ、共有、デプロイ、および監視を行うためのツールを提供します。モデルの入力データプロトタイプの記録とチェック、およびリモートAPIエンドポイントからの予測の両方を関数で処理します。このパッケージは拡張可能で、多くの種類のモデルをサポートするためのジェネリック機能を備えています。
  • dominoは、分析ワークフロー用に設計されたバージョン管理とコラボレーション機能を統合したスケーラブルなハードウェア上でコードを簡単に実行できるサービスであるDomino CLIへのRインターフェイスを提供します。
  • tidypredictは、データベース内の予測を実行するための機能を提供します。これは、dplyrdbplyrに基づいており、Rで書かれたデータ操作を後でさまざまなタイプのデータベース内のデータ変換と集約を実行するために使用できるデータベースクエリに変換できます。
  • ibmdbRは、多くの基本および複合R操作をデータベースにプッシュダウンすることができます。これにより、Rの主メモリー境界が除去され、基礎となるデータベースでの並列処理を最大限に活用できます。
  • sparklyrは、Apache Sparkの分散マシンラーニングライブラリへのバインディングを提供し、訓練されたモデルをクラスタに展開することを可能にします。
    • rsparklingは、通常のモデル構築にh2oを使用している間に、Sparkジョブの展開にsparklyrを使用します。
  • mrsdeployは、コンソールアプリケーションでのリモートセッションの確立、および提供したRコードブロックまたはスクリプトによってバックアップされたWebサービスの公開および管理のための関数を提供します。
  • opencpuは、RとのRPCおよびデータ交換のためのシンプルで強力なHTTP APIを公開するサーバーを提供します。これは、統計サービスまたはR Webアプリケーションの構築のための信頼性の高い拡張可能な基盤を提供します。
  • R用のいくつかの汎用サーバー/クライアントフレームワークが存在し、サーバーベースの環境でモデルを展開するのに役立ちます。
    • RserveRSclientは、TCP / IPまたはローカルソケットインターフェイス用のサーバーとクライアントの機能を提供し、多くの言語やシステムからRにアクセスできるようにします。
    • httpuvは、R内で直接HTTPおよびWebSocket要求を処理するための低レベルのソケットとプロトコルのサポートを提供します。
  • いくつかのパッケージは、RコードをWeb APIに変換する機能を提供します。
    • FastRWebは、このための基本的なインフラストラクチャがいくつか用意されています。
    • plumberを使用すると、既存のRソースコードを特別なコメントで飾るだけでWeb APIを作成できます。
    • RestRserveは、Rserveベースの高性能マイクロサービスとアプリケーションバックエンドを構築するためのR Web APIフレームワークです。
R言語 CRAN Task View:Rによるモデル展開