LLaMA-Factory微调大模型Qwen2.5

1、开始ModelScope社区GPU环境

训练或微调模型都是非常耗费算力的。如果电脑的配置不高,可使用一些云服务器来做这项工作。如ModelScope(魔搭)社区的GPU环境,目前提供36小时免费运算,足够微调一个大模型了。

注册ModelScope(魔搭)社区账号(可能还要注册或认证阿里云账号),进入“我的NoteBook”:

我的Notebook · 魔搭社区

启动大概需要2分钟,等GPU环境启动好以后点击”查看NoteBook”进入。

开启后,会提示永久性数据只保存在/mnt/workspace/目录下。

魔塔社区内置了JupyterLab的功能,进入之后,可以找到 Notebook 标签,新建一个Notebook(当然你在terminal 里执行也没问题)。

如下箭头所示,点击即可创建一个新的 Notebook 页面。

2、克隆LLaMA-Factory

(如果使用本地电脑进行微调,以下步骤都可参考)

打开NoteBook的终端,在默认目录(/mnt/workspace/)下执行命令:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

建议使用–depth 1参数,将data及一些示例的训练数据下载下来,以便修改微调。

3、配置环境

3.1、创建虚拟环境

进入LLaMA-Factory目录:

cd LLaMA-Factory/

创建虚拟环境:

python -m venv env  # env为虚拟环境文件夹名称,可自定义,如llama-factory-env

激活虚拟环境:NoteBook终端是linux系统,激活虚拟环境命令如下(同macOS):

source env/bin/activate # env为创建的虚拟环境名称

如果是windows系统,使用如下命令激活虚拟环境:

envScriptsactivate

注意:重启NoteBook后,记得先激活虚拟环境!

3.2、安装依赖

安装必要的依赖,如:

pip install --upgrade pip     # 更新pip
pip install bitsandbytes>=0.39.0 

3.3、安装LLaMA-Factory

使用以下命令安装:

pip3 install -e ".[torch,metrics]"

4、模型下载测试

4.1、下载模型

首先下载LLM大语言模型,这里使用QWen2.5-0.5B,参数5亿个,微调时间短,在低配置电脑上也能运行。

模型在魔搭社区上有,地址是:

https://www.modelscope.cn/models/Qwen/Qwen2.5-0.5B-Instruct/summary

将目录回退到/mnt/workspace/,根据网页提示输入命令:

!git clone https://www.modelscope.cn/models/Qwen/Qwen2.5-0.5B-Instruct.git

4.2、模型测试

模型下载完成后,先来运行一下试试。

创建模型运行命令,在example/inference目录下,将llama3.yaml复制并重命名为QWen2.5_0.5B.yaml(名称不唯一),将内容更改为以下的内容,并保存(一定记得保存)。

model_name_or_path: ../Qwen2.5-0.5B-Instruct
template: chatml
infer_backend: huggingface  # choices: [huggingface, vllm, sglang]
trust_remote_code: true

若觉得操作不方便,可使用下载上传菜单,将文件下载修改后再上传。

进入LLaMA-Factory目录下,(激活虚拟环境)输入下列命令运行模型:

llamafactory-cli chat examples/inference/qwen2.5_0.5b.yaml

等待一段时间出现”User:”后,就可以输入问题进行对话了。

[INFO|2025-04-27 13:28:34] llamafactory.model.loader:143 >> all params: 494,032,768
Welcome to the CLI application, use `clear` to remove the history, use `exit` to exit the application.

User: 你是谁?
Assistant: 我是来自阿里云的大规模语言模型,我叫通义千问。

5、模型微调

5.1、修改微调训练数据

本次示例对大模型的身份进行调整。微调文件为:/LLaMA-Factory/data/identity.json。将其下载后,替换所有的{
{author}}和{
{name}}。

 替换后,上传到原文件目录中去。

5.2、利用配置文件微调

5.2.1、创建微调配置文件

Llama-Factory的文件夹里,打开examples rain_qlora(或train_lora)下提供的llama3_lora_sft_awq.yaml,复制一份并重命名为qwen_lora_sft_bitsandbytes.yaml。也可下载后修改再上传,文件内容参考如下:

### model
model_name_or_path: ../Qwen2.5-0.5B-Instruct
trust_remote_code: true

### method
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 8
lora_target: all

### dataset
dataset: identity    # 微调训练数据集
template: qwen
cutoff_len: 512
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
dataloader_num_workers: 4

### output
output_dir: saves/qwen-will/lora/sft # 输出目录 
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
save_only_model: false
report_to: none  # choices: [none, wandb, tensorboard, swanlab, mlflow]

### train
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
learning_rate: 1.0e-4
num_train_epochs: 30    # 实际训练330?
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
resume_from_checkpoint: null

### eval
# eval_dataset: alpaca_en_demo
# val_size: 0.1
# per_device_eval_batch_size: 1
# eval_strategy: steps
# eval_steps: 500
5.2.2、执行微调配置文件

输入如下命令,执行微调训练:

