llama-factory SFT系列教程 (一),大模子 API 摆设与使用

[复制链接]
发表于 2026-2-22 13:26:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
配景

原来本日没有操持学 llama-factory,渐渐跟着github的文档走,发现这框架确实挺方便,徐徐把握了一些。
近来想使用 SFT 微调大模子,llama-factory 是使用非常广泛的大模子微调框架;
简介

基于 llama_factory 微调 qwen/Qwen-7B,qwen/Qwen-7B-Chat
我使用的是 qwen/Qwen-7B,假如寻求对话效果qwen/Qwen-7B-Chat的效果会好一点;
本系列的告急工作如下:

  • 大模子 api 摆设;直接摆设开源大模子体验一下;
  • 增长自界说数据集;为实现SFT预备数据;
  • 大模子 lora 微调;
  • 原始模子 + 微调后的lora插件,完成 api 摆设;
   使用 llama_factory 的 API 摆设有 vllm加快推理;
  文章目次:

  • llama-factory SFT系列教程 (一),大模子 API 摆设与使用
  • llama-factory SFT系列教程 (二),大模子在自界说数据集 lora 训练与摆设
  • llama-factory SFT系列教程 (三),chatglm3-6B 定名实体辨认实战
  • llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加快推理
难点

大概碰到的一些难点:
llama_factory 默认从 Huggingface下载模子,要改为从modelscope下载模子权重;
前置条件

llama_factory 装包
  1. git clone https://github.com/hiyouga/LLaMA-Factory.git
  2. # conda create -n llama_factory python=3.10
  3. # conda activate llama_factory
  4. cd LLaMA-Factory
  5. pip install -e .[metrics]
复制代码
If you have trouble with downloading models and datasets from Hugging Face, you can use ModelScope.
  1. export USE_MODELSCOPE_HUB=1 # `set USE_MODELSCOPE_HUB=1` for Windows
复制代码
linux 在 ~/.bashrc 中 添加 export USE_MODELSCOPE_HUB=1, source .bashrc 激活,到达重启电脑也收效;
1. 大模子 api 摆设

固然我实行了这条语句 export USE_MODELSCOPE_HUB=1 以为切换到 modelscope的下载源了;
但是 填写模子名称 --model_name_or_path qwen/Qwen-7B,还是会从 huggingface下载模子权重;于是我填写本地绝对路径的方式;
下载模子权重:
  1. #模型下载
  2. from modelscope import snapshot_download
  3. model_dir = snapshot_download('qwen/Qwen-7B')
  4. model_dir
复制代码
输出模子的下载所在如下:
   /mnt/workspace/.cache/modelscope/qwen/Qwen-7B
  切换目次到刚才从github下载的 llama-factory 文件夹
  1. cd LLaMA-Factory
复制代码
实行 API 摆设脚本,本文选择 api 而不是网页,由于API的用途更广,可供python步调调用,而网页只能与用户交互。
  1. CUDA_VISIBLE_DEVICES=0 API_PORT=8000 python src/api_demo.py \
  2. --model_name_or_path /mnt/workspace/.cache/modelscope/qwen/Qwen-7B \
  3. --template qwen
  4. --infer_backend vllm
  5. --vllm_enforce_eager
复制代码
可以注意到 LLaMA-Factory 在模子推理时,使用了 vllm 加快;
不出不测的话,颠末一段时间的模子权重加载,看到下述图片展示的状态时,那么 API 便摆设乐成了;

   现在怎样给 API 接口传参呢?是不是有点不知所措!
不消急,在图片的红框中,笔者已经给各人标出来了,http://localhost:8000/docs  便是API 的接口文档阐明;
    有同砚会说:“我使用的云端服务器,而且还没有公网 ip,我该那怎么访问这个文档呢?”
笔者:直接点击便可访问,该文档做了内网穿透;
  好比,我点击后,弹出了如下页面:https://dsw-gateway-cn-beijing.data.aliyun.com/dsw-70173/proxy/8000/docs
该 API 的文档页面如下图所示:

下述是官方给的哀求体参数
  1. {
  2.   "model": "string",
  3.   "messages": [
  4.     {
  5.       "role": "user",
  6.       "content": "string",
  7.       "tool_calls": [
  8.         {
  9.           "id": "call_default",
  10.           "type": "function",
  11.           "function": {
  12.             "name": "string",
  13.             "arguments": "string"
  14.           }
  15.         }
  16.       ]
  17.     }
  18.   ],
  19.   "tools": [
  20.     {
  21.       "type": "function",
  22.       "function": {
  23.         "name": "string",
  24.         "description": "string",
  25.         "parameters": {}
  26.       }
  27.     }
  28.   ],
  29.   "do_sample": true,
  30.   "temperature": 0,
  31.   "top_p": 0,
  32.   "n": 1,
  33.   "max_tokens": 0,
  34.   "stream": false
  35. }
复制代码
笔者把下述的哀求生存在 1.sh 文件中,由于下述哀求体太长了,在sh文件中举行编辑方便一点;
  1. curl -X 'POST' \
  2.   'http://0.0.0.0:8000/v1/chat/completions' \
  3.   -H 'accept: application/json' \
  4.   -H 'Content-Type: application/json' \
  5.   -d '{
  6.   "model": "string",
  7.   "messages": [
  8.     {
  9.       "role": "user",
  10.       "content": "你能帮我做一些什么事情?",
  11.       "tool_calls": [
  12.         {
  13.           "id": "call_default",
  14.           "type": "function",
  15.           "function": {
  16.             "name": "string",
  17.             "arguments": "string"
  18.           }
  19.         }
  20.       ]
  21.     }
  22.   ],
  23.   "tools": [
  24.     {
  25.       "type": "function",
  26.       "function": {
  27.         "name": "string",
  28.         "description": "string",
  29.         "parameters": {}
  30.       }
  31.     }
  32.   ],
  33.   "do_sample": true,
  34.   "temperature": 0,
  35.   "top_p": 0,
  36.   "n": 1,
  37.   "max_tokens": 128,
  38.   "stream": false
  39. }'
复制代码
实行 bash 1.sh 便可得到大模子天生的复兴了;

在 API 文档中,尚有其他的接口,请读者自行探索。
下一步阅读

llama-factory SFT系列教程 (二),大模子在自界说数据集 lora 训练与摆设
包罗如下内容:
   

  • 增长自界说数据集;为实现SFT预备数据;
  • 大模子 lora 微调;
  • 原始模子 + 微调后的lora插件,完成 api 摆设;
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表