Dela via


Vad är Ray på Azure Databricks?

Ray är ett ramverk med öppen källkod för skalning av Python-program. Den innehåller bibliotek som är specifika för AI-arbetsbelastningar, vilket gör det särskilt lämpligt för att utveckla AI-program. Med Ray på Azure Databricks kan du köra Ray-program samtidigt som du får alla plattformsfördelar och funktioner i Azure Databricks.

Med Ray 2.3.0 och senare kan du skapa Ray-kluster och köra Ray-program på Apache Spark-kluster med Azure Databricks.

Information om hur du kommer igång med maskininlärning på Ray, inklusive självstudier och exempel finns i Ray-dokumentationen. Mer information om Ray- och Apache Spark-integreringen finns i dokumentationen om Ray på Spark API.

Se de andra artiklarna i det här avsnittet.

Vad är Ray?

Ray förenklar distribuerade system genom att tillhandahålla grundläggande Python-primitiver för att skapa distribuerade program från grunden. För Python-utvecklare som är nya i distribuerade system erbjuder det samma användarvänlighet som Standard Python när du hanterar orkestrering, schemaläggning och feltolerans.

Ray och Apache Spark är kompletterande ramverk. Ray utmärker sig med logisk parallellitet, hantering av dynamiska, beräkningsintensiva uppgifter som maskininlärning och förstärkningsinlärning. Apache Spark är specialiserat på dataparallellitet och bearbetar effektivt stora datamängder för uppgifter som ETL och dataanalys. Tillsammans ger de en kraftfull kombination för både databearbetning och komplex beräkning.

Varför köra Ray på Azure Databricks?

Genom att köra Ray på Azure Databricks kan du utnyttja bredden i Azure Databricks-ekosystemet och förbättra arbetsflöden för databearbetning och maskininlärning med tjänster och integreringar som inte är tillgängliga i Ray med öppen källkod. Fördelarna med att köra Ray i Azure Databricks är:

  • Enhetlig plattform: Azure Databricks tillhandahåller en enhetlig plattform där du kan köra Ray-program tillsammans med Apache Spark. Den här integreringen stöder sömlösa data-ETL-åtgärder, effektiv dataöverföring och kraftfull parallell databehandling i samma beräkningsmiljö.
  • Styrning och kontroll: Få fördelarna med ursprungsspårning, dataversionshantering och åtkomstkontroll med Unity Catalog för alla dina datatillgångar, filer, modeller med mera, vilket säkerställer efterlevnad och säkerhet.
  • Infrastrukturhantering: Använda infrastrukturverktyg som Azure Databricks Terraform-providern och Azure Databricks-tillgångspaket för att hantera dina kluster och jobb, vilket säkerställer effektiva åtgärder och skalbarhet.
  • Hanterade Ray-kluster: Ray-kluster hanteras i samma körningsmiljö som ett Apache Spark-kluster som körs. Detta säkerställer skalbarhet, tillförlitlighet och användarvänlighet utan att behöva konfigurera komplex infrastruktur.
  • Modellservering och övervakning: Ansluta modeller som tränats med Ray Train till Mosaic AI Model Serving för distributioner med hög tillgänglighet och låg latens. Dessutom kan du använda Lakehouse Monitoring för att spåra modellens förutsägelsekvalitet och drift, vilket ger konsekventa prestanda.
  • Förbättrad ML-utveckling: Integrera med den fullständigt hanterade Azure Databricks MLflow-tjänsten för att spåra din modellutveckling, vilket underlättar experimenthantering och reproducerbarhet i dina Ray-program.
  • Automatiserade arbetsflöden: Använd Azure Databricks-arbetsflöden för att automatisera dina processer, skapa produktionsklara pipelines som effektiviserar din verksamhet och minskar manuella åtgärder.
  • Kodhantering och samarbete: Hantera koden effektivt med Azure Databricks Git-mappar, vilket möjliggör sömlös Git-integrering för versionskontroll och samarbetsutveckling för din Ray-programkod.
  • Effektiv dataåtkomst: Anslut Ray-program till Delta Lake och dra nytta av Azure Databricks breda ekosystem med dataintegreringar för att utöka Rays funktioner till ett bredare utbud av program och utdata.

Genom att köra Ray på Azure Databricks får du åtkomst till ett integrerat ekosystem som förbättrar databehandling, maskininlärning och arbetsflöden i drift.

Användningsfall – maskininlärning och senare

Ray är ett mångsidigt verktyg som utökar funktionerna i Python utöver begränsningarna i DataFrame-åtgärder, vilket gör det idealiskt för mycket anpassade och specialiserade distribuerade algoritmer.

Maskininlärning och djupinlärning

Använd Rays maskininlärningsbibliotek för att förbättra dina ML-arbetsflöden:

  • Hyperparameterjustering: Optimera modellprestanda med Ray Tune för högpresterande och skalbar hyperparametersökning.
  • Distribuerad djupinlärningsträning: Skala djupinlärningsmodeller över flera noder med stöd för populära ramverk som PyTorch, TensorFlow, HuggingFace och Keras. Perfekt för träningsmodeller för visuellt innehåll eller stora språkmodeller (LLM).
  • Traditionell maskininlärning: Använd Ray för att distribuera tränings-, utvärderings- och batchinferens för traditionella ML-modeller som skapats med populära bibliotek som scikit-learn eller XGBoost.

Databehandling med höga prestanda (HPC)

Ray utmärker sig när det gäller att distribuera HPC-arbetsbelastningar, vilket gör det lämpligt för:

  • Matematiska beräkningar: Utför komplexa beräkningar inom områden som fysik, genomik eller ekonomi med hjälp av Ray Core för effektiv parallell bearbetning.
  • Prognostisering av tidsserier: Skala dina prognosmodeller, köra uppskattningar samtidigt med prognostiseringspaket som Prophet eller ARIMA.

Databehandling och funktionsutveckling

Ray kan också hantera olika databehandlingsuppgifter:

  • Beräknade funktioner: Komplexa beräkningsintensiva funktionstekniska uppgifter kan dra nytta av Rays distribuerade beräkningsarkitektur.
  • Ljud-, bild- och videobearbetning: Distribuera och påskynda bearbetningen av multimediadata, vilket gör den idealisk för program inom taligenkänning, bildklassificering och videoanalys.

Begränsningar

  • Ray på Apache Spark stöds för åtkomstläge för enskild användare (tilldelad), inget isoleringsläge för delad åtkomst och endast jobbkluster. Det går inte att initiera ett Ray-kluster på kluster med serverlösa körningsmiljöer.
  • Undvik att köra %pip för att installera paket på ett Ray-kluster som körs, eftersom klustret stängs av. Installera i stället bibliotek innan du initierar klustret.
  • Om du använder integreringar som åsidosätter konfigurationen från ray.util.spark.setup_ray_cluster kan ray-klustret bli instabilt. Undvik överbeskrivande Ray-klusterresurser i program från tredje part.
  • Om du stöter på fel som ncclInternalError: Internal check failedanger detta ett problem med nätverkskommunikation mellan GPU:er i klustret. Lös det här felet genom att lägga till följande kodfragment i träningskoden för att använda det primära nätverksgränssnittet.
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"