Рэй на AI Runtime

Important

Эта функция доступна в общедоступной предварительной версии.

Замечание

Если вы используете Ray на Databricks Classic Compute с Databricks Runtime ML, смотрите Ray на Databricks.

Ray — это открытый код фреймворк для масштабирования рабочих нагрузок на Python. Вы можете запускать Ray на AI Runtime без настройки или управления базовой инфраструктурой GPU.

Зачем использовать Ray в AI Runtime

Ray обычно используется для распределения рабочих нагрузок на Python, таких как обучение моделей, пакетное вывод, обработка данных и настройка гиперпараметров. В AI Runtime Ray может получать доступ к данным в томах Unity Catalog, отслеживать эксперименты с MLflow и запускать их в рамках производственных рабочих процессов.

Вы можете использовать распространённые библиотеки Ray, такие как Ray Core, Ray Data, Ray Train и Ray Tune на AI Runtime. Существующие рабочие нагрузки Ray могут продолжать использовать стандартные API библиотек.

Как Ray работает с AI Runtime

Каждое приложение Ray работает на кластере Ray, который может содержать один или несколько узлов. AI Runtime подготавливает узлы, а Ray распределяет задачи и акторы по доступным ресурсам CPU и GPU. Как вы запускаете Ray, зависит от интерфейса выполнения:

Interface Nodes запуск Ray
Notebook Единственный узел, прикреплённый к ноутбуку Вызов ray_init() из пакета serverless_gpu
Интерфейс командной строки Databricks Фиксированное множество одного или нескольких узлов Начните головку с узла 0 и соедините оставшиеся узлы в качестве рабочих с помощью повторно используемого bootstrap-скрипта

Используйте Ray в тетрадях

Когда ваш ноутбук подключён к вычислительным ресурсам GPU в AI Runtime, используйте ray_init() из пакета serverless_gpu, чтобы запустить Ray на подключённом узле:

from serverless_gpu import ray_init

ray_init()

ray_init() вызывает стандартный ray.init() API, настраивает панель управления Ray для доступа через прокси-драйвер Databricks и выводит URL-адрес панели управления в выходных данных ноутбука. Используйте дашборд для проверки заданий, задач, акторов, логов и использования ресурсов Ray во время запуска кода.

Замечание

ray_init() Требуется окружение версии 5 и выше. Databricks AI v6 включает Рэя. Если вы используете Standard v6, установите Ray перед вызовом ray_init(). См. статью "Настройка среды".

Примеры записных книжек

Example Description
Ray Core Hello World Отправьте асинхронные задачи GPU на подключённых вычислительных ресурсах, проверьте планирование в панели управления Ray и получите результаты.
Настройка гиперпараметров CIFAR-10 с помощью Ray Tune Запускайте параллельные эксперименты на долях GPU для классификатора изображений на PyTorch и используйте асинхронный алгоритм последовательного сокращения (ASHA), чтобы заранее останавливать конфигурации с низкой производительностью.
Пакетный инференс Qwen2.5-32B с помощью Ray Data и vLLM Запустите многоязычную пакетную инференцию с восемью постоянно работающими репликами vLLM на восьми графических процессорах H100 и сохраните результаты в формате Parquet в томе Unity Catalog.

Используйте Ray через Databricks CLI

CLI-команды Databricks для AI Runtime поддерживают одноузловые и многоузловые нагрузки Ray. В конфигурации рабочей нагрузки укажите фиксированное значение accelerator_type и общее значение num_accelerators. Примеры “Hello, World!” для Ray включают многократно используемый загрузочный скрипт. В рабочей нагрузке commandRAY_ENTRYPOINT установите путь вашего файла Python и запустите загрузочный скрипт. Bootstrap-скрипт выполняет следующее:

  • На узле 0 запускается лучевая головка и запускается настроенная точка входа.
  • На каждом втором узле запускается воркер Ray, и соединение с ним поддерживается, пока работает точка входа.
  • После завершения точки входа процессы Ray останавливаются.

В приложении подключитесь к кластеру с помощью ray.init(address="auto").

В стандартной среде добавьте ray или другой необходимый компонент, например ray[data], ray[train] или ray[tune], в зависимости рабочей нагрузки. Databricks AI v6 включает Рэя.

Примеры интерфейса командной строки

