The Container Core
Core is the only container doing code execution. Also ModelsAPI uses the Core container to execute the code. The core may
compile if necessary and create a runtime session if necessary.
- See C++ ref Core
Calling Core
Calling Core has four possible forms as explained in Function calls. Two forms for getting the result from
either calling exec from a block or a query (a constant included in the API call). Also, the same two forms but assigning the result to a
block in a container.
base is bop (also bebop or compile) the entity is a space, the key is a snippet
name and the block (or constant) passed are the arguments, possibly a tuple.Bases in Core
Bop has four bases, three of them are the same bebop, bop and compile. The fourth is onnx that tells the Core that the snippet has
no source code, it is just an ONNX model created with any tool that can export to ONNX. In that case, the snippet can be just a block
with a vector of bytes (a file).
Fields in Core
The Core uses Fields (a Service that supports basic persisted key/value functionality) to store the snippets in namespaces (each
namespace is a field, Fields is the service that stores them all). These spaces are persisted in a configurable database. You create
a new space with //bop/field_name.new like in any other container.
Snippets in Core
Snippets are persisted as a Snippet object and either compiled or decompiled at creation. From source (compiled), just use the bebop,
bop or compile and pass the source as text as a const or in a block. From an ONNX model (decompiled), use the onnx base and pass
the model as a block containing a vector of bytes (a file).
ONNX-runtime session management
A call that runs a snippet is using an ONNX runtime session. Sessions are created and destroyed as needed. The number of sessions is limited by a configurable parameter. From inside Bebop, it is possible to control how a function call is executed (use/deploy a session or merge the source code of the function with the caller). From the API, it is always using a session, creating it if necessary.
Configuring Core
Core has configurable parameters:
| Property | description |
|---|---|
FIELD_STORAGE_ENTITY |
Name of the database where the Core stores the Fields data. |
SNIPPET_STORAGE_ENTITY |
Name of the database where the Core stores the Snippet data. |
ONNXRT_MAX_NUM_SESSIONS |
The maximum number of simultaneously open ONNX runtime sessions. |