1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| from datasets import load_dataset import swanlab from swanlab.integration.huggingface import SwanLabCallback import torch from trl import SFTTrainer from peft import LoraConfig from transformers import TrainingArguments from transformers import AutoTokenizer, AutoModelForCausalLM from trl import setup_chat_format
import swanlab
swanlab.login(api_key='')
model_id = "internlm2_5-1_8b-chat" dataset = load_dataset("json",data_files="train_dataset.json",split="train",)
model = AutoModelForCausalLM.from_pretrained( model_id, device_map="auto",
torch_dtype=torch.bfloat16, trust_remote_code=True )
tokenizer = AutoTokenizer.from_pretrained(model_id,trust_remote_code=True) tokenizer.padding_side = 'right'
model, tokenizer = setup_chat_format(model, tokenizer)
peft_config = LoraConfig( lora_alpha=128, lora_dropout=0.05, r=256, bias="none", target_modules="all-linear", task_type="CAUSAL_LM", )
args = TrainingArguments( output_dir="code-llama-7b-text-to-sql", num_train_epochs=3, per_device_train_batch_size=3, gradient_accumulation_steps=2, gradient_checkpointing=True, optim="adamw_torch", logging_steps=10, save_strategy="epoch", learning_rate=2e-4,
max_grad_norm=0.3, warmup_ratio=0.03, lr_scheduler_type="constant", report_to="tensorboard", )
swanlab_callback = SwanLabCallback(experiment_name="TransformersTest", cloud=False)
max_seq_length = 3072 trainer = SFTTrainer( model=model, args=args, train_dataset=dataset, peft_config=peft_config, max_seq_length=max_seq_length, tokenizer=tokenizer, callbacks=[swanlab_callback], packing=True, dataset_kwargs={ "add_special_tokens": False, "append_concat_token": False, }) trainer.train() trainer.save_model()
|