部署并实现推理:
从huggingface官网下载https://huggingface.co/models?other=gemma。
可先下gemma-2b,对消费级显卡友好.
在本地安装最新的transformer库:
pip install -U "transformers==4.38.1" --upgrade
运行代码:
# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("相应模型路径")
model = AutoModelForCausalLM.from_pretrained("相应模型路径", device_map="auto")
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids,max_length = 64)
print(tokenizer.decode(outputs[0]))
使用Lora微调gemma
框架配置
我使用的是hiyouga大佬主理的LLaMA-Factory框架
按照LLaMA-Factory官方readme配置环境
git clone https://github.com/hiyouga/LLaMA-Factory.git
conda create -n llama_factory python=3.10
conda activate llama_factory
cd LLaMA-Factory
pip install -r requirements.txt
Windows系统如果要开启量化一定注意安装预编译的 bitsandbytes
库, 支持 CUDA 11.1 到 12.2。
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.40.0-py3-none-win_amd64.whl
数据集配置
使用lora微调,构建自己的数据集时可按照instruction-input-output的方式构建数据集,具体格式可以参考
LLaMA-Factory\data
文件夹里面的json文件格式。
注意在dataset_info.json文件中新增一项添加自己想要训练的数据集的文件名!只需加上file_name就可以保证能运行。
"starcoder_python": {
"hf_hub_url": "bigcode/starcoderdata",
"ms_hub_url": "AI-ModelScope/starcoderdata",
"columns": {
"prompt": "content"
},
"folder": "python"
},
"你数据集的名字":{
"file_name":"XXX.json"
},
}
训练,测试,导出
对windows系统,我们需要写一个.bat文件,而不是官方的.sh脚本。
训练脚本:
在LLama-Factory文件夹下创建train.bat文件,内容如下:
set CUDA_VISIBLE_DEVICES=0
python LLaMA-Factory\src\train_bash.py ^
--stage sft ^
--model_name_or_path model_path ^
--do_train ^
--dataset 你的数据集名称 ^
--finetuning_type lora ^
--lora_target q_proj,v_proj ^
--output_dir 你存放checkpoint的文件夹 ^
--overwrite_cache ^
--per_device_train_batch_size 4 ^
--gradient_accumulation_steps 4 ^
--lr_scheduler_type cosine ^
--logging_steps 10 ^
--save_steps 1000 ^
--learning_rate 1e-5 ^
--num_train_epochs 4.0 ^
--template gemma ^
--quantization_bit 4
注意修改model路径/dataset路径,train_bash.py路径等参数
根据具体任务可以调整学习率等参数
可选择finetuning_type,我这里选择lora
根据硬件条件可以调整 --quantization_bit 4/8/fp16等不同量化等级,也可以调整batchsize。
在LLama-Factory文件夹下运行.\train.bat脚本即可完成lora微调
导出脚本:
python src/export_model.py ^
--model_name_or_path 修改 ^
--adapter_name_or_path 修改 ^
--template gemma ^
--finetuning_type lora ^
--export_dir 修改 ^
--export_size 2 ^
--export_legacy_format False
测试脚本:
set CUDA_VISIBLE_DEVICES=0
python src/cli_demo.py ^
--model_name_or_path 修改 ^
--adapter_name_or_path 修改 ^
--template gemma ^
--quantization_bit 8
导出权重,测试操作同训练,在LLama-Factory文件夹下创建相应脚本运行即可。