---
library_name: transformers
license: apache-2.0
datasets:
- attn-signs/russian-reasoning
language:
- ru
base_model:
- attn-signs/Watari-7b-v1
---
# Zariman 7B Reason (V0)
- [EN]
Reasoning model adapted for russian text generation.
**Based on Watari-7B-v1**
- [RU]
Модель рассуждений, адаптированная для генерации русскоязычного текста.
**Построена на Watari-7B-v1**
## Static quants available on / Квантизация модели доступна на
https://huggingface.co/mradermacher/Zariman-7b-v0-GGUF
**Repo id:** mradermacher/Zariman-7b-v0-GGUF
## Model Details / Детализация модели
- [EN]
LoRA SFT version of base Watari-7B-v1 to invoke reasoning capabilities on a specific system prompt.
May be instable (especially when large context size is used), may enter infinite loops. Model is designed for deep understanding and futher GRPO alignment.
- [RU]
SFT на низкоранговых адаптерах базовой модели Watari-7B-v1 для возможностей размышления и глубокого понимания запроса на конкретный системный промпт.
Может быть нестабильна (особенно при больших контекстных окнах), может входить в бесконечные циклы рассуждений. Модель создана для будущего алайнмента с алгоритмом GRPO
### Model Description / Описание модели
- **Developed by:** [Reisen Raumberg (Attention Signs team)]
- **Language(s) (NLP):** [RU/EN]
- **Finetuned from model:** [Watari-7B-v1]
Utilized DeepSpeed (Stage 3), HF.Accelerator for distributed training and fused AdamW.
**GPU hours**: ~64h of NVIDIA A100
Для обучения использовались HuggingFace Accelerator с Microsoft DeepSpeed (Stage 3) для распределения параметров и стейта оптимизатора, а так же зафьюженный AdamW
**GPU часы**: ~64 часа NVIDIA A100
### Training Framework
**Zariman was trained using MyLLM framework (by Attention Signs):**
https://github.com/Raumberg/myllm
### Model configuration (MyLLM Framework)
```toml
[model]
model_name_or_path = "attn-signs/Watari-7b-v1"
[datasets]
dataset = "attn-signs/russian-reasoning"
conversation_field = "conversation"
generate_eval_examples = false
evaluation_strategy = "steps"
eval_steps = 300
dataloader_num_workers = 2
remove_unused_columns = true
test_size = 0.01
[run]
save_strategy = "steps"
save_steps = 300
save_total_limit = 3
run_name = "sft-zariman-7"
report_to = "wandb"
logging_first_step = true
logging_steps = 1
output_dir = "models/attn-signs-zariman-7"
project_name = "sft-zariman"
[training]
train_only_on_completions = true
per_device_train_batch_size = 1
per_device_eval_batch_size = 1
num_train_epochs = 1
learning_rate = 0.00004
gradient_accumulation_steps = 8
gradient_checkpointing = true
warmup_steps = 10
bf16 = true
seed = 42
use_peft = true
attn_implementation = "flash_attention_2"
[lora]
lora_target_modules = [
"k_proj",
"v_proj",
"q_proj",
"o_proj",
"gate_proj",
"up_proj",
"down_proj",
]
lora_r = 128
lora_alpha = 256
[tokenizer]
system_prompt = "Ты полезный ассистент. Отвечай на вопросы, сохраняя следующую структуру: Твои мысли и рассуждения "
assistant_message_template = "<|im_start|>assistant<|im_sep|>"
pad_token = "<|endoftext|>"
eos_token = "<|im_end|>"
chat_template = "{% set loop_messages = messages %}{% for message in loop_messages %}{% set content = '<|im_start|>' + message['role'] + '<|im_sep|>'+ message['content'] | trim + '<|im_end|>' %}{{ content }}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant<|im_sep|>' }}{% endif %}"
force_chat_template = true
added_special_tokens = ["<|im_sep|>"]
```
### Using the model / Как запустить?
> [!IMPORTANT]
> To invoke **Reasoning**, the specific prompt is used. Consider using the system prompt in the example below.
> Для того, чтобы использовать режим рассуждений, модель использует специальный промпт. Пожалуйста, обратите внимание на системный промпт в примере ниже.
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
repo = 'attn-signs/Zariman-7b-v1'
model = AutoModelForCausalLM.from_pretrained(repo)
tokenizer = AutoTokenizer.from_pretrained(repo)
model.to('cuda')
prompt = 'Как мне обучить свою языковую модель?'
messages = [
{"role": "system", "content": "Ты полезный ассистент. Отвечай на вопросы, сохраняя следующую структуру: Твои мысли и рассуждения "},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=4096
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
```
```
Обучение языковой модели - это сложный процесс, который требует понимания нескольких ключевых аспектов.
Во-первых, необходимо выбрать подходящий алгоритм обучения, который может варьироваться от простых моделей, таких как n-граммные модели,
до более сложных нейронных сетей, таких как трансформеры. Во-вторых, важно собрать достаточное количество данных для обучения модели.
Это могут быть текстовые данные из книг, статей, новостей или других источников, которые должны быть репрезентативными для целевой области.
В-третьих, нужно определиться с метриками качества, по которым будет оцениваться модель, такими как точность, полнота, F1-мера и другие.
Наконец, необходимо учитывать вычислительные ресурсы, так как обучение больших моделей требует значительной мощности.
Исходя из этих факторов, можно сформулировать шаги для обучения языковой модели.
```