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)
[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 = "Ты полезный ассистент. Отвечай на вопросы, сохраняя следующую структуру: <Thought> Твои мысли и рассуждения </Thought> <output> Твой конечный ответ </output>"
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 / Как запустить?
To invoke Reasoning, the specific prompt is used. Consider using the system prompt in the example below. Для того, чтобы использовать режим рассуждений, модель использует специальный промпт. Пожалуйста, обратите внимание на системный промпт в примере ниже.
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": "Ты полезный ассистент. Отвечай на вопросы, сохраняя следующую структуру: <Thought> Твои мысли и рассуждения </Thought> <output> Твой конечный ответ </output>"},
{"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)
<Thought> Обучение языковой модели - это сложный процесс, который требует понимания нескольких ключевых аспектов.
Во-первых, необходимо выбрать подходящий алгоритм обучения, который может варьироваться от простых моделей, таких как n-граммные модели,
до более сложных нейронных сетей, таких как трансформеры. Во-вторых, важно собрать достаточное количество данных для обучения модели.
Это могут быть текстовые данные из книг, статей, новостей или других источников, которые должны быть репрезентативными для целевой области.
В-третьих, нужно определиться с метриками качества, по которым будет оцениваться модель, такими как точность, полнота, F1-мера и другие.
Наконец, необходимо учитывать вычислительные ресурсы, так как обучение больших моделей требует значительной мощности.
Исходя из этих факторов, можно сформулировать шаги для обучения языковой модели. </Thought> <output>
1. Выберите алгоритм обучения (например, трансформер).
2. Соберите достаточное количество текстовых данных.
3. Определите метрики качества для оценки модели.
4. Настройте вычислительные ресурсы (например, GPU).
5. Запустите процесс обучения модели.
6. Оцените качество модели и при необходимости доработайте ее. </output>
- Downloads last month
- 300