Эта фаза посвящена настройке фундамента проекта. Мы используем RustTTS как донор кода.
- Создать
Cargo.tomlс[workspace]и настройками:- Edition 2024
- Resolver version 2
- Общие зависимости в
[workspace.dependencies]
- Настроить структуру папок:
RustASR/ ├── Cargo.toml (workspace) ├── crates/ │ ├── common/ # Общие утилиты │ ├── audio/ # Аудио процессинг (Фаза 2) │ ├── aut-encoder/ # AuT Encoder (Фаза 3) │ └── cli/ # CLI приложение (Фаза 4) ├── models/ # Директория для весов └── tests/ # Интеграционные тесты - Настроить
.gitignore(исключитьmodels/,target/,Cargo.lockдля библиотек). - Создать
rust-toolchain.tomlс версией Rust 1.80+.
- Создать
crates/commonс базовыми утилитами:- Логирование (tracing/env_logger)
- Конфигурация (serde, toml)
- Обработка ошибок (thiserror/anyhow)
- Перенести необходимые компоненты из RustTTS:
- Токенизатор (если применим)
- Утилиты работы с safetensors
- Конфигурационные структуры
- Создать
crates/qwen3-modelдля LLM декодера:- Структуры модели Qwen3
- Загрузка весов
- Inference pipeline
- Примечание: Для ASR нужен только декодер, можно выделить в отдельный крейт
- Добавить зависимости в
Cargo.toml:candle-core = "0.8" candle-nn = "0.8" candle-transformers = "0.8"
- Включить feature flags для аппаратного ускорения:
metalдля macOS (Apple Silicon)cudaдля NVIDIA GPU (опционально)accelerateдля CPU оптимизаций на macOS
- Создать тестовую программу "Hello World":
- Создание простого тензора
- Выполнение операции (matmul)
- Проверка работы на Metal/CPU
- Измерить baseline производительность (простой matmul benchmark).
- Настроить CI/CD (GitHub Actions):
- Сборка на macOS и Linux
- Запуск тестов
- Проверка форматирования (rustfmt)
- Линтинг (clippy)
- Настроить pre-commit hooks (опционально).
- Создать базовый README.md с инструкциями по сборке.
- Workspace успешно компилируется командой
cargo build - Все крейты имеют базовую структуру и
Cargo.toml - "Hello World" программа с Candle работает на целевой платформе (Metal/CPU)
- Настроен линтинг (cargo clippy проходит без ошибок)
- Форматирование кода соответствует стандарту (cargo fmt)
- Создана базовая документация (README.md)
- Время сборки workspace: < 5 минут (clean build)
- Размер скомпилированных бинарников: < 100MB (debug)
- Candle Hello World выполняется успешно на Metal/CPU
- Тесты проходят на CI/CD (если настроен)
| Риск | Вероятность | Влияние | Митигация |
|---|---|---|---|
| Несовместимость версий зависимостей | Средняя | Среднее | Использовать locked версии, регулярно обновлять |
| Проблемы с Metal backend на старых macOS | Низкая | Среднее | Fallback на CPU, указать минимальные требования |
| Долгое время компиляции Candle | Высокая | Низкое | Использовать sccache, оптимизировать features |
| Конфликты при переносе кода из RustTTS | Средняя | Среднее | Копировать только необходимое, адаптировать под новую структуру |
- Наличие RustTTS в качестве референса
- Установленный Rust toolchain 1.80+
- macOS с Apple Silicon (для Metal) или Linux/Windows
- Фаза 2, 3, 4: Все последующие фазы зависят от настроенной инфраструктуры
-
Smoke-тесты:
cargo build --allпроходит без ошибокcargo test --allвыполняется успешноcargo clippy --allне выдает ошибок
-
Candle Integration Test:
- Создание тензоров на разных устройствах (CPU, Metal)
- Простые операции (add, mul, matmul)
- Проверка корректности результатов
-
Benchmark-тесты:
- Измерение скорости matmul для разных размерностей
- Сравнение CPU vs Metal производительности
- Workspace структура создана и документирована
- Все базовые крейты компилируются
- Candle работает на целевой платформе
- CI/CD настроен (или запланирован)
- Команда может начать работу над Фазой 2 без блокеров