模式一:UV库模式
此种模式下,对应着上面所说的每个数据处理节点,单独对外提供服务,每种服务能力我们称为一个U, V。
🚀开发环境搭建
✅前置要求
- Python >= 3.10, 首选 Python 3.12
💾安装依赖
# 添加内部镜像源
pip config set global.index-url https://nexus.mybigai.ac.cn/repository/pypi/simple
# 安装tongos python开发包
pip install tongos-general-unit-python==${version_you_want}
安装tongos python开发包
pip install tongos-general-unit-python==${version_you_want}
📖开发示例
我们假设您的工程项目结构如下
.(test_u_demo)
├── component # 您的核心功能代码,包含模型初始化和推理接口
│ └── my_fun.py
├── config # 您的配置文件
│ └── config.yaml
└── u_api # 您的u库申明
│ └── my_u.py
└── requirements.txt # 所依赖安装包
u_api/my_u.py里面申明U库,示例如下:
from tongos_general_unit_python import tongos_api
from component import my_func
uv = tongos_api.UV()
# 初始化
my_func.initialize()
@uv.U(name="testU", provider="[email protected]",description="测试1")
async def test_u(req:map):
return my_func.inference(req)
如上所示,您只需要添加@uv.U 注解,就可以将一个python函数申明为U库。
其中name是这个U在特定provider下面的唯一标记名字。
provider指明U提供方,可以用邮箱等可以联系到您的格式来表明。
description是对U的功能和使用说明。
component/my_fun.py示例如下,可以通过获取sdk里面的环境变量来获取环境配置
mode = 'local'
def initialize():
print("do some initialization work!")
if mode != 'local':
# from tongos_general_unit_python import env
# 通过tongos_general_unit_python.env中的环境变量来加载模型
# loadModel(env.model_path, model_name)
pass
else:
# 加载本地目录上的模型
# loadModel("/opt/data/","myModel.xxx")
pass
def inference(input):
print("do inference")
return {"data":"test123"}
📋线下测试
-
启动UV服务
-
uv_service u_api.my_u:uv # 启动uv服务,此示例采用的是上文中的项目结构,请适配自己的目录结构
-
通过sdk接口进行调用测试
payload = {"a":"bb"}
resp = tongos_api_client.u_call(
payload,
u_name="testU", # 跟声明的UName保持一致
provider="[email protected]", # 跟声明的provider保持一致
u_service="localhost:8002" # 本地测试默认是8002端口
)
print(resp)