Skip to main content

Scale your ML workers asynchronously across processes and machines

Project description

gibbs

Scale your ML workers asynchronously across processes and machines

GitHub release Test status Lint status Coverage status Docs licence

DescriptionInstallUsageFAQContribute
Documentation

Description

gibbs is a python package that helps you scale your ML workers (or any python code) across processes and machines, asynchronously.

gibbs is :

  • ⚡️ Highly performant
  • 🔀 Asynchronous
  • 🐥 Easy-to-use

Install

Install gibbs by running :

pip install gibbs

Usage

After defining your awesome model :

import time

class MyAwesomeModel:
    def __init__(self, wait_time=0.25):
        super().__init__()
        self.w = wait_time

    def __call__(self, x):
        time.sleep(self.w)
        return x**2

You can simply start a few workers serving the model :

from gibbs import Worker

for _ in range(4):
    Worker(MyAwesomeModel).start()

And send requests through the Hub :

from gibbs import Hub

hub = Hub()

# In an async function
await hub.request(34)

And that's it !


Make sure to check the documentation for a more detailed explanation.

Or you can run some examples from the examples/ folder.

FAQ

How gibbs works ?

gibbs simply run your model code in separate processes, and send requests to the right process to ensure requests are treated in parallel.

gibbs uses a modified form of the Paranoid Pirate Pattern from the zmq guide.

Why the name "gibbs" ?

Joshamee Gibbs is the devoted first mate of Captain Jack Sparrow.
Since we are using the Paranoid Pirate Pattern, we needed a pirate name !

Contribute

To contribute, install the package locally, create your own branch, add your code (and tests, and documentation), and open a PR !

Pre-commit hooks

Pre-commit hooks are set to check the code added whenever you commit something.

If you never ran the hooks before, install it with :

pre-commit install

Then you can just try to commit your code. If you code does not meet the quality required by linters, it will not be committed. You can just fix your code and try to commit again !


You can manually run the pre-commit hooks with :

pre-commit run --all-files

Tests

When you contribute, you need to make sure all the unit-tests pass. You should also add tests if necessary !

You can run the tests with :

pytest

Pre-commit hooks will not run the tests, but it will automatically update the coverage badge !

Documentation

The documentation should be kept up-to-date. You can visualize the documentation locally by running :

mkdocs serve

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gibbs-0.2.0.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

gibbs-0.2.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file gibbs-0.2.0.tar.gz.

File metadata

  • Download URL: gibbs-0.2.0.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for gibbs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8ea005c236fae74ab672f214fd396edf20694f921c1ce6691570f32289124fce
MD5 ac04010aba8077bf706b6bac39666754
BLAKE2b-256 a103a1408c4109273626a4031bbc0b833ae0eb1c70dcf0178fe61b0de710bf29

See more details on using hashes here.

File details

Details for the file gibbs-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: gibbs-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for gibbs-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c53b4b20591a643a7ea108cb2d90de0134c9708b4ed2a31b07276e489788656f
MD5 542495f029fa80c7d2f9ce04531524a5
BLAKE2b-256 d4e168670f2f96d907a90646c1eb322dba70bae33fec5d3ce0b09320cb0a51f5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page