MLOps и инструменты
21 просмотр
Ray
Ray
Ray — фреймворк для распределённых вычислений в Python, предоставляющий инструменты для обучения (Ray Train), тюнинга гиперпараметров (Ray Tune), инференса (Ray Serve) и RL (RLlib).
Что такое Ray
Ray — open-source фреймворк (Anyscale), абстрагирующий распределённые вычисления. Позволяет масштабировать Python-код с одной машины на кластер с минимальными изменениями.
Экосистема Ray
| Компонент | Назначение |
|---|---|
| Ray Core | Распределённые задачи и акторы |
| Ray Train | Распределённое обучение (PyTorch, TF) |
| Ray Tune | Поиск гиперпараметров |
| Ray Serve | Model serving |
| RLlib | Reinforcement Learning |
| Ray Data | Обработка данных |
Ray для ML-инференса
vLLM использует Ray для tensor parallelism на нескольких нодах:
# vLLM с Ray для multi-node
from vllm import LLM
llm = LLM(
model="meta-llama/Llama-3-70B-Instruct",
tensor_parallel_size=8, # Ray автоматически распределяет по GPU
distributed_executor_backend="ray",
)
Ray Train для обучения
import ray.train.torch
def train_func(config):
model = build_model()
model = ray.train.torch.prepare_model(model)
dataloader = build_dataloader()
dataloader = ray.train.torch.prepare_data_loader(dataloader)
for epoch in range(config["epochs"]):
train_epoch(model, dataloader)
trainer = ray.train.torch.TorchTrainer(
train_func,
train_loop_config={"epochs": 10},
scaling_config=ray.train.ScalingConfig(
num_workers=8,
use_gpu=True,
),
)
result = trainer.fit()
Когда использовать Ray
- Multi-node serving — vLLM + Ray для кластерного инференса
- Hyperparameter tuning — Ray Tune с ASHA/PBT schedulers
- Обработка данных — параллельный preprocessing на кластере
- Heterogeneous workloads — GPU + CPU задачи в одном пайплайне
Связанные термины
Используется в