Tesseract Core v1.0.0 released ๐Ÿฆ€

Release v1.0.0

:tada: Tesseract Core has reached v1.0! :tada:

This is a huge release with several breaking changes, and an important milestone in the development of the project.

Breaking changes and how to upgrade

  1. New output folder structures
  • When paired with --output-path (and optionally --output-format / --output-file), tesseract run and tesseract serve now produce a new folder structure integrating outputs, logs, metrics, artifacts, and more. tesseract serve automatically splits those per request.

  • This is breaking since tesseract run --output-path does not imply writing return payloads to a file anymore. Use the new --output-file argument to control this behavior.

  1. New image tags
  • After tesseract build, images are automatically tagged using the version key from tesseract_config.yaml. This should not be breaking existing workflows in the vast majority of cases, but may lead to unexpected interactions when relying on the implicit latest tag (that is now added explicitly).
  1. No more msgpack
  • Support for msgpack encoded payloads has been removed. All payloads are now required to be valid JSON. We recommend to use the json+base64 format instead.
  1. Bye-bye Docker Compose
  • tesseract serve does not rely on Docker Compose anymore. This simplifies the stack considerably, but also means that only one Tesseract can be served per call to tesseract serve.

  • To recover the old behavior it is required to call tesseract serve multiple times, potentially with a --network parameter to ensure Tesseracts are reachable from each other.

  • The --service-names CLI arg has been renamed to --network-alias.

  1. Removed input-schema / output-schema endpoints
  • The schema endpoints have been removed from all interfaces (CLI, REST, Python API). Instead, use openapi-schema that contains the information for both inputs and outputs for all endpoints.
  1. Overhauled command line interfaces
  • The way tesseract and tesseract-runtime work is now more consistent with each other.

  • As a consequence, tesseract run <mytess> --help now prints the tesseract run help, not that of tesseract-runtime. To print the help of <mytess>, please use tesseract run <mytess> apply --help.

  • Also, tesseract-runtime can now be fully configured from the command line (see tesseract-runtime --help).

  • Most subcommands of tesseract-runtime do not accept CLI options anymore, that is, tesseract-runtime apply --output-path . is now tesseract-runtime --output-path . apply.

For further help on how to upgrade, please visit the Tesseract Forum. For a list of all changes, please see the changelog below.

Changes to how Tesseract Core is developed

Since we have reached v1.0 now, weโ€™re going to be stricter with backwards compatibility, deprecation, and versioning. What exactly this entails is not defined yet, but a few rules of thumb apply:

  • The external Tesseract API (i.e., what clients see) will stay 100% backwards compatible until v2.0.

  • Other interfaces may still change, but will do so at a slower pace and with deprecation cycles (i.e., warning users about features that are flagged for removal instead of removing them right away).

  • Breaking changes must be clearly marked as such, and patch version releases must not include breaking changes of any kind.

Where do we go from here?

Reaching v1.0 does not mean that development is done, or that no new features will be added. On the other hand, it does mean that Tesseracts have matured to the point where we donโ€™t envision drastic changes to the way they work (at least not in the foreseeable future). This gives us the breathing room to focus on improving and extending whatโ€™s already there.

In other words, now is a great time to start building on top of Tesseracts! Weโ€™re excited to see what the community decides to do with this technology.

Whatโ€™s Changed

Features

  • [breaking] Use version from tesseract_config.yaml as default Docker image tag (#267)

  • Add network argument to tesseract serve (#285)

  • Improved IDE type hints for array annotations (#291)

  • Add --network-alias option (#297)

  • Improve healthcheck after serve, add restart policy (#296)

  • Add hot example (#288)

  • Add network args to from_image (#299)

  • Add --output-path to serve (#295)

  • [breaking] Drop msgpack support (#303)

  • Introduce job ID to control the location of output logs / artifacts (#314)

  • Also print text logs to stderr (#311)

  • Add experimental require_file function to mark externally mounted files as required at runtime (#261)

Bug Fixes

  • Move private pip imports into relevant func scope (#292)

  • Correct error message on use of T created via from_image (#298)

  • Ensure signature consistency between engine.serve and Tesseract.from_image (#302)

  • Exclude broken version of setuptools-scm (#312)

  • Use TESSERACT_MLFLOW_TRACKING_URI instead of MLFLOW_TRACKING_URI (#313)

  • Make tesseract serve --output-format behave as expected (#307)

  • Test that LogPipe implementations do not diverge (#316)

  • Use --input-path/--output-path as base_dir in json+binref encoder (#304)

  • Bring back CLI option shorthands (#323)

  • Ensure .dockerignore is observed to avoid copying large amounts of data to build contexts (#218) (#321)

  • Change location of mlruns when TESSERACT_MLFLOW_TRACKING_URI is a relative path (#325)

Refactor

  • [breaking] Remove ability to serve multiple tesseracts / docker compose (#286)

  • Overhaul all clis (#301)

  • [breaking] Remove input-schema and output-schema endpoints (#308)

  • Transpose folder structure (#318)

Documentation

  • Add link to pre-commit library (#327)

  • Document how to use Tesseract via SLURM on HPC clusters (#320)

  • Add Documentation for podman usage via TESSERACT_DOCKER_EXECUTABLE (#324)

Full diff: v0.10.2โ€ฆv1.0.0

4 Likes