Views
No views yet

1{
2 "epoch": 0.9999679800589659,
3 "total_flos": 1.446273483573748e+20,
4 "train_loss": 0.44412665014957775,
5 "train_runtime": 249497.725,
6 "train_samples_per_second": 13.018,
7 "train_steps_per_second": 0.102
8}1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
3
4torch.random.manual_seed(0)
5model_id = "/home/models/phi3/Phi-3-medium-128k-instruct/"
6model = AutoModelForCausalLM.from_pretrained(
7 model_id,
8 device_map="cuda",
9 torch_dtype="auto",
10 trust_remote_code=True,
11)
12tokenizer = AutoTokenizer.from_pretrained(model_id)
13
14messages = [
15 {"role": "user", "content": "Can you provide ways to eat combinations of bananas and dragonfruits?"},
16 {"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together: 1. Banana and dragonfruit smoothie: Blend bananas and dragonfruits together with some milk and honey. 2. Banana and dragonfruit salad: Mix sliced bananas and dragonfruits together with some lemon juice and honey."},
17 {"role": "user", "content": "Write a python code to train llm mode by lora and sft ?"},
18]
19
20pipe = pipeline(
21 "text-generation",
22 model=model,
23 tokenizer=tokenizer,
24)
25
26generation_args = {
27 "max_new_tokens": 4096,
28 "return_full_text": False,
29 "temperature": 0.0,
30 "do_sample": False,
31}
32
33output = pipe(messages, **generation_args)
34print(output[0]['generated_text'])
351 To train a language model using Lora and SFT (Supervised Fine-tuning), you can follow these steps:
2
31. Install the required libraries:
4
5```python
6!pip install transformers1import torch
2from transformers import AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments1tokenizer = AutoTokenizer.from_pretrained("microsoft/llama-65b-lora")
2model = AutoModelForCausalLM.from_pretrained("microsoft/llama-65b-lora")1# Replace with the path to your SFT dataset
2train_dataset =...1training_args = TrainingArguments(
2 output_dir="./results",
3 num_train_epochs=3,
4 per_device_train_batch_size=4,
5 per_device_eval_batch_size=4,
6 warmup_steps=500,
7 weight_decay=0.01,
8 logging_dir='./logs',
9 logging_steps=10,
10)1class LoraSFTTrainer(Trainer):
2 def compute_loss(self, model, inputs):
3 labels = inputs.pop("labels")
4 outputs = model(**inputs, use_cache=False)
5 lm_logits = outputs.logits
6 loss_fct = torch.nn.CrossEntropyLoss()
7 masked_lm_loss = loss_fct(lm_logits.view(-1, self.model.config.vocab_size), labels.view(-1))
8 return masked_lm_loss1trainer = LoraSFTTrainer(
2 model=model,
3 args=training_args,
4 train_dataset=train_dataset,
5 eval_dataset=None,
6)
7
8trainer.train()1import torch
2from transformers import RobertaForCausalLM, RobertaTokenizer
3
4# Load the model and tokenizer
5model = RobertaForCausalLM.from_pretrained('roberta-base')
6tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
7
8# Load the data
9data = [
10 "This is a sample sentence.",
11 "Another sample sentence."
12]
13
14# Tokenize the data
15input_ids = [tokenizer.encode(sentence, add_special_tokens=True) for sentence in data]
16
17# Train the model
18model.train()
19for input_id in input_ids:
20 outputs = model(input_id, labels=input_id)
21 loss = outputs.loss
22 loss.backward()
23 optimizer.step()
24
25# Save the model
26model.save_pretrained('my_model')
27