# Example models with PBJ Runtimes

The library `cml`

includes the package, `models_v1`

. This
package includes the `cml_model`

decorator that can be used to allow a function to
work as a model in a PBJ Runtime. It can also be used to enable gathering of model
metrics.

The package has an optional boolean argument, called `metrics`

, that when set to
`True`

, enables the `model_metric`

decorator functionality from
the deprecated `cdsw`

lib. The default value of the `metrics`

parameter is `False`

. Therefore, this example does not have model metric gathering
enabled, but the R example does. In both examples the function to be used for the model is called
`predict`

.

## Python example

Example #1

```
import cml.models_v1 as models
@models.cml_model
def predict(args):
return args["x"]*2
```

Example #2:

```
import cml.models_v1 as models
@models.cml_model(metrics=True)
def predict(args):
return args["x"]*2
```

## R example

Almost all of the functionality in the `cdsw`

library for R has also been
migrated to the `cml`

library and is available automatically for every R Runtime
workload. It includes a new function wrapper, called `cml_model`

, to be used for
model entry point functions in PBJ Runtimes. The function to be used for the model in this case
is called `predict`

.

```
library(cml)
predict <- cml_model(function(args) {
return(args$x*2)
})
```