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.
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"
Veja os outros artigos nesta seção.