Example Description
Примеры Ray Hello World Минимальные примеры для одноузловых и многоузловых конфигураций Ray Core, Ray Train, Ray Data и Ray Tune, включая шаблон инициализации кластера.
Распределенное обучение с помощью Ray Train Тонко настройте большую языковую модель на 8 графических процессорах H100 на одном узле с помощью Ray Train и PyTorch.
Пакетный вывод с помощью Ray Data и vLLM Запускайте крупномасштабный пакетный вывод с использованием Ray Data для распределённой загрузки данных и vLLM для эффективного обслуживания моделей.
Поиск по гиперпараметрам с помощью Ray Tune Подберите гиперпараметры дообучения LoRA для Qwen2.5 с помощью Ray Tune, запуская по одному эксперименту на каждом GPU и досрочно останавливая малоэффективные эксперименты с помощью планировщика ASHA.

Работа с данными и функциями Databricks

Рабочие нагрузки Ray могут получать доступ к данным в томах Unity Catalog, записывать сведения о запусках в MLflow и выполняться в качестве задач Lakeflow Jobs, определённых с помощью Declarative Automation Bundles.

Доступ к данным в каталоге Unity

Для табличных данных в таблице Unity Catalog используйте ray.data.read_databricks_tables() для чтения таблицы или запуска SQL-запроса через хранилище Databricks. Укажите идентификатор склада, каталог и схему, потому что AI Runtime не предоставляет локальную сессию Spark. Вы можете использовать SQL для объединения, агрегации и фильтров до того, как Ray обработает результаты.

Для файловых и неструктурированных данных используйте том Unity Catalog. Лучевые работники могут получать доступ к файлам по своим /Volumes/<catalog>/<schema>/<volume>/... путям. Например, Ray Data может читать файлы Parquet с помощью ray.data.read_parquet() и записывать результаты с помощью Dataset.write_parquet().

Отслеживание и координация рабочей нагрузки

Используйте MLflow для записи параметров, метрик и артефактов в ходе выполнения рабочей нагрузки Ray. См. Отслеживание эксперимента и наблюдаемость.

Для планирования нагрузки или её составления с помощью задач по подготовке данных процессора используйте Lakeflow Jobs и Declarative Automation Bundles. См. Производственные обучающие нагрузки.

Миграция существующей нагрузки Ray

Миграция самоуправляемой рабочей нагрузки Ray включает замену конфигурации инфраструктуры и интеграции сервисов на модель выполнения AI Runtime.

Оценка рабочей нагрузки

Перед миграцией ознакомьтесь с ограничениями. Убедитесь, что рабочая нагрузка может выполняться на кластере фиксированного размера с одним типом ускорителя.

Перенос рабочей нагрузки

Чтобы перенести самостоятельно управляемую рабочую нагрузку Ray:

  1. Выберите ноутбук для интерактивной одноузловой разработки или Databricks CLI для одноузловых или многоузловых задач.
  2. Сопоставьте существующие ресурсы кластера на тип ускорителя AI Runtime и количество акселераторов. См. Опции железа.
  3. Замените существующий запуск кластера на ray_init() в записной книжке или на задокументированную начальную настройку узлов head и worker в задаче Databricks CLI.
  4. Объявить зависимости рабочей нагрузки от Python и обновить её данные, контрольную точку, модель и пути вывода.
  5. Проверьте нагрузку на самой минимальной подходящей конфигурации. Проверьте доступ к данным, запросы ресурсов и выходы перед тестированием предполагаемой фиксированной топологии.

Limitations

Ray на AI Runtime имеет следующие ограничения:

  • Кластер Ray имеет фиксированное количество узлов на протяжении выполнения рабочей нагрузки. Автомасштабирование кластера лучей не поддерживается.
  • Все узлы в рабочей нагрузке используют одинаковый accelerator_type. Кластер Ray не может содержать отдельные рабочие группы только для CPU и GPU или масштабировать ёмкость CPU и GPU отдельно.
  • Блокнот запускает Ray на подключённом отдельном узле. Используйте интерфейс командной строки Databricks для многоузлового кластера Ray.
  • Доступ к панели лучей через драйверный прокси Databricks в настоящее время доступен только для рабочих нагрузок ноутбука.

Tip

Если подготовка процессора и обработка GPU могут выполняться как отдельные этапы, используйте многозадачный Lakeflow Job и передавайте данные между задачами через том Unity Catalog.