SlideShare a Scribd company logo
1 of 65
Download to read offline
Model Deployment
Alexey Grigorev
Principal Data Scientist — OLX Group
Founder — DataTalks.Club
2010
2012
2015
2018
mlbookcamp.com
mlzoomcamp.com
Plan
● Different options to deploy a model (Lambda, Kubernetes, SageMaker)
● Kubernetes 101
● Deploying an XGB model with Flask and Kubernetes
● Deploying a Keras model with TF-Serving and Kubernetes
● Deploying a Keras model with KServe (previously known as Kubeflow
Serving)
Ways to deploy a model
● Flask + AWS Elastic Beanstalk
● Serverless (AWS Lambda)
● Kubernetes (EKS)
● KServe (EKS)
● AWS SageMaker
● ...
(or their alternatives in other cloud providers)
{
"tshirt": 0.9993,
"pants": 0.0005,
"shoes": 0.00004
}
AWS Lambda
Kubernetes
Ingress
Client
Node1
Node2
Pod A
Pod B Pod C
Pod D
Pod E
Pod F
Service
1
Service
2
Deployment 1
Deployment 2
Kubernetes Cluster
Kubeflow / KServe
Ingress
Client
Node1
Node2
Pod A
Pod B Pod C
Pod D
Pod E
Pod F
Service
1
Service
2
Deployment 1
Deployment 2
Kubernetes Cluster
InferenceService
SageMaker
Client
Model
Endpoint
AWS SageMaker
SageMaker
AWS
Lambda vs SageMaker vs Kubernetes
● Lambda
○ Cheap for small load
○ Easy to manage
○ Not always transparent
Lambda vs SageMaker vs Kubernetes
● Lambda
○ Cheap for small load
○ Easy to manage
○ Not always transparent
● SageMaker (serving)
○ Easy to use/manage
○ Needs wrappers
○ Not always transparent
○ Expensive
Lambda vs SageMaker vs Kubernetes
● Lambda
○ Cheap for small load
○ Easy to manage
○ Not always transparent
● SageMaker (serving)
○ Easy to use/manage
○ Needs wrappers
○ Not always transparent
○ Expensive
● Kubernetes
○ Complex (for me)
○ More flexible
○ Cloud-agnostic *
○ Requires support
○ Cheaper for high load
* sort of
Kubernetes 101
Kubernetes glossary
● Pod ~ one instance of your service
● Deployment - a bunch of pods
● HPA - horizontal pod autoscaler
● Node - a server (e.g. EC2 instance)
● Service - an interface to the deployment
● Ingress - an interface to the cluster
Kubernetes in one picture
Node 1
Node 2
Service
Internal
Service
Kubernetes in one picture
Node 1
Node 2
Flask app with
model
Service
Service
Deploying a Flask App
import xgboost as xgb
# load the model from the pickle file
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json()
result = apply_model(data)
return jsonify(result)
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=9696)
FROM python:3.9-slim
RUN pip install flask gunicorn xgboost
COPY "model.py" "model.py"
EXPOSE 9696
ENTRYPOINT ["gunicorn", "--bind", "0.0.0.0:9696", "model:app"]
apiVersion: apps/v1
kind: Deployment
metadata:
name: xgb-model
labels:
app: xgb-model
spec:
replicas: 1
selector:
matchLabels:
app: xgb-model
template:
metadata:
labels:
app: xgb-model
spec:
containers:
- name: xgb-model
image: XXXXXXXXXXXX.dkr.ecr.eu-west-1.amazonaws.com/xgb-model:v100500
ports:
- containerPort: 9696
env:
- name: MODEL_PATH
value: "s3://models-bucket-pickle/xgboost.bin"
apiVersion: v1
kind: Service
metadata:
name: xgb-model
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 9696
protocol: TCP
name: http
selector:
app: xgb-model
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
Deploying a Keras Model
🎁
🎁
H5
saved_model
import tensorflow as tf
from tensorflow import keras
model = keras.models.load_model('keras-model.h5')
tf.saved_model.save(model, 'tf-model')
$ ls -lhR
.:
total 3,1M
4,0K assets
3,1M saved_model.pb
4,0K variables
./assets:
total 0
./variables:
total 83M
83M variables.data-00000-of-00001
15K variables.index
saved_model_cli show --dir tf-model --all
MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:
...
signature_def['serving_default']:
The given SavedModel SignatureDef contains the following input(s):
inputs['input_8'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 299, 299, 3)
name: serving_default_input_8:0
The given SavedModel SignatureDef contains the following output(s):
outputs['dense_7'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 10)
name: StatefulPartitionedCall:0
Method name is: tensorflow/serving/predict
docker run -it --rm 
-p 8500:8500 
-v "$(pwd)/tf-model:/models/tf-model/1" 
-e MODEL_NAME=tf-model 
tensorflow/serving:2.3.0
2021-09-07 21:03:58.579046: I tensorflow_serving/model_servers/server.cc:367]
Running gRPC ModelServer at 0.0.0.0:8500 ...
[evhttp_server.cc : 238] NET_LOG: Entering the event loop ...
2021-09-07 21:03:58.582097: I tensorflow_serving/model_servers/server.cc:387]
Exporting HTTP/REST API at:localhost:8501 ...
pip install grpcio==1.32.0 
tensorflow-serving-api==2.3.0
https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-09-kubernetes/09-image-preparation.ipynb
def np_to_protobuf(data):
return tf.make_tensor_proto(data, shape=data.shape)
pb_request = predict_pb2.PredictRequest()
pb_request.model_spec.name = 'tf-model'
pb_request.model_spec.signature_name = 'serving_default'
pb_request.inputs['input_8'].CopyFrom(np_to_protobuf(X))
pb_result = stub.Predict(pb_request, timeout=20.0)
pred = pb_result.outputs['dense_7'].float_val
Gateway
(Resize and
process image)
Flask
Model
(Make predictions)
TF-Serving
Pants
Raw
predictions
Pre-processed
image
Not so fast
def np_to_protobuf(data):
return tf.make_tensor_proto(data, shape=data.shape)
pb_request = predict_pb2.PredictRequest()
pb_request.model_spec.name = 'tf-model'
pb_request.model_spec.signature_name = 'serving_default'
pb_request.inputs['input_8'].CopyFrom(np_to_protobuf(X))
pb_result = stub.Predict(pb_request, timeout=20.0)
pred = pb_result.outputs['dense_7'].float_val
2,0 GB dependency?
Get only the things you need!
https://github.com/alexeygrigorev/tensorflow-protobuf
from tensorflow.keras.applications.xception import preprocess_input
https://github.com/alexeygrigorev/keras-image-helper
from keras_image_helper import create_preprocessor
preprocessor = create_preprocessor('xception', target_size=(299, 299))
url = 'http://bit.ly/mlbookcamp-pants'
X = preprocessor.from_url(url)
Next steps...
● Bake in the model into the TF-serving image
● Wrap the gRPC calls in a Flask app for the Gateway
● Write a Dockerfile for the Gateway
● Publish the images to ERC
Okay!
We’re ready to deploy to K8S
apiVersion: apps/v1
kind: Deployment
metadata:
name: tf-serving-model
labels:
app: tf-serving-model
spec:
replicas: 1
selector:
matchLabels:
app: tf-serving-model
template:
metadata:
labels:
app: tf-serving-model
spec:
containers:
- name: tf-serving-model
image: X.dkr.ecr.eu-west-1.amazonaws.com/model-serving:tf-serving-model
ports:
- containerPort: 8500
apiVersion: v1
kind: Service
metadata:
name: tf-serving-model
labels:
app: tf-serving-model
spec:
ports:
- port: 8500
targetPort: 8500
protocol: TCP
name: http
selector:
app: tf-serving-model
kubectl apply -f tf-serving-deployment.yaml
kubectl apply -f tf-serving-service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: serving-gateway
labels:
app: serving-gateway
spec:
replicas: 1
selector:
matchLabels:
app: serving-gateway
template:
metadata:
labels:
app: serving-gateway
spec:
containers:
- name: serving-gateway
image: X.dkr.ecr.eu-west-1.amazonaws.com/model-serving:serving-gateway
ports:
- containerPort: 9696
env:
- name: TF_SERVING_HOST
value: "tf-serving-model.default.svc.cluster.local:8500"
apiVersion: v1
kind: Service
metadata:
name: serving-gateway
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 9696
protocol: TCP
name: http
selector:
app: serving-gateway
kubectl apply -f gateway-deployment.yaml
kubectl apply -f gateway-service.yaml
gRPC load balancing
https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/
Kubeflow / KServe
Kubeflow / KServe
Ingress
Client
Node1
Node2
Pod A
Pod B Pod C
Pod D
Pod E
Pod F
Service
1
Service
2
Deployment 1
Deployment 2
Kubernetes Cluster
InferenceService
Installing
https://mlbookcamp.com/article/kfserving-eks-install
git clone git@github.com:alexeygrigorev/kubeflow-deep-learning.git
cd kubeflow-deep-learning/install
./install.sh
Next...
● Upload the saved_model to S3
● Allow KServe to access S3
https://mlbookcamp.com/article/kfserving-eks-install
apiVersion: "serving.kubeflow.org/v1beta1"
kind: "InferenceService"
metadata:
name: "tf-model"
spec:
default:
predictor:
serviceAccountName: sa
tensorflow:
storageUri: "s3://models-bucket-tf/tf-model"
kubectl apply -f tf-inference-service.yaml
$ kubectl get inferenceservice
NAME URL
flowers-sample http://tf-model.default.kubeflow.mlbookcamp.com/v1/models/tf-model ...
url = f'https://{model_url}:predict'
data = {
"instances": X.tolist()
}
resp = requests.post(url, json=data)
results = resp.json()
Pre-processing
(resize/process
images)
Post-processing
(transform
predictions)
Transformer
Model
(Make predictions)
KServe
Pants
Raw
predictions
Pre-processed
image
apiVersion: "serving.kubeflow.org/v1alpha2"
kind: "InferenceService"
metadata:
name: "tf-model"
spec:
default:
predictor:
serviceAccountName: sa
tensorflow:
storageUri: "s3://models-bucket-tf/tf-model"
transformer:
custom:
container:
image: "agrigorev/kfserving-keras-transformer:0.0.1"
name: user-container
env:
- name: MODEL_INPUT_SIZE
value: "299,299"
- name: KERAS_MODEL_NAME
value: "xception"
- name: MODEL_LABELS
value: "dress,hat,longsleeve,outwear,pants,shirt,shoes,shorts,skirt,t-shirt"
https://github.com/alexeygrigorev/kfserving-keras-transformer
url = f'https://{model_url}:predict'
data = {
"instances": [
{"url": "http://bit.ly/mlbookcamp-pants"},
]
}
resp = requests.post(url, json=data)
results = resp.json()
What’s the catch?
● Kubeflow runs on Kubernetes
● Not easy to run the whole thing locally
● Not easy to debug
● Istio
Summary
● AWS SageMaker vs AWS Lambda vs Kubernetes vs Kubeflow
Summary
● AWS SageMaker vs AWS Lambda vs Kubernetes vs Kubeflow
● Deploying models with Kubernetes: deployment + service
Summary
● AWS SageMaker vs AWS Lambda vs Kubernetes vs Kubeflow
● Deploying models with Kubernetes: deployment + service
● Deploying Keras models: TF-Serving + Gateway (over gRPC)
Summary
● AWS SageMaker vs AWS Lambda vs Kubernetes vs Kubeflow
● Deploying models with Kubernetes: deployment + service
● Deploying Keras models: TF-Serving + Gateway (over gRPC)
● KFServing: transformers + model
Summary
● AWS SageMaker vs AWS Lambda vs Kubernetes vs Kubeflow
● Deploying models with Kubernetes: deployment + service
● Deploying Keras models: TF-Serving + Gateway (over gRPC)
● KFServing: transformers + model
● No size fits all
@Al_Grigor
agrigorev
DataTalks.Club

