fast-nn
Описание
Реализация самоподобной сети быстрого обучения
Языки
- Python77,7%
- Jupyter Notebook21,9%
- Dockerfile0,4%
Самоподобная нейросеть быстрого обучения для обработки текста
Описание
FastNN - это экспериментальная библиотека на PyTorch для создания и обучения нейросетевых моделей обработки текста. В проекте реализованы:
- Оригинальная архитектура нейросети, основанная на самоподобных быстрых нейросетях.
- Поддержка русского и английского языков через посимвольную токенизацию.
- Инструменты для подготовки данных и обучения.
- Механизмы генерации текста, в том числе с параметрами temperature, top_k.
Быстрый старт
Рекомендуемый способ установки - через менеджер пакетов uv. По ссылке можете найти информацию о том, как установить uv.
Запуск обучения модели на тестовой конфигурации example-config.json:
Для тестового обучения используется произведение Л.Н. Толстого "Война и мир". На видеокарте класса NVIDIA RTX 3090 обучение должно занять не более часа (128 эпох, модель 12,000,000 параметров, текст 3000000 символов). После этого можно запустить генерацию. Запуск генерации:
Научная часть
Подробный теоретический разбор архитектуры, математические выкладки и сравнение с трансформерными подходами вынесены в отдельный документ:
Ниже оставлена только developer-документация по структуре проекта, запуску и эксплуатации.
Основные модули
- src/core/* - базовые модули для работы с данными и обучения модели: токенизация, подготовка данных, логирование, цикл обучения
- src/configs.py - классы конфигурации модели и обучения
- src/fastnn.py - основные архитектурные модули нейросетей
- src/main.py - сценарии загрузки конфигурации, подготовки данных и запуска экспериментов
- src/train.py - модуль для запуска обучения модели в консольном режиме
- src/chat.py - модуль для тестирования диалога с моделью в консольном режиме
- src/mnist_example.py - пример использования модели в распознавании рукописных цифр
- src/vocab-166.json - словарь для токенизатора
Использование
Обучение модели
Модуль предоставляет CLI-интерфейс для обучения нейросети на текстовых данных.
Запуск обучения
Параметры:
— путь к JSON-файлу конфигурации (обязательно)--config
Пример:
включен в данный репозиторий.
Формат конфигураций
ExperimentConfig (пример, файл configs/example-config.json):
Генерация текста
Для генерации текста используйте следующий пример кода:
Чат с моделью
Для интерактивного общения с обученной моделью используйте скрипт .
Запуск чата
Параметры:
— путь к папке модели или имя модели в Hugging Face Hub (обязательно)--model
Примеры:
Особенности:
- Поддержка моделей как с локального хранилища, так и из Hugging Face Hub
- Интерактивный режим общения с моделью
- Автоматическое определение формата пути к модели (локальный или HF Hub)
- Для загрузки моделей из Hugging Face Hub требуется токен, который должен быть установлен в переменной окружения HF_TOKEN
Использование:
- Запустите скрипт с указанием пути к модели
- Введите ваше сообщение в консоли после приглашения Вы:
- Для завершения диалога введите
илиquitexit
Данные
Поддерживает обучение на текстовых файлах в форматах:
- Русский текст (например, "Война и мир.txt" в формате utf-8)
- Английский текст (например, "Shakespeare.txt")
Для инструктивной настройки чата использовался https://huggingface.co/datasets/SiberiaSoft/SiberianPersonaChat
Дополнительно
- Используется GPU-ускорение через CUDA
- Поддерживает mixed precision через bfloat16
- Включает unit-тесты в директории tests/
Запуск в Docker
Подготовка
- Создайте файл
с необходимыми переменными окружения:.env
- Убедитесь, что у вас есть необходимые директории для данных и моделей:
Сборка образа
Запуск контейнера
Базовый запуск
Запуск с GPU (если доступно)
Запуск с переопределением переменных окружения
Описание томов (volumes)
: Директория для хранения датасетов и кэша/app/data: Директория для сохранения обученных моделей/app/models
Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
| DATA_PATH | Путь к файлу с данными | /app/data/dataset.txt |
| DATASET_HF_NAME | Название датасета в HuggingFace | your_dataset_name |
| DATASET_LIMIT | Лимит размера датасета | 2147483648 |
| CACHE_DIR | Директория для кэша | /app/data/cache |
| TOKENIZER_PATH | Путь к файлу токенизатора | /app/src/vocab-166.json |
| MODEL_BASE_DIR | Директория для моделей | /app/models |
Примечания
- Все пути внутри контейнера начинаются с /app
- Для сохранения результатов между запусками используйте монтирование томов
- При использовании GPU убедитесь, что у вас установлен nvidia-container-toolkit
Лицензия
MIT License