Views
No views yet

1You are the user's helpful writing assistant.
2
3// Title: The Title of Your Story
4// Author: Author Name For Style
5// Tags: some comma, delimited list, of genres// Chapter n1from datasets import load_from_disk
2from dotenv import dotenv_values
3from unsloth import FastLanguageModel, is_bfloat16_supported
4import torch
5from transformers import TrainingArguments
6from trl import SFTTrainer
7import wandb
8
9envconfig = dict(dotenv_values(".env"))
10
11dtype = None
12max_seq_length = 24576
13load_in_4bit = True
14
15model, tokenizer = FastLanguageModel.from_pretrained(
16 model_name = "unsloth/Meta-Llama-3.1-8B",
17 max_seq_length = max_seq_length,
18 dtype = dtype,
19 load_in_4bit = load_in_4bit,
20)
21
22model = FastLanguageModel.get_peft_model(
23 model,
24 r = 128,
25 target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
26 "gate_proj", "up_proj", "down_proj",],
27 lora_alpha = 128**.5,
28 lora_dropout = 0,
29 bias = "none",
30 use_gradient_checkpointing = "unsloth",
31 random_state = 3407,
32 use_rslora = True,
33 loftq_config = None,
34)
35
36dataset = load_from_disk('bookdata')
37ds_train = dataset
38ds_eval = dataset.shuffle(seed=12345).select(range(32))
39
40targs = TrainingArguments(
41 per_device_train_batch_size = 3,
42 gradient_accumulation_steps = 4,
43 learning_rate = 4e-5,
44 weight_decay = 0,
45 gradient_checkpointing = True,
46 max_grad_norm = 1,
47 warmup_steps = 5,
48 num_train_epochs = 3,
49 optim = "paged_adamw_32bit",
50 lr_scheduler_type = "cosine",
51 seed = 3407,
52 fp16 = not is_bfloat16_supported(),
53 bf16 = is_bfloat16_supported(),
54 logging_steps = 1,
55 per_device_eval_batch_size = 1,
56 do_eval = True,
57 eval_steps = 25,
58 eval_strategy = "steps",
59 save_strategy = "steps",
60 save_steps = 20,
61 save_total_limit = 3,
62 output_dir = "outputs",
63 report_to="wandb",
64)
65
66trainer = SFTTrainer(
67 model = model,
68 tokenizer = tokenizer,
69 train_dataset = ds_train,
70 eval_dataset = ds_eval,
71 dataset_text_field = "text",
72 max_seq_length = max_seq_length,
73 dataset_num_proc = 6,
74 packing = False,
75 args = targs,
76)
77
78wandb.login(key=envconfig['wandb_key'])
79wandb.init(
80 project='bookwriter-596',
81 config={
82 "learning_rate": 4e-5,
83 "architecture": 'llama 3.1 8b',
84 "dataset": 'bookdata',
85 "epochs": 3,
86 }
87)
88
89#trainer_stats = trainer.train()
90trainer.train(resume_from_checkpoint=True)
@misc{praxis-bookwriter-llama3.1-8b-sft,
title = {Praxis Bookwriter Llama3.1 8B},
url = {https://huggingface.co/maldv/praxis-bookwriter-llama3.1-8b-sft},
author = {Praxis Maldevide},
month = {May},
year = {2025}
}