llama-factory SFT系列教程 (一),大模型 API 部署与使用

文章目录

背景

本来今天没有计划学 llama-factory,逐步跟着github的文档走,发现这框架确实挺方便,逐渐掌握了一些。

最近想使用 SFT 微调大模型,llama-factory 是使用非常广泛的大模型微调框架;

简介

基于 llama_factory 微调 qwen/Qwen-7Bqwen/Qwen-7B-Chat

我使用的是 qwen/Qwen-7B,如果追求对话效果qwen/Qwen-7B-Chat的效果会好一点;

本系列的主要工作如下:

  1. 大模型 api 部署;直接部署开源大模型体验一下;
  2. 增加自定义数据集;为实现SFT准备数据;
  3. 大模型 lora 微调;
  4. 原始模型 + 微调后的lora插件,完成 api 部署;

使用 llama_factory 的 API 部署有 vllm加速推理;

文章目录:

  1. llama-factory SFT系列教程 (一),大模型 API 部署与使用
  2. llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署
  3. llama-factory SFT系列教程 (三),chatglm3-6B 命名实体识别实战

难点

可能遇到的一些难点:

llama_factory 默认从 Huggingface下载模型,要改为从modelscope下载模型权重;

前置条件

llama_factory 装包

bash 复制代码
git clone https://github.com/hiyouga/LLaMA-Factory.git
# conda create -n llama_factory python=3.10
# conda activate llama_factory
cd LLaMA-Factory
pip install -e .[metrics]

If you have trouble with downloading models and datasets from Hugging Face, you can use ModelScope.

bash 复制代码
export USE_MODELSCOPE_HUB=1 # `set USE_MODELSCOPE_HUB=1` for Windows

linux 在 ~/.bashrc 中 添加 export USE_MODELSCOPE_HUB=1source .bashrc 激活,达到重启电脑也生效;

1. 大模型 api 部署

虽然我执行了这条语句 export USE_MODELSCOPE_HUB=1 以为切换到 modelscope的下载源了;

但是 填写模型名称 --model_name_or_path qwen/Qwen-7B,还是会从 huggingface下载模型权重;于是我填写本地绝对路径的方式;

下载模型权重:

python 复制代码
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('qwen/Qwen-7B')
model_dir

输出模型的下载地址如下:

/mnt/workspace/.cache/modelscope/qwen/Qwen-7B

切换目录到刚才从github下载的 llama-factory 文件夹

bash 复制代码
cd LLaMA-Factory

执行 API 部署脚本,本文选择 api 而不是网页,因为API的用途更广,可供python程序调用,而网页只能与用户交互。

bash 复制代码
CUDA_VISIBLE_DEVICES=0 API_PORT=8000 python src/api_demo.py \
--model_name_or_path /mnt/workspace/.cache/modelscope/qwen/Qwen-7B \
--template qwen 
--infer_backend vllm 
--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 的文档页面如下图所示:

下述是官方给的请求体参数

bash 复制代码
{
  "model": "string",
  "messages": [
    {
      "role": "user",
      "content": "string",
      "tool_calls": [
        {
          "id": "call_default",
          "type": "function",
          "function": {
            "name": "string",
            "arguments": "string"
          }
        }
      ]
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "string",
        "description": "string",
        "parameters": {}
      }
    }
  ],
  "do_sample": true,
  "temperature": 0,
  "top_p": 0,
  "n": 1,
  "max_tokens": 0,
  "stream": false
}

笔者把下述的请求保存在 1.sh 文件中,因为下述请求体太长了,在sh文件中进行编辑方便一点;

bash 复制代码
curl -X 'POST' \
  'http://0.0.0.0:8000/v1/chat/completions' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "model": "string",
  "messages": [
    {
      "role": "user",
      "content": "你能帮我做一些什么事情?",
      "tool_calls": [
        {
          "id": "call_default",
          "type": "function",
          "function": {
            "name": "string",
            "arguments": "string"
          }
        }
      ]
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "string",
        "description": "string",
        "parameters": {}
      }
    }
  ],
  "do_sample": true,
  "temperature": 0,
  "top_p": 0,
  "n": 1,
  "max_tokens": 128,
  "stream": false
}'

执行 bash 1.sh 便可获得大模型生成的回答了;

在 API 文档中,还有其他的接口,请读者自行探索。

下一步阅读

llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署

包含如下内容:

  1. 增加自定义数据集;为实现SFT准备数据;
  2. 大模型 lora 微调;
  3. 原始模型 + 微调后的lora插件,完成 api 部署;
相关推荐
hsling松子1 小时前
使用PaddleHub智能生成,献上浓情国庆福
人工智能·算法·机器学习·语言模型·paddlepaddle
正在走向自律1 小时前
机器学习框架
人工智能·机器学习
好吃番茄2 小时前
U mamba配置问题;‘KeyError: ‘file_ending‘
人工智能·机器学习
CV-King3 小时前
opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
人工智能·opencv·算法·计算机视觉
禁默3 小时前
2024年计算机视觉与艺术研讨会(CVA 2024)
人工智能·计算机视觉
whaosoft-1434 小时前
大模型~合集3
人工智能
Dream-Y.ocean4 小时前
文心智能体平台AgenBuilder | 搭建智能体:情感顾问叶晴
人工智能·智能体
丶21364 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
春末的南方城市5 小时前
FLUX的ID保持项目也来了! 字节开源PuLID-FLUX-v0.9.0,开启一致性风格写真新纪元!
人工智能·计算机视觉·stable diffusion·aigc·图像生成
zmjia1115 小时前
AI大语言模型进阶应用及模型优化、本地化部署、从0-1搭建、智能体构建技术
人工智能·语言模型·自然语言处理