Views
No views yet

pip install peft accelerate bitsandbytes transformers datasets GPUtiltransformers (HuggingFace)datasets (HuggingFace)bitsandbytes (for quantization)peft (Parameter-Efficient Fine-Tuning)GPUtil (to monitor GPU usage)1import torch, GPUtil, os
2GPUtil.showUtilization()
3
4if torch.cuda.is_available():
5 print("✅ GPU Available")
6else:
7 print("❌ Using CPU")
8
9os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
10os.environ["CUDA_VISIBLE_DEVICES"] = "0"1from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
2
3bnb_config = BitsAndBytesConfig(
4 load_in_4bit=True,
5 bnb_4bit_compute_dtype=torch.float16,
6 bnb_4bit_use_double_quant=True,
7 bnb_4bit_quant_type="nf4",
8)
9
10model = AutoModelForCausalLM.from_pretrained(
11 "unsloth/llama-2-7b",
12 quantization_config=bnb_config,
13 device_map="auto"
14)
15tokenizer = AutoTokenizer.from_pretrained("unsloth/llama-2-7b")1from peft import prepare_model_for_kbit_training, LoraConfig, get_peft_model
2
3model = prepare_model_for_kbit_training(model)
4
5lora_config = LoraConfig(
6 r=8,
7 lora_alpha=16,
8 target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
9 lora_dropout=0.05,
10 bias="none",
11 task_type="CAUSAL_LM",
12)
13
14model = get_peft_model(model, lora_config)hawaiian_wildfire.txt) as your dataset.1from datasets import Dataset
2
3with open("hawaiian_wildfire.txt", "r") as f:
4 data = f.read()
5
6dataset = Dataset.from_dict({"text": [data]})1def tokenize(batch):
2 return tokenizer(batch["text"], truncation=True, padding="max_length", max_length=512)
3
4tokenized_dataset = dataset.map(tokenize)1from transformers import TrainingArguments, Trainer
2
3training_args = TrainingArguments(
4 output_dir="llama-custom-lora",
5 per_device_train_batch_size=1,
6 num_train_epochs=2,
7 logging_steps=10,
8 save_steps=100,
9 save_total_limit=2,
10 fp16=True,
11 optim="paged_adamw_8bit",
12)
13
14trainer = Trainer(
15 model=model,
16 args=training_args,
17 train_dataset=tokenized_dataset,
18 tokenizer=tokenizer,
19)
20trainer.train()1model.eval()
2input_text = "The wildfire in Hawaii caused"
3inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
4outputs = model.generate(**inputs, max_new_tokens=100)
5print(tokenizer.decode(outputs[0]))