Starta ett Ray-kluster på Azure Databricks
Azure Databricks förenklar processen med att starta ett Ray-kluster genom att hantera kluster och jobbkonfiguration på samma sätt som med alla Apache Spark-jobb. Det beror på att Ray-klustret faktiskt startas ovanpå det hanterade Apache Spark-klustret.
Köra Ray på en lokal dator
import ray
ray.init()
Köra Ray på 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)
Den här metoden fungerar i valfri klusterskala, från några till hundratals noder. Ray-kluster på Azure Databricks stöder även automatisk skalning.
När du har skapat Ray-klustret kan du köra valfri Ray-programkod i en Azure Databricks-notebook-fil.
Viktigt!
Databricks rekommenderar att du installerar alla nödvändiga bibliotek för ditt program med för att säkerställa att de är tillgängliga för ditt Ray-kluster och -program i enlighet med %pip install <your-library-dependency>
detta. Om du anger beroenden i ray init-funktionsanropet installeras beroendena på en plats som inte är tillgänglig för Apache Spark-arbetsnoderna, vilket resulterar i versionskompatibiliteter och importfel.
Du kan till exempel köra ett enkelt Ray-program i en Azure Databricks-notebook-fil på följande sätt:
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))
Stänga av ett Ray-kluster
Ray-kluster stängs automatiskt av under följande omständigheter:
- Du kopplar från den interaktiva notebook-filen från Azure Databricks-klustret.
- Ditt Azure Databricks-jobb har slutförts.
- Ditt Azure Databricks-kluster startas om eller avslutas.
- Det finns ingen aktivitet för den angivna inaktiva tiden.
Om du vill stänga av ett Ray-kluster som körs på Azure Databricks kan du anropa API:et ray.utils.spark.shutdown_ray_cluster
.
from ray.utils.spark import shutdown_ray_cluster
import ray
shutdown_ray_cluster()
ray.shutdown()
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för