搬家网站怎么做,廊坊企业网站外包,wordpress文章如何加入产品轮播,外贸网站 语言在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爱好者的不错选择。