Files
simple-llm/README.md
Sergey Penkovsky a150828665 Добавление механизма внимания HeadAttention
- Реализация одного головного внимания из Transformer
- Полная документация на русском языке
- Пример использования с визуализацией
- Обновление README с ссылками
2025-07-19 11:35:11 +03:00

121 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Simple LLM Tokenizer
Простой и эффективный токенизатор для языковых моделей на основе BPE (Byte Pair Encoding)
## Описание проекта
Проект предоставляет реализации алгоритма BPE (Byte Pair Encoding) для токенизации текста:
- `SimpleBPE` - базовая версия
- `OptimizeBPE` - оптимизированная версия с улучшенной производительностью
Основные возможности:
- Обучение на любом тексте (поддержка кириллицы и других алфавитов)
- Гибкая настройка размера словаря
- Простота интеграции в существующие проекты
## Установка
1. Склонируйте репозиторий:
```bash
git clone https://github.com/yourusername/simple-llm.git
cd simple-llm
```
2. Установите пакет:
```bash
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/
```
Для внесения изменений установите зависимости разработки:
```bash
pip install -e ".[dev]"
```
## Лицензия
Проект распространяется под лицензией MIT. Подробнее см. [LICENSE](LICENSE).