Host on JCloud#

Essentially clip_server is a Jina Flow. Any Jina Flow can be hosted on JCloud, hence clip_server can be hosted on JCloud as well. Learn more about JCloud here.

First, you need a Flow YAML file for deploy. A minimum YAML file is as follows:

jtype: Flow
executors:
  - uses: jinahub+docker://CLIPTorchEncoder
jtype: Flow
executors:
  - uses: jinahub+docker://CLIPOnnxEncoder

Tip

port is unnecessary here as JCloud will assign a new hostname and port for any deployed service.

Executors must start with jinahub+docker:// as it is required by JCloud. We currently provide containerized executors jinahub+docker://CLIPTorchEncoder and jinahub+docker://CLIPOnnxEncoder on Jina Hub. They are automatically synced on the new release of clip_server module.

To enable GPU on JCloud, you need to configure it in the YAML file and use prebuilt docker GPU images. For example,

jtype: Flow
executors:
  - uses: jinahub+docker://CLIPTorchEncoder/latest-gpu
    jcloud:
      resources:
        gpu: shared

Please refer here for more details on using GPU in JCloud. Notice that you must specify a docker image GPU tag for your executor to utilize the GPU. For example latest-gpu. See the ‘Tag’ section in CLIPTorchEncoder and CLIPOnnxEncoder for docker image GPU tags.

To deploy,

jc deploy torch-flow.yml
jc deploy onnx-flow.yml

If Flow is successfully deployed you will see:

../../_images/jc-deploy.png

You can now connect to it via client by setting server as the URL given by JCloud:

from clip_client import Client

c = Client(
    'grpcs://174eb69ba3.wolf.jina.ai'
)  # This is the URL you get from previous step
c.profile()