Views
No views yet
1[model]
2model_name_or_path = "attn-signs/Zariman-R-7b-v0"
3
4[datasets]
5dataset = "d0rj/gsm8k-ru"
6problem_field = "question"
7solution_field = "answer"
8dataloader_num_workers = 2
9test_size = 0.1
10extract_hash = true
11
12[run]
13run_name = "rl-zariman-7"
14report_to = "wandb"
15logging_first_step = true
16logging_steps = 1
17save_strategy = "steps"
18save_steps = 100
19save_total_limit = 5
20output_dir = "models/attn-signs-zariman-7"
21project_name = "rl-zariman"
22
23[training]
24num_train_epochs = 1
25per_device_train_batch_size = 4
26learning_rate = 0.00005
27bf16 = true
28seed = 42
29use_peft = true
30
31[grpo]
32# use_vllm = true
33# vllm_gpu_memory_utilization = 0.25
34num_generations = 4
35max_completion_length = 1024
36num_iterations = 4 # https://github.com/huggingface/trl/releases/tag/v0.16.0
37scale_rewards = false
38beta = 0.0 # do not load reference model, do not minimize KL-div. Great memory saving opportunity.
39epsilon_high = 0.28 # Increasing upper bound epsilon leads to higher entropy during generation, promoting better exploration
40
41[lora]
42lora_target_modules = [
43 "k_proj",
44 "v_proj",
45 "q_proj",
46 "o_proj",
47 "gate_proj",
48 "up_proj",
49 "down_proj",
50]
51lora_r = 32
52lora_alpha = 64
53
54[fusion]
55use_liger = true
56
57[tokenizer]
58system_prompt = "Ты Зариман, полезный ИИ-ассистент. Ты ведёшь диалог с пользователем и стараешься решить его задачу, рассуждая о каждом шаге. Чтобы помочь себе, ты можешь писать диаграммы. Диаграммы могут выглядеть произвольным образом, например: <diagram> Постановка задачи в LaTeX -> Решение -> Проверка -> Окончательный ответ </diagram>. Отвечай, сохраняя следующую структуру: <thought> твои мысли и рассуждения <diagram> твои диаграммы или то, что может помочь решить задачу </diagram> </thought> <answer> твой конечный ответ </answer>"
59assistant_message_template = "<|im_start|>assistant<|im_sep|>"
60pad_token = "<|endoftext|>"
61eos_token = "<|im_end|>"
62chat_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 %}"
63force_chat_template = true
64added_special_tokens = ["<|im_sep|>"][!IMPORTANT] To invoke Reasoning, the specific prompt is used. Consider using the system prompt in the example below. Для того, чтобы использовать режим рассуждений, модель использует специальный промпт. Пожалуйста, обратите внимание на системный промпт в примере ниже.
1repo = 'attn-signs/Zariman-R-7b-v1'
2
3model = AutoModelForCausalLM.from_pretrained(repo)
4tokenizer = AutoTokenizer.from_pretrained(repo)
5
6device = 'cuda' if torch.cuda.is_available() else 'cpu'
7model.to(device)
8
9user_prompt = '''
10У уравнений x**2 + 2019ax + b = 0 и x**2 + 2019bx + a = 0 есть один общий корень. Чему может быть равен этот корень, если известно, что a != b?
11'''
12system_prompt = "Ты Зариман, полезный ИИ-ассистент. Ты ведёшь диалог с пользователем и стараешься решить его задачу, рассуждая о каждом шаге. Чтобы помочь себе, ты можешь писать диаграммы. Диаграммы могут выглядеть произвольным образом, например: <diagram> Постановка задачи в LaTeX -> Решение -> Проверка -> Окончательный ответ </diagram>. Отвечай, сохраняя следующую структуру: <thought> твои мысли и рассуждения <diagram> твои диаграммы или то, что может помочь решить задачу </diagram> </thought> <answer> твой конечный ответ </answer>"
13messages = [
14 {"role": "system", "content": system_prompt},
15 {"role": "user", "content": user_prompt}
16]
17text = tokenizer.apply_chat_template(
18 messages,
19 tokenize=False,
20 add_generation_prompt=True
21)
22model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
23
24generated_ids = model.generate(
25 **model_inputs,
26 max_new_tokens=4096
27)
28generated_ids = [
29 output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
30]
31
32response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
33
34print(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<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