fast-nn

0

Описание

Реализация самоподобной сети быстрого обучения

Языки

  • Python77,7%
  • Jupyter Notebook21,9%
  • Dockerfile0,4%
README.md

Самоподобная нейросеть быстрого обучения для обработки текста

Описание

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 - словарь для токенизатора

Использование

Обучение модели

Модуль

src/train.py
предоставляет CLI-интерфейс для обучения нейросети на текстовых данных.

Запуск обучения

Параметры:

  • --config
    — путь к JSON-файлу конфигурации (обязательно)

Пример:

example-config.json
включен в данный репозиторий.

Формат конфигураций

ExperimentConfig (пример, файл configs/example-config.json):

Генерация текста

Для генерации текста используйте следующий пример кода:

Чат с моделью

Для интерактивного общения с обученной моделью используйте скрипт

src/chat.py
.

Запуск чата

Параметры:

  • --model
    — путь к папке модели или имя модели в Hugging Face Hub (обязательно)

Примеры:

Особенности:

  • Поддержка моделей как с локального хранилища, так и из Hugging Face Hub
  • Интерактивный режим общения с моделью
  • Автоматическое определение формата пути к модели (локальный или HF Hub)
  • Для загрузки моделей из Hugging Face Hub требуется токен, который должен быть установлен в переменной окружения
    HF_TOKEN

Использование:

  1. Запустите скрипт с указанием пути к модели
  2. Введите ваше сообщение в консоли после приглашения
    Вы:
  3. Для завершения диалога введите
    quit
    или
    exit

Данные

Поддерживает обучение на текстовых файлах в форматах:

  • Русский текст (например, "Война и мир.txt" в формате utf-8)
  • Английский текст (например, "Shakespeare.txt")

Для инструктивной настройки чата использовался https://huggingface.co/datasets/SiberiaSoft/SiberianPersonaChat

Дополнительно

  • Используется GPU-ускорение через CUDA
  • Поддерживает mixed precision через bfloat16
  • Включает unit-тесты в директории tests/

Запуск в Docker

Подготовка

  1. Создайте файл
    .env
    с необходимыми переменными окружения:
  1. Убедитесь, что у вас есть необходимые директории для данных и моделей:

Сборка образа

Запуск контейнера

Базовый запуск

Запуск с GPU (если доступно)

Запуск с переопределением переменных окружения

Описание томов (volumes)

  • /app/data
    : Директория для хранения датасетов и кэша
  • /app/models
    : Директория для сохранения обученных моделей

Переменные окружения

ПеременнаяОписаниеПо умолчанию
DATA_PATHПуть к файлу с данными/app/data/dataset.txt
DATASET_HF_NAMEНазвание датасета в HuggingFaceyour_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