Stateless model reference
.model files are used in stateless model evaluation. These are files with ranking expressions, located in models / a subdirectory of models, with .model suffix:
├── models │ └── my_model.model └── services.xml
.model file format specification
model [name] { ([input-argument-name]: [input-argument-type])* contants { ([constant-name]: [scalar or tensor in literal form])* } (constant [name] { type: [tensor-type-spec]] file: [file path relative to this .model file] })* (function [name]([argument-name]*) { expression: [ranking expression] })* }The elements can appear in any order (and number).
.model example
This file must be saved as example.model
somewhere in the
models directory tree,
and the same directory must also contain constant1asLarge.json
with a tensor.
model example { # All inputs that are not scalar (aka 0-dimensional tensor) must be declared input1: tensor(name{}, x[3]) input2: tensor(x[3]) constants { constant1: tensor(x[3]):{{x:0}:0.5, {x:1}:1.5, {x:2}:2.5} constant2: 3.0 } # Constant in a separate file constant constant1asLarge { type: tensor(x[3]) file: constant1asLarge.json } function foo1() { expression: reduce(sum(input1 * input2, name) * constant1, max, x) * constant2 } function foo2() { expression: reduce(sum(input1 * input2, name) * constant(constant1asLarge), max, x) * constant2 } }This makes the model example available with the functions foo1 and foo2.