주요 컨텐츠로 이동
Engineering blog

데이터브릭스에서 Ray 지원 정식 출시(GA)

데이터브릭스에서 최적화된 Apache Spark와 함께 Ray의 기능과 성능을 활용하세요
이 포스트 공유하기

작년에 Ray 지원 공개 프리뷰를 출시한 이후 수백 명의 데이터브릭스 고객이 다중 모델 계층 예측, LLM 미세 조정, 강화 학습 등 다양한 사용 사례에 레이를 사용하고 있습니다. 오늘, 데이터브릭스에서 Ray를 정식으로 지원하게 된 것을 발표하게 되어 기쁩니다. 이제 Ray는 버전 15.0 이상부터 머신 러닝 런타임의 일부로 포함되며, 데이터브릭스에서 최고 수준의 서비스를 제공합니다. 고객은 추가 설치 없이도 Ray 클러스터를 시작할 수 있으며, Unity Catalog, Delta Lake, MLflow, Apache Spark 등 데이터브릭스에서 제공하는 통합 제품군 내에서 이 강력한 프레임워크를 사용할 수 있습니다.

조화로운 통합: 데이터브릭스에서의 Ray와 스파크

Ray 지원이 정식 출시됨에 따라 데이터브릭스에서 분산형 ML AI 워크로드와 새로운 Python 워크로드를 실행할 수 있는 선택의 폭이 넓어졌습니다. 이는 논리적 병렬처리와 데이터 병렬처리가 함께 번창하는 응집력 있는 생태계를 조성합니다. Ray는 데이터 파티셔닝에 크게 의존하지 않는 대안적인 논리적 병렬 처리 접근 방식을 추가 제공함으로써 데이터브릭스 제품을 보완하며, Spark에 최적화된 ML 워크로드처럼 데이터 파티셔닝에 크게 의존하지 않는 Python 코드를 처리할 수 있습니다.

이 통합의 가장 흥미로운 측면 중 하나는 Spark 데이터프레임과의 상호 운용성입니다. 기존에는 서로 다른 처리 프레임워크 간에 데이터를 전환할 때 번거롭고 리소스 집약적이고 종종 비용이 많이 드는 쓰기-읽기 사이클이 포함될 수 있었습니다. 하지만 Ray on Databricks에서는 Spark와 Ray 간에 직접 인메모리 데이터 전송이 가능하기 때문에 중간 저장소나 값비싼 데이터 변환 프로세스가 필요하지 않습니다. 이러한 상호 운용성 덕분에 데이터 효율적이고 계산 능력이 풍부한 데이터브릭스의 환경을 떠나지 않고도 Spark에서 데이터를 효율적으로 조작한 다음 Ray로 원활하게 전달할 수 있습니다.

"Marks & Spencer에서 예측은 재고 계획, 판매 조사, 공급망 최적화와 같은 사용 사례를 가능하게 하는 우리 비즈니스의 핵심입니다. 이를 위해서는 사용 사례를 제공하기 위한 강력하고 확장 가능한 파이프라인이 필요합니다. M&S에서는 Ray on Databricks의 강력한 기능을 활용하여 모델 튜닝, 학습 및 예측을 통해 프로덕션에 바로 사용할 수 있는 파이프라인을 실험하고 제공했습니다. 이를 통해 Spark의 확장 가능한 데이터 처리 기능과 Ray의 확장 가능한 ML 워크로드를 사용하여 엔드투엔드 파이프라인을 자신 있게 제공할 수 있었습니다." - Joseph Sarsfield, 선임 ML 엔지니어, Marks and Spencer

Ray on Databricks로 새로운 애플리케이션의 역량 강화

Ray와 데이터브릭스 간의 통합을 통해 두 프레임워크의 고유한 강점을 활용할 수 있는 수많은 애플리케이션을 개발할 수 있습니다:

  • 강화 학습: 자율 주행 차량과 로봇 공학을 위한 고급 모델 배포, RLlib을 사용한 Ray의 분산 컴퓨팅을 활용.
  • 분산형 커스텀 Python 애플리케이션: 복잡한 계산이 필요한 작업을 위해 클러스터 전반에서 커스텀 Python 애플리케이션을 확장합니다.
  • 딥 러닝 훈련: 컴퓨터 비전 및 언어 모델에서 딥 러닝 작업을 위한 효율적인 솔루션을 제공하며, Ray의 분산 특성을 활용합니다.
  • 고성능 컴퓨팅(HPC): 고성능 컴퓨팅 워크로드를 위한 Ray의 처리성능으로 유전체학, 물리학, 금융 계산과 같은 대규모 작업을 처리합니다.
  • 전통적 머신 러닝의 분산 처리: 클러스터 전반에서 scikit-learn 또는 예측 모델과 같은 기존 머신 러닝 모델의 배포를 개선합니다.
  • Python 워크플로우 개선: 복잡한 오케스트레이션이나 작업 간 통신이 필요한 작업을 포함해 이전에 단일 노드로 제한되었던 사용자 정의 Python 작업을 배포할 수 있습니다.
  • 하이퍼 파라미터 검색: 하이퍼 파라미터 튜닝을 위해 Hyperopt를 대체하여 보다 효율적인 검색을 위해 Ray Tune을 활용합니다.
  • Ray 에코시스템 활용: Ray 내의 광범위한 오픈 소스 라이브러리 및 도구 에코시스템과 통합하여 개발 환경을 더욱 풍부하게 합니다.
  • 대규모 병렬 데이터 처리: Spark와 Ray를 결합하여 UDF를 개선하거나 오디오나 비디오처럼 테이블 형식이 아닌 데이터를 처리하는 데 이상적인 일괄 처리 기능을 제공합니다.

Ray 클러스터 시작하기

데이터브릭스에서 Ray 클러스터를 시작하는 것은 몇 줄의 코드만 있으면 매우 간단합니다. 이러한 원활한 시작은 Databricks의 확장 가능한 인프라와 결합되어 애플리케이션이 개발에서 프로덕션으로 원활하게 전환되도록 보장하며, Ray의 계산 능력과 Databricks의 Spark 데이터 처리 기능을 모두 활용할 수 있습니다.

데이터브릭스 머신 러닝 런타임 15.0부터 Ray는 클러스터에 사전 설치되어 완벽하게 설정되어 있습니다. 다음 코드를 지침으로 사용하여 Ray 클러스터를 시작할 수 있습니다 (클러스터 구성에 따라 클러스터에서 사용 가능한 리소스에 맞게 이러한 인수를 수정해야 합니다):

from ray.util.spark import setup_ray_cluster, shutdown_ray_cluster

setup_ray_cluster(
 num_worker_nodes=2,
 num_cpus_per_node=4,
 autoscale = True,
 collect_log_to_path="/dbfs/path/to/ray_collected_logs"
)

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

이 접근 방식은 확장성이 뛰어나고 관리가 용이한 Databricks Spark 클러스터 위에 Ray 클러스터를 시작합니다. 일단 시작되어 사용할 수 있게 되면, 이 Ray 클러스터는 데이터브릭스가 제공하는 다른 기능, 인프라, 도구와 원활하게 통합될 수 있습니다. 또한 동적 자동 확장, 온디맨드 및 스팟 인스턴스 조합 실행, 클러스터 정책과 같은 엔터프라이즈 기능을 활용할 수 있습니다. 코드 작성 중 대화형 클러스터에서 장기 실행 작업을 위한 job 클러스터로 쉽게 전환할 수 있습니다.

Ray를 노트북 컴퓨터에서 클라우드의 수천 개의 노드로 전환하는 것은 앞의 setup_ray_cluster 함수를 사용하여 몇 줄의 코드를 추가하기만 하면 됩니다. 데이터브릭스는 기본 Spark 클러스터를 통해 Ray 클러스터의 확장성을 관리하며, 지정된 작업자 노드 수와 Ray 클러스터 전용 리소스를 간단하게 변경할 수 있습니다.