More Related Content

Similar to Deploying DL models with Kubernetes and Kubeflow

Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
QAware GmbH
 

Similar to Deploying DL models with Kubernetes and Kubeflow (20)

IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
 
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and IstioAdvanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
 
Kubernetes walkthrough
Kubernetes walkthroughKubernetes walkthrough
Kubernetes walkthrough
 
Serverless Framework Workshop - Tyler Hendrickson, Chicago/burbs
 Serverless Framework Workshop - Tyler Hendrickson, Chicago/burbs Serverless Framework Workshop - Tyler Hendrickson, Chicago/burbs
Serverless Framework Workshop - Tyler Hendrickson, Chicago/burbs
 
Serving models using KFServing
Serving models using KFServingServing models using KFServing
Serving models using KFServing
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 
Kubernetes workshop -_the_basics
Kubernetes workshop -_the_basicsKubernetes workshop -_the_basics
Kubernetes workshop -_the_basics
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoT
 
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
 
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
 
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
 
Designing a production grade realtime ml inference endpoint
Designing a production grade realtime ml inference endpointDesigning a production grade realtime ml inference endpoint
Designing a production grade realtime ml inference endpoint
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 Cloud-native applications with Java and Kubernetes - Yehor Volkov Cloud-native applications with Java and Kubernetes - Yehor Volkov
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 
muCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsmuCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless Applications
 
