此最佳实践旨在介绍在完成了 LLaMA 微调后,用户如何将其创建为私有模型,并进行模型部署及调用操作。

前提条件

  • 已经获取基石智算控制台账户和密码。

  • 已完成实名认证且账户余额大于 0 元。

操作步骤

步骤 1:完成 LLaMA 模型微调

  1. 参考前文内容,进行 LLaMA 模型微调

    注意

    创建训练任务时,启动命令输入时,要求使用 -o 参数指定模型的输出路径。故,本次示例中,启动命令完整为: bash main-train.sh -o /root/epfs/sft_output/20241120_1

  2. 待分布式任务运行完成后,在左侧导航栏,选择存储与数据服务,点击指定用户目录,找到上一步微调完成的模型输出路径。

    bp llama model use 1

步骤 2:创建私有模型

  1. 在左侧导航栏,选择模型管理 > 创建模型,按如下要求配置各项参数。

    • 模型基本信息配置要求如下:

      模型名称模型简介模型描述模型标签以及版本号,用户可根据实际需要自定义。

    • 模型部署配置要求如下:

      • 镜像选择:选择公共镜像llama2-train:pytorch-2.1.2-cuda12.1-cudnn8-with-model

      • 模型配置:

        模型文件:选择 <root>/sft_output/20241120_1,即微调完成后模型的输出路径,其中 <root> 为存储目录名,需根据实际情况进行选择。

        挂载地址:此示例中为 /data,该地址与启动命令中的 Atom-7B-Chat-lora 参数有关,建议参考本示例。

      • 环境变量:无需设置。

      • 第三方依赖:选择第三方列表,并输入 vllm==0.6.1

      • 启动命令

        vllm serve /root/Llama-trains/Atom-7B-Chat --enable-lora --lora-modules Atom-7B-Chat-lora=/data --chat-template "{%- for message in messages -%}{{- '<s>' + message['role'] + ':' + message['content'] + '\n</s>'  -}}{%- endfor -%}{%- if messages[-1]['role'] == 'Human' -%}{{- '<s>Assistant: ' -}}{%- else -%}{{- '<s>Human: ' -}}{%- endif -%}"
      • 网络端口:输入 8000

  2. 完成上述参数配置后,点击确定

步骤 3:创建推理服务

  1. 返回模型管理列表页面在已创建好的模型所在列。

    bp llama model use 2
  2. 点击相应模型操作列中的模型部署,创建推理服务

  3. 创建推理服务页面中,用户根据实际需要填写服务名称,选择资源配置,点击创建即可。

    bp llama model use 3

步骤 4:调用服务接口

  1. 推理服务创建完成后,等待大约 3 分钟。

  2. 在左侧导航栏中,选择模型部署,在推理服务列表中,点击前文已完成创建的服务名称/ID

  3. 进入推理服务详情页面,在服务信息页签内,获取外网访问地址API 密钥。用户点击相应信息右侧的复制按钮copy即可。

    bp llama model use 4
  4. 执行如下命令,直接使用 curl 调用服务接口。

    curl -i --request POST \
      --url http://ai.coreshub.cn/xb2a/inference/usr-hs9prmcv/inf-c3u7trtl/v1/chat/completions \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer sk-8mjgk1Bq9KRzZ2dm1BVKEjXVbmrqcwgpdkXrTmJMX7aT2gQC' \
      --data '{
      "model": "Atom-7B-Chat-lora",
      "messages": [
        {
          "role": "System",
          "content": "You are a helpful assistant."
        },
        {
          "role": "Human",
          "content": "要描述如何准备一道水煮鱼。\n准备一道水煮鱼。"
        }
      ],
      "stream": false
    }'

    回显示例:

    bp llama model use 5