O que é o Ray no Azure Databricks?

Ray é uma estrutura de código aberto para escalar aplicativos Python. Inclui bibliotecas específicas para cargas de trabalho de IA, tornando-o especialmente adequado para o desenvolvimento de aplicações de IA. O Ray on Azure Databricks permite executar aplicativos Ray enquanto obtém todos os benefícios e recursos da plataforma do Azure Databricks.

Com o Ray 2.3.0 e superior, você pode criar clusters Ray e executar aplicativos Ray em clusters Apache Spark com o Azure Databricks.

Para obter informações sobre como começar a usar o aprendizado de máquina no Ray, incluindo tutoriais e exemplos, consulte a documentação do Ray. Para obter mais informações sobre a integração do Ray e do Apache Spark, consulte a documentação da API do Ray on Spark.

Veja os outros artigos nesta seção.

Qual é Ray?

O Ray simplifica os sistemas distribuídos fornecendo primitivos Python básicos para criar aplicativos distribuídos do zero. Para desenvolvedores Python novos em sistemas distribuídos, ele oferece a mesma facilidade de uso que o Python padrão ao gerenciar orquestração, agendamento e tolerância a falhas.

Ray e Apache Spark são estruturas complementares. Ray se destaca no paralelismo lógico, lidando com tarefas dinâmicas e de computação intensiva, como aprendizado de máquina e aprendizado de reforço. O Apache Spark é especializado em paralelismo de dados, processando eficientemente grandes conjuntos de dados para tarefas como ETL e análise de dados. Juntos, eles fornecem uma combinação poderosa para processamento de dados e computação complexa.

Por que executar o Ray no Azure Databricks?

Executar o Ray no Azure Databricks permite que você aproveite a amplitude do ecossistema do Azure Databricks, aprimorando o processamento de dados e fluxos de trabalho de aprendizado de máquina com serviços e integrações que não estão disponíveis no Ray de código aberto. Os benefícios de executar o Ray no Azure Databricks incluem:

  • Plataforma unificada: o Azure Databricks fornece uma plataforma unificada onde você pode executar aplicativos Ray ao lado do Apache Spark. Essa integração suporta operações ETL de dados perfeitas, transferência de dados eficiente e computação paralela poderosa dentro do mesmo ambiente de computação.
  • Governança e controle: Obtenha os benefícios do rastreamento de linhagem, controle de versão de dados e controle de acesso com o Unity Catalog para todos os seus ativos de dados, arquivos, modelos e muito mais, garantindo conformidade e segurança.
  • Gerenciamento de infraestrutura: utilize ferramentas de infraestrutura como o Azure Databricks Terraform Provider e o Azure Databricks Asset Bundles para gerenciar seus clusters e trabalhos, garantindo operações simplificadas e escalabilidade.
  • Clusters Ray gerenciados: Os clusters Ray são gerenciados no mesmo ambiente de execução que um cluster Apache Spark em execução. Isso garante escalabilidade, confiabilidade e facilidade de uso sem a necessidade de configuração de infraestrutura complexa.
  • Atendimento e monitoramento de modelos: conecte modelos treinados com o Ray Train ao Mosaic AI Model Serving para implantações de alta disponibilidade e baixa latência. Além disso, use o Lakehouse Monitoring para acompanhar a qualidade e o desvio da previsão do modelo, garantindo um desempenho consistente.
  • Desenvolvimento de ML aprimorado: integre-se ao serviço Azure Databricks MLflow totalmente gerenciado para acompanhar o desenvolvimento do modelo, facilitando o gerenciamento de experimentos e a reprodutibilidade em seus aplicativos Ray.
  • Fluxos de trabalho automatizados: use o Databricks Jobs para automatizar seus processos, criando pipelines prontos para produção que simplificam suas operações e reduzem a intervenção manual.
  • Gerenciamento e colaboração de código: gerencie seu código de forma eficiente com as pastas Git do Azure Databricks, permitindo a integração perfeita do Git para controle de versão e desenvolvimento colaborativo para o código do aplicativo Ray.
  • Acesso eficiente a dados: conecte aplicativos Ray ao Delta Lake, aproveitando o amplo ecossistema de integrações de dados do Azure Databricks para estender os recursos do Ray a uma gama mais ampla de aplicativos e saídas.

Ao executar o Ray no Azure Databricks, você obtém acesso a um ecossistema integrado que aprimora seu processamento de dados, aprendizado de máquina e fluxos de trabalho operacionais.

Casos de uso - aprendizado de máquina e muito mais

O Ray é uma ferramenta versátil que estende as capacidades do Python para além das limitações das operações do DataFrame, tornando-o ideal para algoritmos distribuídos altamente personalizados e especializados.

Machine learning e aprendizagem profunda

Aproveite as bibliotecas de aprendizado de máquina da Ray para aprimorar seus fluxos de trabalho de ML:

  • Ajuste de hiperparâmetros: otimize o desempenho do modelo com o Ray Tune para uma pesquisa de hiperparâmetros de desempenho e escalável.
  • Treinamento de aprendizado profundo distribuído: dimensione modelos de aprendizado profundo em vários nós com suporte para estruturas populares como PyTorch, TensorFlow, HuggingFace e Keras. Ideal para modelos de treinamento para visão computacional ou modelos de linguagem grande (LLMs).
  • Aprendizado de máquina tradicional: use o Ray para distribuir treinamento, avaliação e inferência em lote para modelos tradicionais de ML criados com bibliotecas populares, como scikit-learn ou XGBoost.

Computação de alto desempenho (HPC)

O Ray se destaca na distribuição de cargas de trabalho de HPC, tornando-o adequado para:

  • Cálculos matemáticos: Execute cálculos complexos em campos como física, genômica ou finanças usando o Ray Core para processamento paralelo eficiente.
  • Previsão de séries temporais: dimensione seus modelos de previsão, executando estimativas simultaneamente com pacotes de previsão, como Prophet ou ARIMA.

Processamento de dados e engenharia de recursos

Ray também pode lidar com várias tarefas de processamento de dados:

  • Recursos computados: Tarefas complexas de engenharia de recursos com uso intensivo de computação podem se beneficiar da arquitetura de computação distribuída do Ray.
  • Processamento de áudio, imagem e vídeo: distribua e acelere o processamento de dados multimídia, tornando-o ideal para aplicações em reconhecimento de fala, classificação de imagem e análise de vídeo.

Limitações

  • O Ray on Apache Spark é suportado para o modo de acesso de usuário único (atribuído), sem modo de acesso compartilhado de isolamento e apenas clusters de trabalhos. Um cluster Ray não pode ser iniciado em clusters usando tempos de execução baseados em servidor.
  • Evite executar %pip para instalar pacotes em um cluster Ray em execução, pois ele desligará o cluster. Em vez disso, instale bibliotecas antes de inicializar o cluster.
  • O uso de integrações que substituem a configuração pode fazer com que o cluster Ray ray.util.spark.setup_ray_cluster se torne instável. Evite a assinatura excessiva de recursos de cluster Ray em aplicativos de terceiros 3rd.
  • Se você encontrar erros como ncclInternalError: Internal check failed, isso indica um problema com a comunicação de rede entre GPUs em seu cluster. Para resolver esse erro, adicione o seguinte trecho no código de treinamento para usar a interface de rede primária.
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"