Jina 3.10.0 Update

Jina is a MLOps framework that empowers anyone to build cross-modal and multi-modal applications on the cloud. It uplifts a PoC into a production-ready service. Jina handles the infrastructure complexity, making advanced solution engineering and cloud-native technologies

Abstract tech-themed image with a glowing blue cube under a magnifying glass and "3.10 NEW RELEASE" text on a circuit board b

Jina is a MLOps framework that empowers anyone to build cross-modal and multi-modal applications on the cloud. It uplifts a PoC into a production-ready service. Jina handles the infrastructure complexity, making advanced solution engineering and cloud-native technologies accessible to every developer.

GitHub - jina-ai/jina: 馃敭 Build cross-modal and multimodal applications on the cloud 路 Neural Search 路 Creative AI 路 Cloud Native 路 MLOps
馃敭 Build cross-modal and multimodal applications on the cloud 路 Neural Search 路 Creative AI 路 Cloud Native 路 MLOps - GitHub - jina-ai/jina: 馃敭 Build cross-modal and multimodal applications on the cl...

Release time: 2022-09-29 18:51

This release contains 10 new features, 9 bug fixes and 12 documentation improvements.

馃啎 Features

Enable jina ping as readiness probe on local and Kubernetes (#5200)

This feature lets you check the readiness of an entire Flow or its individual components:

jina ping flow grpc://localhost:12345 
jina ping executor localhost:12346 
jina ping gateway grpc://localhost:12345

Successful output:

INFO   JINA@28600 readiness check succeeded 1 times!!!

Unsuccessful output:

This command exits with code 1 when the readiness check is not successful.
Therefore, it is a good choice to use as a readiness probe for Executor and Gateway when deployed in Kubernetes.

Add argument to specify exceptions that will exit the runtime (#5165)

You can specify which Exceptions should trigger termination of an affected Executor:

Flow().add(uses=MyExecutor, exit_on_exceptions: ['Exception',  'RuntimeException'])

This ensures an Executor is not stuck in an unusable but technically alive state, and that the Executor can be restarted. This is especially useful when Executor restarts are automated through Kubernetes.

Retry mechanism for client.post (#5176)

client.post() accepts max_attempts, initial_backoff, max_backoff and backoff_multiplier parameters to control the capacity to retry requests, when a transient connectivity error occurs, using an exponential backoff strategy:

client.post( on='/', inputs=docs, max_attempts=5, initial_backoff=0.1, max_backoff=0.5, backoff_multiplier=1.5)

Add monitoring of requests size everywhere (#5111)

The size of requests (jina_request_size_bytes) is now monitored everywhere: On every Executor, every Gateway, and every sharding Head.

Consequently, this new metric can now be accessed via Prometheus and Grafana.

JSON logging for JCloud (#5201)

It is now possible to create logs in JSON format, instead of the standard line-by-line text output.

Sample output:

{"created": 1663930387.5850368, "filename": "data_request_handler.py", "funcName": "_load_executor", "levelname": "DEBUG", "lineno": 98, "module": "data_request_handler", "msg": "<jina.serve.executors.BaseExecutor object at 0x7fc1951f78d0> is successfully loaded!", "name": "WorkerRuntime", "pathname": "/home/foo/jina/serve/runtimes/request_handlers/data_request_handler.py", "process": 13386, "processName": "Pod", "thread": 140469860276032, "threadName": "MainThread"}

To enable this, set the environment variable 'JINA_LOG_CONFIG to 'json'.

Support list-like syntax to specify visible cuda devices (#5187)

You can now use device id's to specify visible CUDA devices that should be used in the round-robin GPU assignment:

CUDA_VISIBLE_DEVICES=RR1,3

This will assign CUDA devices 1 and 3 to the different Executor replicas in a round-robin fashion.

Make jina hub push non-blocking (#5129)

jina hub push is now a non-blocking operation, meaning that the user does not have to wait for the entire push to be completed on the server side.

While the push is being processed in the background, its status can be checked with the following command:

jina hub status [<path_to_executor_folder>] [--id TASK_ID] [--verbose] [--replay]

Warning messages in jina hub push (#5156)

jina hub push can now display helpful warning messages, such as deprecation warnings:

Screen Shot 2022-09-09 at 16 32 58

Add duration info in events (#5157)

Telemetry data now also includes the duration of every event that is reported.

馃悶 Bug Fixes

Fix compatibility with Protobuf Python backend (#5222)

This bug caused an exception when Python was used as a backend for Protobuf, rather than cpp or udp.

With this fix, Python can also be used as a backend for Protobuf.

Move significant params to sequential (#5205)

This bug (occasionally) caused docker.errors.NullResource: Resource ID was not provided when pulling from Jina Hub. This was due to a faulty local caching implementation, which is now fixed.

Fix missing secret when logged-in user 聽with --force-update (#5180)

This bug caused a failure for logged in users when force pushing to Jina Hub: Their secret would not be passed. This is now fixed and force push works as expected.

Use default gRPC parameters for gRPC connection pool connection (#5211)

We brought our gRPC client in line with the recommended configuration.

Bump DocArray version for new column syntax (#5171)

Some changes to the column syntax in DocArray required a version bump.

Increase minimum Protobuf version (#5166)

Some changes in the Protobuf library required a version bump.

Remove leftover prints (#5199)

Some unwanted print statements had sneaked their way into our codebase, and we kicked them right back out!

馃摋 Documentation Improvements

  • Change setenv into environ (#5223)
  • Mention prefetch (#5220)
  • Fix install instructions docker (#5213)
  • Fix grammar, wording, punctuation (#5209)
  • Fix grammar, punctuation (#5208)
  • Clarify exec endpoint usage in http (#5202)
  • Document grpc client limitation (#5193)
  • Update faq and lifetime (#5191)
  • Improve warning about config file in custom docker (#5190)
  • Clarify return behavior in parameters (#5179)
  • Add section for exit_on_exceptions argument (#5172)
  • Labels in flow yaml (#5164)

馃 Contributors

We would like to thank all contributors to this release: