Перейти до вмісту

Ray

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні

SEO title: Ray — open-source фреймворк для масштабування Python, AI, ML, data processing, training і serving SEO description: Ray — Wiki-стаття про open-source фреймворк для розподілених обчислень, масштабування Python-застосунків, AI workloads, machine learning, data processing, distributed training, hyperparameter tuning, model serving, RLlib, Ray Core, Ray Data, Ray Train, Ray Tune, Ray Serve, Ray Clusters, Kubernetes, переваги, обмеження, безпеку і відповідальне використання. SEO keywords: Ray, Ray AI, Ray Python, Ray Core, Ray Data, Ray Train, Ray Tune, Ray Serve, RLlib, distributed computing, distributed Python, AI compute engine, machine learning, deep learning, model training, model serving, batch inference, hyperparameter tuning, reinforcement learning, Kubernetes, KubeRay, Anyscale, open-source AI, Python framework, масштабування Python, розподілені обчислення Alternative to: ручне керування розподіленими Python-процесами; самописний distributed scheduler; складне масштабування ML pipeline; ручне розгортання batch inference; окремі інструменти для training, tuning і serving без єдиного runtime; складне керування AI workloads на cluster; ручне масштабування Python-коду з ноутбука до cloud cluster


Ray — це open-source фреймворк для масштабування Python-застосунків, AI workloads і машинного навчання від локального комп’ютера до кластерів із багатьма CPU, GPU або TPU.

Ray використовується для розподілених обчислень, data processing, model training, fine-tuning, batch inference, model serving, hyperparameter tuning, reinforcement learning, LLM applications, GenAI pipelines і high-performance Python workloads.

Основна ідея: Ray дозволяє взяти Python-функції, класи або ML-процеси й масштабувати їх на багато ядер, машин або GPU без повного переписування застосунку під складну distributed infrastructure.

Загальний опис

Ray можна розглядати як distributed runtime і набір AI-бібліотек для масштабування Python та ML-застосунків.

Ray складається з:

  • Ray Core — базовий distributed runtime;
  • Ray Data — distributed data processing;
  • Ray Train — distributed model training і fine-tuning;
  • Ray Tune — hyperparameter tuning;
  • Ray Serve — model serving і scalable inference;
  • RLlib — reinforcement learning;
  • Ray Clusters — запуск Ray на локальних машинах, VM, Kubernetes або cloud;
  • KubeRay — запуск і керування Ray у Kubernetes.

Офіційна документація описує Ray як open-source framework to build and scale ML and Python applications, а GitHub-репозиторій — як unified framework for scaling AI and Python applications із core distributed runtime і AI libraries. :contentReference[oaicite:0]{index=0}

Перевага: Ray об’єднує кілька частин AI pipeline — data processing, training, tuning, serving і reinforcement learning — навколо одного distributed runtime.

Для чого використовується Ray

Ray потрібен тоді, коли звичайного локального Python-коду вже недостатньо.

Типові задачі:

  • parallel Python execution;
  • distributed data processing;
  • batch inference;
  • distributed training;
  • fine-tuning моделей;
  • hyperparameter search;
  • reinforcement learning;
  • model serving;
  • multi-GPU workloads;
  • LLM inference;
  • GenAI pipelines;
  • scalable ETL;
  • distributed simulation;
  • cloud-native AI workloads.

Важливо: Ray не робить повільний або погано спроєктований код автоматично швидким. Потрібно правильно розбивати задачу, контролювати дані, ресурси, пам’ять, fault tolerance і network overhead.

Ray Core

Ray Core — це базовий distributed computing framework у Ray.

Ray Core надає три основні примітиви:

  • tasks — розподілені функції;
  • actors — stateful distributed objects;
  • objects — distributed objects у shared-memory object store.

Офіційна документація Ray Core описує його як distributed computing framework із tasks, actors і objects для побудови та масштабування distributed applications. :contentReference[oaicite:1]{index=1}

Суть Ray Core: це фундамент Ray, який дозволяє перетворювати Python-функції та класи на distributed tasks і actors.

Tasks

Task у Ray — це remote function, яка може виконуватися паралельно на worker процесі.

Приклад:

import ray

ray.init()

@ray.remote
def square(x):
    return x * x

refs = [square.remote(i) for i in range(5)]
results = ray.get(refs)

print(results)

У цьому прикладі:

  • `@ray.remote` робить функцію distributed task;
  • `square.remote(i)` запускає task;
  • `ray.get(refs)` отримує результати;
  • Ray сам планує виконання tasks на доступних ресурсах.

Просте пояснення: task — це Python-функція, яку Ray може виконати не лише в поточному процесі, а паралельно в distributed environment.

Actors

Actor у Ray — це stateful distributed object.

Actors корисні, коли потрібно зберігати стан між викликами:

  • model worker;
  • cache;
  • service object;
  • simulator;
  • environment у reinforcement learning;
  • long-running process;
  • stateful pipeline component.

Приклад:

import ray

ray.init()

@ray.remote
class Counter:
    def __init__(self):
        self.value = 0

    def increment(self):
        self.value += 1
        return self.value

counter = Counter.remote()

print(ray.get(counter.increment.remote()))
print(ray.get(counter.increment.remote()))

Суть actor: це distributed class instance, який живе в Ray cluster і може зберігати стан між remote method calls.

Objects

Objects у Ray — це дані, які створюються tasks або actors і зберігаються в distributed object store.

Документація Ray пояснює, що tasks і actors створюють objects та працюють з objects; remote objects можуть зберігатися будь-де в Ray cluster, а object refs використовуються для посилання на них. Ray кешує remote objects у distributed shared-memory object store. :contentReference[oaicite:2]{index=2}

Objects можуть бути:

  • результатами функцій;
  • batch data;
  • model weights;
  • intermediate results;
  • large arrays;
  • references між tasks;
  • даними для downstream processing.

Практична роль: object store дозволяє різним tasks і actors обмінюватися даними без ручного керування файлами, sockets або message queues.

Object refs

ObjectRef — це посилання на object у Ray.

Коли remote task запускається, вона часто повертає не сам результат одразу, а reference:

ref = square.remote(10)
result = ray.get(ref)

Це дозволяє:

  • запускати обчислення асинхронно;
  • будувати dependency graph;
  • передавати результати між tasks;
  • не блокувати виконання без потреби;
  • масштабувати parallel workflows.

Важливо: надмірне використання `ray.get` у неправильному місці може зменшити паралельність, бо код почне чекати результатів занадто рано.

Ray Data

Ray Data — це бібліотека Ray для distributed data processing.

Ray Data може використовуватися для:

  • ETL;
  • batch inference;
  • preprocessing;
  • reading datasets;
  • transformation pipelines;
  • distributed map operations;
  • streaming data pipelines;
  • feeding data into training;
  • large-scale data workloads.

Практична роль: Ray Data допомагає обробляти великі datasets і передавати їх у training або inference pipeline.

Batch inference

Batch inference — це запуск моделі на великому наборі даних.

Ray часто використовується для batch inference, коли потрібно:

  • обробити мільйони документів;
  • зробити embeddings;
  • класифікувати великий dataset;
  • запускати LLM або vision model на batch;
  • використовувати GPU ефективніше;
  • паралелити inference між worker nodes;
  • поєднати data loading і model prediction.

Перевага: Ray дозволяє розподіляти inference workload між багатьма worker processes або GPU, що особливо корисно для AI pipeline.

Ray Train

Ray Train — це бібліотека для distributed training і fine-tuning.

Офіційна документація описує Ray Train як scalable machine learning library for distributed training and fine-tuning, яка дозволяє масштабувати training code з однієї машини до cluster of machines і абстрагує складність distributed computing. :contentReference[oaicite:3]{index=3}

Ray Train може використовуватися для:

  • distributed PyTorch training;
  • TensorFlow training;
  • multi-GPU training;
  • fine-tuning LLM;
  • training на великих datasets;
  • fault-tolerant training;
  • cloud training jobs;
  • integration with Ray Data.

Суть Ray Train: він допомагає масштабувати навчання моделей без ручного керування всією distributed training інфраструктурою.

Ray Tune

Ray Tune — це бібліотека для hyperparameter tuning.

Ray Tune може використовуватися для:

  • grid search;
  • random search;
  • Bayesian optimization;
  • early stopping;
  • distributed trials;
  • experiment tracking;
  • tuning ML models;
  • tuning deep learning training;
  • пошуку learning rate, batch size, model size, regularization;
  • оптимізації costly experiments.

Практична роль: Ray Tune дозволяє паралельно запускати багато training trials і швидше знаходити вдалі гіперпараметри.

Ray Serve

Ray Serve — це бібліотека для scalable model serving.

Ray Serve може використовуватися для:

  • serving ML models;
  • LLM serving;
  • online inference;
  • microservices with Python;
  • autoscaling deployments;
  • model composition;
  • A/B testing;
  • multi-model serving;
  • batch або streaming inference endpoint;
  • integration with FastAPI-style workflows.

Суть Ray Serve: Ray Serve допомагає перетворити модель або Python-функцію на scalable online service.

RLlib

RLlib — це бібліотека Ray для reinforcement learning.

Офіційна документація описує RLlib як open source library for reinforcement learning, що підтримує production-level, highly scalable і fault-tolerant RL workloads через unified APIs. :contentReference[oaicite:4]{index=4}

RLlib може використовуватися для:

  • reinforcement learning;
  • multi-agent RL;
  • simulation environments;
  • policy training;
  • distributed rollout workers;
  • scalable RL experiments;
  • research і production RL workloads.

Важливо: reinforcement learning складний сам по собі. RLlib допомагає масштабувати RL workloads, але не скасовує потреби в правильній постановці environment, reward function і evaluation.

Ray Cluster

Ray Cluster — це набір машин або worker nodes, на яких запускається Ray.

Ray cluster може працювати:

  • локально на одній машині;
  • на кількох VM;
  • у cloud;
  • у Kubernetes;
  • через KubeRay;
  • у managed платформі;
  • у hybrid environments.

Ray cluster зазвичай містить:

  • head node;
  • worker nodes;
  • scheduler;
  • object stores;
  • workers;
  • dashboard;
  • autoscaling mechanism залежно від setup.

Просте пояснення: Ray cluster — це середовище, де Ray розподіляє tasks, actors і objects між різними ресурсами.

KubeRay

KubeRay — це інструментарій для запуску Ray на Kubernetes.

KubeRay може допомагати:

  • створювати RayCluster;
  • керувати Ray workloads у Kubernetes;
  • запускати Ray jobs;
  • масштабувати workers;
  • інтегрувати Ray із cloud-native infrastructure;
  • запускати AI workloads у Kubernetes;
  • використовувати Kubernetes scheduling, networking і observability.

Практична роль: KubeRay потрібен командам, які вже використовують Kubernetes і хочуть запускати Ray workloads у cloud-native середовищі.

Ray Dashboard

Ray Dashboard — це інтерфейс для спостереження за Ray cluster.

Dashboard допомагає бачити:

  • running tasks;
  • actors;
  • nodes;
  • resources;
  • CPU/GPU usage;
  • memory usage;
  • object store usage;
  • logs;
  • errors;
  • job status;
  • performance bottlenecks.

Практична користь: без observability distributed system швидко стає “чорною скринькою”, тому dashboard і logs критично важливі.

Autoscaling

Ray може використовувати autoscaling у відповідних cluster setups.

Autoscaling допомагає:

  • додавати worker nodes при зростанні навантаження;
  • зменшувати ресурси, коли workload завершується;
  • оптимізувати cost;
  • обробляти burst workloads;
  • запускати distributed jobs у cloud;
  • масштабувати training, inference або data workloads.

Важливо: autoscaling потрібно налаштовувати обережно, інакше можна отримати надмірні cloud-витрати або нестабільну продуктивність.

Fault tolerance

Distributed workloads мають ризики збоїв.

Ray може підтримувати механізми fault tolerance залежно від типу workload і налаштувань:

  • task retry;
  • actor restart;
  • node failure handling;
  • checkpointing;
  • object reconstruction;
  • job recovery;
  • training checkpoints;
  • serving resilience.

Критично: fault tolerance не з’являється автоматично для будь-якої логіки. Для важливих workload потрібно проєктувати checkpointing, retry, idempotency і recovery.

Ray і Python

Ray особливо тісно пов’язаний із Python.

Ray дозволяє:

  • масштабувати Python-функції;
  • масштабувати Python-класи;
  • запускати distributed ML code;
  • використовувати familiar Python APIs;
  • поєднувати NumPy, pandas, PyTorch, TensorFlow та інші бібліотеки;
  • запускати jobs локально або на cluster.

Перевага для Python-розробника: Ray дозволяє залишатися в Python-екосистемі й поступово переходити від локального коду до distributed execution.

Ray і PyTorch

Ray часто використовується разом із PyTorch.

Можливі сценарії:

  • distributed PyTorch training через Ray Train;
  • hyperparameter tuning PyTorch моделей через Ray Tune;
  • batch inference;
  • serving PyTorch моделей через Ray Serve;
  • multi-GPU experiments;
  • LLM fine-tuning;
  • reinforcement learning з PyTorch policies.

Практична роль: PyTorch відповідає за модель і tensor operations, а Ray — за масштабування training, inference, tuning або serving.

Ray і TensorFlow

Ray також може використовуватися з TensorFlow.

Типові сценарії:

  • distributed training;
  • hyperparameter tuning;
  • serving моделей;
  • batch inference;
  • data preprocessing;
  • experiment orchestration.

Висновок: Ray не замінює TensorFlow, а може допомагати масштабувати TensorFlow workloads у distributed environment.

Ray і Scikit-learn

Ray може доповнювати Scikit-learn у задачах, де потрібно масштабування.

Приклади:

  • parallel hyperparameter tuning;
  • distributed cross-validation;
  • batch inference;
  • preprocessing великого dataset;
  • запуск багатьох експериментів;
  • scalable classical ML workflows.

Практична роль: Scikit-learn добре підходить для класичного ML, а Ray може допомогти масштабувати експерименти навколо нього.

Ray і Spark

Ray часто порівнюють з Apache Spark.

Критерій Ray Apache Spark
Основний фокус Distributed Python, AI workloads, ML training, inference, serving Big data processing, SQL, ETL, batch analytics
Програмна модель Tasks, actors, objects, AI libraries DataFrames, RDD, SQL, Spark jobs
AI workloads Сильний фокус на ML/AI, GPU, serving, tuning Часто використовується для data engineering і batch processing
Python flexibility Ближчий до general Python distributed computing Більше орієнтований на Spark execution model
Типові задачі Training, inference, RL, ML pipelines, distributed Python ETL, data lake processing, analytics, SQL workloads

Висновок: Spark сильний у big data ETL і SQL-аналітиці, а Ray часто краще підходить для гнучких Python/AI workloads, training, inference і model serving.

Ray і Dask

Ray також можна порівняти з Dask.

Критерій Ray Dask
Основний фокус Distributed Python і AI workloads Parallel і distributed computing для Python data ecosystem
Типові дані AI pipelines, ML, inference, actors, training DataFrames, arrays, delayed computations
Сильна сторона Tasks, actors, AI libraries, model serving Масштабування pandas/NumPy-like workflows
Типові користувачі ML engineers, AI platform teams, Python backend teams Data scientists, data engineers, scientific Python users

Висновок: Dask зручний для parallel data workflows у стилі pandas/NumPy, а Ray — для ширших distributed AI і Python applications.

Ray і Kubernetes

Ray може працювати поверх Kubernetes через KubeRay.

Це дає:

  • container orchestration;
  • pod scheduling;
  • resource isolation;
  • cluster management;
  • integration with cloud-native tooling;
  • observability;
  • autoscaling;
  • GitOps workflows;
  • infrastructure consistency.

Важливо: Kubernetes додає потужність, але й складність. Для невеликого prototype Ray можна запускати локально, а Kubernetes залишити для production або platform engineering.

Ray і Anyscale

Anyscale — це компанія, пов’язана з розвитком Ray і managed-платформами для Ray workloads.

Ray є open-source фреймворком, а Anyscale надає комерційні інструменти й platform experience для розгортання Ray у production.

Офіційний сайт Ray by Anyscale описує Ray як open source framework для managing, executing and optimizing compute needs, з фокусом на AI workloads: data processing, training і serving. :contentReference[oaicite:5]{index=5}

Суть: Ray — open-source проєкт, Anyscale — комерційна екосистема й платформа навколо Ray.

Ray і PyTorch Foundation

У 2025 році PyTorch Foundation повідомила, що Ray став foundation-hosted project. У повідомленні Ray описано як open-source distributed computing framework for AI workloads, включно з data processing, model training і inference at scale. :contentReference[oaicite:6]{index=6}

Практична роль: foundation-hosted статус підкреслює значення Ray у ширшій open-source AI infrastructure екосистемі.

Переваги Ray

Основні переваги Ray:

  • open-source;
  • масштабування Python-коду;
  • прості primitives: tasks, actors, objects;
  • підтримка AI workloads;
  • Ray Data;
  • Ray Train;
  • Ray Tune;
  • Ray Serve;
  • RLlib;
  • підтримка CPU і GPU workloads;
  • локальний і cluster запуск;
  • Kubernetes через KubeRay;
  • Python-friendly API;
  • корисність для ML, LLM і GenAI pipeline;
  • можливість масштабувати від laptop до cloud cluster.

Головна перевага: Ray дозволяє масштабувати AI і Python workloads без переходу на повністю іншу мову або зовсім іншу програмну модель.

Обмеження Ray

Ray має обмеження.

Можливі складнощі:

  • distributed systems складні самі по собі;
  • debugging важчий, ніж у локальному Python;
  • network overhead може зменшити виграш;
  • object store може стати bottleneck;
  • потрібне планування ресурсів;
  • GPU scheduling потребує уваги;
  • неправильний `ray.get` може зламати parallelism;
  • autoscaling може створити cost risks;
  • production deployment потребує observability;
  • не кожну задачу варто масштабувати через Ray;
  • потрібне розуміння fault tolerance.

Помилка: додавати Ray до будь-якого Python-коду лише “для швидкості”. Якщо задача маленька або має багато дрібних залежних кроків, Ray може не дати виграшу.

Безпека

Ray workloads можуть працювати з кодом, даними, моделями, ключами, cloud resources і мережевими сервісами, тому безпека є критичною.

Потрібно контролювати:

  • доступ до Ray dashboard;
  • доступ до Ray cluster;
  • network exposure;
  • credentials;
  • environment variables;
  • secrets;
  • object store data;
  • model artifacts;
  • datasets;
  • logs;
  • permissions у cloud;
  • container images;
  • supply chain dependencies.

Критично: Ray cluster не можна бездумно відкривати в публічну мережу. Доступи, firewall, authentication, network policies і secrets management потрібно налаштовувати окремо.

Приватність даних

Під час роботи з Ray потрібно уважно ставитися до даних, які передаються між tasks, actors, object store і cluster nodes.

Не варто без потреби обробляти або логувати:

  • персональні дані;
  • фінансові дані;
  • медичні дані;
  • секретні ключі;
  • customer data;
  • приватні документи;
  • production database dumps;
  • комерційні таємниці;
  • неанонімізовані datasets.

Правило: distributed pipeline має ті самі privacy-вимоги, що й локальний pipeline, але з більшим ризиком через більше машин, логів, cache і мережевих шляхів.

Відповідальне використання

Ray потрібно використовувати як infrastructure tool, а не як гарантію правильності ML-рішення.

Рекомендовано:

  • тестувати локально до запуску на cluster;
  • починати з малого workload;
  • вимірювати performance;
  • контролювати cost;
  • додавати logging;
  • використовувати metrics;
  • налаштовувати retries;
  • робити checkpointing;
  • перевіряти security;
  • обмежувати permissions;
  • документувати cluster setup;
  • перевіряти data governance;
  • тестувати failure scenarios.

Професійний підхід: Ray має масштабувати добре спроєктований pipeline, а не приховувати проблеми архітектури, даних або коду.

Типові сценарії використання

Ray можна використовувати у різних сценаріях.

Приклади:

  • batch inference для великого dataset;
  • distributed training PyTorch-моделі;
  • fine-tuning LLM;
  • hyperparameter tuning;
  • scalable embeddings pipeline;
  • reinforcement learning experiment;
  • model serving API;
  • distributed simulation;
  • parallel web data processing;
  • large-scale feature engineering;
  • multi-GPU inference;
  • GenAI document processing pipeline;
  • Kubernetes-based AI platform.

Практична порада: перед впровадженням Ray варто чітко визначити bottleneck: CPU, GPU, IO, memory, network або model latency.

Типові помилки користувачів

Під час роботи з Ray часто виникають типові помилки.

До них належать:

  • занадто дрібні tasks;
  • занадто частий `ray.get`;
  • передача великих objects без потреби;
  • відсутність resource annotations;
  • неправильне планування GPU;
  • відсутність retry logic;
  • відсутність checkpointing;
  • ігнорування object store memory;
  • запуск cluster без observability;
  • відкритий dashboard;
  • неконтрольовані cloud costs;
  • відсутність тестів перед масштабуванням;
  • відсутність cleanup після jobs.

Небезпека: distributed workload може працювати повільніше й дорожче за локальний, якщо розбити задачу неправильно або не контролювати overhead.

Хороші практики роботи з Ray

Рекомендовано:

  • починати локально;
  • вимірювати baseline без Ray;
  • робити tasks достатньо великими;
  • уникати зайвого `ray.get`;
  • використовувати actors для stateful workloads;
  • контролювати object store memory;
  • задавати CPU/GPU resources;
  • використовувати checkpointing;
  • налаштовувати logs і metrics;
  • тестувати failure cases;
  • використовувати dashboard;
  • контролювати cloud costs;
  • захищати cluster access;
  • документувати pipeline.

Головне правило: Ray найкраще працює тоді, коли задача має реальну паралельність, достатньо великі одиниці роботи і зрозумілу стратегію керування ресурсами.

Приклади задач

Parallel Python tasks

Задача: виконати багато незалежних обчислень.
Інструмент: Ray Core tasks.
Результат: паралельний запуск Python-функцій на доступних CPU.

Batch inference

Задача: обробити великий dataset моделлю.
Інструмент: Ray Data + Ray actors або Ray Serve.
Результат: scalable inference pipeline з контрольованим використанням CPU/GPU.

Distributed training

Задача: навчити модель на кількох GPU або машинах.
Інструмент: Ray Train.
Результат: training job, який масштабується з laptop до cluster.

Hyperparameter tuning

Задача: підібрати learning rate, batch size і model parameters.
Інструмент: Ray Tune.
Результат: паралельний запуск trials і вибір найкращої конфігурації.

Model serving

Задача: розгорнути модель як online inference service.
Інструмент: Ray Serve.
Результат: scalable endpoint для prediction-запитів.

Підказка: якщо задача має незалежні шматки роботи, Ray Core може бути достатнім. Якщо йдеться про ML pipeline, варто дивитися Ray Data, Train, Tune або Serve.

Джерела

  • Офіційний сайт Ray.
  • Офіційна документація Ray.
  • Ray Core documentation.
  • Ray Data documentation.
  • Ray Train documentation.
  • Ray Tune documentation.
  • Ray Serve documentation.
  • RLlib documentation.
  • Ray GitHub repository.
  • KubeRay documentation.
  • PyTorch Foundation announcement щодо Ray.

Висновок

Ray — це open-source фреймворк для масштабування Python і AI workloads. Він надає Ray Core для distributed tasks, actors і objects, а також AI-бібліотеки для data processing, training, tuning, serving і reinforcement learning.

Ray особливо корисний для ML-команд, AI platform teams, Python-розробників і data/ML engineers, яким потрібно масштабувати код від локального ноутбука до cluster або cloud. Водночас Ray вимагає розуміння distributed systems: resource scheduling, memory, object store, retries, checkpointing, observability, security і cost control.

Головна думка: Ray — це практичний distributed runtime для Python і AI, який допомагає масштабувати data processing, training, inference і serving, але ефективність залежить від правильної архітектури workload і контролю ресурсів.

Див. також

Тематичні мітки