OpenLake: высокопроизводительный движок хранения для LLM на GPU

OpenLake — это высокопроизводительный движок хранения для эффективного вывода LLM и обучения с использованием GPU. Он нацелен на решение задач с высокими требованиями к вводам-выводам, предоставляя миллионы операций в секунду с латентностью менее 1 мс.

Проект написан на Rust с использованием io_uring, что позволяет ему достигать значительно больших показателей, чем многие традиционные системы хранения. OpenLake подойдет разработчикам, работающим с большими языковыми моделями и требующим мощной инфраструктуры для обработки данных. Если ты ищешь решение для оптимизации производительности своих GPU-ворклоадов, это может быть твой выбор.

Обрати внимание, что проект находится на ранней стадии разработки, и могут быть ограничения по совместимости или функциональности. Информации о том, как запустить OpenLake, в README нет, так что стоит заглянуть в документацию для получения более детальной информации.

Проект OpenLake предлагает решение для распределенного хранения данных, специально разработанное для работы с высокопроизводительными вычислительными задачами на графических процессорах (GPU). Он построен на языке Rust и использует `io_uring`, что позволяет ему достигать миллионов операций ввода-вывода в секунду с задержкой менее 1 мс. Этот проект подходит для поддержки задач в области искусственного интеллекта и машинного обучения, предлагая такие функции, как кэширование, индексация и высокоскоростное восстановление данных.

Зачем нужен OpenLake?

OpenLake предназначен для оптимизации работы с ИИ-инфраструктурами, обеспечивая высокую пропускную способность и удобство работы с небольшими вводами/выводами. Он помогает минимизировать время простоя GPU во время обучения и вывода, что позволяет максимально эффективно использовать вычислительные ресурсы. Основные возможности OpenLake включают:

  • Кэширование ключей и значений (KV Cache Offload)
  • Индексация и обслуживание векторных данных (VectorDB)
  • Ультрабыстрое хранение и восстановление контрольных точек (Checkpointing)
  • Оптимизация обучения моделей с высокой скоростью чтения
  • Хранение контекста для быстрой работы с большими объемами данных

Как установить и запустить?

Установка OpenLake довольно проста и не требует изменения существующего кода. Вот шаги, которые необходимо выполнить:

1) Настройка кэша KV на узлах GPU:

  • Установи необходимый пакет:
  • pip install openlake-vllm
  • Запусти хранилище:
  • openlaked
  • Запусти vLLM с включенным OpenLake:
  • export PYTHONHASHSEED=0
    vllm serve  --kv-transfer-config '{"kv_connector":"OpenLakeConnector","kv_connector_module_path":"openlake_client.openlake_connector","kv_role":"kv_both","kv_connector_extra_config":{"openlake_nodes":["127.0.0.1:9400"],"openlake_device":"local"}}'
  • Для развертывания в Kubernetes воспользуйся [инструкцией по развертыванию Helm](charts/openlake/README.md).

2) Объектное хранилище масштаба PB для GPU

Чтобы создать S3-совместимое хранилище, следуй этим шагам:

  • Склонируй репозиторий и собери его:
  • git clone https://github.com/openlake-project/openlake.git && cd openlake
    cargo build --release --bin openlaked
  • Запусти хранилище с использованием стандартной конфигурации:
  • mkdir -p data/d0 data/d1 data/d2 data/d3
    ./target/release/openlaked --config crates/openlake_server/configs/storage-tcp-local.toml
  • Общайся с хранилищем с помощью любого клиента S3:
  • export AWS_ACCESS_KEY_ID=openlakeadmin
    export AWS_SECRET_ACCESS_KEY=openlakeadmin
    export AWS_DEFAULT_REGION=us-east-1
    
    aws --endpoint-url http://127.0.0.1:9000 s3 mb s3://demo
    aws --endpoint-url http://127.0.0.1:9000 s3 cp ./checkpoint.safetensors s3://demo/
    aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://demo/

Архитектура

OpenLake минимизирует путь от хранения до памяти GPU, обеспечивает низкую задержку и предсказуемость работы:

  • Поддержка Zero Copy: данные передаются напрямую между NVMe или RDMA NIC и памятью GPU без промежуточного хранения в памяти хоста.
  • Локальный асинхронный ввод-вывод: используется одна runtime на физический ядро, что повышает производительность и снижает конфликт.
  • Эффективное управление долговечностью хранит данные с меньшими затратами на емкость.

Получение поддержки

Если у тебя возникли технические вопросы, ты можешь обратиться за помощью в [Discord-сообщество](https://discord.gg/TNXqVSnP6x) или создать issue на GitHub.

Проект лицензирован под Apache 2.0.

Открыть на GitHub: openlake-project/openlake →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте