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)

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