Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Если вы используете 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, зависит от интерфейса выполнения:
| Интерфейс | Узлы | запуск Ray |
|---|---|---|
| Notebook | Единственный узел, прикреплённый к ноутбуку | Вызов ray_init() из AI Runtime SDK (databricks.air) |
| Интерфейс командной строки Databricks | Фиксированное множество одного или нескольких узлов | Начните головку с узла 0 и соедините оставшиеся узлы в качестве рабочих с помощью повторно используемого bootstrap-скрипта |
Используйте Ray в тетрадях
Когда ваш ноутбук подключён к вычислениям AI Runtime GPU, используйте ray_init() из Databricks AI Runtime SDK, чтобы запустить Ray на подключённом узле:
from databricks.air import ray_init
ray_init()
ray_init() вызывает стандартный ray.init() API, настраивает панель управления Ray для доступа через прокси-драйвер Databricks и выводит URL-адрес панели управления в выходных данных ноутбука. Используйте дашборд для проверки заданий, задач, акторов, логов и использования ресурсов Ray во время запуска кода.
Примечание.
ray_init() Требуется окружение версии 5 и выше. В версии 5 импортируйте его из serverless_gpu вместо databricks.air. 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.
Рецепт Ray Train для Qwen2.5-3B включает многоразовый bootstrap-скрипт. В рабочей нагрузке commandRAY_ENTRYPOINT установите путь вашего файла Python и запустите загрузочный скрипт. Bootstrap-скрипт выполняет следующее:
- Он запускает head-узел Ray на узле и запускает настроенную точку входа приложения.
- После завершения точки входа процессы Ray останавливаются.
В приложении подключитесь к кластеру с помощью ray.init(address="auto").
В стандартной среде добавьте ray или другой необходимый компонент, например ray[data], ray[train] или ray[tune], в зависимости рабочей нагрузки. Databricks AI v6 включает Рэя.
Примеры интерфейса командной строки
| Example | Description |
|---|---|
| Тонкая настройка Qwen2.5-3B с помощью Ray Train | Тонко настройте Qwen2.5-3B с одним распределённым параллельным воркером для каждого GPU на узле 8x H100. |
| Пакетный вывод с помощью Ray Data и vLLM | Генерируйте ответы с помощью Qwen2.5-7B-Instruct и записывайте результаты в томе Unity Catalog как Parquet. |
Работа с данными и функциями 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. См. раздел «Планирование рабочих нагрузок GPU и создание задач».
Миграция существующей нагрузки Ray
Миграция самоуправляемой рабочей нагрузки Ray включает замену конфигурации инфраструктуры и интеграции сервисов на модель выполнения AI Runtime.
Оценка рабочей нагрузки
Перед миграцией ознакомьтесь с ограничениями. Убедитесь, что рабочая нагрузка может выполняться на кластере фиксированного размера с одним типом ускорителя.
Перенос рабочей нагрузки
Чтобы перенести самостоятельно управляемую рабочую нагрузку Ray:
- Выбирайте ноутбук для интерактивной разработки или Databricks CLI для отправленных заданий.
- Сопоставьте существующие ресурсы кластера на тип ускорителя AI Runtime и количество акселераторов. См. Оборудование.
- Замените существующий запуск кластера на
ray_init()в блокноте или на задокументированный скрипт загрузки в рабочей нагрузке Databricks CLI. - Объявить зависимости рабочей нагрузки от Python и обновить её данные, контрольную точку, модель и пути вывода.
- Проверьте нагрузку на самой минимальной подходящей конфигурации. Проверьте доступ к данным, запросы ресурсов и выходы перед тестированием предполагаемой фиксированной топологии.
Limitations
Ray на AI Runtime имеет следующие ограничения:
- Кластер Ray имеет фиксированное количество узлов на протяжении выполнения рабочей нагрузки. Автомасштабирование кластера лучей не поддерживается.
- Все узлы в рабочей нагрузке используют одинаковый
accelerator_type. Кластер Ray не может содержать отдельные рабочие группы только для CPU и GPU или масштабировать ёмкость CPU и GPU отдельно. - Доступ к панели Ray через драйверный прокси Azure Databricks доступен только для задач notebook.
- Ray работает на одном узле как в ноутбуках, так и в CLI-нагрузках Databricks.
Tip
Если подготовка процессора и обработка GPU могут выполняться как отдельные этапы, используйте многозадачный Lakeflow Job и передавайте данные между задачами через том Unity Catalog.