v0.0.12
Highlights
- In-memory resources, an update to existing remote resource implementations (#78)
- includes new
rh.Module
resource, and resulting performance and feature improvements
- includes new
- Sagemaker Cluster (Alpha) (#89)
- facilitates easy access to existing or new SageMaker compute
In-memory Resources
As mentioned in the 0.0.11 Release Notes, we've redesigned how we handle remote resources, resulting in performance and feature improvements, as well as support for a new type of resource. Basic notes can be found below, or a more comprehensive technical overview can be found in our 0.0.12 blog post
rh.Module Resource
rh.Module represents a class that can be accessed and used remotely, including all its class methods and variables, and with out-of-the-box support for capabilities like streaming logs/results, async, queuing, etc
rh.module()
factory function for wrapping existing Python classesrh.Module
class that can be subclasses to write natively Runhouse-compatible classes
In-Python Object Pinning
Storing large objects, such as models, in Python memory can reduce time spent loading objects from disk or sending them over.
- more stable object pinning in Python memory
- intuitive
rh.here.get()
andrh.here.put()
APIs, whererh.here
returns the cluster it is called from
Performance Improvements
- Reduced process overhead and latency, by having each underlying Ray Actor live in it's own process rather than launching
Other resulting improvements
- Streaming support
- Increased logging support
- Async support
Sagemaker Cluster (Alpha)
Runhouse is integrating with SageMaker to make the SageMaker onboarding process more smooth, and removing the need to translate code through SageMaker specific estimators or APIs. This will be described in more detail in the 0.0.13 release, or check out the documentation in the meantime.
Build
- Remove s3fs dependency
- Upgrade to SkyPilot 0.0.4, to resolve Colab installation issues
BC Breaking
.remote()
now returns a remote object, rather than a string associated with the object/run. To get the contents of the result, useresult.fetch()