Russian o1 / GigaChat 20B-A3B Instruct

LoRA-адаптер для модели GigaChat-20B-A3B обученный на датасете Egor-AI/Russian_thinking_dataset (машинный перевод на русский язык датасета BintangFortuna/OpenO1-SFT-EN-SY).

Обученная модель способна имитировать логические размышлению на русском языке по аналогии с тем, как это делает o1 от OpenAI.

Необходимо использовать следующего вида системный промт:

Вы — ИИ-помощник. Отформатируйте свои ответы следующим образом: <Thought> Ваши мысли (понимание, рассуждения) </Thought> <output> Ваш ответ </output>

W&B отчёт: https://api.wandb.ai/links/evilfreelancer/nlec8bt8

Обучение производилось при помощи утилиты impruver используя конфигурацию GigaChat/20B-A3B_lora_o1.

На всё про всё ушло примерно 117 часов на RTX 4090, при этом понадобилось 23Гб видеопамяти.

output_dir: ./models/GigaChat_20B-A3B_lora_thinking
train_path: ./train.GigaChat_20B-A3B_lora_thinking.jsonl
val_path: ./val.GigaChat_20B-A3B_lora_thinking.jsonl

datasets:
  - name: Egor-AI/Russian_thinking_dataset
    converter: impruver.instruction_to_messages
    mapping:
      system: system
      instruction: prompt
      output: response

model:
  class: custom.gigachat.DeepseekForCausalLM
  name: ai-sage/GigaChat-20B-A3B-instruct-bf16
  attn_implementation: flash_attention_2
  load_in_4bit: true
  load_in_8bit: false
  dtype: bf16

lora:
  r: 8
  lora_alpha: 32
  lora_dropout: 0.1
  bias: none
  target_modules: [ q_proj, v_proj, k_proj, o_proj, gate_proj, down_proj, up_proj ]
  task_type: CAUSAL_LM

tokenizer:
  class: transformers.AutoTokenizer
  name: ai-sage/GigaChat-20B-A3B-instruct
  max_tokens_count: 1500
  special_tokens:
    pad_token_id: 1
    pad_token: <s>
    bos_token_id: 1
    bos_token: <s>
    eos_token_id: 128001
    eos_token: <|message_sep|>
  chat_template: >
    {% if messages[0]['role'] == 'system' -%}
        {%- set loop_messages = messages[1:] -%}
        {%- set system_message = bos_token + messages[0]['content'] + additional_special_tokens[1] -%}
    {%- else -%}
        {%- set loop_messages = messages -%}
        {%- set system_message = bos_token + '' -%}
    {%- endif -%}
    {%- for message in messages %}
        {%- if message['role'] == 'system' -%}
            {{ system_message -}}
        {%- endif -%}
        {%- if message['role'] == 'user' -%}
            {{ message['role'] + additional_special_tokens[0] + message['content'] + additional_special_tokens[1] -}}
            {{ 'available functions' + additional_special_tokens[0] + additional_special_tokens[2] + additional_special_tokens[3]  + additional_special_tokens[1] -}}
        {%- endif -%}
        {%- if message['role'] == 'assistant' -%}
            {{ message['role'] + additional_special_tokens[0] + message['content'] + additional_special_tokens[1] -}}
        {%- endif -%}
        {%- if loop.last and add_generation_prompt -%}
            {{ 'assistant' + additional_special_tokens[0] -}}
        {%- endif -%}
    {%- endfor %}

trainer:
  eval_strategy: steps
  save_strategy: steps
  eval_steps: 100
  save_steps: 100
  per_device_train_batch_size: 1
  per_device_eval_batch_size: 1
  gradient_accumulation_steps: 8
  logging_steps: 1
  learning_rate: 0.0004
  num_train_epochs: 2
  lr_scheduler_type: cosine
  warmup_steps: 16
  optim: adamw_torch_4bit
  metric_for_best_model: eval_loss
  load_best_model_at_end: true
  save_total_limit: 2
  seed: 42
  remove_unused_columns: false
  max_grad_norm: 1.0
  weight_decay: 0.08
  torch_compile: false
Downloads last month
6
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for evilfreelancer/o1_gigachat-20b-a3b_lora