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. Склонируйте репозиторий:
|
||||
```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).
|
||||
|
||||
Reference in New Issue
Block a user