搬家网站怎么做,php网站开发实例pdf,贵州 做企业网站的流程,广州城乡建设网站在Google的Colab上面采用unsloth,trl等库#xff0c;训练数据集来自Google的云端硬盘#xff0c;微调llama3-8b模型#xff0c;进行推理验证模型的微调效果。 保存模型到Google的云端硬盘可以下载到本地供其它使用。 准备工作#xff1a;将训练数据集上传到google的云端硬盘… 在Google的Colab上面采用unsloth,trl等库训练数据集来自Google的云端硬盘微调llama3-8b模型进行推理验证模型的微调效果。 保存模型到Google的云端硬盘可以下载到本地供其它使用。 准备工作将训练数据集上传到google的云端硬盘根目录下文件名就叫做train.json
train.json里面的数据格式如下
[ { instruction: 你好, output: 你好我是智能助手胖胖 }, { instruction: hello, output: Hello! I am 智能助手胖胖, an AI assistant developed by 丹宇码农. How can I assist you ? }
......
]
采用unsloth库、trl库、transformers等库。 直接上代码
%%capture
# Installs Unsloth, Xformers (Flash Attention) and all other packages!
!pip install unsloth[colab-new] githttps://github.com/unslothai/unsloth.git
!pip install --no-deps xformers0.0.26 trl peft accelerate bitsandbytesfrom unsloth import FastLanguageModel
import torch
max_seq_length 2048 # Choose any! We auto support RoPE Scaling internally!
dtype None # None for auto detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere
load_in_4bit True # Use 4bit quantization to reduce memory usage. Can be False.# 4bit pre quantized models we support for 4x faster downloading no OOMs.
fourbit_models [unsloth/mistral-7b-bnb-4bit,unsloth/mistral-7b-instruct-v0.2-bnb-4bit,unsloth/llama-2-7b-bnb-4bit,unsloth/gemma-7b-bnb-4bit,unsloth/gemma-7b-it-bnb-4bit, # Instruct version of Gemma 7bunsloth/gemma-2b-bnb-4bit,unsloth/gemma-2b-it-bnb-4bit, # Instruct version of Gemma 2bunsloth/llama-3-8b-bnb-4bit, # [NEW] 15 Trillion token Llama-3
] # More models at https://huggingface.co/unslothmodel, tokenizer FastLanguageModel.from_pretrained(model_name unsloth/llama-3-8b-bnb-4bit,max_seq_length max_seq_length,dtype dtype,load_in_4bit load_in_4bit,# token hf_..., # use one if using gated models like meta-llama/Llama-2-7b-hf
)model FastLanguageModel.get_peft_model(model,r 16, # Choose any number 0 ! Suggested 8, 16, 32, 64, 128target_modules [q_proj, k_proj, v_proj, o_proj,gate_proj, up_proj, down_proj,],lora_alpha 16,lora_dropout 0, # Supports any, but 0 is optimizedbias none, # Supports any, but none is optimized# [NEW] unsloth uses 30% less VRAM, fits 2x larger batch sizes!use_gradient_checkpointing unsloth, # True or unsloth for very long contextrandom_state 3407,use_rslora False, # We support rank stabilized LoRAloftq_config None, # And LoftQ
)alpaca_prompt Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.### Instruction:
{}### Input:
{}### Response:
{}EOS_TOKEN tokenizer.eos_token # Must add EOS_TOKEN
def formatting_prompts_func(examples):instructions examples[instruction]outputs examples[output]texts []for instruction, output in zip(instructions, outputs):input # Must add EOS_TOKEN, otherwise your generation will go on forever!text alpaca_prompt.format(instruction, input, output) EOS_TOKENtexts.append(text)return { text : texts, }
passfrom datasets import load_dataset
#dataset load_dataset(yahma/alpaca-cleaned, split train)
#dataset dataset.map(formatting_prompts_func, batched True,)
from google.colab import drive
# 挂载云端硬盘加载成功后在左边的文件树中将会多一个 /content/drive/MyDrive/ 目录
drive.mount(/content/drive)# 加载本地数据集
# 有instruction和output,input为空字符串
from datasets import load_datasetdata_home r/content/drive/MyDrive/
data_dict {train: os.path.join(data_home, train.json),#validation: os.path.join(data_home, dev.json),
}
dataset load_dataset(json, data_filesdata_dict, split train)
print(dataset[0])
dataset dataset.map(formatting_prompts_func, batched True,)from trl import SFTTrainer
from transformers import TrainingArgumentstrainer SFTTrainer(model model,tokenizer tokenizer,train_dataset dataset,dataset_text_field text,max_seq_length max_seq_length,dataset_num_proc 2,packing False, # Can make training 5x faster for short sequences.args TrainingArguments(per_device_train_batch_size 2,gradient_accumulation_steps 4,warmup_steps 5,max_steps 60,learning_rate 2e-4,fp16 not torch.cuda.is_bf16_supported(),bf16 torch.cuda.is_bf16_supported(),logging_steps 1,optim adamw_8bit,weight_decay 0.01,lr_scheduler_type linear,seed 3407,output_dir outputs,),
)# 开始微调训练
trainer_stats trainer.train()#推理
# alpaca_prompt Copied from above
FastLanguageModel.for_inference(model) # Enable native 2x faster inference
inputs tokenizer(
[alpaca_prompt.format(你是谁, # instruction, # input, # output - leave this blank for generation!)
], return_tensors pt).to(cuda)outputs model.generate(**inputs, max_new_tokens 64, use_cache True)
tokenizer.batch_decode(outputs)#此处输出的答案能明显看到就是自己训练的数据而不是原来模型的输出。说明微调起作用了# 保存模型改成挂接的云硬盘目录也可以保存到google的个人云存储空间然后打开个人云存储空间下载到本地
model.save_pretrained(lora_model) # Local saving
tokenizer.save_pretrained(lora_model)# Merge to 16bit
if True: model.save_pretrained_merged(model, tokenizer, save_method merged_16bit,)
其实可以将.ipynb文件上传到个人云存储空间双击这个文件就会打开colab然后依次执行代码即可随时可以增加、删除、修改特别方便还能免费使用GPU、CPU等资源真的是广大AI爱好者的不错选择。