No project description provided
Project description
Sunray
Ray is a unified framework for scaling AI and Python applications. However, it falls short in offering friendly type hints, particularly when it comes to working with the Actor
.
To address this shortfall, sunray provides enhanced and more robust type hints.
install
pip install sunray
Lets't vs.
Round 1: Build an actor
sunray | ray |
---|---|
- sunray returns
Actor[Demo]
, but ray returnsObjectRef[Demo]
- ray mypy raise error
Type[Demo] has no attribute "remote"
Round 2: Get actor remote methods
sunray | ray |
---|---|
- sunray list all remote methods
- ray list nothing
Round 3: Actor remote method call
sunray | ray |
---|---|
- sunray correctly provided parameter hints.
- ray ...
Round 4: Annotate with Actor
sunray | ray |
---|---|
- with sunray, just annotate it with
Actor[Demo]
. - with ray, I don't known.
Round 5: Stream
sunray | ray |
---|---|
- sunray correctly identified that
stream
returns a generator. - ray still returns ObjectRef.
Round 6: Unpack result
sunray | ray |
---|---|
- sunray will auto unpack tuple result if options specify
unpack=True
. - ray need to specify how many return numbers, so you need to count it.
- ray mypy raise error 'RemoteFunctionNoArgs has no attribute "options"'.
Round 7: Get actor
sunray | ray |
---|---|
- sunray get_actor will return
ActorHandle
, and returnActor[Demo]
if you specify with generic type. - ray just return
Any
.
API
sunray
re-export all apis from ray.core
with friendly type hinting. In addition, sunray
provides ActorMixin
which is used to help creating more robust actors.
ActorMixin
ActorMixin
is a mixin, and provides a classmethod new_actor
import sunray
class Demo(
# Here to specify default actor options
sunray.ActorMixin, name="DemoActor", num_cpus=1, concurrency_groups={"g1": 1}
):
def __init__(self, init_v: int):
self.init_v = init_v
# annotate `add` is a remote_method
@sunray.remote_method
def add(self, v: int) -> int:
return self.init_v + v
# support directly call remote_method
@sunray.remote_method
def calculate(self, v: int) -> int:
return self.add(v)
# support specify remote method options
@sunray.remote_method(concurrency_group="g1")
async def sleep(self): ...
# construct the actor
actor = Demo.new_actor().remote(1)
# call remote method
ref = actor.methods.add.remote(1)
print(sunray.get(ref))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
sunray-0.1.0-py3-none-any.whl
(17.4 kB
view hashes)