[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
1[model]2model_name_or_path="attn-signs/Watari-7b-v1"34[datasets]5dataset="attn-signs/russian-reasoning"6conversation_field="conversation"7generate_eval_examples=false8evaluation_strategy="steps"9eval_steps=30010dataloader_num_workers=211remove_unused_columns=true12test_size=0.011314[run]15save_strategy="steps"16save_steps=30017save_total_limit=318run_name="sft-zariman-7"19report_to="wandb"20logging_first_step=true21logging_steps=122output_dir="models/attn-signs-zariman-7"23project_name="sft-zariman"2425[training]26train_only_on_completions=true27per_device_train_batch_size=128per_device_eval_batch_size=129num_train_epochs=130learning_rate=0.0000431gradient_accumulation_steps=832gradient_checkpointing=true33warmup_steps=1034bf16=true35seed=4236use_peft=true37attn_implementation="flash_attention_2"3839[lora]40lora_target_modules=[41"k_proj",42"v_proj",43"q_proj",44"o_proj",45"gate_proj",46"up_proj",47"down_proj",48]49lora_r=12850lora_alpha=2565152[tokenizer]53system_prompt="Ты полезный ассистент. Отвечай на вопросы, сохраняя следующую структуру: <Thought> Твои мысли и рассуждения </Thought> <output> Твой конечный ответ </output>"54assistant_message_template="<|im_start|>assistant<|im_sep|>"55pad_token="<|endoftext|>"56eos_token="<|im_end|>"57chat_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 %}"58force_chat_template=true59added_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
1from transformers import AutoTokenizer, AutoModelForCausalLM
23repo ='attn-signs/Zariman-7b-v1'45model = AutoModelForCausalLM.from_pretrained(repo)6tokenizer = AutoTokenizer.from_pretrained(repo)78model.to('cuda')910prompt ='Как мне обучить свою языковую модель?'11messages =[12{"role":"system","content":"Ты полезный ассистент. Отвечай на вопросы, сохраняя следующую структуру: <Thought> Твои мысли и рассуждения </Thought> <output> Твой конечный ответ </output>"},13{"role":"user","content": prompt}14]15text = tokenizer.apply_chat_template(16 messages,17 tokenize=False,18 add_generation_prompt=True19)20model_inputs = tokenizer([text], return_tensors="pt").to(model.device)2122generated_ids = model.generate(23**model_inputs,24 max_new_tokens=409625)26generated_ids =[27 output_ids[len(input_ids):]for input_ids, output_ids inzip(model_inputs.input_ids, generated_ids)28]2930response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]3132print(response)
<Thought> Обучение языковой модели - это сложный процесс, который требует понимания нескольких ключевых аспектов.
Во-первых, необходимо выбрать подходящий алгоритм обучения, который может варьироваться от простых моделей, таких как n-граммные модели,
до более сложных нейронных сетей, таких как трансформеры. Во-вторых, важно собрать достаточное количество данных для обучения модели.
Это могут быть текстовые данные из книг, статей, новостей или других источников, которые должны быть репрезентативными для целевой области.
В-третьих, нужно определиться с метриками качества, по которым будет оцениваться модель, такими как точность, полнота, F1-мера и другие.
Наконец, необходимо учитывать вычислительные ресурсы, так как обучение больших моделей требует значительной мощности.
Исходя из этих факторов, можно сформулировать шаги для обучения языковой модели. </Thought> <output>
1. Выберите алгоритм обучения (например, трансформер).
2. Соберите достаточное количество текстовых данных.
3. Определите метрики качества для оценки модели.
4. Настройте вычислительные ресурсы (например, GPU).
5. Запустите процесс обучения модели.
6. Оцените качество модели и при необходимости доработайте ее. </output>