Deep Dive on Serverless Stack
Deep Dive on Serverless StackDeep Dive on Serverless Stack
Deep Dive on Serverless Stack
 
Simplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring CloudSimplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring Cloud
 
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
 
Kubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidenceKubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidence
 

More from DataPhoenix

More from DataPhoenix (6)

Exploring Infrastructure Management for GenAI Beyond Kubernetes
Exploring Infrastructure Management for GenAI Beyond KubernetesExploring Infrastructure Management for GenAI Beyond Kubernetes
Exploring Infrastructure Management for GenAI Beyond Kubernetes
 
ODS.ai Odessa Meetup #4: NLP: изменения за последние 10 лет
ODS.ai Odessa Meetup #4: NLP: изменения за последние 10 летODS.ai Odessa Meetup #4: NLP: изменения за последние 10 лет
ODS.ai Odessa Meetup #4: NLP: изменения за последние 10 лет
 
ODS.ai Odessa Meetup #4: Чему учит нас участите в соревновательном ML
ODS.ai Odessa Meetup #4: Чему учит нас участите в соревновательном MLODS.ai Odessa Meetup #4: Чему учит нас участите в соревновательном ML
ODS.ai Odessa Meetup #4: Чему учит нас участите в соревновательном ML
 
The A-Z of Data: Introduction to MLOps
The A-Z of Data: Introduction to MLOpsThe A-Z of Data: Introduction to MLOps
The A-Z of Data: Introduction to MLOps
 
ODS.ai Odessa Meetup #3: Object Detection in the Wild
ODS.ai Odessa Meetup #3: Object Detection in the WildODS.ai Odessa Meetup #3: Object Detection in the Wild
ODS.ai Odessa Meetup #3: Object Detection in the Wild
 
ODS.ai Odessa Meetup #3: Enterprise data management - весело или нет?!
ODS.ai Odessa Meetup #3: Enterprise data management - весело или нет?!ODS.ai Odessa Meetup #3: Enterprise data management - весело или нет?!
ODS.ai Odessa Meetup #3: Enterprise data management - весело или нет?!
 

Recently uploaded

CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
Wonjun Hwang
 

Recently uploaded (20)

WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistan
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 

Deploying DL models with Kubernetes and Kubeflow