2025-07-11 12:21:33 +03:00
|
|
|
|
# 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)
|
|
|
|
|
|
|
2025-07-13 01:08:37 +03:00
|
|
|
|
# Кодирование/декодирование
|
|
|
|
|
|
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]
|
2025-07-11 12:21:33 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Интеграция в проект
|
|
|
|
|
|
|
|
|
|
|
|
Добавьте в ваш `requirements.txt`:
|
|
|
|
|
|
```
|
|
|
|
|
|
git+https://github.com/yourusername/simple-llm.git
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Или установите напрямую:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
pip install git+https://github.com/yourusername/simple-llm.git
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Примеры
|
|
|
|
|
|
|
|
|
|
|
|
Дополнительные примеры использования смотрите в папке [example](/example):
|
|
|
|
|
|
- Сравнение SimpleBPE и OptimizeBPE
|
|
|
|
|
|
- Работа с разными языками
|
|
|
|
|
|
- Настройка параметров токенизации
|
|
|
|
|
|
|
|
|
|
|
|
## Разработка
|
|
|
|
|
|
|
|
|
|
|
|
Для запуска тестов:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
pytest tests/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Для внесения изменений установите зависимости разработки:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
pip install -e ".[dev]"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Лицензия
|
|
|
|
|
|
|
|
|
|
|
|
Проект распространяется под лицензией MIT. Подробнее см. [LICENSE](LICENSE).
|