? ♀️Runhouse?
? Bem -vindo para casa!
O Runehouse permite o desenvolvimento rápido e econômico do aprendizado de máquina em pesquisa e produção. Ele permite que você envie funções e classes do Python para qualquer uma de sua própria infraestrutura de computação em nuvem e as chame ansiosamente como se fossem locais. Isso significa:
- Você pode executar e depurar nativamente seu código em GPUs remotas ou outras infraversas poderosas, como Ray, Spark ou Kubernetes, do seu laptop. O código do seu aplicativo é executado como AS-Is em CI/CD ou produção, ainda enviando trabalho para infra remoto.
- Seu aplicativo, incluindo as etapas de infraestrutura, é capturado em código de uma maneira que elimina o Gruntwork Manual e é exatamente reproduzível em toda a sua equipe e em pesquisa e produção.
- Sua flexibilidade para escalar e otimizar o custo é incomparável, com as equipes frequentemente vendo economia de custos de ~ 50%.
Orquestrar em clusters, regiões ou nuvens é trivial, assim como a lógica complexa, como escala, tolerância a falhas ou fluxos de trabalho em várias etapas.
Para que serve o RuNounhe?
- Quando a pesquisa para produção é lenta e dolorosa, tanto devido à falta de dados/ambientes de pesquisa e produção e à falta de depuração de pipelines de orquestres.
- Se as equipes precisarem de uma maneira infra-irregular de executar o Python para executar de maneira flexível um único fluxo de trabalho em computação heterogênea, até mesmo em vários fornecedores de nuvem.
- Terminando a frustração nas plataformas em uma caixa, como sagemaker ou vértice, e passando para uma solução mais flexível para desenvolver e implantar o código ML.
- A crescente maturidade do ML, à medida que as organizações passam de projetos únicos de ML para o volante ML em escala.
Destaques:
- Despachar funções, classes e dados do Python para infra instantaneamente e chamá -las ansiosamente como se fossem locais. A implantação/reimplementação é quase instantânea e os logs são transmitidos de volta, tornando a iteração extremamente rápida.
- ? Sem DSL, Decoradores, YAML, CLI Encantations ou Boilerplate. Apenas seu próprio python regular, implantável para qualquer lugar que você administre o Python.
- ? ? Nenhum processamento especial de embalagem ou implantação é necessário; O código de pesquisa e produção é idêntico. Ligue para as funções de implantação do RUNHOAME de CI/CD, orquestradores ou aplicativos como um micro-serviço.
- ? ? BYO-Infra com apoio extenso e crescente-Ray, Kubernetes, AWS, GCP, Azure, Local, On-Prem e muito mais.
- reprodutibilidade e portabilidade extrema. Não há bloqueio, porque quando você deseja mudar, dimensionar ou escolher os preços mais baratos, a mudança de infra-que é tão fácil quanto alterar 1 linha especificando um cluster diferente.
- ? ♀️ Compartilhe funções ou classes Python como serviços robustos, incluindo HTTPs, Auth, Observabilidade, Escala, domínios personalizados, segredos, versões e muito mais.
- ? ? Suportar fluxos de trabalho ou serviços complexos e lógica avançada, pois seus componentes são desbotados e os infravermelhos/módulos são interativos com o código.
A API Runehouse é simples. Envie seus módulos (funções e classes) em ambientes (processos de trabalhador) em infra -computação, assim:
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 ()) Com a estrutura simples acima, você pode construir, chamar e compartilhar:
- Primitivos de IA : pré-processamento, treinamento, ajuste fino, avaliação, inferência
- Serviços de ordem superior : inferência de várias etapas, fluxos de trabalho E2E, manoplas de avaliação, HPO
- ? Endpoints da UAT : pontos de extremidade instantâneos para as equipes clientes testarem e integrarem
- ? Utilitários de melhor prática : ofuscação PII, moderação de conteúdo, aumento de dados
? Aste Monitoramento de Infra
Você pode desbloquear os recursos exclusivos de observabilidade e compartilhamento com o RuNhouse Den, um produto complementar a este repositório.
Depois de enviar uma função ou classe para computação remota, o RuNhouse permite persistir e compartilhá -la como um serviço, transformando atividades redundantes de IA em componentes modulares comuns em sua equipe ou empresa.
- Isso torna o recurso compartilhado observável. Com Den, você pode ver com que frequência um recurso foi chamado (e por quem), e qual era a utilização da GPU da caixa em que estava.
- Isso melhora o custo - pense em 10 ml de dutos e pesquisadores chamando o mesmo serviço de inferência de pré -processamento, treinamento, avaliação ou lote compartilhado, em vez de alocar seus próprios recursos de computação
- Isso melhora a velocidade e a reprodutibilidade. Evite implantar código um pouco diferente por pipeline e implante os resultados de um método aprimorado para todos uma vez publicados.
Faça login de qualquer lugar para salvar, compartilhar e carregar recursos e observar o uso, toras e calcular a utilização em um único painel de vidro:
ou de Python:
import runhouse as rh
rh . login ()
Estendendo o exemplo acima para compartilhar e carregar nosso aplicativo 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 ()
Compute suportado infra
Entre em contato (primeiro nome em run.house) se você não vê sua computação favorita aqui.
- Local - suportado
- Caixa única - suportada
- Cluster de raio - suportado
- Kubernetes - suportado
- Amazon Web Services (AWS)
- EC2 - suportado
- Eks - suportado
- Lambda - Alpha
- Plataforma do Google Cloud (GCP)
- GCE - Apoiado
- GKE - Apoiado
- Microsoft Azure
- VMS - suportado
- AKS - suportado
- LABDA LABS - Apoiado
- Laboratórios modais - planejado
- Slurm - Exploratório
? ? Saber mais
? Introdução : instalação, configuração e um passo a passo rápido.
DOCs : Referências detalhadas da API, exemplos básicos de API e passo a passo, tutoriais de ponta a ponta e visão geral da arquitetura de alto nível.
? Blog : mergulhos profundos em recursos de runhouse, casos de uso e o futuro da IA Infra.
? Discord : junte -se à nossa comunidade para fazer perguntas, compartilhar idéias e obter ajuda.
? Twitter : Siga -nos para atualizações e anúncios.
? ♂️ Obter ajuda
Envie -nos na discórdia, envie um email (primeiro nome em run.house) ou crie um problema.
? ♀️ Contribuindo
Congratulamo -nos com contribuições! Por favor, verifique contribuindo.