diff --git a/README.md b/README.md index 72eb9fa..b0d23fa 100644 --- a/README.md +++ b/README.md @@ -1,120 +1,78 @@ -# Simple LLM Tokenizer +# Simple LLM Framework -Простой и эффективный токенизатор для языковых моделей на основе BPE (Byte Pair Encoding) +[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)]() +[![PyTorch 2.0+](https://img.shields.io/badge/PyTorch-2.0+-red.svg)]() -## Описание проекта +Унифицированный фреймворк для NLP, включающий: +- 🎯 Токенизацию на основе BPE +- 📊 Векторные представления +- 🧠 Механизмы внимания -Проект предоставляет реализации алгоритма BPE (Byte Pair Encoding) для токенизации текста: -- `SimpleBPE` - базовая версия -- `OptimizeBPE` - оптимизированная версия с улучшенной производительностью +## Оглавление +- [Быстрый старт](#быстрый-старт) +- [Архитектура](#архитектура) +- [Модули](#модули) +- [Примеры](#примеры) +- [Установка](#установка) +- [Разработка](#разработка) -Основные возможности: -- Обучение на любом тексте (поддержка кириллицы и других алфавитов) -- Гибкая настройка размера словаря -- Простота интеграции в существующие проекты +## Быстрый старт +```python +from simple_llm import SimpleBPE, TokenEmbeddings, HeadAttention -## Установка +# 1. Токенизация +bpe = SimpleBPE().fit(text) +tokens = bpe.encode("Привет мир") -1. Склонируйте репозиторий: -```bash -git clone https://github.com/yourusername/simple-llm.git -cd simple-llm +# 2. Эмбеддинги +emb_layer = TokenEmbeddings(10000, 256) +embeddings = emb_layer(tokens) + +# 3. Внимание +attention = HeadAttention(256, 64) +output = attention(embeddings) ``` -2. Установите пакет: +## Архитектура +```mermaid +graph TD + A[Текст] --> B(Tokenizer) + B --> C[Токены] + C --> D[TokenEmbeddings] + D --> E[HeadAttention] + E --> F[Выход модели] +``` + +## Модули +### Токенизация +- `SimpleBPE` - базовая реализация BPE +- `OptimizeBPE` - оптимизированная версия + +### Эмбеддинги +- `TokenEmbeddings` - обучаемые векторные представления +- `PositionalEmbeddings` - позиционное кодирование + +### Transformer +- `HeadAttention` - механизм внимания одной головы + +## Примеры +| Файл | Описание | +|-------|----------| +| [example_bpe.py](/example/example_bpe.py) | Базовая токенизация | +| [head_attention_example.py](/example/head_attention_example.py) | Визуализация внимания | + +## Установка ```bash +git clone https://github.com/pese-git/simple-llm.git +cd simple-llm pip install -e . ``` -## Быстрый старт - -```python -from simple_llm.tokenizer import SimpleBPE - -# Инициализация и обучение -text = "мама мыла раму, папа пил какао" -bpe = SimpleBPE(vocab_size=50) -bpe.fit(text) - -# Кодирование/декодирование -encoded = bpe.encode(text) -print(f"Закодировано: {encoded}") - -decoded = bpe.decode(encoded) -print(f"Декодировано: '{decoded}'") -print(f"Совпадение с оригиналом: {text == decoded}") - -# Обработка неизвестных слов -unknown = bpe.encode("неизвестное_слово") -print(f"Неизвестное слово: {unknown}") -``` - -Пример вывода: -``` -Закодировано: [12, 12, 0, 15, 8, 0, 17, 9, 1, 0, 16, 16, 0, 14, 7, 0, 10, 10, 3] -Декодировано: 'мама мыла раму, папа пил какао' -Совпадение с оригиналом: True -Неизвестное слово: [-1, -1, 3, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, 5, 7, -1, 7] -``` - -### Работа с эмбеддингами -```python -from simple_llm.embedding import TokenEmbeddings, PositionalEmbeddings - -# Инициализация -token_emb = TokenEmbeddings(vocab_size=1000, emb_size=256) -pos_emb = PositionalEmbeddings(max_seq_len=512, emb_size=256) - -# Пример использования -tokens = [1, 2, 3] # Индексы токенов -embeddings = token_emb(tokens) + pos_emb(len(tokens)) -print(f"Объединенные эмбеддинги: {embeddings.shape}") -``` - -## Документация -- [Токенизация BPE](/doc/bpe_algorithm.md) -- [Токенные эмбеддинги](/doc/token_embeddings_ru.md) -- [Позиционные эмбеддинги](/doc/positional_embeddings_ru.md) - -## Интеграция в проект - -Добавьте в ваш `requirements.txt`: -``` -git+https://github.com/yourusername/simple-llm.git -``` - -Или установите напрямую: -```bash -pip install git+https://github.com/yourusername/simple-llm.git -``` - -## Примеры использования - -Дополнительные примеры: -- [Базовый BPE](/example/example_bpe.py) -- [Токенные эмбеддинги](/example/example_token_embeddings.py) -- [Механизм внимания](/example/head_attention_example.py) - -Документация: -- [Токенизация](/doc/bpe_algorithm.md) -- [Эмбеддинги](/doc/token_embeddings_ru.md) -- [Внимание](/doc/head_attention_ru.md) -- Сравнение SimpleBPE и OptimizeBPE -- Работа с разными языками -- Настройка параметров токенизации - ## Разработка - -Для запуска тестов: ```bash -pytest tests/ +# Запуск тестов +pytest tests/ -v + +# Форматирование кода +black . ``` - -Для внесения изменений установите зависимости разработки: -```bash -pip install -e ".[dev]" -``` - -## Лицензия - -Проект распространяется под лицензией MIT. Подробнее см. [LICENSE](LICENSE).