Compartilhar via


Iniciar um cluster Ray no Azure Databricks

O Azure Databricks simplifica o processo de iniciar um cluster Ray manipulando a configuração de cluster e de trabalho da mesma maneira que faz com qualquer trabalho do Apache Spark. Isso ocorre porque o cluster Ray é realmente iniciado na parte superior do cluster do Apache Spark gerenciado.

Executar o Ray em um computador local

import ray

ray.init()

Executar o Ray no Azure Databricks

from ray.util.spark import setup_ray_cluster
import ray

# If the cluster has four workers with 8 CPUs each as an example
setup_ray_cluster(num_worker_nodes=4, num_cpus_per_worker=8)

# Pass any custom configuration to ray.init
ray.init(ignore_reinit_error=True)

Essa abordagem funciona em qualquer escala de cluster, de alguns até centenas de nós. Os clusters Ray no Azure Databricks também dão suporte ao dimensionamento automático.

Depois de criar o cluster Ray, você poderá executar qualquer código do aplicativo Ray em um notebook do Azure Databricks.

Importante

O Databricks recomenda a instalação de todas as bibliotecas necessárias para seu aplicativo com %pip install <your-library-dependency> para garantir que elas estejam disponíveis para o cluster e o aplicativo Ray adequadamente. Especificar dependências na chamada de função init do Ray instala as dependências em um local inacessível aos nós de trabalho do Apache Spark, o que resulta em incompatibilidades de versão e erros de importação.

Por exemplo, você pode executar um aplicativo Ray simples em um notebook do Azure Databricks da seguinte maneira:

import ray
import random
import time
from fractions import Fraction

ray.init()

@ray.remote
def pi4_sample(sample_count):
    """pi4_sample runs sample_count experiments, and returns the
    fraction of time it was inside the circle.
    """
    in_count = 0
    for i in range(sample_count):
        x = random.random()
        y = random.random()
        if x*x + y*y <= 1:
            in_count += 1
    return Fraction(in_count, sample_count)

SAMPLE_COUNT = 1000 * 1000
start = time.time()
future = pi4_sample.remote(sample_count=SAMPLE_COUNT)
pi4 = ray.get(future)
end = time.time()
dur = end - start
print(f'Running {SAMPLE_COUNT} tests took {dur} seconds')

pi = pi4 * 4
print(float(pi))

Desligar um cluster Ray

Os clusters Ray são desligados automaticamente sob as seguintes circunstâncias:

  • Desanexe seu notebook interativo do cluster do Azure Databricks.
  • Seu trabalho do Azure Databricks foi concluído.
  • O cluster do Azure Databricks é reiniciado ou encerrado.
  • Não há nenhuma atividade para o tempo ocioso especificado.

Para desligar um cluster Ray em execução no Azure Databricks, chame a API ray.utils.spark.shutdown_ray_cluster.

from ray.utils.spark import shutdown_ray_cluster
import ray

shutdown_ray_cluster()
ray.shutdown()

Próximas etapas