AI大模型应用学习微调部署常用命令

      最近在学习AI大模型的相关知识,在此记录一下学习过程中经常使用到的一些命令,我是基于conda环境的学习,然后是在autodl算力平台上租用了一个GPU服务器,所以以下命令是基于conda平台或者服务器上的conda环境的,仅作为一个自己的学习记录使用。

1.查看所有已创建好的Conda环境:

conda env list

或者 

conda info --envs

2.创建新的conda环境:

conda create -n env_name python=3.10 -y

3.激活某个conda环境:

conda activate env_name

4.退出当前conda环境,回到base环境:

conda deactivate

5.删除某个conda环境:

conda remove -n env_name --all -y

6.查看当前GPU使用情况:

nvitop 

前提是需要安装nvitop,使用 pip install nvitop 命令安装,安装完成后即可使用 nvitop 命令

在运行过程中,你可以按 q 键退出GPU使用情况的查看

7.使用nohup命令进行服务器后台运行python文件

进入到python文件对应的目录,执行以下命令:

nohup python -u pythonFileName.py &

该命令可以让程序在服务器后台运行,即使你关闭连接服务器的客户端也不影响,并且会在当前目录创建nohup.out文件来输出代码中的日志信息。

如果想停止该程序,就使用正常的linux系统的停止程序命令即可。一般是使用

top

或者

ps -ef|grep python

命令找到服务对应的PID(进程号),然后使用

kill -9 PID

停止程序。

8.启动llamafactory 服务来微调大模型

(1) 使用webui界面进行微调训练

llamafactory-cli webui

该命令需要把启动的端口代理到本地,才能在本地进行地址访问,出现能够微调大模型的webui界面,如果是租用autodl算力服务器,可以使用VSCode 工具,也可以使用autodl服务器的自定义服务-AutoDL-SSH隧道工具。

(2)使用配置文件进行微调训练

--使用命令行执行权重训练
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml


--使用命令行执行导出训练后的权重
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml

--使用命令行验证训练后的权重

llamafactory-cli chat examples/inference/llama3_lora_sft.yaml

examples/train_lora/llama3_lora_sft.yaml 是在LLaMA-Factory 目录下的配置文件,启动命令前需要修改配置文件中的对应模型属性。

9.导出安装好并可以运行的conda环境以及依赖包

pip list --format=freeze > requirements.txt

然后在新的conda虚拟环境中导入好的环境(可以是另外的服务器上,也可以是新建的conda虚拟环境)

pip install -r requirements.txt

10.autodl 开启学术加速

source /etc/network_turbo

AutoDL 学术加速是一种用于加速访问特定学术资源的网站代理工具。它可以帮助用户在使用 AutoDL 平台加载预训练模型时提高下载速度,特别是在访问 GitHub、GitHubusercontent、GitHubAssets 和 HuggingFace 等网站时。

如果不再需要学术加速,可以通过以下命令关闭:

unset http_proxy && unset https_proxy

11. 使用vLLM推理部署框架启动大模型服务

(1)启动预训练好的模型命令(从hugging face 或者 modelscope 等大模型平台上下载的模型)

vllm serve 大模型目录  --max-model-len 512

(2)启动使用 llamafactory 微调训练后的合并模型

vllm serve 微调训练后合并的模型目录 --max_model_len 512 --chat-template jinja格式的对话模版路径

启动命令中的 --max_model_len 是一个可选参数,用于指定模型在推理时能够处理的输入序列的最大长度

详细解释
- 输入序列长度 :在自然语言处理领域,文本会被拆分成一个个的词元(token),输入序列长度就是指输入文本所包含的词元数量。例如,“你好,今天天气不错” 这句话可能会被拆分成若干个词元。
参数作用 : --max_model_len 512 表示模型在本次推理服务中,最多能处理包含 512 个词元的输入文本。如果输入的文本词元数量超过这个设定值,模型可能无法完整处理,或者需要进行额外的处理(如截断)。
实际意义
- 避免资源过度使用 :通过设置最大长度,可以限制模型处理的输入规模,避免因输入过长导致内存占用过高、推理时间过长等问题。
- 适配任务需求 :根据具体的应用场景和任务需求,合理设置这个参数可以让模型在性能和效果之间达到较好的平衡。例如,对于短文本对话场景,设置一个相对较小的最大长度可以提高推理效率。

