mirror of
https://github.com/tencentmusic/cube-studio.git
synced 2025-02-11 14:34:22 +08:00
添加chatbot/cartoonize/openpose/face/yolo/wenet等推理服务示例
This commit is contained in:
parent
25c9ab5811
commit
2ec63b8ebb
54
myapp/cli.py
54
myapp/cli.py
@ -53,7 +53,7 @@ def init():
|
||||
project_user.user_id=1
|
||||
db.session.add(project_user)
|
||||
db.session.commit()
|
||||
|
||||
print('add project %s'%name)
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
|
||||
@ -96,6 +96,7 @@ def init():
|
||||
images.repository_id=repository_id
|
||||
db.session.add(images)
|
||||
db.session.commit()
|
||||
print('add images %s' % image_name)
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
|
||||
@ -121,6 +122,7 @@ def init():
|
||||
job_template.args=json.dumps(job_template_args,indent=4,ensure_ascii=False) if job_template_args else '{}'
|
||||
db.session.add(job_template)
|
||||
db.session.commit()
|
||||
print('add job_template %s' % job_template_name.replace('_','-'))
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
else:
|
||||
@ -138,6 +140,7 @@ def init():
|
||||
job_template.env = job_template_env
|
||||
job_template.args = json.dumps(job_template_args, indent=4,ensure_ascii=False) if job_template_args else '{}'
|
||||
db.session.commit()
|
||||
print('update job_template %s' % job_template_name.replace('_', '-'))
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
|
||||
@ -159,6 +162,7 @@ def init():
|
||||
repository.changed_by_fk=1
|
||||
db.session.add(repository)
|
||||
db.session.commit()
|
||||
print('add repository hubsecret')
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
|
||||
@ -174,7 +178,7 @@ def init():
|
||||
|
||||
|
||||
# 添加demo 服务
|
||||
def create_service(project_name,service_name,service_describe,image_name,command,env,resource_mem='2G',resource_cpu='2',ports='80'):
|
||||
def create_service(project_name,service_name,service_describe,image_name,command,env,resource_mem='2G',resource_cpu='2',ports='80',volume_mount='kubeflow-user-workspace(pvc):/mnt'):
|
||||
service = db.session.query(Service).filter_by(name=service_name).first()
|
||||
project = db.session.query(Project).filter_by(name=project_name).filter_by(type='org').first()
|
||||
if service is None and project:
|
||||
@ -189,8 +193,10 @@ def init():
|
||||
service.command = command
|
||||
service.env='\n'.join([x.strip() for x in env.split('\n') if x.split()])
|
||||
service.ports = ports
|
||||
service.volume_mount=volume_mount
|
||||
db.session.add(service)
|
||||
db.session.commit()
|
||||
print('add service %s'%service_name)
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
|
||||
@ -205,6 +211,46 @@ def init():
|
||||
|
||||
|
||||
|
||||
# 添加 demo 推理 服务
|
||||
def create_inference(project_name,service_name,service_describe,image_name,command,env,model_name,model_version='',model_path='',service_type='serving',resource_memory='2G',resource_cpu='2',resource_gpu='0',ports='80',volume_mount='kubeflow-user-workspace(pvc):/mnt'):
|
||||
service = db.session.query(InferenceService).filter_by(name=service_name).first()
|
||||
project = db.session.query(Project).filter_by(name=project_name).filter_by(type='org').first()
|
||||
if service is None and project:
|
||||
try:
|
||||
service = InferenceService()
|
||||
service.name = service_name.replace('_','-')
|
||||
service.label=service_describe
|
||||
service.service_type=service_type,
|
||||
service.model_name=model_name,
|
||||
service.model_version=model_version if model_version else datetime.now().strftime('v%Y.%m.%d.1'),
|
||||
service.model_path = model_path,
|
||||
service.created_by_fk=1
|
||||
service.changed_by_fk=1
|
||||
service.project_id=project.id
|
||||
service.images=image_name
|
||||
service.resource_memory=resource_memory,
|
||||
service.resource_cpu=resource_cpu,
|
||||
service.resource_gpu = resource_gpu,
|
||||
service.command = command
|
||||
service.env='\n'.join([x.strip() for x in env.split('\n') if x.split()])
|
||||
service.ports = ports
|
||||
service.volume_mount=volume_mount
|
||||
service.expand = "{}"
|
||||
db.session.add(service)
|
||||
db.session.commit()
|
||||
print('add inference %s' % service_name)
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
|
||||
try:
|
||||
|
||||
inferences = json.load(open('myapp/init-inference.json',mode='r'))
|
||||
for inference_name in inferences:
|
||||
inference = inferences[inference_name]
|
||||
create_inference(**inference)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
# 创建demo pipeline
|
||||
def create_pipeline(tasks,pipeline):
|
||||
@ -232,6 +278,7 @@ def init():
|
||||
pipeline_model.parameter = json.dumps(pipeline.get('parameter',{}))
|
||||
db.session.add(pipeline_model)
|
||||
db.session.commit()
|
||||
print('add pipeline %s' % pipeline['name'])
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
else:
|
||||
@ -241,6 +288,7 @@ def init():
|
||||
pipeline_model.changed_by_fk = 1
|
||||
pipeline_model.project_id = org_project.id
|
||||
pipeline_model.parameter = json.dumps(pipeline.get('parameter', {}))
|
||||
print('update pipeline %s' % pipeline['name'])
|
||||
db.session.commit()
|
||||
|
||||
|
||||
@ -264,6 +312,7 @@ def init():
|
||||
task_model.job_template_id = job_template.id
|
||||
db.session.add(task_model)
|
||||
db.session.commit()
|
||||
print('add task %s' % task['name'])
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
else:
|
||||
@ -280,6 +329,7 @@ def init():
|
||||
task_model.changed_by_fk = 1
|
||||
task_model.pipeline_id = pipeline_model.id
|
||||
task_model.job_template_id = job_template.id
|
||||
print('update task %s' % task['name'])
|
||||
db.session.commit()
|
||||
|
||||
# 修正pipeline
|
||||
|
77
myapp/init-inference.json
Normal file
77
myapp/init-inference.json
Normal file
@ -0,0 +1,77 @@
|
||||
{
|
||||
"wenet": {
|
||||
"project_name":"public",
|
||||
"service_name":"serving-wenet-20220701",
|
||||
"service_describe":"语音识别",
|
||||
"model_name": "wenet",
|
||||
"model_version": "v2022.07.01",
|
||||
"image_name":"ccr.ccs.tencentyun.com/cube-studio/wenet-mini:latest",
|
||||
"command":"",
|
||||
"resource_memory": "5G",
|
||||
"env":"",
|
||||
"ports":"80,10086"
|
||||
},
|
||||
"yolo": {
|
||||
"project_name":"public",
|
||||
"service_name":"serving-yolo-darknet-20220701",
|
||||
"service_describe":"多目标识别",
|
||||
"model_name": "yolo-darknet",
|
||||
"model_version": "v2022.07.01",
|
||||
"image_name":"ccr.ccs.tencentyun.com/cube-studio/target-detection",
|
||||
"command":"",
|
||||
"resource_memory": "5G",
|
||||
"env":"",
|
||||
"ports":"8080"
|
||||
},
|
||||
"face": {
|
||||
"project_name":"public",
|
||||
"service_name":"serving-face-20220701",
|
||||
"service_describe":"人脸检测",
|
||||
"model_name": "face",
|
||||
"model_version": "v2022.07.01",
|
||||
"image_name":"ccr.ccs.tencentyun.com/cube-studio/face:20220701",
|
||||
"command":"",
|
||||
"resource_memory": "5G",
|
||||
"env":"",
|
||||
"ports":"8080"
|
||||
},
|
||||
"openpose": {
|
||||
"project_name":"public",
|
||||
"service_name":"serving-openpose-20220701",
|
||||
"service_describe":"人体检测",
|
||||
"model_name": "openpose",
|
||||
"model_version": "v2022.07.01",
|
||||
"image_name":"ccr.ccs.tencentyun.com/cube-studio/openpose:gpu",
|
||||
"command":"gunicorn --bind 0.0.0.0:8080 --workers 3 --timeout 300 server:app",
|
||||
"resource_memory": "5G",
|
||||
"resource_gpu": "1",
|
||||
"env":"MODEL_POSE=COCO\nNET_RESOLUTION=64x64\nRENDER_POSE=-1\nPERIOD=100\nGPU=true",
|
||||
"ports":"8080"
|
||||
},
|
||||
"cartoonize": {
|
||||
"project_name":"public",
|
||||
"service_name":"serving-cartoonize-20220701",
|
||||
"service_describe":"卡通化",
|
||||
"model_name": "cartoonize",
|
||||
"model_version": "v2022.07.01",
|
||||
"image_name":"ccr.ccs.tencentyun.com/cube-studio/cartoonize:latest",
|
||||
"command":"",
|
||||
"resource_memory": "5G",
|
||||
"env":"",
|
||||
"ports":"8080"
|
||||
},
|
||||
"chatbot": {
|
||||
"project_name":"public",
|
||||
"service_name":"serving-chatbot-20220701",
|
||||
"service_describe":"聊天机器人",
|
||||
"model_name": "chatbot",
|
||||
"model_version": "v2022.07.01",
|
||||
"image_name":"ccr.ccs.tencentyun.com/cube-studio/chatbot:base",
|
||||
"command":"python /app/app.py",
|
||||
"resource_memory": "5G",
|
||||
"env":"",
|
||||
"ports":"8080"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,9 @@
|
||||
"image_name":"ccr.ccs.tencentyun.com/cube-studio/neo4j:4.4",
|
||||
"command":"",
|
||||
"env":"NEO4J_AUTH=neo4j/admin",
|
||||
"ports":"7474,7687"
|
||||
"ports":"7474,7687",
|
||||
"volume_mount":"kubeflow-user-workspace(pvc):/mnt,/data/k8s/kubeflow/pipeline/workspace/admin/neo4j(hostpath):/var/lib/neo4j/data"
|
||||
|
||||
},
|
||||
"jaeger": {
|
||||
"project_name":"public",
|
||||
@ -43,5 +45,15 @@
|
||||
"command":"",
|
||||
"env":"",
|
||||
"ports":"5775,16686"
|
||||
},
|
||||
"label-studio": {
|
||||
"project_name":"public",
|
||||
"service_name":"label-studio",
|
||||
"service_describe":"标注平台",
|
||||
"image_name":"heartexlabs/label-studio:latest",
|
||||
"command":"",
|
||||
"env":"LOCAL_FILES_SERVING_ENABLED=true",
|
||||
"ports":"8080",
|
||||
"volume_mount":"kubeflow-user-workspace(pvc):/mnt,/data/k8s/kubeflow/pipeline/workspace/admin/label-studio(hostpath):/label-studio/data"
|
||||
}
|
||||
}
|
@ -182,7 +182,7 @@ class InferenceService(Model,AuditMixinNullable,MyappModelBase,service_common):
|
||||
resource_gpu= Column(String(100), default='0')
|
||||
deploy_time = Column(String(100), nullable=True,default=datetime.datetime.now)
|
||||
host = Column(String(200), default='') # 挂载
|
||||
expand = Column(Text(65536), default='')
|
||||
expand = Column(Text(65536), default='{}')
|
||||
canary = Column(String(400), default='') # 分流
|
||||
shadow = Column(String(400), default='') # 镜像
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user