腾讯云大模型训推平台TI-ONE 部署自定义 LLM 大模型(平台内置推理镜像)

这篇以【Qwen2-7B-Instruct】模型为例,介绍如何将自定义大模型导入到 TI-ONE 平台,并使用平台内置推理镜像部署大模型推理服务。

相关产品
腾讯云大模型训推平台TI-ONE 产品页,含版本规格、价格与购买入口。

一、申请 CFS 或 GooseFSx

在部署自定义 LLM 大模型之前,你需要提前将大模型文件存储到腾讯云 CFS 或 GooseFSx ,所以请提前申请 CFS 或 GooseFSx,详情请查看 文件存储-创建文件系统及挂载点 或者 数据加速器 GooseFS。

二、1. 上传模型文件到 CFS 或 GooseFSx

登录 TI-ONE 平台 训练工坊 > 开发机,单击新建,其中各字段的填写说明如下:

·镜像:选择任意内置镜像即可。

·计费模式:选择按量计费或包年包月均可,平台支持的计费规则请你查看 计费概述。

·存储配置:选择 CFS 或 GooseFSx 文件系统,路径默认为根目录 /,用于指定保存用户自定义大模型位置。

·其它设置:默认不需要填写。

注意:说明:

注意:本开发机实例仅用于上传或下载大模型文件,所以算力规格选择 CPU 算力即可。

新建完成,待开发机处于“运行中”状态后,单击 打开 > Python3(ipykernel) 通过脚本下载所需模型文件。

你可在魔搭社区或 Hugging Face 检索需要用到的大模型,通过社区中 Python 脚本自行下载模型并保存到 CFS 中,这篇以【Qwen2-7B-Instruct】模型为例,下载代码如下:

!pip install modelscopefrom modelscope import snapshot_download#qwen/Qwen2-7B-Instruct为需要下载的模型名称,cache_dir为下载模型保存的地址,这里'./'表示将下载模型保存在CFS的根目录中model_dir = snapshot_download('qwen/Qwen2-7B-Instruct', cache_dir='./')

注意:说明:

注意:指定下载模型的地址 cache_dir(例如 path/to/local/dir)后,后续在线服务 CFS 中指定模型地址为 /path/to/local/dir/qwen/Qwen2-7B-Instruct。

复制上述下载脚本并更换需要下载的模型后,粘贴到新建的 ipynb 文件中,点击运行按钮即可开始下载模型;

此外你也可以在本地下载或微调后,通过开发机的上传通道将模型文件保存至 CFS 中,上传接口如下:

三、2. 创建在线服务

通过 TI-ONE 平台的模型服务 > 在线服务,单击新建服务来启动推理服务,以下是服务实例配置的指引。

·模型来源:选择 云存储>CFS。

·模型:选择 CFS 文件系统中存储的模型文件路径,此处为【/qwen/Qwen2-7B-Instruct】。

·镜像:选择【内置 / LLM / angel-vllm】。

·算力规格:根据实际的模型大小或拥有的资源情况选择,大模型推理时需要的机器资源与模型的参数量相关,推荐按如下规则配置推理服务资源。

模型参数量 GPU 卡类型和数量
6 ~ 8B L20 * 1 / A10 * 1 / A100 * 1 / V100 * 1
12 ~ 14B L20 * 1 / A10 * 2 / A100 * 1 / V100 * 2
65 ~ 72B L20 * 8 / A100 * 8

·【高级设置 > 环境变量】:需要设置模型名称 MODEL_ID(魔搭社区或 Hugging Face 上开源模型 ID),以及对话模板名称 CONV_TEMPLATE (若 MODEL_ID 与开源模型相同,可以不添加 CONV_TEMPLATE 参数),常用的对话模板名称如下表所示,这篇使用 qwen-chat 系列,故设置为 qwen-7b-chat。

对话模板名称 CONV_TEMPLATE 支持的模型系列 MODEL_ID
generate 非对话模型(直接生成,无对话模板)
llama-3 llama-3-8b-instruct、llama-3-70b-instruct 模型
llama-2 llama-2-chat 系列模型
qwen-7b-chat qwen-chat 系列模型(chatml 格式)
baichuan2-chat baichuan2-chat 系列模型
baichuan-chat baichuan-13b-chat 模型
chatglm3 chatglm3-6b 模型
chatglm2 chatglm2-6b 模型

在线服务创建实例配置如下:

四、3. 前端在线体验

进入创建的在线服务详情页,通过点击 在线体验 Tab 页即可与部署成功的大模型进行对话体验。

五、4. 接口服务调用

可通过服务调用 Tab 页中的接口信息 > 调用方式(在线测试)进行访问,接口的调用地址为 ${SERVER_URL}/v1/chat/completions,请求体的格式:

{"messages":[{"role": "user", "content": "你是谁"}]}

字段 content 为具体的消息内容。

公网访问地址可从在线服务实例服务调用中获取,API 调用示例如下:

# 公网访问地址SERVER_URL = https://ms-gp6rjk2jj-**********.gw.ap-shanghai.ti.tencentcs.com/ms-gp6rjk2j# 非流式调用curl -H "content-type: application/json" ${SERVER_URL}/v1/chat/completions -d '{"messages":[{"role": "user", "content": "你好"}], "temperature": 0.0}'# 流式调用curl -H "content-type: application/json" ${SERVER_URL}/v1/chat/completions -d '{"messages":[{"role": "user", "content": "你好"}], "temperature": 0.0, "stream": true}'

非流式返回结果:

{"id":"chatcmpl-4aeRgYwnaYe4RzmmcyKtYs","object":"chat.completion","created":1698291242,"model":"baichuan-13b-chat","choices":[{"index":0,"message":{"role":"assistant","content":"你好!有什么我能帮到你的吗?"},"finish_reason":"stop"}],"usage":{"prompt_tokens":4,"total_tokens":16,"completion_tokens":12}}

流式返回结果:

data: {"id": "chatcmpl-hn5mCVt4szVVZBa4fVFZWF", "model": "baichuan-13b-chat", "choices": [{"index": 0, "delta": {"role": "assistant"}, "finish_reason": null}]}data: {"id": "chatcmpl-hn5mCVt4szVVZBa4fVFZWF", "model": "baichuan-13b-chat", "choices": [{"index": 0, "delta": {"content": " 你"}, "finish_reason": null}], "usage": {"prompt_tokens": 4, "total_tokens": 5, "completion_tokens": 1}}data: {"id": "chatcmpl-hn5mCVt4szVVZBa4fVFZWF", "model": "baichuan-13b-chat", "choices": [{"index": 0, "delta": {"content": "好"}, "finish_reason": null}], "usage": {"prompt_tokens": 4, "total_tokens": 6, "completion_tokens": 2}}……….此处省略中间结果…………..data: {"id": "chatcmpl-hn5mCVt4szVVZBa4fVFZWF", "model": "baichuan-13b-chat", "choices": [{"index": 0, "delta": {"content": "?"}, "finish_reason": null}], "usage": {"prompt_tokens": 4, "total_tokens": 15, "completion_tokens": 11}}data: {"id": "chatcmpl-hn5mCVt4szVVZBa4fVFZWF", "object": "chat.completion.chunk", "created": 1714120317, "model": "baichuan-13b-chat", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}], "usage": {"prompt_tokens": 4, "total_tokens": 16, "completion_tokens": 12}}data: [DONE]

另外也可以通过 Python 常用的 requests 库来使用服务,下面是一个命令行与 Qwen2-7B-Instruct 大模型推理服务进行对话交互的 Demo 示例:

import argparseimport requestsimport jsondef chat(messages): data = { "messages": messages, "temperature": args.temperature, "max_tokens": args.max_tokens, "top_p": args.top_p, "stream": True, # 开启流式输出 } header = { "Content-Type": "application/json", } if args.token: header["Authorization"] = f"Bearer {args.token}" response = requests.post(f"{args.server}/v1/chat/completions", json=data, headers=header, stream=True) # 设置 stream=True 参数获取实时数据流 if response.status_code != 200: print(response.json()) exit() result = "" print("Assistant: ", end = "", flush = True) for part in response.iter_lines(): if part: if "content" in part.decode("utf-8"): content = json.loads(part.decode("utf-8")[5:])["choices"][0]["delta"]["content"] # 字符串过滤 data: 之后转成 json 格式再取文本 result += content print(content, end = "", flush = True) print("\\n") return resultif __name__ == "__main__": parser = argparse.ArgumentParser(description="Chat CLI Demo.") # –server替换为实际的调用地址 parser.add_argument("–server", type=str, default="https://ms-gp6rjk2j-*******.gw.ap-shanghai.ti.tencentcs.com/ms-gp6rjk2j") parser.add_argument("–max-tokens", type=int, default=512) parser.add_argument("–temperature", type=float, default=0.7) parser.add_argument("–top_p", type=float, default=1.0) parser.add_argument("–system", type=str, default=None) parser.add_argument("–token", type=str, default=None) args = parser.parse_args() messages = [] if args.system: messages.append({"role": "system", "content": args.system}) while True: user_input = input("User: ") messages.append({"role": "user", "content": user_input}) response = chat(messages) messages.append({"role": "assistant", "content": response})

赞 (0)
上一篇 4天前
下一篇 4天前