mirror of
https://github.com/pese-git/simple-llm.git
synced 2026-01-23 21:14:17 +00:00
Рефакторинг документации: новая структура README
- Добавлены badges Python/PyTorch - Включена Mermaid-схема архитектуры - Улучшена навигация с оглавлением - Добавлена таблица примеров - Унифицирован стиль документации
This commit is contained in:
168
README.md
168
README.md
@@ -1,120 +1,78 @@
|
|||||||
# Simple LLM Tokenizer
|
# Simple LLM Framework
|
||||||
|
|
||||||
Простой и эффективный токенизатор для языковых моделей на основе BPE (Byte Pair Encoding)
|
[]()
|
||||||
|
[]()
|
||||||
|
|
||||||
## Описание проекта
|
Унифицированный фреймворк для 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. Склонируйте репозиторий:
|
# 2. Эмбеддинги
|
||||||
```bash
|
emb_layer = TokenEmbeddings(10000, 256)
|
||||||
git clone https://github.com/yourusername/simple-llm.git
|
embeddings = emb_layer(tokens)
|
||||||
cd simple-llm
|
|
||||||
|
# 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
|
```bash
|
||||||
|
git clone https://github.com/pese-git/simple-llm.git
|
||||||
|
cd simple-llm
|
||||||
pip install -e .
|
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
|
```bash
|
||||||
pytest tests/
|
# Запуск тестов
|
||||||
|
pytest tests/ -v
|
||||||
|
|
||||||
|
# Форматирование кода
|
||||||
|
black .
|
||||||
```
|
```
|
||||||
|
|
||||||
Для внесения изменений установите зависимости разработки:
|
|
||||||
```bash
|
|
||||||
pip install -e ".[dev]"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Лицензия
|
|
||||||
|
|
||||||
Проект распространяется под лицензией MIT. Подробнее см. [LICENSE](LICENSE).
|
|
||||||
|
|||||||
Reference in New Issue
Block a user