llamafactory-cli train examples/train_qlora/qwen_lora_sft_bitsandbytes.yaml
# qwen_lora_sft_bitsandbytes.yaml为微调配置文件名称

显示进度代表开始微调。

5.2.3、验证微调模型

在example/inference目录下,新建一个yaml文件(如qwen2.5_0.5b_sft.yaml)。内容如下所示:

model_name_or_path: ../Qwen2.5-0.5B-Instruct
adapter_name_or_path: saves/qwen2.5-0.5b/lora/sft
template: qwen
finetuning_type: lora
# infer_backend: huggingface  # choices: [huggingface, vllm, sglang]
# trust_remote_code: true

如图:

 

然后执行命令:

llamafactory-cli chat examples/inference/qwen2.5_0.5b_sft.yaml # qwen2.5_0.5b_sft.yaml是配置文件名

模型加载后进行对话,看看模型的身份认同是否改变。

5.3、利用WebUI微调

5.3.1、运行Web

输入命令:

llamafactory-cli webui

显示问题:

Visit http://ip:port for Web UI, e.g., http://127.0.0.1:7860

* Running on local URL:  http://0.0.0.0:7860



To create a public link, set `share=True` in `launch()`.

解决办法参考:LLaMa-Factory部署及llamafactory-cli webui命令无法打开ui界面问题解决记录_llamafactory to create a public link, set `share=t-CSDN博客

如图所示:

再次运行”llamafactory-cli webui”,还是有问题:

Could not create share link. Missing file: /root/.cache/huggingface/gradio/frpc/frpc_linux_amd64_v0.3.
Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps: 

1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_amd64
2. Rename the downloaded file to: frpc_linux_amd64_v0.3
3. Move the file to this location: /root/.cache/huggingface/gradio/frpc

解决办法:

1)在hf镜像网站下载frpc-gradio-0.3(注意版本号!)并移动到/root/.cache/huggingface/gradio/frpc/目录下

wget  https://cdn-media.hf-mirror.com/frpc-gradio-0.3/frpc_linux_amd64 -O /root/.cache/huggingface/gradio/frpc/frpc_linux_amd64_v0.3

2)修改文件权限

chmod +x /root/.cache/huggingface/gradio/frpc/frpc_linux_amd64_v0.3

再次运行”llamafactory-cli webui”,显示:

* Running on local URL:  http://0.0.0.0:7860
* Running on public URL: https://3b1fbc5c5cf19b0ca1.gradio.live

This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from the terminal in the working directory to deploy to Hugging Face Spaces (https://huggingface.co/spaces)

不用理会,直接点击打开http://0.0.0.0:7860或https://3b1fbc5c5cf19b0ca1.gradio.live

5.3.2、在网页上微调

在打开的网页上,参考下图修改响应参数。

微调开始后,控制台会输出大量日志,同时保存在save路径里。同时,网页会显示误差曲线等信息。

5.3.3、测试微调模型

微调成功结束后,可在网页上加载微调模型,并进行对话。

点击网页的”Export”,可将微调模型导出到指定目录(如Qwen2.5-0.5B-NZ)。

6、模型转换

6.1、使用ollama转换模型格式

ollama不能直接使用LLaMA-Factory导出的模型,需要用官方工具转换一下,工具如下:

https://github.com/ggerganov/llama.cpp 

镜像克隆命令:

git clone https://gitcode.com/gh_mirrors/ll/llama.cpp.git

clone仓库后,进入文件夹创建并激活虚拟环境:

python -m venv envOllama
source envOllama/bin/activate

然后安装相关依赖

pip install -r requirements.txt

接着就可以用下面的命令转换了。

convert_hf_to_gguf.py是llama.cpp中的文件,先指定factory导出的模型文件夹路径,后指定需要存放的模型路径,再指定量化等级。safetensors格式就被转换为了gguf格式。转换后是一个单文件。

首先创建一个输出文件夹:

mkdir /mnt/workspace/Qwen2.5-0.5B-ollama

然后输入命令:

python convert_hf_to_gguf.py /mnt/workspace/Qwen2.5-0.5B-NZ 
--outfile /mnt/workspace/Qwen2.5-0.5B-ollama/Qwen_ollama.gguf 
--outtype q8_0

转换很快完成。

6.2、使用ollama加载模型

将gguf模型下载到本地。

创建一个Modelfile文件(无后缀),写下FROM 转换后的gguf模型路径。

可在gguf文件同目录下创建,文件内容为:

FROM ./Qwen_ollama.gguf

FROM后面也可以是绝对路径。

然后启动ollama,win10系统在Modelfile文件目录下打开CMD,输入:

ollama create Qwen_NZ -f Modelfile

等待转换完成。随后,可使用ollama加载模型进行对话了。

ollama list #  查看模型列表
ollama run xxx # 运行xxx模型
ollama rm  xxx # 删除xxx模型

不过,经过转换后的模型有点胡言乱语,表现没有转换前那么好,原因暂时不明。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容