"지난 1년 반 동안 저희는 애플리케이션에서 Ray를 광범위하게 활용했습니다. 예상치 못한 오류나 문제 없이 안정적인 성능을 일관되게 제공했기 때문에 Ray에 대한 저희의 경험은 압도적으로 긍정적이었습니다. 특히 애플리케이션의 속도 성능에 미치는 영향은 주목할 만한데, 여기에는 데이터브릭스에서 Ray 클러스터를 구현하여 처리 시간을 절반 이상 단축한 것이 중요한 역할을 했습니다. 일부 사례에서는 4배 이상의 인상적인 개선이 관찰되기도 했습니다. 이 모든 것이 추가 비용 없이 이루어졌습니다. 또한 Ray 대시보드는 각 작업의 메모리 소비에 대한 인사이트를 제공하여 애플리케이션에 최적화된 구성을 확보할 수 있게 해주었습니다." - Juliana Negrini de Araujo, 선임 머신 러닝 엔지니어, Cummins

데이터브릭스에서 데이터 사이언스 강화하기: MLflow 및 Unity Catalog와 함께 Ray 사용

Figure 1. Example Ray Train Pipeline on Databricks using MLflow
Figure 1. Example Ray Train Pipeline on Databricks using MLflow

데이터브릭스는 Ray를 세 가지 주요 관리형 서비스와 통합하여 데이터 사이언스 워크플로우를 개선합니다: 수명 주기 관리를 위한 MLflow, 데이터 거버넌스를 위한 Unity Catalog, MLOps를 위한 Model Serving입니다. 이러한 통합을 통해 Ray로 개발한 머신러닝 모델의 추적, 최적화, 배포를 간소화하여 원활한 모델 수명 주기 관리를 위한 MLflow를 활용할 수 있습니다. 데이터 과학자는 데이터브릭스의 통합 플랫폼 내에서 실험을 효율적으로 모니터링하고, 모델 버전을 관리하고, 모델을 프로덕션에 배포할 수 있습니다.

Unity Catalog 는 강력한 데이터 거버넌스를 제공하고, 명확한 계보를 지원하며, Ray로 생성된 머신러닝 아티팩트를 공유함으로써 이러한 에코시스템을 더욱 지원합니다. 이를 통해 모든 자산의 데이터 품질과 규정 준수를 보장하고 안전하고 규제된 환경 내에서 효과적인 협업을 촉진합니다.

Unity Catalog 와 델타 레이크의 통합을 Ray와 결합하면 나머지 데이터 및 AI 환경과 훨씬 더 광범위하고 포괄적으로 통합할 수 있습니다. 이를 통해 Ray 사용자와 개발자는 그 어느 때보다 더 많은 데이터 소스와 통합할 수 있는 독보적인 역량을 갖추게 되었습니다. Ray 애플리케이션에서 생성된 데이터를 델타 레이크와 Unity Catalog에 작성하면 방대한 데이터 및 비즈니스 인텔리전스 도구 생태계에 연결할 수 있습니다.

Ray, MLflow, Unity Catalog, Model Serving의 조합은 고급 데이터 사이언스 솔루션의 배포를 간소화하고 가속화하여, 머신러닝 프로젝트의 혁신과 협업을 위한 포괄적이고 잘 관리되는 플랫폼을 제공합니다.

데이터브릭스에서 Ray 시작하기

Ray와 데이터브릭스의 협업은 단순한 통합을 넘어 두 프레임워크의 긴밀한 결합을 통해 각자의 강점을 극대화할 뿐만 아니라, 함께 통합하면 AI 개발 요구 사항에 맞는 독보적인 강력한 솔루션을 제공합니다. 이러한 통합을 통해 개발자와 데이터 과학자는 MLflow, Delta Lake, Unity Catalog 등 데이터브릭스 플랫폼의 방대한 기능을 활용할 수 있을 뿐만 아니라 Ray의 계산 효율성 및 유연성과도 원활하게 통합할 수 있습니다. 자세한 내용은 데이터브릭스에서 Ray 사용 문서를 참조하세요.

 

(번역: Youngkyong Ko)  Orignal Post

Databricks 무료로 시작하기

관련 포스트

Engineering blog

Announcing Ray support on Databricks and Apache Spark Clusters

Ray is a prominent compute framework for running scalable AI and Python workloads, offering a variety of distributed machine learning tools, large-scale hyperparameter...
Engineering blog

Announcing Ray Autoscaling support on Databricks and Apache Spark™

Ray is an open-source unified compute framework that simplifies scaling AI and Python workloads in a distributed environment. Since we introduced support for...
모든 엔지니어링 블로그 포스트 보기