비고
Databricks classic 컴퓨트와 Databricks 런타임 머신러닝을 함께 사용하고 있다면, Ray on Databricks를 참고하세요.
Ray는 Python 워크로드 확장을 위한 오픈 소스 프레임워크입니다. Ray Legend는 기본 GPU 인프라를 프로비저링하거나 관리하지 않고도 AI 런타임에서 실행할 수 있습니다.
AI 런타임에서 Ray를 사용하는 이유
Ray는 모델 학습, 배치 추론, 데이터 처리, 하이퍼파라미터 튜닝과 같은 Python 워크로드를 분배하는 데 일반적으로 사용됩니다. AI 런타임에서는 Ray가 Unity 카탈로그 볼륨의 데이터에 접근하고, MLflow로 실험을 추적하며, 프로덕션 워크플로우의 일부로 실행할 수 있습니다.
AI 런타임에서는 Ray Core, Ray Data, Ray Train, Ray Tune 과 같은 일반적인 Ray 라이브러리를 사용할 수 있습니다. 기존 Ray 워크로드는 라이브러리의 표준 API를 계속 사용할 수 있습니다.
레이가 AI 런타임과 어떻게 작동하는지에 대해
모든 Ray 애플리케이션은 하나 이상의 노드를 포함할 수 있는 Ray 클러스터에서 실행됩니다. AI 런타임은 노드를 프로비저닝하고, Ray는 작업 및 액터를 가용 CPU 및 GPU 자원 전반에 걸쳐 스케줄링합니다. Ray를 어떻게 시작할지는 실행 인터페이스에 따라 다릅니다:
| Interface | Nodes | Ray를 시작합니다 |
|---|---|---|
| Notebook | 노트북에 연결된 단일 노드 |
ray_init()을(를) AI 런타임 SDK(databricks.air)에서 호출 |
| Databricks 명령줄 인터페이스 (CLI) | 하나 이상의 고정된 노드 집합 | 노드 0에서 헤드를 시작하고, 남은 노드들을 재사용 가능한 부트스트랩 스크립트로 워커로 연결합니다 |
노트북에서 Ray 사용
노트북이 AI 런타임 GPU 컴퓨트에 연결되었을 때, Databricks AI Runtime SDK의 ray_init()를 사용하여 연결된 노드에서 Ray를 시작하세요:
from databricks.air import ray_init
ray_init()
ray_init() 표준 ray.init() API를 호출하고, Databricks 드라이버 프록시를 통해 Ray 대시보드에 접근하도록 설정하며, 노트북 출력에 대시보드 URL을 출력합니다. 코드가 실행되는 동안 대시보드를 사용해 Ray 작업, 태스크, 액터, 로그 및 리소스 사용량을 확인할 수 있습니다.
비고
ray_init() 환경 버전 5 이상이 필요합니다. 버전 5에서는 databricks.air 대신 serverless_gpu에서 가져오세요. Databricks AI v6에는 Ray가 포함되어 있습니다. Standard v6를 사용한다면, 호출하기 전에 ray_init()Ray를 설치하세요.
환경 설정을 참조하세요.
노트북 예제
| Example | Description |
|---|---|
| 레이 코어 헬로 월드 | 비동기 GPU 작업을 첨부된 컴퓨트에 제출하고, Ray 대시보드에서 스케줄링을 점검한 후 결과를 가져옵니다. |
| 레이 튠을 이용한 CIFAR-10 하이퍼파라미터 튜닝 | PyTorch 이미지 분류기에서 분수 GPU 시험을 동시에 실행하고, 비동기 연속 절반 알고리즘(ASHA)을 사용해 성능이 낮은 구성을 조기에 방지합니다. |
| Ray Data와 vLLM을 사용한 Qwen2.5-32B 배치 추론 | 8개의 H100 GPU에서 8개의 영구 vLLM 복제본으로 다국어 배치 추론을 실행하고, 결과를 Parquet으로 Unity 카탈로그 볼륨에 저장하세요. |
Databricks CLI와 함께 Ray를 사용하세요
AI 런타임용 Databricks CLI 명령어는 단일 노드 및 다중 노드 Ray 워크로드를 지원합니다. 워크로드 구성에서 고정 accelerator_type 와 총 num_accelerators를 지정합니다.
Ray Core 시작하기 레시피에는 재사용 가능한 부트스트랩 스크립트가 포함되어 있습니다. 워크로드의 command에서 RAY_ENTRYPOINT을 Python 파일 경로로 설정한 다음 부트스트랩 스크립트를 실행하세요. 부트스트랩 스크립트는 다음과 같은 기능을 수행합니다:
- 노드 0에서 Ray 헤드를 시작하고 설정된 진입점을 실행합니다.
- 나머지 각 노드에서 Ray 워커를 시작하고, 진입점이 실행되는 동안 연결된 상태를 유지합니다.
- 진입점이 끝나면 Ray 프로세스를 중지합니다.
애플리케이션에서 클러스터에 ray.init(address="auto")연결하세요.
표준 환경에서는 워크로드 종속성에 ray[train] 또는 필요한 추가 항목(예: ray[tune], ray[data], ray)을 추가합니다. Databricks AI v6에는 Ray가 포함되어 있습니다.
Ray와 함께 시작하세요
다음 최소한의 예시들은 주요 Ray 라이브러리를 소개하며 동일한 클러스터 부트스트랩 패턴을 공유합니다.
| Example | Description |
|---|---|
| 레이 코어 | 두 개의 A10 GPU에 Ray 클러스터를 시작하고, 각 GPU마다 Ray Core 작업을 하나씩 스케줄링하세요. |
| 레이 트레인 | GPU당 Ray Train 워커를 하나씩 배치해 합성 데이터에 대한 소형 다층 퍼셉트론을 훈련시킵니다. |
| 레이 데이터 | Ray 클러스터를 가로질러 합성 데이터 처리 파이프라인을 실행하세요. |
| 레이 튠 | 합성 데이터에 대해 GPU당 한 번의 시도로 소형 다층 퍼셉트론을 조정하세요. |
추가 CLI 예시
| Example | Description |
|---|---|
| Ray Train을 이용한 ResNet-50 미세 조정 | ResNet-50을 두 노드에 걸쳐 A10 GPU당 하나의 분산 데이터 병렬 워커로 미세 조정하세요. |
| Ray Train을 이용한 Qwen2.5-3B 미세 조정 | Qwen2.5-3B를 H100 8개가 장착된 단일 노드에서 GPU당 하나의 분산 데이터 병렬 워커로 미세 조정하세요. |
| Ray Data 및 vLLM을 사용하여 일괄 처리 유추 | Qwen2.5-7B-Instruct로 응답을 생성하고 결과를 Parquet으로 Unity 카탈로그 볼륨에 작성하세요. |
| Ray Tune을 이용한 LoRA 하이퍼파라미터 탐색 | 4개의 A10 GPU에서 Qwen2.5-0.5B LoRA 구성을 검색하고 ASHA 스케줄러로 저조한 실험을 멈추세요. |
| Ray Tune을 이용한 XGBoost 하이퍼파라미터 탐색 | 4개의 A10 GPU에서 XGBoost 하이퍼파라미터를 검색하고, 최적의 구성을 MLflow에 기록한 뒤, Unity 카탈로그에 모델을 등록하세요. |
데이터 및 Databricks 기능 사용
Ray 워크로드는 Unity 카탈로그 볼륨의 데이터에 접근하고, MLflow로 실행을 기록하며, 선언적 자동화 번들로 정의된 Lakeflow Jobs 작업으로 실행할 수 있습니다.
Unity 카탈로그 내 데이터 접근
Unity 카탈로그 테이블 ray.data.read_databricks_tables() 에서 표 형태의 데이터를 사용하려면 Databricks SQL 웨어하우스에서 테이블을 읽거나 SQL 쿼리를 실행하세요. AI 런타임은 로컬 Spark 세션을 제공하지 않으니 웨어하우스 ID, 카탈로그, 스키마를 지정하세요. SQL을 사용해 Ray가 결과를 처리하기 전에 조인, 집계, 필터링을 수행할 수 있습니다.
파일 기반 및 비구조화 데이터의 경우, Unity 카탈로그 볼륨을 사용하세요. 레이 작업자는 자신의 /Volumes/<catalog>/<schema>/<volume>/... 경로를 통해 파일에 접근할 수 있습니다. 예를 들어, Ray Data는 ray.data.read_parquet()로 Parquet 파일을 읽고 Dataset.write_parquet()로 결과를 쓸 수 있습니다.
작업 부하를 추적하고 조정합니다
MLflow를 사용해 Ray 워크로드의 매개변수, 지표, 아티팩트를 기록하세요. 실험 추적 및 관측 가능성을 참조하세요.
워크로드를 스케줄링하거나 CPU 데이터 준비 작업으로 구성하려면 Lakeflow Jobs와 Declarative Automation Bundles를 사용하세요. GPU 워크로드 예약 및 작업 작성 항목을 참조하세요.
기존 Ray 작업 부하 마이그레이션
자가 관리 Ray 워크로드를 마이그레이션하려면 인프라 구성과 서비스 통합을 AI 런타임 실행 모델로 대체하는 작업이 포함됩니다.
워크로드 평가
마이그레이션 전에 제한 사항을 검토하세요. 작업 부하가 고정 크기의 클러스터에서 하나의 가속기 유형으로 동작할 수 있는지 확인하세요.
워크로드 마이그레이션
자체 관리 Ray 워크로드를 마이그레이션하려면:
- 인터랙티브 단일 노드 개발을 위해서는 노트북을, 단일 노드 또는 다중 노드 작업은 Databricks CLI를 선택하세요.
- 기존 클러스터 자원을 AI 런타임 가속기 유형과 가속기 수에 매핑하세요. 하드웨어 옵션을 참조하세요.
- 기존 클러스터 시작 기능을 노트북에서 대체하거나, Databricks CLI 워크로드에서 문서화된 헤드와 워커 부트스트랩으로
ray_init()대체하세요. - 워크로드의 Python 의존성을 선언하고 데이터, 체크포인트, 모델, 출력 경로를 업데이트하세요.
- 가장 작은 적용 가능한 구성에서 작업 부하를 검증하세요. 의도한 고정 토폴로지를 테스트하기 전에 데이터 접근, 자원 요청, 출력을 확인하세요.
Limitations
AI Runtime의 Ray에는 다음과 같은 제한이 있습니다:
- Ray 클러스터는 작업 기간 동안 고정된 노드 수를 가집니다. 레이 클러스터 자동 스케일링은 지원되지 않습니다.
- 워크로드 내 모든 노드는 동일한
accelerator_type. Ray 클러스터는 CPU 전용 그룹과 GPU 워커 그룹을 별도로 가질 수 없으며, CPU와 GPU 용량을 독립적으로 확장할 수 없습니다. - 노트북은 연결된 단일 노드에서 Ray를 시작합니다. 멀티노드 Ray 클러스터에는 Databricks CLI를 사용하세요.
- 현재 Databricks 드라이버 프록시를 통한 Ray 대시보드 접근은 노트북 워크로드에만 해당됩니다.
Tip
CPU 준비와 GPU 처리가 별도의 단계로 동작할 수 있다면, 다중 작업 Lakeflow Job을 사용하고 Unity 카탈로그 볼륨을 통해 작업 간에 데이터를 전달하세요.