mirror of
https://github.com/pese-git/simple-llm.git
synced 2026-01-24 05:26:02 +00:00
Реализация класса GetData
- Добавлен класс GetData для работы с последовательными данными - Реализован функционал: * Создание датасета из последовательности * Автоматическое формирование пар (input, target) * Поддержка CPU/GPU * Проверка корректности параметров - Добавлены тесты для проверки функционала - Создан пример использования в example/ - Добавлена документация с блок-схемой в doc/ - Обновлен README.md с информацией о новом классе
This commit is contained in:
79
doc/get_data_documentation_ru.md
Normal file
79
doc/get_data_documentation_ru.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# Документация по классу GetData
|
||||
|
||||
## Назначение
|
||||
Класс `GetData` предназначен для создания датасетов из последовательных данных для обучения языковых моделей и других задач, работающих с последовательностями.
|
||||
|
||||
## Основные возможности
|
||||
- Преобразование последовательности данных в обучающие пары (input, target)
|
||||
- Поддержка различных типов данных (числа, токены)
|
||||
- Автоматический сдвиг целевой последовательности
|
||||
- Поддержка работы на CPU/GPU
|
||||
- Проверка корректности входных параметров
|
||||
|
||||
## Алгоритм работы
|
||||
1. Принимает на вход последовательность данных и длину окна
|
||||
2. Скользящим окном проходит по последовательности
|
||||
3. Для каждой позиции создает пару:
|
||||
- Входная последовательность: `data[pos:pos+seq_len]`
|
||||
- Целевая последовательность: `data[pos+1:pos+seq_len+1]` (сдвиг на 1 элемент)
|
||||
4. Преобразует данные в тензоры PyTorch
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Начало] --> B[Проверка параметров]
|
||||
B -->|seq_len <= 0| C[Ошибка: отрицательная длина]
|
||||
B -->|seq_len >= len(data)| D[Ошибка: слишком длинное окно]
|
||||
B -->|Параметры верны| E[Инициализация датасета]
|
||||
E --> F[Для каждого индекса i от 0 до len(data)-seq_len-1]
|
||||
F --> G[Входной тензор: data[i:i+seq_len]]
|
||||
G --> H[Целевой тензор: data[i+1:i+seq_len+1]]
|
||||
H --> I[Преобразование в тензоры PyTorch]
|
||||
I --> J[Возврат пары тензоров]
|
||||
J --> F
|
||||
F -->|Все индексы обработаны| K[Конец]
|
||||
```
|
||||
|
||||
## Пример использования
|
||||
```python
|
||||
from simple_llm.data.get_data import GetData
|
||||
|
||||
data = list(range(10)) # Последовательность 0-9
|
||||
seq_len = 3
|
||||
dataset = GetData(data=data, seq_len=seq_len)
|
||||
|
||||
# Получение первого примера
|
||||
x, y = dataset[0]
|
||||
print(f"Вход: {x.tolist()} → Цель: {y.tolist()}")
|
||||
# Вывод: Вход: [0, 1, 2] → Цель: [1, 2, 3]
|
||||
```
|
||||
|
||||
## Параметры класса
|
||||
- `data` (list): Входная последовательность данных
|
||||
- `seq_len` (int): Длина окна последовательности
|
||||
- `device` (str): Устройство для тензоров ('cpu' или 'cuda')
|
||||
|
||||
## Методы
|
||||
- `__len__()`: Возвращает количество обучающих примеров
|
||||
- `__getitem__(idx)`: Возвращает пару тензоров по индексу
|
||||
|
||||
## Ошибки
|
||||
- `ValueError`: Если `seq_len` <= 0 или >= длины данных
|
||||
|
||||
## Применение
|
||||
1. Обучение языковых моделей
|
||||
2. Прогнозирование временных рядов
|
||||
3. Любые задачи, требующие работы с последовательностями
|
||||
|
||||
## Рекомендации
|
||||
- Для текстовых данных предварительно токенизируйте текст
|
||||
- Для больших датасетов используйте GPU (device='cuda')
|
||||
- Подбирайте seq_len в зависимости от задачи
|
||||
|
||||
## Пример с текстовыми данными
|
||||
```python
|
||||
text_tokens = [10, 20, 30, 40] # Токенизированный текст
|
||||
dataset = GetData(text_tokens, seq_len=2)
|
||||
x, y = dataset[1]
|
||||
print(f"Вход: {x.tolist()} → Цель: {y.tolist()}")
|
||||
# Вывод: Вход: [20, 30] → Цель: [30, 40]
|
||||
```
|
||||
Reference in New Issue
Block a user