mirror of
https://github.com/pese-git/simple-llm.git
synced 2026-01-23 21:14:17 +00:00
- Реализация одного головного внимания из Transformer - Полная документация на русском языке - Пример использования с визуализацией - Обновление README с ссылками
121 lines
4.0 KiB
Markdown
121 lines
4.0 KiB
Markdown
# 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).
|