? ♀️Runhouse?
? Bienvenue à la maison!
Runhouse permet le développement rapide et rentable de l'apprentissage automatique à travers la recherche et la production. Il vous permet d'envoyer des fonctions et des classes Python à l'une de vos propres infrastructures de calcul cloud, et de les appeler avec impatience comme si elles étaient locales. Cela signifie:
- Vous pouvez exécuter et déboguer notre code sur des GPU distants ou d'autres infra puissants, comme Ray, Spark ou Kubernetes, à partir de votre ordinateur portable. Votre code d'application s'exécute ensuite en CI / CD ou en production, en répartissant toujours des travaux vers une infra distante.
- Votre application, y compris les étapes de l'infrastructure, est capturée dans le code d'une manière qui élimine les grognements manuels et est exactement reproductible dans votre équipe et dans la recherche et la production.
- Votre flexibilité à l'échelle et à l'optimisation des coûts est inégalée, les équipes voyant souvent des économies de coûts d'environ 50%.
L'orchestration entre les grappes, les régions ou les nuages est trivial, tout comme la logique complexe comme la mise à l'échelle, la tolérance aux pannes ou les flux de travail en plusieurs étapes.
À quoi sert Runhouse?
- Lorsque la recherche à la production est lente et douloureuse, à la fois en raison des données / environnements / environnements de production incompatibles et des pipelines orchestrateurs.
- Si les équipes ont besoin d'un moyen infrarouge d'exécuter Python pour exécuter de manière flexible un seul flux de travail sur un calcul hétérogène, même en fonctionnant sur plusieurs fournisseurs de cloud.
- Mettre fin à la frustration des plates-formes dans une boîte comme Sagemaker ou Vertex, et passer à une solution plus flexible pour développer et déployer du code ML.
- La maturité de la ML croissante, alors que les organisations passent des projets de ML ponctuels au volant ML à l'échelle.
Points forts:
- Déposez instantanément les fonctions Python, les classes et les données à distance à distance, et appelez-les avec impatience comme s'ils étaient locaux. Le déploiement / le redéploiement est presque instantané et les journaux sont diffusés, ce qui rend l'itération extrêmement rapide.
- ? Pas de DSL, de décorateurs, de YAML, d'incantations CLI ou de chauffeur. Juste votre propre Python ordinaire, déployable à partout où vous exécutez Python.
- ? ? Aucun traitement d'emballage ou de déploiement spécial n'est nécessaire; La recherche et le code de production sont identiques. Appelez les fonctions déployées par le Runhouse à partir de CI / CD, d'orchestrateurs ou d'applications comme un micro-service.
- ? ? BYO-INFRA avec un soutien étendu et croissant - Ray, Kubernetes, AWS, GCP, Azure, local, sur site, et plus encore.
- ? Reproductibilité extrême et portabilité. Il n'y a pas de verrouillage, car lorsque vous souhaitez déplacer, mettre à l'échelle ou choisir le prix le moins cher, le changement d'infra est aussi simple que le changement de 1 ligne spécifiant un cluster différent.
- ? ♀️ Partagez des fonctions ou des classes Python en tant que services robustes, y compris HTTPS, AUTH, observabilité, mise à l'échelle, domaines personnalisés, secrets, versioning, etc.
- ? ? Prise en charge des workflows ou des services complexes et une logique avancée car vos composants sont découplés et les modules infra / sont interactables avec le code.
L'API Runhouse est simple. Envoyez vos modules (fonctions et classes) dans des environnements (processus de travail) sur calcul infra , comme ceci:
import runhouse as rh
from diffusers import StableDiffusionPipeline
def sd_generate ( prompt , ** inference_kwargs ):
model = StableDiffusionPipeline . from_pretrained ( "stabilityai/stable-diffusion-2-base" ). to ( "cuda" )
return model ( prompt , ** inference_kwargs ). images
if __name__ == "__main__" :
img = rh . Image ( "sd_image" ). install_packages ([ "torch" , "transformers" , "diffusers" ])
gpu = rh . cluster ( name = "rh-a10x" , instance_type = "A10G:1" , provider = "aws" , image = img ). up_if_not ()
# Deploy the function and environment (syncing over local code changes and installing dependencies)
remote_sd_generate = rh . function ( sd_generate ). to ( gpu )
# This call is actually an HTTP request to the app running on the remote server
imgs = remote_sd_generate ( "A hot dog made out of matcha." )
imgs [ 0 ]. show ()
# You can also call it over HTTP directly, e.g. from other machines or languages
print ( remote_sd_generate . endpoint ()) Avec la structure simple ci-dessus, vous pouvez construire, appeler et partager:
- Primitives de l'IA : prétraitement, formation, réglage fin, évaluation, inférence
- Services d'ordre supérieur : inférence en plusieurs étapes, flux de travail E2E, gantelets d'évaluation, HPO
- ? Points de terminaison UAT : points de terminaison instantanés pour que les équipes clients puissent tester et intégrer
- ? Utilitaires des meilleures pratiques : obscurcissement PII, modération du contenu, augmentation des données
? Çons surveillance infra, partage des ressources et versioning avec Runhouse Den
Vous pouvez débloquer une observabilité et un partage de fonctionnalités uniques avec Runhouse Den, un produit complémentaire à ce dépôt.
Après avoir envoyé une fonction ou une classe à un calcul à distance, Runhouse vous permet de persister et de le partager en tant que service, transformant les activités AI autrement redondantes en composants modulaires courants dans votre équipe ou votre entreprise.
- Cela rend la ressource partagée observable. Avec Den, vous pouvez voir à quelle fréquence une ressource a été appelée (et par qui), et quelle était l'utilisation du GPU de la boîte.
- Cela améliore le coût - pensez à 10 pipelines et chercheurs et chercheurs appelant le même service de prétraitement, de formation, d'évaluation ou de lot
- Cela améliore la vitesse et la reproductibilité. Évitez de déployer du code légèrement différent par pipeline et déployez les résultats d'une méthode améliorée à tous une fois publié.
Connectez-vous de n'importe où pour économiser, partager et charger les ressources et observer l'utilisation, les journaux et calculer l'utilisation sur un seul vitrage:
ou de Python:
import runhouse as rh
rh . login ()
Extension de l'exemple ci-dessus pour partager et charger notre application via Den:
remote_sd_generate . share ([ "[email protected]" ])
# The service stub can now be reloaded from anywhere, always at yours and your collaborators' fingertips
# Notice this code doesn't need to change if you update, move, or scale the service
remote_sd_generate = rh . function ( "/your_username/sd_generate" )
imgs = remote_sd_generate ( "More matcha hotdogs." )
imgs [ 0 ]. show ()
Soupchée à Calculer infra
Veuillez contacter (prénom sur run.house) si vous ne voyez pas votre calcul préféré ici.
- Local - soutenu
- Boîte unique - prise en charge
- Cluster de rayons - pris en charge
- Kubernetes - pris en charge
- Amazon Web Services (AWS)
- EC2 - soutenu
- EKS - soutenu
- Lambda - alpha
- Google Cloud Platform (GCP)
- GCE - soutenu
- GKE - soutenu
- Microsoft Azure
- VMS - SUPPORTÉ
- AKS - soutenu
- Lambda Labs - Soutenu
- Modal Labs - planifié
- Slurm - exploratoire
? ? Apprendre encore plus
? Partage : installation, configuration et procédure pas à pas rapide.
DOCS : références API détaillées, exemples de base d'API et procédures pas à pas, tutoriels de bout en bout et aperçu de l'architecture de haut niveau.
? Blog : des plongées profondes dans les fonctionnalités de Runhouse, les cas d'utilisation et l'avenir de l'IA Infra.
? Discord : Rejoignez notre communauté pour poser des questions, partager des idées et obtenir de l'aide.
? Twitter : Suivez-nous pour les mises à jour et les annonces.
? ️ Obtenir de l'aide
Envoyez-nous un message sur Discord, envoyez-nous un e-mail (prénom sur run.house), ou créez un problème.
? ♀️ Contribution
Nous accueillons les contributions! Veuillez consulter la contribution.