Easy remote function execution framework
Project description
EasyRemote
Why EasyRemote?
Are you tired of:
- Paying expensive cloud GPU fees for AI development?
- Struggling with complex deployment for demos?
- Looking for ways to share computing resources within your team?
EasyRemote lets you expose local computing resources (AI models, data processing functions) as remote services with just a few lines of code. All you need is a cheap VPS!
# It's as simple as this:
from easyremote import ComputeNode
# Initialize ComputeNode with VPS address and unique node ID
node = ComputeNode(
vps_address="your-vps-ip:8080",
node_id="basic-compute"
)
@node.register
def run_model(input_data):
return your_ai_model(input_data) # Executes on your local GPU
if __name__ == "__main__":
node.serve()
Features
- 🚀 Super Simple: Turn any function into a remote service with a single decorator
- 💰 Cost-Effective: Use your local GPU through an inexpensive VPS
- 🔒 Private & Secure: All computation stays on your local machine
- 🌐 Flexible Deployment: Perfect for demos, prototypes, and team collaboration
Quick Start
1. Installation
pip install easyremote
2. Set Up VPS (Gateway&&Call)
from easyremote import Server
app = FastAPI()
server = Server(port=8080)
@remote(node_id="basic-compute")
def add(a: int, b: int) -> int:
pass
3. Configure Local Node
from easyremote import ComputeNode
# Connect to your VPS
node = ComputeNode("your-vps-ip:8080")
# Define your remote functions
@node.register
def process_data(data):
return heavy_computation(data) # Runs locally
# Start serving
node.serve()
Advanced Usage
Async Support
@node.register(async_func=True)
async def async_process(data):
result = await complex_async_operation(data)
return result
Streaming Results
@node.register(stream=True)
def stream_results(data):
for chunk in process_large_dataset(data):
yield chunk
Real-world Examples
Check out our examples directory for:
- AI Model Serving
- Data Pipeline Processing
- Team Resource Sharing
- And more!
Architecture
Client -> VPS (Gateway) -> Local Compute Node
-> Local Compute Node
-> Local Compute Node
Performance
- Efficient binary protocol
- Support for large data transfer
- Automatic connection management
Roadmap
- Rewrite Distributed Network Using Go's Kitex Framework
- Multi-node clustering support
- Enhanced security features
- Web-based management UI
- More language SDKs
- Docker support
Contributing
We welcome contributions! Please see our Contributing Guide
License
Contact & Support
- Author: Silan Hu
- Email: silan.hu@u.nus.edu
- GitHub: Qingbolan
Acknowledgments
Special thanks to all contributors who have helped make EasyRemote better!
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easyremote-0.1.0.2.3.tar.gz.
File metadata
- Download URL: easyremote-0.1.0.2.3.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.8.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0be3bfc5136e46a0eb52b37505e44eab3def7c0612a1c502b47611621227bc6d
|
|
| MD5 |
df21b74f9bf568f5833e853282a1c12b
|
|
| BLAKE2b-256 |
456c4f102c2c735445af8a1969dd5d32d441daf4a1d2740a819250dda414a5ce
|
File details
Details for the file easyremote-0.1.0.2.3-py3-none-any.whl.
File metadata
- Download URL: easyremote-0.1.0.2.3-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.8.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3776e10114b492b41d00a7020649754a4d8478949a45e9d9f00836982cf84aa8
|
|
| MD5 |
caad4ca8021d80ff523e091079741ae4
|
|
| BLAKE2b-256 |
6a8626f703d24c77401a4f85527303880cedbfb0756a5bd9bbef2d68719cc6f5
|