{"id":13935880,"url":"https://github.com/zyfra/ebonite","last_synced_at":"2025-07-19T21:30:58.111Z","repository":{"id":36132639,"uuid":"221721146","full_name":"zyfra/ebonite","owner":"zyfra","description":"machine learning lifecycle framework","archived":false,"fork":false,"pushed_at":"2022-11-21T22:44:02.000Z","size":1003,"stargazers_count":201,"open_issues_count":12,"forks_count":10,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-07-13T03:36:51.017Z","etag":null,"topics":["ai","ebonite","machine-learning","python"],"latest_commit_sha":null,"homepage":"https://ebonite.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zyfra.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-14T14:49:47.000Z","updated_at":"2025-07-02T18:09:11.000Z","dependencies_parsed_at":"2023-01-16T22:45:55.111Z","dependency_job_id":null,"html_url":"https://github.com/zyfra/ebonite","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/zyfra/ebonite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyfra%2Febonite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyfra%2Febonite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyfra%2Febonite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyfra%2Febonite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zyfra","download_url":"https://codeload.github.com/zyfra/ebonite/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyfra%2Febonite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266019657,"owners_count":23864916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ebonite","machine-learning","python"],"created_at":"2024-08-07T23:02:10.120Z","updated_at":"2025-07-19T21:30:58.106Z","avatar_url":"https://github.com/zyfra.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":".. image:: ebonite.jpg\n.. start-badges\n\n.. list-table::\n    :stub-columns: 1\n\n    * - docs\n      - |docs| |slack|\n    * - tests\n      - | |build| |coveralls|\n    * - package\n      - | |version| |wheel| |downloads| |supported-versions|\n        | |commits-since|\n\n.. |docs| image:: https://readthedocs.org/projects/ebonite/badge/?style=flat\n    :target: https://readthedocs.org/projects/ebonite\n    :alt: Documentation Status\n\n.. |build| image:: https://github.com/zyfra/ebonite/workflows/tox/badge.svg\n    :alt: Actions Status\n    :target: https://github.com/zyfra/ebonite/actions\n\n.. |requires| image:: https://requires.io/github/zyfra/ebonite/requirements.svg?branch=master\n    :alt: Requirements Status\n    :target: https://requires.io/github/zyfra/ebonite/requirements/?branch=master\n\n.. |coveralls| image:: https://coveralls.io/repos/github/zyfra/ebonite/badge.svg?branch=master\n    :alt: Coverage Status\n    :target: https://coveralls.io/r/zyfra/ebonite\n\n.. |codecov| image:: https://codecov.io/github/zyfra/ebonite/coverage.svg?branch=master\n    :alt: Coverage Status\n    :target: https://codecov.io/github/zyfra/ebonite\n\n.. |landscape| image:: https://landscape.io/github/zyfra/ebonite/master/landscape.svg?style=flat\n    :target: https://landscape.io/github/zyfra/ebonite/master\n    :alt: Code Quality Status\n\n.. |version| image:: https://img.shields.io/pypi/v/ebonite.svg\n    :alt: PyPI Package latest release\n    :target: https://pypi.org/project/ebonite\n\n.. |downloads| image:: https://pepy.tech/badge/ebonite\n    :alt: PyPI downloads\n    :target: https://pepy.tech/project/ebonite\n\n.. |slack| image:: https://img.shields.io/badge/ODS-slack-red\n    :alt: ODS slack channel\n    :target: https://app.slack.com/client/T040HKJE3/CR1K8N2KA\n\n.. |commits-since| image:: https://img.shields.io/github/commits-since/zyfra/ebonite/v0.7.0.svg\n    :alt: Commits since latest release\n    :target: https://github.com/zyfra/ebonite/compare/v0.7.0...dev\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/ebonite.svg\n    :alt: PyPI Wheel\n    :target: https://pypi.org/project/ebonite\n\n.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/ebonite.svg\n    :alt: Supported versions\n    :target: https://pypi.org/project/ebonite\n\n.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/ebonite.svg\n    :alt: Supported implementations\n    :target: https://pypi.org/project/ebonite\n\n\n.. end-badges\n\n\nEbonite is a machine learning lifecycle framework.\nIt allows you to persist your models and reproduce them (as services or in general).\n\nInstallation\n============\n\n::\n\n    pip install ebonite\n\nQuickstart\n=============\n\nBefore you start with Ebonite you need to have your model.\nThis could be a model from your favorite library (list of supported libraries is below) or\njust a custom Python function working with typical machine learning data.\n\n.. code-block:: python\n\n  import numpy as np\n  def clf(data):\n    return (np.sum(a, axis=-1) \u003e 1).astype(np.int32)\n\nMoreover, your custom function can wrap a model from some library.\nThis gives you flexibility to use not only pure ML models but rule-based ones (e.g., as a service stub at project start)\nand hybrid (ML with pre/postprocessing) ones which are often applied to solve real world problems.\n\nWhen a model is prepared you should create an Ebonite client.\n\n.. code-block:: python\n\n  from ebonite import Ebonite\n  ebnt = Ebonite.local()\n\nThen create a task and push your model object with some sample data.\nSample data is required for Ebonite to determine structure of inputs and outputs for your model.\n\n.. code-block:: python\n\n   task = ebnt.get_or_create_task('my_project', 'my_task')\n   model = task.create_and_push_model(clf, test_x, 'my_clf')\n\nYou are awesome! Now your model is safely persisted in a repository.\n\nLater on in other Python process you can load your model from this repository and do some wonderful stuff with it,\ne.g., create a Docker image named `my_service` with an HTTP service wrapping your model.\n\n.. code-block:: python\n\n  from ebonite import Ebonite\n  ebnt = Ebonite.local()\n  task = ebnt.get_or_create_task('my_project', 'my_task')\n  model = client.get_model('my_clf', task)\n  client.build_image('my_service', model)\n\nCheck out examples (in `examples \u003cexamples/\u003e`_  directory) and documentation to learn more.\n\n\nDocumentation\n=============\n... is available `here \u003chttps://ebonite.readthedocs.io/en/latest/\u003e`_\n\nExamples\n========\n... are available in this `folder \u003c/examples/\u003e`_.\nHere are some of them:\n\n* `Jupyter Notebook guide \u003c/examples/notebook_tutorial/ebonite_tutorial.ipynb\u003e`_\n* `Scikit-learn guide \u003c/examples/sklearn_model/\u003e`_\n* `TensorFlow 2.0 \u003c/examples/tensorflow_v2_example/\u003e`_\n* etc.\n\nSupported libraries and repositories\n====================================\n\n* Models\n\n  * your arbitrary Python function\n\n  * scikit-learn\n\n  * TensorFlow (1.x and 2.x)\n\n  * XGBoost\n\n  * LightGBM\n\n  * PyTorch\n\n  * CatBoost\n\n* Model input / output data\n\n  * NumPy\n\n  * pandas\n\n  * images\n\n* Model repositories\n\n  * in-memory\n\n  * local filesystem\n\n  * SQLAlchemy\n\n  * Amazon S3\n\n* Serving\n\n  * Flask\n\n  * aiohttp\n\nCreate an issue if you need support for something other than that!\n\n\nContributing\n============\n\nRead `this \u003cCONTRIBUTING.rst\u003e`_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzyfra%2Febonite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzyfra%2Febonite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzyfra%2Febonite/lists"}