上一篇我们已使用notebook已经将训练好的model上传到MinIO储存空间, 本篇我们将使用seldon读取MinIO中的模型档以完成模型的部署
加入secret.yaml
需要加入secret.yaml. 这个YAML档的目的是要设定MinIO的连线方式. 完整的文件说明可以参考这里, 在这个overview网页中说明串接各种储存空间的方式与参数
apiVersion: v1
kind: Secret
metadata:
name: seldon-init-container-secret
type: Opaque
stringData:
RCLONE_CONFIG_S3_TYPE: s3
RCLONE_CONFIG_S3_PROVIDER: minio
RCLONE_CONFIG_S3_ENV_AUTH: "false"
RCLONE_CONFIG_S3_ACCESS_KEY_ID: minioadmin
RCLONE_CONFIG_S3_SECRET_ACCESS_KEY: minioadmin
RCLONE_CONFIG_S3_ENDPOINT: http://172.20.3.42:9000
然後执行yaml档
kubectl apply -f secret.yaml
修改seldon_deploy_xgb_cardio_minio.yaml
只要修改 modelUri
这一行就好了, 将uri指向MinIO的储存空间. 而s3://seldon-models/cardio
这个空间我们已在上一篇将模型上传到这个路径.
kind: SeldonDeployment
metadata:
name: xgboost-minio
spec:
name: cardio-xgb-minio
predictors:
- graph:
children: []
implementation: XGBOOST_SERVER
modelUri: s3://seldon-models/cardio
envSecretRefName: seldon-init-container-secret
name: classifier
name: default
replicas: 1
然後执行yaml档
kubtctl apply -f seldon_deploy_xgb_cardio_minio.yaml
这时可以看到下列pod与service都正常运作中(使用kubtctl get all
).
也可参考Day16的方式查看每一个pod的log以了解seldon为我们做了什麽.
NAME READY STATUS RESTARTS AGE
pod/xgboost-minio-default-0-classifier-54dd7bf68d-77zd7 2/2 Running 0 18h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/xgboost-minio-default ClusterIP 10.98.251.148 <none> 8000/TCP,5001/TCP 18h
service/xgboost-minio-default-classifier ClusterIP 10.106.70.78 <none> 9000/TCP,9500/TCP 18h
我们仍然使用istio所提供的方式来存取endpoint. 关於endpoint如何组成, 请参考Day 15内容:
然後下这个指令:
curl -X POST -H 'Content-Type: application/json' -d '{"data": {"ndarray": [[80.1,2,168,92.3,150,100,1,1,1,0,1]]}}' http://172.23.180.10:31655/seldon/default/xgboost-minio/api/v1.0/predictions
回传结果如下:
{"data":{"names":[],"ndarray":[0.8462969660758972]},"meta":{"requestPath":{"classifier":"seldonio/xgboostserver:1.10.0"}}}
推论的结果显示该员罹患心血管疾病的机率为84.6%
到这里我们完成了使用MinIO储存模型档案, 并且使用sledon读取model档进行部署, 这个方法是不是方便许多呢?(跟使用pvc方式比较). 这的确是一个比较好的整合方式.
https://docs.seldon.io/projects/seldon-core/en/latest/servers/overview.html
>>: Angular 深入浅出三十天:表单与测试 Day16 - Template Driven Forms vs Reactive Forms
Nest 基本概念 Nest 采用模组化设计,将各个不同的功能区块打包成 模组 (Module),而...
串列基本定义 串列可以储存不同的资料型态,如:整数、字串、浮点数,基本格式如下: List = [...
通常有玩过线上游戏的工程师都会有个小小的梦想,是自己能架个私服跟朋友们一起玩乐,前阵子因为疫情的缘故...
在学习Encryption 跟Decryption前~ ASCII电脑编码系统是必须要知道的。 AS...
ok... 我真的要爆肝了 QQ 那前几天安装好路由器,也把网路设定完成了。 我们今天要来安装虚拟机...