RAFT: библиотека алгоритмов и примитивов для ML с поддержкой CUDA
RAFT — это библиотека с основными алгоритмами и примитивами для машинного обучения и информационного поиска, ускоренными с помощью CUDA. Она предназначена для упрощения написания высокопроизводительных приложений, используя подход на основе повторного использования вычислений.
Проект решает задачу ускорения разработки алгоритмов, позволяя разработчикам сосредоточиться на создании приложений, вместо того чтобы заново реализовывать часто используемые функции. Это значительно сокращает время на разработку и облегчает обслуживание кода. RAFT подойдет как исследователям, так и разработчикам, работающим с ML и data mining, желающим использовать готовые высокопроизводительные примитивы.
Проект написан на C++ и поддерживает CUDA. Инструкции по установке и сборке доступны в репозитории. Обрати внимание: для работы требуется привязка к платформе NVIDIA и соответствующее оборудование.
Изучаем проект RAFT
RAFT: Повторно используемые ускоренные функции и инструменты
Что такое RAFT?
RAFT — это библиотека, содержащая основные и широко используемые алгоритмы и примитивы для машинного обучения иData mining. Алгоритмы в RAFT ускорены с помощью CUDA и служат строительными блоками для упрощенного написания высокопроизводительных приложений. Используя примитивный подход к разработке алгоритмов, RAFT:- ускоряет время создания алгоритмов;
- снижает затраты на обслуживание путем максимального повторного использования;
- централизует основные вычисления, позволяя будущим оптимизациям касаться всех алгоритмов, которые их используют.
Подходит ли RAFT для меня?
RAFT предлагает низкоуровневые примитивы, которые ускоряют приложения и рабочие потоки. Разработчики приложений и поставщики исходных данных могут найти некоторые функции полезными. Также RAFT не предназначен для непосредственного использования учеными данных для открытия и экспериментов.Как начать работу
RAFT активно использует менеджер памяти RAPIDS (RMM), который упрощает настройку различных стратегий выделения памяти. API RAFT принимает многомерные массивы с помощью `mdspan`, что похоже на `ndarray` в Python-библиотеке Numpy. Библиотека также содержит соответствующую структуру `mdarray`, которая упрощает выделение и управление многомерными данными в памяти хоста и устройства (GPU).Пример на C++
Основные примитивы RAFT принимают объект `raft::device_resources` для управления ресурсами. Вот пример создания ручки RAFT и использования ее с `device_matrix` и `device_vector` для вычисления евклидовых расстояний: ```c++ #includeПример на Python
Пакет `pylibraft` содержит API для RAFT, который плавно интегрируется с другими библиотеками. Пример вычисления евклидовых расстояний между массивами CuPy: ```python import cupy as cp from cuvs.distance import pairwise_distance n_samples = 5000 n_features = 50 in1 = cp.random.random_sample((n_samples, n_features), dtype=cp.float32) in2 = cp.random.random_sample((n_samples, n_features), dtype=cp.float32) output = pairwise_distance(in1, in2, metric="euclidean") ```Установка RAFT
Библиотеки RAFT можно установить через Conda и Pip.Установка через Conda
Самый простой способ установки RAFT — через conda. Для этого доступны несколько пакетов, включая `libraft-headers` и `pylibraft`. ```bash # Для CUDA 13 mamba install -c rapidsai -c conda-forge raft-dask pylibraft cuda-version=13.3 # Для CUDA 12 mamba install -c rapidsai -c conda-forge raft-dask pylibraft cuda-version=12.9 ```Установка через Pip
`pylibraft` и `raft-dask` можно установить через pip: ```bash # Для CUDA 13 pip install pylibraft-cu13 pip install raft-dask-cu13 # Для CUDA 12 pip install pylibraft-cu12 pip install raft-dask-cu12 ```Вклад в проект
Если ты хочешь внести свой вклад в проект RAFT, ознакомься с [руководством по внесению вклада](docs/source/contributing.md). Там ты найдёшь также [руководство для разработчиков](docs/source/developer_guide.md).Ссылки
Для цитирования RAFT, рассматривай возможность ссылки на этот проект на GitHub: ```bibtex @misc{rapidsai, title={Rapidsai/raft: RAFT содержит основные и широко используемые алгоритмы и примитивы для науки о данных, графов и машинного обучения.}, url={https://github.com/rapidsai/raft}, journal={GitHub}, publisher={NVIDIA RAPIDS}, author={Rapidsai}, year={2022} } ```Радар проекта: 75 из 100 — зрелый и живой проект
- Импульс 3 ≈ 5 звёзд в месяц
- Темп разработки 74 67 коммитов за 12 недель
- Зрелость 100 проекту 7 лет, 39 релизов
- Сообщество 78 116 участников, 257 форков
- Свежесть 99 последний коммит — 1 день назад
- Быстрый старт 65 есть: команда установки, сайт/демо
- Готовность к продакшену 80 релиз v26.10.00, автосборка
- Безопасность и доверие 85 лицензия Apache-2.0, SECURITY.md, организация
- Документация 97 README 12.5 тыс. знаков, 21 раздел, папка docs
- Экосистема 66 23 подписчика на обновления, 20 тем
Как считаем
Только открытые данные GitHub на 31.10.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: NVIDIA/raft →
RepoRadar