LLama-Factory学习笔记
LLama-Factory环境部署
conda create -n llm python=3.10
激活环境并进入到下载的LLama-Factory目录,安装需要的包
#使用清华源加速
pip install -e ".[torch,metrics]" --no-build-isolation -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
如果遇到依赖问题则执行
pip install --no-deps -e . -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
测试是否安装成功
llamafactory-cli version

LLama3微调示例
修改LLaMA-Factory/examples/train_lora/llama3_lora_sft.yaml,此外可以替换LLaMA-Factory/data/identity.json中的{{name}}和{{author}}来微调定制模型身份。

使用命令进行微调训练
#设置使用6,7号位的显卡,使用ModelScope源,不需要可以删除前两个字段
CUDA_VISIBLE_DEVICES=6,7 USE_MODELSCOPE_HUB=1 llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
训练时可新开窗口用nvitop命令实时显示显卡使用率
nvitop -m auto
LLama3微调后进行推理
先修改LLaMA-Factory/examples/inference/llama3_lora_sft.yaml中的model_name_or_path为LLM-Research/Meta-Llama-3-8B-Instruct
然后执行命令进行模型推理
#同样使用6,7号显卡
CUDA_VISIBLE_DEVICES=6,7 USE_MODELSCOPE_HUB=1 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml

模型评估
修改LLaMA-Factory/examples/train_lora/llama3_lora_eval.yaml中的model_name_or_path

之后运行命令在mmlu和ceval上评估Lora微调的模型
#train or eval看llama-factory版本
CUDA_VISIBLE_DEVICES=6,7 USE_MODELSCOPE_HUB=1 llamafactory-cli train examples/train_lora/llama3_lora_eval.yaml
将Lora与模型合并
CUDA_VISIBLE_DEVICES=6,7 USE_MODELSCOPE_HUB=1 llamafactory-c
li export examples/merge_lora/llama3_lora_sft.yaml
之后修改LLaMA-Factory/examples/inference/llama3_lora_sft.yaml中的model_name_or_path为output的路径,再注释掉adapter,再次运行之前的推理的命令即可。

使用GPTQ进行对合并后的模型进行INT
修改LLaMA-Factory/exampmerge_lora/llama3_gptq.yaml中的model_name_or_path为output的路径

之后执行命令即可量化模型(这一步可能会提示少gptqmodel,需要pip install gptqmodel)
CUDA_VISIBLE_DEVICES=6,7 USE_MODELSCOPE_HUB=1 llamafactory-cli export examples/merge_lora/llama3_gptq.yaml
开放API端口供脚本调用
通过以下命令可以在8000端口开放模型的API调用
API_PORT=8000 CUDA_VISIBLE_DEVICES=6,7 llamafactory-cli api examples/inference/llama3_lora_sft.yaml
之后可以通过脚本进行批量交互
from openai import OpenAI
client = OpenAI(api_key="0", base_url="http://0.0.0.0:8000/v1")
messages = [{"role": "user", "content": "你是谁?"}]
result = client.chat.completions.create(messages=messages, model="LLM-Research/Meta-Llama-3-8B-Instruct")
print(result.choices[0].message)
更多推荐




所有评论(0)