Ray (Framework / Conceito)
Compartilhado por um usuário do Flashcards.gg · gerado com IA · Denunciar este conjunto
Estudo sobre o framework Ray para computação distribuída e escalabilidade de IA em Python.
Toque no cartão para virar
Cartões · 52
- O que é o Ray?
- Framework de código aberto para computação distribuída em Python, projetado para escalar cargas de IA e machine learning.
- Qual é o principal objetivo do Ray?
- Simplificar a transição de código Python local para execução paralela e distribuída em clusters, sem complexidade de infraestrutura.
- Ray Core
- Camada base que fornece primitivas simples (tasks, actors, objetos) para paralelização e orquestração de código arbitrário.
- Ray Task
- Função Python assíncrona e sem estado (stateless) executada em um processo de worker independente no cluster.
- Como definir uma Ray Task?
- Decorando uma função Python padrão com @ray.remote e chamando-a com .remote().
- Ray Actor
- Instância de classe com estado (stateful) executada em seu próprio worker dedicado, mantendo variáveis internas.
- Como definir um Ray Actor?
- Decorando uma classe Python com @ray.remote e instanciando-a com MinhaClasse.remote().
- Object Store (Plasma)
- Armazém de objetos em memória compartilhada por nós, permitindo leitura rápida e cópia zero (zero-copy) entre processos locais.
- ObjectRef
- Identificador de referência ou ponteiro para um valor futuro mantido no Object Store após a invocação de uma task.
- ray.get()
- Função bloqueante usada para recuperar o valor real por trás de um ou mais ObjectRefs.
- ray.put()
- Função que armazena explicitamente um objeto Python no Object Store compartilhado e retorna seu ObjectRef.
- ray.wait()
- Função que aguarda a conclusão de um subconjunto de ObjectRefs, permitindo processar resultados à medida que ficam prontos.
- ray.init()
- Inicializa o runtime do Ray, criando um cluster local de nós se nenhum endereço de cluster existente for fornecido.
- ray.shutdown()
- Encerra a conexão com o cluster Ray e finaliza os processos de background gerenciados pelo runtime.
- Head Node (Nó Mestre)
- Nó principal do cluster que gerencia o estado global, o agendamento de recursos e o painel de monitoramento (dashboard).
- Worker Node (Nó Trabalhador)
- Nó que executa tasks e actors atribuídos pelo scheduler, contendo instâncias do Raylet e Object Store.
- Raylet
- Processo de infraestrutura local em cada nó, responsável pelo agendamento de tarefas e gerenciamento de memória compartilhada.
- Global Control Store (GCS)
- Serviço central de metadados no head node que armazena linhagem de objetos, localização de atores e status do cluster.
- Zero-Copy Deserialization
- Capacidade de múltiplos workers lerem estruturas de dados do Apache Arrow no Object Store sem alocar memória duplicada.
- Ray Dashboard
- Interface web integrada para monitoramento de nós, recursos de hardware, logs, atores ativos e erros em tempo real.
- Ray Data
- Biblioteca escalável para carregamento e pré-processamento de dados distribuídos para pipelines de treinamento de IA.
- Dataset (Ray Data)
- Coleção particionada e distribuída de registros em streaming com suporte para operações funcionais como map, filter e batch.
- Ray Train
- Módulo do ecossistema Ray projetado para treinamento distribuído com PyTorch, TensorFlow e outras bibliotecas de deep learning.
- Ray Tune
- Biblioteca de otimização de hiperparâmetros que implementa algoritmos de busca e parada antecipada com alta escalabilidade.
- Ray Serve
- Framework escalável para servir modelos de machine learning e pipelines de inferência por APIs HTTP ou gRPC.
- RLlib
- Biblioteca do Ray voltada para aprendizado por reforço (Reinforcement Learning), oferecendo algoritmos escaláveis de ponta.
- Placement Groups
- Mecanismo para reservar e agrupar recursos físicos para tasks ou actors seguindo estratégias de afinidade ou anti-afinidade.
- Estratégia STRICT_SPREAD
- Regra de placement group que força cada task ou actor a ser alocado em um nó físico completamente diferente.
- Estratégia STRICT_PACK
- Regra de placement group que exige que todos os recursos e processos sejam alocados rigorosamente no mesmo nó físico.
- Estratégia PACK
- Estratégia que tenta empacotar os recursos no mesmo nó, mas permite outros nós se o primeiro estiver cheio.
- Estratégia SPREAD
- Estratégia que tenta espalhar a carga entre múltiplos nós físicos para balanceamento de carga ou tolerância a falhas.
- Autoscaler do Ray
- Componente que provisiona dinamicamente novas instâncias em nuvem quando a demanda por recursos cresce, e encerra nós ociosos.
- num_cpus em @ray.remote
- Parâmetro que define a quantidade de núcleos de CPU lógicos que o escalonador deve alocar para a task ou actor.
- num_gpus em @ray.remote
- Parâmetro que reserva explicitamente GPUs físicas ou fracionárias para execução exclusiva do processo.
- Fractional GPUs
- Capacidade do Ray de compartilhar uma única GPU física entre múltiplos actors definindo frações como num_gpus=0.5.
- Custom Resources
- Recursos definidos pelo usuário (ex: licenças de software, memórias especiais) controlados pelo escalonador do Ray.
- Dynamic Task Graphs
- Capacidade do Ray de gerar tarefas secundárias a partir de tarefas em execução, sem necessidade de um grafo estático prévio.
- Fault Tolerance em Tasks
- Capacidade de reexecutar automaticamente tasks idênticas caso um nó falhe, recorrendo à linhagem dos dados.
- max_retries
- Parâmetro em tasks remotas que determina quantas tentativas automáticas de repetição ocorrem em caso de falha de execução.
- Actor Checkpointing
- Mecanismo para salvar o estado de um ator periodicamente, permitindo recuperação rápida se o processo for interrompido.
- KubeRay
- Operador oficial de Kubernetes projetado para implantar, gerenciar e escalar clusters Ray de maneira declarativa nativa.
- Ray Client
- Mecanismo que permite a um script local conectar-se transparentemente a um cluster Ray remoto via rede.
- Spilling de Objetos
- Recurso que move objetos da memória compartilhada para armazenamento externo (disco/S3) quando a RAM está cheia.
- Nested Tasks
- Chamada de tasks remotas a partir de dentro de outra task remota, viabilizada pelo grafo dinâmico do Ray.
- Deployment (Ray Serve)
- Unidade autônoma de código em Ray Serve que encapsula um modelo ou lógica de serviço com regras próprias de réplicas e recursos.
- Pipeline Parallelism com Ray Train
- Divisão de camadas de grandes redes neurais entre múltiplos dispositivos e workers sequenciados no cluster.
- Data Parallelism com Ray Train
- Distribuição de batches de dados distintos para múltiplas cópias do modelo computando gradientes paralelamente.
- Search Algorithms (Ray Tune)
- Algoritmos como Bayesian Optimization, Optuna ou HyperOpt integrados para explorar eficientemente espaços de hiperparâmetros.
- Schedulers de Parada (Ray Tune)
- Mecanismos como ASHA e HyperBand que interrompem antecipadamente experimentos com baixo desempenho, economizando GPU.
- Ray AIR (AI Runtime)
- Conjunto unificado de bibliotecas de aplicação de alto nível do Ray integrando dados, treino, sintonia e inferência.
- Diferença entre Task e Actor no Ray
- Tasks são efêmeras e sem estado para chamadas pontuais; Actors persistem na memória e preservam estado interno contínuo.
- Vantagem do Ray sobre o Spark
- O Ray suporta cargas de trabalho de baixa latência, grafos dinâmicos e estado persistente (actors), ideais para deep learning e RL.