feat: initial project setup with LLM architecture and HF integration

- Add LLM library with GPT model implementation
- Add hf-proxy for HuggingFace integration
- Add experiments for training and generation
- Add comprehensive documentation and examples
- Configure uv workspace with proper dependencies
This commit is contained in:
Sergey Penkovsky
2025-10-04 22:40:21 +03:00
commit ec07546ea8
54 changed files with 9337 additions and 0 deletions

131
experiments/README.md Normal file
View File

@@ -0,0 +1,131 @@
# Эксперименты с LLM архитектурами
Унифицированная структура экспериментов для обучения и генерации текста моделями LLM.
## 📁 Структура экспериментов
```
experiments/
├── llm_only/ # Эксперименты только с библиотекой llm
│ ├── train_gpt_bpe.py # Обучение GPT с BPE токенизатором
│ └── generate_gpt_bpe.py # Генерация с GPT + BPE
├── hf_integration/ # Эксперименты с hf-proxy
│ ├── train_with_hf_trainer.py # Обучение через HF Trainer
│ └── generate_with_hf_tools.py # Генерация через HF инструменты
├── shared/ # Общие утилиты
│ ├── data.py # Загрузка и подготовка данных
│ └── configs.py # Конфигурации моделей
└── README.md # Этот файл
```
## 🚀 Быстрый старт
### 1. Только библиотека llm (автономный режим)
```bash
# Обучение GPT модели с собственным BPE токенизатором
uv run python experiments/llm_only/train_gpt_bpe.py
# Генерация текста обученной моделью
uv run python experiments/llm_only/generate_gpt_bpe.py
```
### 2. Интеграция с HuggingFace через hf-proxy
```bash
# Обучение через HuggingFace Trainer
uv run python experiments/hf_integration/train_with_hf_trainer.py
# Генерация через HF инструменты
uv run python experiments/hf_integration/generate_with_hf_tools.py
```
## 📊 Сравнение подходов
| Аспект | Только llm | С hf-proxy |
|--------|------------|------------|
| **Зависимости** | Только PyTorch | + HuggingFace Transformers |
| **Обучение** | Собственный Trainer | HF Trainer |
| **Генерация** | Прямой вызов модели | HF pipeline & интерфейсы |
| **Гибкость** | Полный контроль | Совместимость с HF экосистемой |
| **Сложность** | Проще | Более сложная настройка |
## 🔧 Конфигурация
Все эксперименты используют общие конфигурации из `shared/configs.py`:
- **Модели**: базовые, маленькие и большие конфигурации GPT
- **Токенизаторы**: параметры BPE обучения
- **Обучение**: гиперпараметры обучения
- **Генерация**: параметры генерации текста
## 📈 Результаты
Эксперименты сохраняют:
- Обученные модели в `checkpoints/`
- Токенизаторы в формате JSON
- Логи обучения и генерации
- Конфигурации моделей
## 🎯 Примеры использования
### Автономное использование (только llm)
```python
from llm.models.gpt import GPT
from llm.tokenizers import BPETokenizer
# Загрузка обученной модели
model = GPT(config)
model.load_state_dict(torch.load("checkpoints/gpt-bpe/model.pt"))
# Загрузка токенизатора
tokenizer = BPETokenizer.load("checkpoints/bpe_tokenizer.json")
# Генерация текста
input_ids = tokenizer.encode("промпт")
generated = model.generate(input_ids)
```
### Интеграция с HF (через hf-proxy)
```python
from hf_proxy import HFAdapter, HFTokenizerAdapter
# Загрузка через адаптеры
hf_model = HFAdapter.from_pretrained("checkpoints/hf-trained/pytorch_model.bin")
hf_tokenizer = HFTokenizerAdapter.from_pretrained("checkpoints/hf-bpe-tokenizer")
# Использование с HF инструментами
from transformers import pipeline
pipe = pipeline("text-generation", model=hf_model, tokenizer=hf_tokenizer)
```
## 🔍 Мониторинг
- **Логи обучения**: автоматически сохраняются в JSON
- **Метрики**: loss, длина генерации, эффективность токенизации
- **Визуализация**: можно интегрировать с TensorBoard через HF Trainer
## 🛠️ Разработка
### Добавление нового эксперимента
1. Создайте файл в соответствующей директории (`llm_only/` или `hf_integration/`)
2. Используйте общие утилиты из `shared/`
3. Сохраняйте результаты в стандартизированные пути
4. Документируйте конфигурации и результаты
### Модификация конфигураций
Измените соответствующие секции в `shared/configs.py`:
- `BASE_GPT_CONFIG` - параметры модели
- `BPE_CONFIG` - параметры токенизатора
- `TRAINING_CONFIG` - параметры обучения
- `GENERATION_CONFIG` - параметры генерации
## 📚 Дополнительные ресурсы
- [Документация llm библиотеки](../llm/README.md)
- [Документация hf-proxy](../hf-proxy/README.md)
- [Примеры использования](../notebooks/)