发布时间:2025-07-07 21:34:54编辑:123阅读(461)
LLaMa Factory环境安装可以参考https://py3study.com/Article/details/id/20107.html
查看当前conda环境
conda env list
切换到llama_factory环境
conda activate llama_factory
运行llama factory web-ui
llamafactory-cli webui
访问http://127.0.0.1:7860/
基座模型下载:
git clone https://modelscope.cn/models/Qwen/Qwen3-1.7B
数据集下载:
git clone https://www.modelscope.cn/datasets/YIRONGCHEN/PsyDTCorpus.git
配置数据集vim /home/sam_admin/dataset/PsyDTCorpus/dataset_info.json文件,内容如下
{
"PsyDTCorpus_train_mulit_turn_packing ShareGPT": {
"file_name": "PsyDTCorpus_train_mulit_turn_packing.json",
"formatting": "sharegpt",
"columns": {
"messages": "messages"
},
"tags": {
"role_tag": "role",
"content_tag": "content",
"user_tag": "user",
"assistant_tag": "assistant",
"system_tag": "system"
}
}
模型微调配置:
配置SwanLab和模型结果输出目录,点击预览命令生成训练配置文件,开始训练模型。
训练参数:
llamafactory-cli train \
--stage sft \
--do_train True \
--model_name_or_path /home/sam_admin/LLaMA-Factory/models/Qwen3-1.7B \
--preprocessing_num_workers 16 \
--finetuning_type lora \
--template default \
--flash_attn auto \
--dataset_dir /home/sam_admin/dataset/PsyDTCorpus \
--dataset PsyDTCorpus_train_mulit_turn_packing ShareGPT \
--cutoff_len 2048 \
--learning_rate 5e-05 \
--num_train_epochs 2.0 \
--max_samples 100000 \
--per_device_train_batch_size 2 \
--gradient_accumulation_steps 8 \
--lr_scheduler_type cosine \
--max_grad_norm 1.0 \
--logging_steps 5 \
--save_steps 100 \
--warmup_steps 0 \
--packing False \
--enable_thinking True \
--report_to none \
--use_swanlab True \
--output_dir /home/sam_admin/LLaMA-Factory/PsyDTCorpus/model_output \
--bf16 True \
--plot_loss True \
--trust_remote_code True \
--ddp_timeout 180000000 \
--include_num_input_tokens_seen True \
--optim adamw_torch \
--lora_rank 8 \
--lora_alpha 16 \
--lora_dropout 0 \
--lora_target all \
--swanlab_project PsychologyChat \
--swanlab_mode cloud \
--val_size 0.1 \
--eval_strategy steps \
--eval_steps 100 \
--per_device_eval_batch_size 2
点击开始训练:
训练完成:
LLaMA-Factory将基础模型和 LoRA微调后的适配器合并并导出为可直接使用的模型。
llamafactory-cli export \
--model_name_or_path = path_to_base_model \ #原始模型地址
--adapter_name_or_path = path_to_adapter \ #微调后文件的地址
--template qwen3 \ #使用Qwen3模型的模板
--finetuning_type lora \ #微调类型为LoRA
--export_dir = path_to_export \ #导出模型的目标目录
--export_size 2 \ #导出模型分片大小(GB)
--export_device cpu \ #导出设备CPU
--export_legacy_format False # 不使用旧格式导出
需要替换的项,路径替换:
需要将 path_to_base_model 替换为基础模型路径(例如:qwen/Qwen-7B)
将 path_to_adapter 替换为训练后的LoRA适配器路径
将 path_to_export 替换为导出目标路径
导出分片大小:
--export_size 2 表示每个导出文件的大小限制为2GB。这对于大模型很有用,可以将模型分割成多个较小的文件。
格式兼容性:
--export_legacy_format False 使用新格式导出,通常与最新版本的Transformers库兼容。如果您的环境较旧,可能需要设置为 True。
创建导出模型的目录
mkdir /home/sam_admin/psychology_chat
执行命令:
llamafactory-cli export --model_name_or_path /home/sam_admin/LLaMA-Factory/models/Qwen3-1.7B --adapter_name_or_path /home/sam_admin/LLaMA-Factory/PsyDTCorpus/model_output --template qwen3 --finetuning_type lora --export_dir /home/sam_admin/psychology_chat --export_size 2 --export_legacy_format False
成功如下:
提示Ollama modelfile saved in /home/sam_admin/psychology_chat/Modelfile
Modelfile文件是ollama本地部署所需要的文件。
模型量化
LLaMA Factory 默认并没有将模型转换为 GGUF 的方法,需要 llama.cpp 的仓库,使用其中的转换脚本:
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp/gguf-py
pip install --editable .
GGUF(GGML Universal File)是专为大型语言模型(LLM)设计的文件格式,其优化了数据的存储方式,减少了存储空间的占用,这对于包含大量参数的大型模型尤为重要。
相比于默认的 BF16 精度(每个参数占用 16 位(2 字节)),4BIT 量化(每个参数仅占用 4 位(0.5 字节))可以将模型推理的显存占用降低 75%。
所以运行 7B 的模型大概仅需要 4G 显存(考虑到其他开销实际可能更大一点)。但是量化后的模型也就意味着会损失一定精度
这里可选择的几种精度: f16(完整精度,大文件) q4_k_m(平衡质量和速度)q8_0(高精度)。
python /home/sam_admin/llama.cpp/convert_hf_to_gguf.py /home/sam_admin/psychology_chat --outtype f16
转换成功后,将在微调后合并的模型目录下生产一个 GGUF 文件(/home/sam_admin/psychology_chat/Psychology_Chat-1.7B-F16.gguf)
使用ollama本地部署
修改modelfile文件, from后面添加gguf的路径
# ollama modelfile auto-generated by llamafactory FROM /home/sam_admin/psychology_chat/Psychology_Chat-1.7B-F16.gguf TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ range .Messages }}{{ if eq .Role "user" }}<|im_start|>user {{ .Content }}<|im_end|> <|im_start|>assistant {{ else if eq .Role "assistant" }}{{ .Content }}<|im_end|> {{ end }}{{ end }}""" PARAMETER stop "<|im_end|>" PARAMETER num_ctx 4096
将刚刚导出好的 GGUF 文件给定Ollama进行注册(注意这里指定的是Modelfile文件,而不是GGUF文件):
ollama create psychology -f /home/sam_admin/psychology_chat/Modelfile
列出ollama所有的模型:
ollama list
运行注册的模型(微调后的模型),测试一下效果。
ollama run psychology
Langchain的使用
Ollama 是一个开源的大语言模型部署工具,而 LangChain 则是一个用于构建基于语言模型的应用的框架。通过结合这两者,可以在本地环境中快速部署和使用先进的AI模型。使用Ollama 与 LangChain 集成,以创建强大的 AI 应用。
上一篇: LLaMA Factory微调后的模型合并导出和部署-4
下一篇: 没有了
49555
48775
39452
36528
30919
27745
26722
21540
21426
19773
461°
849°
777°
816°
1696°
913°
1607°
1816°
1442°
1396°