Для чистой Markdown-версии этой страницы добавьте
.mdк этому URL. Полный индекс документации см. в https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. в https://docs.nvidia.com/dynamo/llms-full.txt.
Руководство для участников
Dynamo — это распределенная платформа для инференса с открытым исходным кодом, которую создает растущее сообщество участников. Проект распространяется по лицензии Apache 2.0 и принимает вклад любого масштаба — от исправления опечаток до крупных функций. Вклад сообщества сформировал ключевые области Dynamo, включая интеграции бэкендов, документацию, инструменты развертывания и улучшения производительности.
С более чем 200 внешними участниками, 220+ объединенными PR сообщества и новыми участниками каждый месяц Dynamo входит в число самых быстрорастущих проектов с открытым исходным кодом для инференса. Посмотрите нашу активность коммитов и звезды GitHub. Это руководство поможет вам начать.
Присоединяйтесь к сообществу:
- CNCF Slack (
#ai-dynamo) — присоединитесь к CNCF Slack и найдите нас в#ai-dynamo - Discord
- GitHub Discussions
Кратко
Для опытных участников:
- Сделайте fork и клонируйте репозиторий
- Для изменений ≥100 строк или новых функций сначала откройте issue
- Создайте ветку:
git checkout -b yourname/fix-router-timeout - Внесите изменения, запустите
pre-commit run - Зафиксируйте коммит с DCO sign-off:
git commit -s -m "fix: description" - Откройте PR в
main
Способы внести вклад
Сообщить об ошибке
Нашли что-то сломанное? Откройте отчет об ошибке, указав:
- Шаги воспроизведения
- Ожидаемое и фактическое поведение
- Сведения об окружении (OS, GPU, версия Python, версия Dynamo)
Улучшить документацию
Улучшения документации всегда приветствуются:
- Исправление опечаток или неясных объяснений
- Добавление примеров или руководств
- Улучшение документации API
Небольшие исправления в документации можно отправлять напрямую в PR без issue.
Предложить функцию
Есть идея? Откройте запрос на функцию, чтобы обсудить ее с сопровождающими до реализации.
Внести код
Готовы писать код? См. раздел Рабочий процесс участия ниже.
Помочь сообществу
Не весь вклад — это код. Также можно:
- Отвечать на вопросы в Discord или в канале
#ai-dynamoв CNCF Slack - Просматривать pull request
- Делиться тем, как вы используете Dynamo, через блоги, выступления или соцсети
- Поставить звезду репозиторию
С чего начать
Найти issue
Просмотрите открытые issue или ищите:
| Тип issue | Описание |
|---|---|
| Good First Issues | Подходит новичкам, есть подсказки |
| Help Wanted | Приветствуются вклады сообщества |
Fork и клонирование
- Сделайте fork репозитория на GitHub
- Клонируйте свой fork:
git clone https://github.com/YOUR-USERNAME/dynamo.git
cd dynamo
git remote add upstream https://github.com/ai-dynamo/dynamo.git
Сборка из исходников
Полные инструкции по сборке приведены ниже. Раскройте аккордеон, чтобы настроить локальную среду разработки.
Развернуть инструкции по сборке
1. Установите системные библиотеки
Ubuntu:
sudo apt install -y build-essential libhwloc-dev libudev-dev pkg-config libclang-dev protobuf-compiler python3-dev cmake
macOS:
# Установите Homebrew, если он еще не установлен
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install cmake protobuf
# Проверьте доступность Metal
xcrun -sdk macosx metal
2. Установите Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
3. Создайте виртуальное Python-окружение
Установите uv, если он у вас еще не установлен:
curl -LsSf https://astral.sh/uv/install.sh | sh
Создайте и активируйте виртуальное окружение:
uv venv .venv
source .venv/bin/activate
4. Установите инструменты сборки
uv pip install pip maturin
Maturin — это инструмент сборки Rust-Python bindings.
5. Соберите Rust bindings
cd lib/bindings/python
maturin develop --uv
6. Установите GPU Memory Service
# Вернитесь в корень проекта
cd "$(git rev-parse --show-toplevel)"
uv pip install -e lib/gpu_memory_service
7. Установите wheel-пакет
uv pip install -e .
8. Проверьте сборку
python3 -m dynamo.frontend --help
Пользователи VSCode и Cursor могут использовать папку .devcontainer для преднастроенной среды разработки. Подробности см. в README devcontainer.
Настройка хуков pre-commit
uv pip install pre-commit
pre-commit install
Готово! Проявите любопытство — изучите кодовую базу, поэкспериментируйте с примерами и посмотрите, как все части сочетаются друг с другом. Когда будете готовы, выберите issue на доске Good First Issues или читайте дальше о полном процессе участия.
Рабочий процесс участия
Процесс участия зависит от размера и масштаба вашего изменения. Даже когда это не обязательно, открыть issue — отличный способ начать обсуждение с сопровождающими Dynamo до того, как тратить время на PR.
| Размер | Измененных строк | Пример | Что нужно |
|---|---|---|---|
| XS | 1–10 | Исправление опечатки, правка конфигурации | Отправьте PR напрямую |
| S | 10–100 | Небольшое исправление ошибки, улучшение документации, точечный рефакторинг | Отправьте PR напрямую |
| M | 100–200 | Добавление функции, умеренный рефакторинг | Сначала откройте issue |
| L | 200–500 | Функция в нескольких файлах, новый компонент | Сначала откройте issue |
| XL | 500–1000 | Крупная функция, изменение между компонентами | Сначала откройте issue |
| XXL | 1000+ | Изменение архитектуры | Требует DEP |
Небольшие изменения (менее 100 строк): Отправляйте PR напрямую -- issue не нужен. Сюда входят опечатки, простые исправления и форматирование. Если ваш PR закрывает уже одобренное issue, свяжите его через "Fixes #123".
Более крупные изменения (≥100 строк): Сначала откройте issue Contribution Request и дождитесь метки approved-for-pr перед отправкой PR.
Изменения архитектуры: Изменения, затрагивающие несколько компонентов, добавляющие или меняющие публичные API, меняющие архитектуру communication plane или влияющие на контракты интеграции backend, требуют Dynamo Enhancement Proposal (DEP). Откройте DEP в репозитории ai-dynamo/enhancements до начала реализации.
Отправка Pull Request
-
Создайте GitHub Issue (если требуется) — откройте Contribution Request и опишите, что вы решаете, предлагаемый подход, оценку размера PR и затронутые файлы.
-
Получите одобрение — дождитесь, пока сопровождающие рассмотрят запрос и назначат метку
approved-for-pr. -
Отправьте Pull Request — откройте PR, который ссылается на issue с помощью GitHub-ключевых слов (например, "Fixes #123").
-
Отработайте ревью Code Rabbit — ответьте на автоматические замечания Code Rabbit, включая мелкие придирки.
-
Запустите CI-тесты — для внешних участников сопровождающий должен оставить комментарий
/ok to test COMMIT-ID, чтобы запустить полный CI.COMMIT-ID— это короткий SHA вашего последнего коммита. Исправьте все падающие тесты до запроса человеческого ревью. -
Запросите ревью — добавьте в reviewers человека, который одобрил ваше issue. Проверьте CODEOWNERS, чтобы понять, какие одобряющие нужны для измененных файлов.
Код, сгенерированный ИИ: Хотя мы поощряем использование AI-инструментов, вы должны полностью понимать каждое изменение в своем PR. Неспособность объяснить отправленный код приведет к отклонению.
Именование веток
Используйте описательное имя ветки, которое идентифицирует вас и изменение:
yourname/fix-description
Примеры:
jsmith/fix-router-timeout
jsmith/add-lora-support
Стиль кода и качество
Сопровождающие оценивают качество вклада по стилю кода, покрытию тестами, соответствию архитектуре и оперативности реакции на ревью. Последовательный, качественный вклад — основа доверия к проекту.
Pre-commit hooks
Все PR проверяются через pre-commit hooks. После установки pre-commit запустите проверки локально:
pre-commit run --all-files
Правила сообщений коммитов
Используйте префиксы conventional commit:
| Префикс | Для чего использовать |
|---|---|
feat: | Новые функции |
fix: | Исправления ошибок |
docs: | Изменения в документации |
refactor: | Рефакторинг кода (без изменения поведения) |
test: | Добавление или обновление тестов |
chore: | Обслуживание, обновления зависимостей |
ci: | Изменения CI/CD |
perf: | Улучшения производительности |
Примеры:
feat(router): add weighted load balancing
fix(frontend): resolve streaming timeout on large responses
docs: update quickstart for macOS users
test(planner): add unit tests for scaling policy
Правила по языкам
| Язык | Руководство по стилю | Форматтер |
|---|---|---|
| Python | PEP 8 | black, ruff |
| Rust | Rust API Guidelines | cargo fmt, cargo clippy |
| Go | Effective Go | gofmt |
Тестирование
Запустите тестовый набор перед отправкой PR:
# Запустить все тесты
pytest tests/
# Запустить только unit-тесты
pytest -m unit tests/
# Запустить конкретный файл тестов
pytest -s -v tests/test_example.py
Для Rust-компонентов:
cargo test
Для Kubernetes operator (Go):
cd deploy/operator
go test ./... -v
Общие рекомендации
- Делайте PR сфокусированными -- одна задача на один PR
- Пишите чистый, хорошо документированный код, который смогут понять будущие участники
- Добавляйте тесты для новой функциональности и исправлений ошибок
- Обеспечивайте чистую сборку (без предупреждений и ошибок)
- Все тесты должны проходить
- Не оставляйте закомментированный код
- Отвечайте на замечания ревью быстро и конструктивно
Локальный запуск GitHub Actions
Используйте act для локального запуска workflows:
act -j pre-merge-rust
Или используйте расширение VS Code GitHub Local Actions.
Чего ожидать
Метки статуса
| Статус | Что означает |
|---|---|
needs-triage | Мы рассматриваем ваше issue |
needs-info | Нам нужны дополнительные подробности |
approved-for-pr | Готово к реализации — отправляйте PR |
in-progress | Кто-то уже работает над этим |
blocked | Ожидание внешней зависимости |
Сроки ответа
Мы стремимся к следующему:
- Отвечать на новые issue в течение нескольких рабочих дней
- Триажить высокоприоритетные issue в течение недели
Issue без активности в течение 30 дней могут быть автоматически закрыты (их можно открыть снова).
Процесс ревью
После отправки PR и выполнения шагов из раздела Отправка Pull Request:
- Ревьюер оставит замечания -- пожалуйста, отвечайте на все комментарии в разумные сроки
- Если запрошены изменения, внесите их и напомните ревьюеру о повторном просмотре
- Если ваш PR не был просмотрен в течение 7 дней, можно напомнить ревьюеру или оставить комментарий
Good First Issues
Issue с меткой good-first-issue рассчитаны на новых участников. Для них мы даем дополнительное руководство -- ищите в описании четкие критерии приемки и предлагаемый подход.
DCO & Licensing
Developer Certificate of Origin
Dynamo требует, чтобы все contributions были подписаны через Developer Certificate of Origin (DCO). Это подтверждает, что у вас есть право отправить свой вклад под лицензией Apache 2.0 проекта.
Каждый коммит должен содержать строку sign-off:
Signed-off-by: Jane Smith <jane.smith@email.com>
Добавьте это автоматически с флагом -s:
git commit -s -m "fix: your descriptive message"
Требования:
- Используйте свое настоящее имя (без псевдонимов и анонимных вкладов)
user.nameиuser.emailдолжны быть настроены в git
Проверка DCO не прошла? См. наше руководство по устранению неполадок DCO с пошаговыми инструкциями по исправлению.
Лицензия
Отправляя вклад, вы соглашаетесь, что он будет распространяться под лицензией Apache 2.0.
Кодекс поведения
Мы стремимся поддерживать дружелюбную и инклюзивную среду. Ожидается, что все участники будут соблюдать наш Кодекс поведения.
Безопасность
Если вы обнаружили уязвимость безопасности, следуйте инструкциям из нашей Security Policy. Не открывайте публичный issue для уязвимостей безопасности.
Как получить помощь
- CNCF Slack: Присоединяйтесь к CNCF Slack и найдите нас в
#ai-dynamo - Discord: Присоединяйтесь к нашему сообществу
- Discussions: GitHub Discussions
- Documentation: docs.nvidia.com/dynamo
Спасибо за вклад в Dynamo!