Neuropodは、C ++とPythonの複数のフレームワークから深い学習モデルを実行するための均一なインターフェイスを提供するライブラリです。 Neuropodを使用すると、研究者は選択のフレームワークでモデルを簡単に構築でき、これらのモデルの生産を簡素化します。
現在、Tensorflow、Pytorch、Torchscript、Keras、Ludwigをサポートしています。
詳細については:
Tensorflowモデルを実行すると、Pytorchモデルの実行とまったく同じように見えます。
x = np . array ([ 1 , 2 , 3 , 4 ])
y = np . array ([ 5 , 6 , 7 , 8 ])
for model_path in [ TF_ADDITION_MODEL_PATH , PYTORCH_ADDITION_MODEL_PATH ]:
# Load the model
neuropod = load_neuropod ( model_path )
# Run inference
results = neuropod . infer ({ "x" : x , "y" : y })
# array([6, 8, 10, 12])
print results [ "out" ]その他の例については、チュートリアル、Pythonガイド、またはC ++ガイドを参照してください。
これのいくつかの利点は次のとおりです。
任意のニューロポッドモデルは、C ++とPythonの両方から実行できます(TorchScriptに変換されていないPytorchモデルでさえ)。
これにより、解決するために使用しているフレームワークよりも、解決している問題にもっと集中できます。
たとえば、2Dオブジェクト検出の問題APIを定義する場合、その問題のすべての既存の推論コードとインフラストラクチャを再利用できるモデルはすべて、その問題のために再利用できます。
INPUT_SPEC = [
# BGR image
{ "name" : "image" , "dtype" : "uint8" , "shape" : ( 1200 , 1920 , 3 )},
]
OUTPUT_SPEC = [
# shape: (num_detections, 4): (xmin, ymin, xmax, ymax)
# These values are in units of pixels. The origin is the top left corner
# with positive X to the right and positive Y towards the bottom of the image
{ "name" : "boxes" , "dtype" : "float32" , "shape" : ( "num_detections" , 4 )},
# The list of classes that the network can output
# This must be some subset of ['vehicle', 'person', 'motorcycle', 'bicycle']
{ "name" : "supported_object_classes" , "dtype" : "string" , "shape" : ( "num_classes" ,)},
# The probability of each class for each detection
# These should all be floats between 0 and 1
{ "name" : "object_class_probability" , "dtype" : "float32" , "shape" : ( "num_detections" , "num_classes" )},
]これによりあなたができます
詳細については、チュートリアルをご覧ください。
同様の入力セットを採用するモデルがいくつかある場合、1つのフレームワークに依存しない入力生成パイプラインを構築および最適化し、モデル間で共有できます。
完全に自己完結型モデル(カスタムOPSを含む)
効率的なゼロコピー操作
を含むプラットフォームでテストされています
プロセス外の実行によるモデル分離
インプロセスの実行から、1つのコードを使用してプロセスを実行することに切り替えます
Neuropodの開始方法の概要については、基本的な紹介チュートリアルを参照してください。
PythonガイドとC ++ガイドは、Neuropodモデルの実行について詳しく説明します。