Skip to content

Latest commit

 

History

History
132 lines (109 loc) · 6.82 KB

File metadata and controls

132 lines (109 loc) · 6.82 KB

Фаза 1: Инфраструктура и Подготовка

Эта фаза посвящена настройке фундамента проекта. Мы используем RustTTS как донор кода.

Задачи

1.1. Инициализация Workspace

  • Создать 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+.

1.2. Базовые Крейты

  • Создать crates/common с базовыми утилитами:
    • Логирование (tracing/env_logger)
    • Конфигурация (serde, toml)
    • Обработка ошибок (thiserror/anyhow)
  • Перенести необходимые компоненты из RustTTS:
    • Токенизатор (если применим)
    • Утилиты работы с safetensors
    • Конфигурационные структуры
  • Создать crates/qwen3-model для LLM декодера:
    • Структуры модели Qwen3
    • Загрузка весов
    • Inference pipeline
    • Примечание: Для ASR нужен только декодер, можно выделить в отдельный крейт

1.3. Настройка Candle

  • Добавить зависимости в 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).

1.4. Дополнительные Инструменты

  • Настроить CI/CD (GitHub Actions):
    • Сборка на macOS и Linux
    • Запуск тестов
    • Проверка форматирования (rustfmt)
    • Линтинг (clippy)
  • Настроить pre-commit hooks (опционально).
  • Создать базовый README.md с инструкциями по сборке.

✅ Критерии Завершения (Definition of Done)

  • 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: Все последующие фазы зависят от настроенной инфраструктуры

🧪 План Тестирования

  1. Smoke-тесты:

    • cargo build --all проходит без ошибок
    • cargo test --all выполняется успешно
    • cargo clippy --all не выдает ошибок
  2. Candle Integration Test:

    • Создание тензоров на разных устройствах (CPU, Metal)
    • Простые операции (add, mul, matmul)
    • Проверка корректности результатов
  3. Benchmark-тесты:

    • Измерение скорости matmul для разных размерностей
    • Сравнение CPU vs Metal производительности

📋 Чеклист для перехода к Фазе 2

  • Workspace структура создана и документирована
  • Все базовые крейты компилируются
  • Candle работает на целевой платформе
  • CI/CD настроен (или запланирован)
  • Команда может начать работу над Фазой 2 без блокеров

📚 Референсы