Neuropod ist eine Bibliothek, die eine einheitliche Schnittstelle bietet, in der Deep -Learning -Modelle aus mehreren Frameworks in C ++ und Python ausgeführt werden. Neuropod macht es Forschern leicht, Modelle in einem Rahmen ihrer Wahl zu erstellen und gleichzeitig die Produktion dieser Modelle zu vereinfachen.
Derzeit unterstützt es TensorFlow, Pytorch, Torchscript, Keras und Ludwig.
Für weitere Informationen:
Das Ausführen eines Tensorflow -Modells sieht genau wie ein Pytorch -Modell aus.
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" ]Weitere Beispiele finden Sie im Tutorial, Python Guide oder C ++ - Leitfaden.
Einige Vorteile davon sind:
Jedes NeuropoD -Modell kann sowohl von C ++ als auch von Python (sogar Pytorch -Modelle, die nicht in Torchscript umgewandelt wurden) ausgeführt werden.
Auf diese Weise können Sie sich mehr auf das Problem konzentrieren, das Sie lösen, als auf das Framework, mit dem Sie es lösen.
Wenn Sie beispielsweise eine Problem -API für die Erkennung von 2D -Objekten definieren, kann jedes Modell alle vorhandenen Inferenzcode und Infrastruktur für dieses Problem wiederverwenden.
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" )},
]Das lässt dich
Weitere Informationen finden Sie im Tutorial.
Wenn Sie mehrere Modelle haben, die einen ähnlichen Satz von Eingängen aufnehmen, können Sie eine Framework-Agnostic-Pipeline für die Eingabeerzeugung erstellen und optimieren und über Modelle hinweg weitergeben.
Vollständige in sich geschlossene Modelle (einschließlich benutzerdefinierter OPS)
Effiziente Null-Kopie-Operationen
Auf Plattformen getestet, einschließlich
Modellisolation mit Ausführung außerhalb der Prozesse
Wechseln Sie vom Ausführen von In-Process auf das Auslauf von Out-of-Process mit einer Codezeile
Eine Übersicht über den Einstieg mit NeuropoD finden Sie im Tutorial für grundlegende Einführung.
Der Python Guide und der C ++ - Guide werden in detaillierteren Neuropodenmodellen detaillierter eingehen.