O que é o Ray no Azure Databricks?
Ray é uma estrutura de software livre para dimensionar aplicativos Python. Ele inclui bibliotecas específicas para cargas de trabalho de IA, tornando-se especialmente adequado para o desenvolvimento de aplicativos de IA. O Ray no Azure Databricks permite executar aplicativos Ray o contar com todos os benefícios e recursos da plataforma do Azure Databricks.
Com o Ray 2.3.0 e versões superiores, você pode criar clusters Ray e executar aplicativos Ray em clusters do 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 do API do Ray no Spark.
O que é o Ray?
O Ray simplifica os sistemas distribuídos fornecendo primitivos básicos do Python para criar aplicativos distribuídos do zero. Para desenvolvedores do Python que estão conhecendo sistemas distribuídos, ele oferece a mesma facilidade de uso que o Python padrão ao gerenciar a orquestração, o agendamento e a tolerância a falhas.
O Ray e o Apache Spark são estruturas complementares. O Ray se destaca no paralelismo lógico, lidando com tarefas dinâmicas e que fazem uso intensivo de computação, como aprendizado de máquina e aprendizado por reforço. O Apache Spark é especializado no paralelismo de dados, processando com eficiência 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 usar o Ray no Azure Databricks?
Executar o Ray no Azure Databricks permite aproveitar a amplitude do ecossistema do Azure Databricks, aprimorando o processamento de dados e os fluxos de trabalho de machine learning 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 na qual você pode executar aplicativos Ray junto com o Apache Spark. Essa integração dá suporte a operações de ETL de dados sem complicações, transferência eficiente de dados e computação paralela avançada no mesmo ambiente de computação.
- Governança e controle: obtenha os benefícios do controle de linhagem, controle de versão de dados e controle de acesso com o Catálogo do Unity 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 Provedor Terraform do Azure Databricks e os Pacotes de Ativos do Azure Databricks para gerenciar clusters e trabalhos, garantindo operações simplificadas e escalabilidade.
- Clusters Gerenciados do Ray: os clusters do Ray são gerenciados no mesmo ambiente de execução que um cluster do Apache Spark. Isso garante escalabilidade, confiabilidade e facilidade de uso sem a necessidade de configuração de infraestrutura complexa.
- Serviço e monitoramento de modelos: conecte modelos treinados com o Ray Train ao Model Serving do Mosaic AI para implantações de alta disponibilidade e baixa latência. Além disso, use o Lakehouse Monitoring para monitorar a qualidade e o descompasso da previsão do modelo, garantindo um desempenho consistente.
- Desenvolvimento aprimorado de ML: integre-se ao serviço totalmente gerenciado MLflow do Azure Databricks para acompanhar o desenvolvimento de modelos, facilitando o gerenciamento de experimentos e a reprodutibilidade em seus aplicativos Ray.
- Fluxos de trabalho automatizados: use trabalhos do Databricks para automatizar seus processos, criando pipelines prontos para produção que simplificam suas operações e reduzem a intervenção manual.
- Gerenciamento de código e colaboração: gerencie seu código com eficiência com pastas Git do Azure Databricks, permitindo a integração total do Git para controle de versão e desenvolvimento colaborativo para o código do aplicativo Ray.
- Acesso eficiente aos 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 o processamento de dados, o aprendizado de máquina e os fluxos de trabalho operacionais.
Casos de uso – aprendizado de máquina e muito mais
O Ray é uma ferramenta versátil que estende os recursos do Python para além das limitações das operações do DataFrame, tornando-o ideal para algoritmos distribuídos altamente personalizados e especializados.
Aprendizado de máquina e aprendizado profundo
Aproveite as bibliotecas de aprendizado de máquina do Ray para aprimorar seus fluxos de trabalho de ML:
- Ajuste de hiperparâmetro: otimize o desempenho do modelo com o Ray Tune para pesquisa de hiperparâmetro escalonável e de alto desempenho.
- 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 pesquisa visual computacional ou LLMs (modelos de linguagem grandes).
- Aprendizado de máquina tradicional: use o Ray para distribuir treinamento, avaliação e inferência em lotes para modelos de ML tradicionais criados com bibliotecas populares, como scikit-learn ou XGBoost.
HPC (computação de alto desempenho)
O Ray se destaca na distribuição de cargas de trabalho de HPC, tornando-se 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érie temporal: 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
O 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, sendo ideal para aplicações em reconhecimento de fala, classificação de imagem e análise de vídeo.
Limitações
- O Ray no Apache Spark é compatível com o modo de acesso de usuário único (atribuído), modo de acesso compartilhado sem isolamento e acesso apenas a clusters de trabalhos. Um cluster do Ray não pode ser iniciado em clusters usando runtimes baseados modelos sem servidor.
- Evite executar
%pip
para instalar pacotes em um cluster do 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 de
ray.util.spark.setup_ray_cluster
pode fazer com que o cluster do Ray fique instável. Evite muitas assinaturas de recursos de cluster do Ray em aplicativos de terceiros. - Se você se deparar com erros como
ncclInternalError: Internal check failed
, isso indica um problema com a comunicação de rede entre GPUs em seu cluster. Para resolver este erro, adicione o snippet a seguir no código de treinamento para usar o adaptador de rede primário.
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"
Confira os outros artigos desta seção.