示例:

vllm serve /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat-merged --max_model_len 512 --chat-template /root/autodl-tmp/model/Qwen/qwen-chat-template.jinja

其中 /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat-merged 是我的大模型的目录,

max-model-len:模型上下文长度参数,该参数一般是可以不设置,我这里的启动命令中使用了该参数是因为启动时报了类似如下错误提示:

对于参数量不是很大(比如小于等于3B)的模型来说, 启动时设置 --chat-template 对话模版,vLLM推理时才能起到和你训练后在llamafactory webui 界面中 chat 对话框展示的效果一致。

12.使用 LMDeploy 推理部署框架启动大模型服务

lmdeploy serve api_server /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat-merged --quant-policy 8

/root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat-merged 是大模型的路径

--quant-policy 8 表示应用 kv int8 量化,根据自己的需要选择是否加该参数。

因为我的GUP显存只有24G,部署整个Qwen1.5-7B-Chat 模型会报OOM异常,所以增加了kv int8 量化参数启动。

13.使用 llama.cpp 转换hf格式为gguf格式文件

#如果不量化,保留模型的效果

python convert_hf_to_gguf.py /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat_lora_sft --outtype f16 --verbose --outfile /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat-gguf.gguf

# 如果需要量化,加速并有损效果
python convert_hf_to_gguf.py /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat_lora_sft --outtype q8_0 --verbose --outfile /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat-q8.gguf
 

14.使用ollama 创建 gguf 格式的模型

ollama create Qwen1.5-7B-Chat-GGUF -f /root/autodl-tmp/ModelFile

执行该命令前需要创建名为“ModelFile”的文件,文件里面写入如下代码

FROM /root/autodl-tmp/model/Qwen/Qwen1.5-7B-Chat-q8-0-GGUF.gguf

ollama create 命令执行成功后再执行 ollama list 命令查看创建好的模型名称,会有类似如下的信息:

15. 使用XTuner进行微调训练相关命令

(1)启动训练命令

 nohup xtuner train /root/autodl-tmp/traintool/xtuner/xtuner/configs/llama/llama3_8b_instruct/llama3_8b_instruct_qlora_ruozhiba_e3.py &

(2)转换 pth 权重格式 为 Hugging Face 格式

xtuner convert pth_to_hf ${FINETUNE_CFG} ${PTH_PATH} ${SAVE_PATH}
示例:
xtuner convert pth_to_hf /root/autodl-tmp/traintool/xtuner/xtuner/configs/llama/llama3_8b_instruct/llama3_8b_instruct_qlora_ruozhiba_e3.py /root/autodl-tmp/traintool/xtuner/work_dirs/llama3_8b_instruct_qlora_ruozhiba_e3/iter_7500.pth /root/autodl-tmp/traintool/xtuner/work_dirs/llama3_8b_instruct_qlora_7500
 

(3)使用Hugging Face 格式的权重进行对话测试

xtuner chat ${NAME_OR_PATH_TO_LLM} --adapter {NAME_OR_PATH_TO_ADAPTER} --prompt-template ${PROMPT_TEMPLATE} [optional arguments]
示例:xtuner chat /root/autodl-tmp/aiLearn/model/BAAI/Finance-llama3_1_8B_instruct --adapter /root/autodl-tmp/traintool/xtuner/work_dirs/llama3_8b_instruct_qlora_7500 --prompt-template llama3_chat
 

(4)合并训练好的权重

xtuner convert merge ${LLM} ${LLM_ADAPTER} ${SAVE_PATH}
示例:
xtuner convert merge /root/autodl-tmp/aiLearn/model/BAAI/Finance-llama3_1_8B_instruct /root/autodl-tmp/traintool/xtuner/work_dirs/llama3_8b_instruct_qlora_7500 /root/autodl-tmp/aiLearn/model/BAAI/Finance-llama3_1_8B_instruct-merged
 

参考网址:

Environments - Anaconda

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值