> For the complete documentation index, see [llms.txt](https://docs.caraml.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caraml.dev/tutorial-and-examples/07_examples/02_pyfunc_model.md).

# Deploy PyFunc Model

Try out the notebooks below to learn how to deploy PyFunc Models to Merlin.

**Note on compatibility**: The Pyfunc servers are compatible with `protobuf>=3.12.0,<5.0.0`. Users whose models have a strong dependency on Protobuf `3.x.x` are advised to pin the library version in their conda environment, when submitting the model version. If using Protobuf `3.x.x`, users can do one of the following:

* Use `protobuf>=3.20.0` - these versions support simplified class definitions and this is the recommended approach.
* If you must use `protobuf>=3.12.0,<3.20.0`, other packages used in the Pyfunc server need to be downgraded as well. Please pin the following in your model’s conda environment:

```yaml
dependencies:
  - pip:
      - protobuf==3.15.6 # Example older protobuf version
      - caraml-upi-protos<=0.3.6
      - grpcio<1.49.0
      - grpcio-reflection<1.49.0
      - grpcio-health-checking<1.49.0
```

## Deploy PyFunc Model

{% embed url="<https://github.com/caraml-dev/merlin/blob/main/examples/pyfunc/Pyfunc.ipynb>" %}

## Deploy PyFunc Model with Custom Prometheus Metrics

{% embed url="<https://github.com/caraml-dev/merlin/blob/main/examples/metrics/Metrics.ipynb>" %}
