Turn your ML infra 🧱 into an ML home 🏡
Runhouse demolishes research↔production and infra silos so ML Engineers, Researchers, and Data Scientists share a living, evolving ML stack.
Try it in 10 minutes on AWS, GCP, Azure, Lambda Labs, or on-prem
Get started
Runhouse is a unified interface into existing compute and data systems, built to reclaim the 50-75% of ML practitioners' time lost to debugging, adapting, or repackaging code for different environments.
Who is this for?
ML Engineers
Who want to be able to update and improve production services, pipelines, and artifacts with a Pythonic, debuggable devX
ML Researchers & Data Scientists
Who don't want to spend or wait 3-6 months translating and packaging their work for production
OSS Maintainers
Who want to improve the accessibility, reproducibility, and reach of their code, without having to build support or examples for every cloud or compute system
Run
•
house
Runhouse OSS is a unified interface into compute and data infra which is unopinionated, ergonomic, and powerful enough for fast experimentation, full-scale deployment, and everything in between.
Save 3-6 months of research-to-production time per project.
Runhouse Den is a sharing, lineage, and governance layer to make your ML stack multiplayer, visible, and manageable. No more rampant duplication, broken lineage, lost artifacts, and ownerless resources.
Uber, Shopify, and Spotify have all migrated to the 3rd gen ML platform. We built Runhouse so you can too, but incrementally and within your existing infra and tooling.
There’s really no migration.



Runhouse OSS works with your existing stack
inside your own infra,
wherever you run Python
How It Works
Send code and data to any infra,

and use them natively, from anywhere

Try It Yourself
Setup
Try it in a Colabcpu = rh.cluster("^rh-32-cpu")
gpu = rh.cluster("rh-a100", instance_type="A100:1", provider="cheapest")
Inference
Try it in a Colabinference_fn_gpu = rh.function(inference_fn).to(gpu, env=['./', 'torch'])
result = inference_fn_gpu(prompt='A hot dog made of matcha powder.')
result.show()
Training
Try it in a Colabgpu.install_packages([rh.git_package(git_url='https://github.com/huggingface/accelerate.git'), 'transformers', 'torch'])
gpu.run(['python accelerate/examples/nlp_example.py'])
Pipelining
# Create microservices for pipeline components, sending them to desired cluster to be run on
preproc_data = rh.function(fn=preproc_data).to(cpu, env=["datasets", "transformers"])
fine_tune = rh.function(fine_tune).to(gpu, env=["reqs:./"])
eval_model = rh.function(eval_model).to(gpu)
with rh.run(name="exp_20230612", path="~/rh/logs/exp_20230612"):
train_data, test_data = preproc_data(remote_raw_data) # runs on cpu
trained_model = fine_tune(pretrained, train_data) # runs on gpu
accuracy = eval_model(trained_model, test_data) # runs on gpu
The next generation of ML platforms will not have research-to-production silos, and will be automatically traced for lineage and governance.
Keep up with Runhouse features and announcements.