Skip to content

Commit

Permalink
Docs updated
Browse files Browse the repository at this point in the history
  • Loading branch information
EvilFreelancer committed Dec 21, 2024
1 parent 108522c commit 537d940
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 2 deletions.
1 change: 1 addition & 0 deletions docs/Home.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Документация проекта `impruver`
85 changes: 83 additions & 2 deletions docs/Конфигурация.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,60 @@ datasets:
max_tokens_count: 1024
```

### Параметры `add_global_bos` и `add_global_eos`

По умолчанию `add_global_bos` и `add_global_eos` имеют значение `true`, отвечают они за то будет ли в момент
предобработки датасета к _каждому_ элементу из датасета добавлен префикс с токенов BOS-токен (Begin of String)
в начале и EOS-токен (End of String) в конце.

Например, у нас имеется `bos=1` и `eos=2`, в момент преобразования текста в последовательность токенов
(при помощи токенизатор) по умолчанию получается массив токенов вида:

```json
[1, 456, 76, 84, 5667, 2]
```

Однако, если `add_global_bos` и `add_global_eos` имеют значение `false`, тогда токенизатор вернёт:

```json
[456, 76, 84, 5667]
```

Пример конфигурации:

```yml
datasets:
- name: MexIvanov/Vezora-Tested-22k-Python-Alpaca-ru
converter: impruver.instruction_to_messages
add_global_bos: false
add_global_eos: false
```

### Параметр `mapping`

> Указанный параметр может быть использован только в конвертере `impruver.instruction_to_messages`

Традиционно `instruct` датасеты имеют три колонки в которых хранятся данные:

* `instruction` - инструкция, которую модель должна выполнить;
* `input` - (опционально) некая вспомогательная информация, контекст или пример того, как модель должна ответить;
* `output` - ожидаемый ответ модели.

Но бывают случаи, когда скажем колонка `instruction` имеет другое название, например `вопрос`, а вместо `output`
используется `выводв` и требуется смапить данные так, чтобы конвертер датасета мог это распарсить.

```yml
datasets:
- name: zelkame/ru-stackoverflow-py
converter: impruver.instruction_to_messages
mapping:
instruction: вопрос
output: ответ
```

## Секция `tokenizer`

Данная секция описывает, то какой токенизатор использовать в процессе комбинирования датасета и обучения модели.
Данная секция описывает, то какой токенизатор использовать в процессе комбинирования датасета и (до)обучения модели.

```yaml
tokenizer:
Expand Down Expand Up @@ -140,4 +191,34 @@ tokenizer:

## Секция `model`

Обучаемая модель.
Данная секция описывает, то какую модель необходим использовать в процессе (до)обучения модели, как её загрузить,
в какую битность квантовать и так далее.

```yml
model:
class: transformers.AutoModelForCausalLM
name: ai-forever/rugpt3small_based_on_gpt2
dtype: bf16
```

### Параметр `class`

Отвечает за то какой класс необходимо использовать для инициализации трансформерной модели, это может быть класс
из пакета `transfomers` или какой-то кастомный класс, совместимый с форматом `transformers`.

В качестве класса можно указать путь до любого другого подходящего вам класса, например:

```yaml
model:
class: transformers.AutoModelForCausalLM
name: ai-forever/rugpt3small_based_on_gpt2
```

Используя класс `AutoModelForCausalLM` из пакета `transformers` загрузит модель `ai-forever/rugpt3small_based_on_gpt2`.


### Параметр `name`

Позволяет указать модель, которую необходимо использовать в процессе обучения, можно указать
как `repo_id` на HuggingFace, так и путь до директории (абсолютный или относительный) в которой будут находиться
веса и конфигурация модели.

0 comments on commit 537d940

Please sign in to comment.