Views
No views yet
1# Install Unsloth, Xformers (Flash Attention), and other packages
2!pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
3!pip install --no-deps "xformers<0.0.27" "trl<0.9.0" peft accelerate bitsandbytes"
4!pip install triton
5!pip uninstall xformers
6!pip install xformers1from unsloth import FastLanguageModel
2import torchNone for auto-detection, float16 for certain GPUs).1fourbit_models = [
2 "unsloth/Meta-Llama-3.1-8B-bnb-4bit",
3 "unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit",
4 "unsloth/Meta-Llama-3.1-70B-bnb-4bit",
5 "unsloth/Meta-Llama-3.1-405B-bnb-4bit",
6 "unsloth/Mistral-Nemo-Base-2407-bnb-4bit",
7 "unsloth/Mistral-Nemo-Instruct-2407-bnb-4bit",
8 "unsloth/mistral-7b-v0.3-bnb-4bit",
9 "unsloth/mistral-7b-instruct-v0.3-bnb-4bit",
10 "unsloth/Phi-3-mini-4k-instruct",
11 "unsloth/Phi-3-medium-4k-instruct",
12 "unsloth/gemma-2-9b-bnb-4bit",
13 "unsloth/gemma-2-27b-bnb-4bit",
14]1model, tokenizer = FastLanguageModel.from_pretrained(
2 model_name = "unsloth/Meta-Llama-3.1-8B",
3 max_seq_length = max_seq_length,
4 dtype = dtype,
5 load_in_4bit = load_in_4bit,
6)1model = FastLanguageModel.get_peft_model(
2 model,
3 r = 16,
4 target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
5 lora_alpha = 16,
6 lora_dropout = 0,
7 bias = "none",
8 use_gradient_checkpointing = "unsloth",
9 random_state = 3407,
10 use_rslora = False,
11 loftq_config = None,
12)datasets library:1from datasets import load_dataset
2
3dataset = load_dataset("ruslanmv/ai-medical-dataset")
4
5if 'train' in dataset:
6 dataset = dataset['train'].select(range(500))1medical_prompt = """You are an AI Medical Assistant Chatbot, trained to answer medical questions. Below is an instruction that describes a task, paired with an response context. Write a response that appropriately completes the request.
2
3### Question:
4{}
5
6
7### Context:
8{}"""
9
10EOS_TOKEN = tokenizer.eos_token
11
12def formatting_prompts_func(examples):
13 questions = examples["question"]
14 contexts = examples["context"]
15 texts = []
16 for question, context in zip(questions, contexts):
17 text = medical_prompt.format(question, context) + EOS_TOKEN
18 texts.append(text)
19 return {"text": texts}
20
21dataset = dataset.map(formatting_prompts_func, batched=True)SFTTrainer and TrainingArguments:1from trl import SFTTrainer
2from transformers import TrainingArguments
3from unsloth import is_bfloat16_supported
4
5trainer = SFTTrainer(
6 model=model,
7 tokenizer=tokenizer,
8 train_dataset=dataset,
9 dataset_text_field="text",
10 max_seq_length=max_seq_length,
11 dataset_num_proc=2,
12 packing=False,
13 args=TrainingArguments(
14 per_device_train_batch_size=2,
15 gradient_accumulation_steps=4,
16 warmup_steps=5,
17 max_steps=60,
18 learning_rate=2e-4,
19 fp16=not is_bfloat16_supported(),
20 bf16=is_bfloat16_supported(),
21 logging_steps=1,
22 optim="adamw_8bit",
23 weight_decay=0.01,
24 lr_scheduler_type="linear",
25 seed=3407,
26 output_dir="outputs",
27 ),
28)trainer_stats = trainer.train()1FastLanguageModel.for_inference(model)
2inputs = tokenizer(
3 [medical_prompt.format("What is the resurgent sodium current in mouse cerebellar Purkinje neurons?", "")],
4 return_tensors="pt"
5).to("cuda")
6
7from transformers import TextStreamer
8text_streamer = TextStreamer(tokenizer)
9_ = model.generate(**inputs, streamer=text_streamer, max_new_tokens=128)1if False:
2 model, tokenizer = FastLanguageModel.from_pretrained(
3 model_name="lora_model",
4 max_seq_length=max_seq_length,
5 dtype=dtype,
6 load_in_4bit=load_in_4bit,
7 )
8 FastLanguageModel.for_inference(model)
9
10inputs = tokenizer(
11 [medical_prompt.format("What is the resurgent sodium current in mouse cerebellar Purkinje neurons?", "") + tokenizer.eos_token],
12 return_tensors="pt"
13).to("cuda")
14
15model.eval()
16
17_ = model.generate(**inputs, streamer=text_streamer, max_new_tokens=128)1model.push_to_hub("HadeelHegazi/ai_medical_dataset_train_epochs1max_steps60", token="your_huggingface_token")
2tokenizer.push_to_hub("HadeelHegazi/ai_medical_dataset_train_epochs1max_steps60", token="your_huggingface_token")torch.cuda.empty_cache() and gc.collect() to clear the cache.