Reasoning Models [RU]
Collection
Collection of reasoning models
•
2 items
•
Updated
•
1
Utilized HF.Accelerator
GPU hours: ~34h of NVIDIA A100
Для обучения использовался HuggingFace Accelerator
GPU часы: ~34 часа NVIDIA A100
Zariman was trained using MyLLM framework (by Attention Signs):
--==MyLLM==--
(GRPO scripts are now stable, dev branch merged)
[model]
model_name_or_path = "attn-signs/Zariman-R-7b-v0"
[datasets]
dataset = "d0rj/gsm8k-ru"
problem_field = "question"
solution_field = "answer"
dataloader_num_workers = 2
test_size = 0.1
extract_hash = true
[run]
run_name = "rl-zariman-7"
report_to = "wandb"
logging_first_step = true
logging_steps = 1
save_strategy = "steps"
save_steps = 100
save_total_limit = 5
output_dir = "models/attn-signs-zariman-7"
project_name = "rl-zariman"
[training]
num_train_epochs = 1
per_device_train_batch_size = 4
learning_rate = 0.00005
bf16 = true
seed = 42
use_peft = true
[grpo]
# use_vllm = true
# vllm_gpu_memory_utilization = 0.25
num_generations = 4
max_completion_length = 1024
num_iterations = 4 # https://github.com/huggingface/trl/releases/tag/v0.16.0
scale_rewards = false
beta = 0.0 # do not load reference model, do not minimize KL-div. Great memory saving opportunity.
epsilon_high = 0.28 # Increasing upper bound epsilon leads to higher entropy during generation, promoting better exploration
[lora]
lora_target_modules = [
"k_proj",
"v_proj",
"q_proj",
"o_proj",
"gate_proj",
"up_proj",
"down_proj",
]
lora_r = 32
lora_alpha = 64
[fusion]
use_liger = true
[tokenizer]
system_prompt = "Ты Зариман, полезный ИИ-ассистент. Ты ведёшь диалог с пользователем и стараешься решить его задачу, рассуждая о каждом шаге. Чтобы помочь себе, ты можешь писать диаграммы. Диаграммы могут выглядеть произвольным образом, например: <diagram> Постановка задачи в LaTeX -> Решение -> Проверка -> Окончательный ответ </diagram>. Отвечай, сохраняя следующую структуру: <thought> твои мысли и рассуждения <diagram> твои диаграммы или то, что может помочь решить задачу </diagram> </thought> <answer> твой конечный ответ </answer>"
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|>"]
To invoke Reasoning, the specific prompt is used. Consider using the system prompt in the example below. Для того, чтобы использовать режим рассуждений, модель использует специальный промпт. Пожалуйста, обратите внимание на системный промпт в примере ниже.
repo = 'attn-signs/Zariman-R-7b-v1'
model = AutoModelForCausalLM.from_pretrained(repo)
tokenizer = AutoTokenizer.from_pretrained(repo)
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model.to(device)
user_prompt = '''
У уравнений x**2 + 2019ax + b = 0 и x**2 + 2019bx + a = 0 есть один общий корень. Чему может быть равен этот корень, если известно, что a != b?
'''
system_prompt = "Ты Зариман, полезный ИИ-ассистент. Ты ведёшь диалог с пользователем и стараешься решить его задачу, рассуждая о каждом шаге. Чтобы помочь себе, ты можешь писать диаграммы. Диаграммы могут выглядеть произвольным образом, например: <diagram> Постановка задачи в LaTeX -> Решение -> Проверка -> Окончательный ответ </diagram>. Отвечай, сохраняя следующую структуру: <thought> твои мысли и рассуждения <diagram> твои диаграммы или то, что может помочь решить задачу </diagram> </thought> <answer> твой конечный ответ </answer>"
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_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>
Пусть x является общим корнем обоих уравнений.
Тогда x удовлетворяет обоим уравнениям, поэтому: x^2 + 2019a*x + b = 0 и x^2 + 2019b*x + a = 0.
Вычитая второе уравнение из первого, получаем: (x^2 + 2019a*x + b) - (x^2 + 2019b*x + a) = 0,
что упрощается до (2019a - 2019b)*x + (b - a) = 0. Учитывая, что a != b, коэффициент при x не равен нулю,
и мы можем разделить обе части на (2019a - 2019b), чтобы найти x: x = (a - b)/(2019a - 2019b).
Упрощая это выражение, получаем x = 1/2019.
</thought>
<answer> 1/2019 </answer> # real answer
Another interesting answer for mathematical task (the model used brute force):
<thought>
Допустим, \( p + 25 = q^7 \), где \( q \) — простое число.
Так как \( q \) — простое, то \( q \) может принимать значения
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, \dots \).
Тогда \( p \) будет \( q^7 - 25 \).
Мы можем вычислить значения для маленьких значений \( q \):
если \( q = 2 \), то \( p = 2^7 - 25 = 128 - 25 = 103 \), что является простым.
Если \( q = 3 \), то \( p = 3^7 - 25 = 2187 - 25 = 2162 \), что не является простым.
Если \( q = 5 \), то \( p = 5^7 - 25 = 78125 - 25 = 78100 \), что не является простым.
Если \( q = 7 \), то \( p = 7^7 - 25 = 823543 - 25 = 823518 \), что не является простым.
Если \( q = 11 \), то \( p = 11^7 - 25 = 1977326743 - 25 = 1977326718 \), что не является простым.
Если \( q = 13 \), то \( p = 13^7 - 25 = 283982496913 - 25 = 283982496898 \), что не является простым.
Если \( q = 17 \), то \( p = 17^7 - 25 = 241985796879377 - 25 = 241985796879352 \), что не является простым.
Если \( q = 19 \), то \( p = 19^7 - 25 = 17921601234819001 - 25 = 17921601234818976 \), что не является простым.
Если \( q = 23 \), то \( p = 23^7 - 25 = 31195827261968693843 - 25 = 31195827261968693818 \), что не является простым.
Если \( q = 29 \), то \( p = 29^7 - 25 = 172498763096596639029 - 25 = 172498763096596638999 \), что не является простым.
Если \( q = 31 \), то \( p = 31^7 - 25 = 2555986304490614120451 - 25 = 2555986304490614119999 \), что не является простым.
Если \( q = 37 \), то \( p = 37^7 - 25 = 207595713368696296252843 - 25 = 207595713368696296252818 \), что не является простым.
Если \( q = 41 \), то \( p = 41^7 - 25 = 21435888364136139953749 - 25 = 21435888364136139953724 \), что не является простым.
Если \( q = 43 \), то \( p = 43^7 - 25 = 238437797905281614641107 - 25 = 238437797905281614641082 \), что не является простым.
Если \( q = 47 \), то \( p = 47^7 - 25 = 23900545565555220610319 - 25 = 23900545565555220610294 \), что не является простым.
Если \( q = 53 \), то \( p = 53^7 - 25 = 28979783356188772415695 - 25 = 28979783356188772415670 \), что не является простым.
Если \( q = 59 \), то \( p = 59^7 - 25 = 24856338334343939013565 - 25 = 24856338334343939013540 \), что не является простым.
Если \( q = 61 \), то \( p = 61^7 - 25 = 2296928999603225975974377 - 25 = 229692899960322597597412 \), что не является простым.
Если \( q = 67 \), то \( p = 67^7 - 25 = 20974559751103254416877 - 25 = 20974559751103254416852 \), что не является простым.
Если \( q = 71 \), то \( p = 71^7 - 25 = 30613666817478553328142 - 25 = 30613666817478553328117 \), что не является простым.
Если \( q = 73 \), то \( p = 73^7 - 25 = 313722378383673202839681 - 25 = 313722378383673202839656 \), что не является простым.
Если \( q = 79 \), то \( p = 79^7 - 25 = 215295631866572589232641 - 25 = 215295631866572589232616 \), что не является простым.
Если \( q = 83 \), то \( p = 83^7 - 25 = 285316874646988736086111 - 25 = 285316874646988736086086 \), что не является простым.
Если \( q = 89 \), то \( p = 89^7 - 25 = 593995322254419739684961 - 25 = 593995322254419739684936 \), что не является простым.
Если \( q = 97 \), то \( p = 97^7 - 25 = 899229957796953459631497 - 25 = 899229957796953459631472 \), что не является простым.
Таким образом, единственное простое значение \( p \) — это 103.
</thought>
<answer> 103 </answer> # real answer
Base model
t-tech/T-lite-it-1.0