AI推理软件套件
特性介绍
openFuyao AI推理软件套件主要支持用户在一体机上使用大模型推理能力,具备鲲鹏、昇腾亲和能力并兼容主流CPU计算场景。
应用场景
目前企业中使用AI推理的主要场景有Web场景和API接口场景两种。
- Web场景:使用类似豆包、Deepseek等提供的网页端,通过直接在输入框中输入文字内容的方式和大模型进行交互。
- API接口场景:使用API接口进行通信,通过编程的方式与大模型进行交互,常见于支持接入大模型的应用插件,如cline、roo code等。
能力范围
AI推理软件套件的主要功能是提供一键安装部署和模型推理能力,主要有如下功能。
- 一键安装部署能力:支持一键部署openFuyao和大模型推理相关组件,降低部署门槛。
- 提供大模型API接口:提供与主流产品兼容的API,支持通过API调用大模型能力。
- 提供监控能力:支持集成监控面板组件,允许用户观测推理服务的各项指标。
亮点特征
AI推理软件套件兼容集成开源模型,实现高扩展性、快速部署安装等能力,面向异构算力进行亲和优化,提升资源利用率。
- 快速安装 + 开箱即用(轻量化、低底噪):支持基于openFuyao平台快速安装AI推理软件套件(含驱动固件),做到开箱即用。
- 高扩展性 + 快速定制部署:基于openFuyao容器平台实现可扩展架构,允许基于openFuyao扩展组件市场和外部开源组件定制一体机方案。
- 异构算力亲和优化:支持并对鲲鹏 + 昇腾计算场景进行亲和优化,同时兼容主流GPU计算场景。
实现原理
图1 AI推理软件套件实现原理
推理任务:在一次完整的推理任务中,用户以openAI API形发起推理任务请求,推理任务被发送至K8s集群中的Ray集群RayCluster。RayCluster接到请求后将任务下发至自身集群内的工作节点head pod和worker pod,工作节点处理完推理任务后沿原路返回结果,推理任务运行流程如图2所示。
图2 AI推理软件套件推理任务时序图
- 集群监控:用户或管理员可以通过可视化监控面板custom-monitor查看Ray集群状态,custom-monitor从集群中的监控组件k8s-monitor获取指标。
- 一键安装部署:AI推理软件套件支持openFuyao管理平台一键部署。
与相关特性的关系
AI推理软件套件与其它特性存在单方面依赖和联合使用两种关系。
-
单方面依赖
单方面依赖是AI推理软件套件运行所必须的前置特性,如表1所示。
表1 单方面依赖
组件名称 | License | 版本 | 描述 |
---|---|---|---|
NPU Operator | MulanPSL-2.0 | 0.0.0-latest | openFuyao生态组件,针对Ascend NPU的k8s集群管理工具 |
GPU Operator | Apache-2.0 License | v25.3.2 | NVIDIA提供的生态组件,针对NVIDIA GPU的k8s集群管理工具 |
KubeRay Operator | Apache-2.0 License | v0.14.0 | 简化k8s集群上的Ray应用部署并进行管理 |
Prometheus | Apache-2.0 license | - | k8s原生监控组件,直接监控集群服务并以标准格式提供指标查询 |
说明:
GPU Operator为第三方可选依赖,仅在使用NVIDIA GPU推理时需要安装。GPU Operator按照NVIDIA官方组件原样提供,openFuyao未对其内容进行任何修改。使用相关组件时的额外条款与限制请参见NVIDIA官方文档。
-
联合使用
联合使用是与AI推理软件套件解耦的特性,当前版本支持用户自由选择用于可视化监控的特性。
表2 联合使用
组件名称 | License | 版本 | 描述 |
---|---|---|---|
monitoring-dashboard | MulanPSL-2.0 | 0.0.0-latest | openFuyao生态组件,用户可按需求拓展指标与自定义监控面板。 |
monitoring-service | MulanPSL-2.0 | 0.0.0-latest | openFuyao生态组件,用于实时监控、收集和分析集群内资源和应用状态。 |
安装
AI推理软件套件的一键式安装部署指openFuyao平台应用市场上一体机应用的一键部署。
openFuyao平台
- 在openFuyao平台的左侧导航栏选择“应用市场 > 应用列表”,进入“应用列表”界面。
- 勾选左侧“场景”中的“人工智能/机器学习”,查找“aiaio-installer”卡片。或在搜索框中输入“aiaio-installer”。
- 单击“aiaio-installer”卡片,进入扩展组件“详情”界面。
- 单击“部署”进入“部署”界面。
- 输入应用名称、选择安装版本和命名空间。命名空间可以选用已有命名空间或新建命名空间,创建命名空间请参见命名空间。
- 在参数配置的“Values.yaml”中输入要部署的values信息,本组件可配置的参数较多,需要按照下一节参数配置详细说明进行配置。
- 单击“部署”完成应用的安装。
说明:
需要根据应用名称创建目录,在需要部署应用的服务器上创建/mnt/<应用名称>-storage。例如,应用名称为aiaio,则需要创建/mnt/aiaio-storage。
配置参数详细说明
表3 values.yaml配置参数说明
配置分类 | 参数名称 | 数据类型 | 说明 | 可选值/备注 |
---|---|---|---|---|
accelerator | GPU | boolean | 是否使用GPU进行推理 | true/false,与NPU只能选择一个为true |
accelerator | NPU | boolean | 是否使用NPU进行推理 | true/false,与GPU只能选择一个为true |
accelerator | type | string | 硬件加速器类型 | NPU支持:Ascend910B、Ascend910B4;GPU支持:V100 |
accelerator | num | integer | 硬件加速器数量 | 根据模型大小和推荐配置设置,应当配置为tensor_parallel_size × pipeline_parallel_size |
service | image | string | 推理服务镜像地址 | NPU推荐:cr.openfuyao.cn/openfuyao/ai-all-in-one:latest GPU需使用build/Dockerfile.gpu构建 |
service | model | string | 推理模型名称 | 具体的模型路径,如deepseek-ai/DeepSeek-R1-Distill-Qwen-14B |
service | tensor_parallel_size | integer | 张量并行大小 | 根据模型大小和推荐配置设置 |
service | pipeline_parallel_size | integer | 流水线并行大小 | 根据模型大小和推荐配置设置 |
service | max_model_len | integer | 模型最大序列长度 | 根据模型大小和硬件加速器配置设置,推荐配置为16384,或根据需求调整 |
service | vllm_use_v1 | integer | 是否使用vLLM v1版本 | 推荐设置为1 |
storage | accessMode | string | 存储访问模式 | 推荐使用ReadWriteMany |
storage | size | string | 存储大小 | 根据模型大小和推荐配置设置,推荐配置为模型大小的1.2倍或以上 |
storage | storageClassName | string | 存储类名称 | 根据集群实际存储类配置,当default_pv设置为true时本选项无效 |
storage | default_pv | boolean | 是否使用默认持久卷 | 如果集群内没有预配置storageClass,推荐设置为true |
模型推荐配置
表4 模型配置推荐
模型规模 | service.model | accelerator.GPU | accelerator.NPU | accelerator.type | accelerator.num | service.tensor_parallel_size | service.pipeline_parallel_size | storage.size |
---|---|---|---|---|---|---|---|---|
1.5B | deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B | false | true | Ascend910B4 | 1 | 1 | 1 | 10Gi |
7B | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | false | true | Ascend910B4 | 1 | 1 | 1 | 20Gi |
8B | deepseek-ai/DeepSeek-R1-Distill-Qwen-8B | false | true | Ascend910B4 | 1/2 | 1/2 | 1 | 25Gi |
14B | deepseek-ai/DeepSeek-R1-Distill-Qwen-14B | false | true | Ascend910B4 | 2 | 2 | 1 | 40Gi |
32B | deepseek-ai/DeepSeek-R1-Distill-Qwen-32B | false | true | Ascend910B4 | 4 | 4 | 1 | 80Gi |
70B | deepseek-ai/DeepSeek-R1-Distill-Qwen-70B | false | true | Ascend910B4 | 8/16 | 8/16 | 1 | 160Gi |
说明:
- 此处仅包括NPU推荐配置,由于GPU支持尚处于早期,暂不提供推荐配置。
- 图中1/2表示最小配置要求为1,推荐配置要求为2,其余同理。
- 完整配置可以参考配置示例。
部署视图
现阶段AI推理软件套件主要包含三个组件,分别是昇腾NPU管理组件NPU Operator(或GPU管理组件GPU Operator)、openFuyao Ray管理组件KubeRay Operator以及集群组件RayCluster。根据部署模型的规模,RayCluster内部包含一个head pod组件,并可能包括0个或若干worker pod组件。这些组件无需用户部署,部署程序会自动拉起,部署视图见图3(仅包含head pod)、图4(包含head pod和一个worker pod)。
图3 AI推理软件套件部署视图1
图4 AI推理软件套件部署视图2
使用openAI API提交推理任务
前提条件
节点上已部署AI推理软件套件服务。
背景信息
使用openAI API提交推理任务支持提交推理任务和查看推理结果。
- 提交推理任务:首先需要构建openAI HTTP请求,再将请求发送至推理服务地址。
- 查看推理结果:推理服务完成任务后,向用户地址发送结果并在用户界面显示。
图5 推理任务
使用限制
当前仅支持纯文本的推理任务内容。
操作步骤
-
构造推理任务:首先在客户端构造推理任务,推理任务的JSON结构如下所示。
{
"method": "POST",
"url": "http://localhost:8000/v1/chat/completions",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer fake-key"
},
"body": {
"model": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
}
} -
获取K8s中RayService的k8s service(以serve-svc结尾)的cluster ip,构造推理请求URI。URI为:http://<cluser_ip>:8000/v1/chat/completions
-
通过curl等命令行工具或者python等编程语言发起HTTP POST请求。
-
AI推理软件套件中的推理服务处理推理任务后将结果以原路径返回客户端。
附录
配置示例
NPU配置示例(14B模型)
accelerator:
GPU: false
NPU: true
type: "Ascend910B4"
num: 2
service:
image: cr.openfuyao.cn/openfuyao/ai-all-in-one:latest
model: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B"
tensor_parallel_size: 2
pipeline_parallel_size: 1
max_model_len: 16384
vllm_use_v1: 1
storage:
accessMode: ReadWriteMany
size: 40Gi
storageClassName: example-sc
default_pv: true
GPU配置示例(14B模型)
accelerator:
GPU: true
NPU: false
type: "V100"
num: 2
service:
image: "your-custom-gpu-image:latest" # 需要使用build/Dockerfile.gpu构建
model: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B"
tensor_parallel_size: 2
pipeline_parallel_size: 1
max_model_len: 16384
vllm_use_v1: 0 # V100当前不支持使用vllm v1引擎
storage:
accessMode: ReadWriteMany
size: 40Gi
storageClassName: example-sc
default_pv: true