OpenShift for AI and MLWilliam Benton • @willb • [email protected]
@willb
OpenShift is enterprise Kubernetes with a great developer experience.
@willb
resource managementfor apps and compute
OpenShift is enterprise Kubernetes with a great developer experience.
@willb
efficient isolation, secure by default
resource managementfor apps and compute
OpenShift is enterprise Kubernetes with a great developer experience.
@willb
efficient isolation, secure by default
resource managementfor apps and compute
workflows to accelerate discovery
OpenShift is enterprise Kubernetes with a great developer experience.
What do machine learning workflows look like?
@willb
@willb
f( ) = 0.67 0.57 0.84 0.08 0.42 0.01
@willb
@willb
@willb
@willb
@willb
@willb
@willb
@willb
data collection and cleaning
codifying problem and metrics
@willb
feature engineering
model training and tuning
data collection and cleaning
@willb
feature engineering
model training and tuning
data collection and cleaning
@willb
feature engineering
model training and tuning
model validation
@willb
feature engineering
model training and tuning
model validation
@willb
model validation
model deployment
monitoring and validation
@willb
model validation
model deployment
monitoring and validation
@willb
feature engineering
model training and tuning
model validation
model deployment
monitoring and validation
data collection and cleaning
codifying problem and metrics
@willb
feature engineering
model training and tuning
model validation
model deployment
monitoring and validation
data collection and cleaning
codifying problem and metrics
defining types and interfaces prototyping
@willb
feature engineering
model training and tuning
model validation
model deployment
monitoring and validation
data collection and cleaning
codifying problem and metrics
unit, behavioral, and integration testing
formal verification
@willb
feature engineering
model training and tuning
model validation
model deployment
monitoring and validation
data collection and cleaning
codifying problem and metrics
deployment monitoring
@willb
@willb
Why is OpenShift great for machine learning workflows?
@willb
%
@willb
% pip install numpy
@willb
pip install numpy
/usr/bin/pip executable
arguments
virtual memory
file handles
/root filesystem
environment LANG=en_US USER=willb ...
process table
network routes
@willb
pip install numpy
/usr/bin/pip executable
arguments
virtual memory
file handles
/root filesystem
environment LANG=en_US USER=willb ...
process table
network routes
@willb
pip install numpy
/usr/bin/pip executable
arguments
virtual memory
file handles
/root filesystem
environment LANG=en_US USER=willb ...
process table
network routes
@willb
pip install numpy
/usr/bin/pip executable
arguments
virtual memory
file handles
/root filesystem
environment LANG=en_US USER=willb ...
process table
network routes
@willb
pip install numpy
/usr/bin/pip executable
arguments
virtual memory
file handles
/root filesystem
environment LANG=en_US USER=willb ...
process table
network routes
@willb
pip install numpy
/usr/bin/pip executable
arguments
virtual memory
file handles
/var/lib/envs/mainroot filesystem
environment LANG=en_US USER=willb ...
process table
network routes
@willb
pip install numpy
/usr/bin/pip executable
arguments
virtual memory
file handles
/var/lib/envs/mainroot filesystem
environment LANG=en_US USER=willb ...
process table
network routes
SPEED LIMIT
55
@willb
efficient isolation, secure by default
OpenShift is enterprise Kubernetes with a great developer experience.
@willb
Immutable images
base image
configuration and installation recipes
user application code
979229b9
33721112 e8cae4f6 2bb6ab16 a8296f7e
a6afd91e 6b8cad3e
@willb
Stateless microservices
@willb
Stateless microservices
@willb
Stateless microservices
@willb
Stateless microservices
@willb
Stateless microservices
@willb
Stateless microservices
@willb
Stateless microservices
@willb
Stateless microservices
@willb
Declarative app configuration
@willb
Integration and deployment
OK!
@willb
Integration and deployment
OK!base image
configuration and installation recipes
application code
@willb
Integration and deployment
OK!base image
configuration and installation recipes
application code
@willb
Integration and deployment
base image
configuration and installation recipes
application code
What OpenShift offers working data scientists
@willb
workflows to accelerate discovery
OpenShift is enterprise Kubernetes with a great developer experience.
@willb
@willb
@willb
0 0 0 1 1 0 1 0 1 0
0 0 1 0 0 0 1 1 0 0
1 0 1 1 0 1 0 0 0 0
0 0 0 0 0 0 1 1 0 1
0 1 0 0 1 0 0 1 0 0
1 0 0 0 0 1 0 1 1 0
0 0 1 0 1 0 1 0 0 0
0 1 0 0 0 1 0 0 1 1
0 0 0 0 1 0 0 1 0 1
1 1 0 0 0 0 0 0 0 1
0.13 0.13
0.06 0.07
0.07 0.06
0.02 0.08
0.17 0.11
0.11 0.09
0.04 0.18
0.13 0.04
0.13 0.21
0.14 0.03
*
@willb
Self-service environments
more storagesensitive data
more CPUsbetter GPUs
@willb
@willb
@willb
OK!
OK!
@willb
No friction: mybinder.org
@willb
More flexible: source-to-image
%
@willb
More flexible: source-to-image
%
https://github.com/openshift/source-to-image
builder image application image
@willb
@willb
@willb
@willb
mA
@willb
mA
@willb
mA
distribution of input data?
distribution of predictions?
distribution of acyclic paths taken through scoring code?
(joint)
@willb
Where from here?
@willb
Intelligent applications continuously collect and learn from data to support essential functionality
@willb
federate
trainmodels
events
databases
file, object storage
management
web and mobile
reporting
developer UItransform
transform
transform
archive
@willb
federate
trainmodels
events
databases
file, object storage
management
web and mobile
reporting
developer UItransform
transform
transform
archive
@willbdata scientists
application developersdata engineers
federate
trainmodels
events
databases
file, object storage
management
web and mobile
reporting
developer UItransform
transform
transform
archive
@willbdata scientists
application developersdata engineers
federate
trainmodels
events
databases
file, object storage
management
web and mobile
reporting
developer UItransform
transform
transform
archive
machine learning engineers
@willb
data engineers
federate
events
databases
file, object storage
transform
transform
transform
archive
@willbdata scientists
federate
trainmodels
developer UItransform
transform
transform
@willb
application developers
federate
trainmodels management
web and mobile
reporting
developer UItransform
transform
transform
archive
@willb
resource managementfor apps and compute
OpenShift is enterprise Kubernetes with a great developer experience.
@willb
Multitenant compute clustersCluster scheduler
Shared FS / object store
Compute node
Compute node
Compute node
Compute node
Compute node
Compute node
Resource manager
app 1 app 2
app 4app 3 Databases
@willb
Multitenant compute clustersCluster scheduler
Shared FS / object store
Compute node
Compute node
Compute node
Compute node
Compute node
Compute node
Resource manager
app 1 app 2
app 4app 3 Databases
@willb
One cluster per applicationOpenShift
Shared FS / object storeapp 1 app 2
app 5app 4
app 3
app 6 Databases
@willb
One cluster per applicationOpenShift
Shared FS / object storeapp 1 app 2
app 5app 4
app 3
app 6
app 2
app 4 Databases
@willb
radanalytics.io
@willb
opendatahub.io
@willb
Kubeflow
@willb
Other technologies
x · y = x1 · y1 + · · ·+ xn · yn<latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="hP+6LrUf2d3tZaldqaQQvEKMXyw=">AAAB2XicbZDNSgMxFIXv1L86Vq1rN8EiuCozbnQpuHFZwbZCO5RM5k4bmskMyR2hDH0BF25EfC93vo3pz0JbDwQ+zknIvSculLQUBN9ebWd3b/+gfugfNfzjk9Nmo2fz0gjsilzl5jnmFpXU2CVJCp8LgzyLFfbj6f0i77+gsTLXTzQrMMr4WMtUCk7O6oyaraAdLMW2IVxDC9YaNb+GSS7KDDUJxa0dhEFBUcUNSaFw7g9LiwUXUz7GgUPNM7RRtRxzzi6dk7A0N+5oYkv394uKZ9bOstjdzDhN7Ga2MP/LBiWlt1EldVESarH6KC0Vo5wtdmaJNChIzRxwYaSblYkJN1yQa8Z3HYSbG29D77odBu3wMYA6nMMFXEEIN3AHD9CBLghI4BXevYn35n2suqp569LO4I+8zx84xIo4</latexit><latexit sha1_base64="WK6N/zm0v0B3ucyyuEhKiMuX03U=">AAACInicbZDLSsNAGIX/1FutVatbN4NFEISSuNGNIOjCZQV7gTaEyWTSDp1MwsxEGkJeyI2vIoKLivgsTi+Ktv4w8HHO3M7xE86Utu2JVVpb39jcKm9Xdqq7e/u1g2pbxakktEViHsuujxXlTNCWZprTbiIpjnxOO/7oZup3HqlULBYPOkuoG+GBYCEjWBvJq932I6yHfpiPC9QnQazRt5AV6AqNPWchZ4bO5qwMjD3xY5hr6nbDng1aBWcBdVhM06u99oOYpBEVmnCsVM+xE+3mWGpGOC0q/VTRBJMRHtCeQYEjqtx8lrZAJ0YJUBhLs4RGM/X3iRxHSmWRb3ZOo6hlbyr+5/VSHV66ORNJqqkg84fClCMdo2l1KGCSEs0zA5hIZv6KyBBLTLQpuGJKcJYjr0L7vOHYDefehjIcwTGcggMXcA130IQWEHiCF5jAu/VsvVkf87pK1qK3Q/gz1ucXa0ilcg==</latexit><latexit sha1_base64="WK6N/zm0v0B3ucyyuEhKiMuX03U=">AAACInicbZDLSsNAGIX/1FutVatbN4NFEISSuNGNIOjCZQV7gTaEyWTSDp1MwsxEGkJeyI2vIoKLivgsTi+Ktv4w8HHO3M7xE86Utu2JVVpb39jcKm9Xdqq7e/u1g2pbxakktEViHsuujxXlTNCWZprTbiIpjnxOO/7oZup3HqlULBYPOkuoG+GBYCEjWBvJq932I6yHfpiPC9QnQazRt5AV6AqNPWchZ4bO5qwMjD3xY5hr6nbDng1aBWcBdVhM06u99oOYpBEVmnCsVM+xE+3mWGpGOC0q/VTRBJMRHtCeQYEjqtx8lrZAJ0YJUBhLs4RGM/X3iRxHSmWRb3ZOo6hlbyr+5/VSHV66ORNJqqkg84fClCMdo2l1KGCSEs0zA5hIZv6KyBBLTLQpuGJKcJYjr0L7vOHYDefehjIcwTGcggMXcA130IQWEHiCF5jAu/VsvVkf87pK1qK3Q/gz1ucXa0ilcg==</latexit><latexit sha1_base64="UewclmH/JoUSEJcJsv9wiT4A0pI=">AAACLXicbZBNS8MwGMdTX+d8m3r0EhyCIIzWi16EoR48TnAvsJaSpukWlqYlSWWl9At58auI4GEiXv0aplsV3Xwg8OP/f54kz9+LGZXKNCfG0vLK6tp6ZaO6ubW9s1vb2+/IKBGYtHHEItHzkCSMctJWVDHSiwVBocdI1xtdF373gQhJI36v0pg4IRpwGlCMlJbc2o0dIjX0gmycQxv7kYLfQprDSzh2rVJONZ3OWGoYu/zH0NfUzYY5LbgIVgl1UFbLrb3YfoSTkHCFGZKyb5mxcjIkFMWM5FU7kSRGeIQGpK+Ro5BIJ5tum8NjrfgwiIQ+XMGp+nsiQ6GUaejpzmIVOe8V4n9eP1HBhZNRHieKcDx7KEgYVBEsooM+FQQrlmpAWFD9V4iHSCCsdMBVHYI1v/IidM4altmw7sx686qMowIOwRE4ARY4B01wC1qgDTB4BM9gAt6MJ+PVeDc+Zq1LRjlzAP6U8fkFkPGnBg==</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit>
@willb
Other technologies
def dot(xs, ys): return sum([x * y for x, y in zip(xs, ys)])
x · y = x1 · y1 + · · ·+ xn · yn<latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="hP+6LrUf2d3tZaldqaQQvEKMXyw=">AAAB2XicbZDNSgMxFIXv1L86Vq1rN8EiuCozbnQpuHFZwbZCO5RM5k4bmskMyR2hDH0BF25EfC93vo3pz0JbDwQ+zknIvSculLQUBN9ebWd3b/+gfugfNfzjk9Nmo2fz0gjsilzl5jnmFpXU2CVJCp8LgzyLFfbj6f0i77+gsTLXTzQrMMr4WMtUCk7O6oyaraAdLMW2IVxDC9YaNb+GSS7KDDUJxa0dhEFBUcUNSaFw7g9LiwUXUz7GgUPNM7RRtRxzzi6dk7A0N+5oYkv394uKZ9bOstjdzDhN7Ga2MP/LBiWlt1EldVESarH6KC0Vo5wtdmaJNChIzRxwYaSblYkJN1yQa8Z3HYSbG29D77odBu3wMYA6nMMFXEEIN3AHD9CBLghI4BXevYn35n2suqp569LO4I+8zx84xIo4</latexit><latexit sha1_base64="WK6N/zm0v0B3ucyyuEhKiMuX03U=">AAACInicbZDLSsNAGIX/1FutVatbN4NFEISSuNGNIOjCZQV7gTaEyWTSDp1MwsxEGkJeyI2vIoKLivgsTi+Ktv4w8HHO3M7xE86Utu2JVVpb39jcKm9Xdqq7e/u1g2pbxakktEViHsuujxXlTNCWZprTbiIpjnxOO/7oZup3HqlULBYPOkuoG+GBYCEjWBvJq932I6yHfpiPC9QnQazRt5AV6AqNPWchZ4bO5qwMjD3xY5hr6nbDng1aBWcBdVhM06u99oOYpBEVmnCsVM+xE+3mWGpGOC0q/VTRBJMRHtCeQYEjqtx8lrZAJ0YJUBhLs4RGM/X3iRxHSmWRb3ZOo6hlbyr+5/VSHV66ORNJqqkg84fClCMdo2l1KGCSEs0zA5hIZv6KyBBLTLQpuGJKcJYjr0L7vOHYDefehjIcwTGcggMXcA130IQWEHiCF5jAu/VsvVkf87pK1qK3Q/gz1ucXa0ilcg==</latexit><latexit sha1_base64="WK6N/zm0v0B3ucyyuEhKiMuX03U=">AAACInicbZDLSsNAGIX/1FutVatbN4NFEISSuNGNIOjCZQV7gTaEyWTSDp1MwsxEGkJeyI2vIoKLivgsTi+Ktv4w8HHO3M7xE86Utu2JVVpb39jcKm9Xdqq7e/u1g2pbxakktEViHsuujxXlTNCWZprTbiIpjnxOO/7oZup3HqlULBYPOkuoG+GBYCEjWBvJq932I6yHfpiPC9QnQazRt5AV6AqNPWchZ4bO5qwMjD3xY5hr6nbDng1aBWcBdVhM06u99oOYpBEVmnCsVM+xE+3mWGpGOC0q/VTRBJMRHtCeQYEjqtx8lrZAJ0YJUBhLs4RGM/X3iRxHSmWRb3ZOo6hlbyr+5/VSHV66ORNJqqkg84fClCMdo2l1KGCSEs0zA5hIZv6KyBBLTLQpuGJKcJYjr0L7vOHYDefehjIcwTGcggMXcA130IQWEHiCF5jAu/VsvVkf87pK1qK3Q/gz1ucXa0ilcg==</latexit><latexit sha1_base64="UewclmH/JoUSEJcJsv9wiT4A0pI=">AAACLXicbZBNS8MwGMdTX+d8m3r0EhyCIIzWi16EoR48TnAvsJaSpukWlqYlSWWl9At58auI4GEiXv0aplsV3Xwg8OP/f54kz9+LGZXKNCfG0vLK6tp6ZaO6ubW9s1vb2+/IKBGYtHHEItHzkCSMctJWVDHSiwVBocdI1xtdF373gQhJI36v0pg4IRpwGlCMlJbc2o0dIjX0gmycQxv7kYLfQprDSzh2rVJONZ3OWGoYu/zH0NfUzYY5LbgIVgl1UFbLrb3YfoSTkHCFGZKyb5mxcjIkFMWM5FU7kSRGeIQGpK+Ro5BIJ5tum8NjrfgwiIQ+XMGp+nsiQ6GUaejpzmIVOe8V4n9eP1HBhZNRHieKcDx7KEgYVBEsooM+FQQrlmpAWFD9V4iHSCCsdMBVHYI1v/IidM4altmw7sx686qMowIOwRE4ARY4B01wC1qgDTB4BM9gAt6MJ+PVeDc+Zq1LRjlzAP6U8fkFkPGnBg==</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit>
@willb
Other technologies
dot([0.1, 0.2, 0.3], [1.0, 2.0, 3.0])
def dot(xs, ys): return sum([x * y for x, y in zip(xs, ys)])
x · y = x1 · y1 + · · ·+ xn · yn<latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="hP+6LrUf2d3tZaldqaQQvEKMXyw=">AAAB2XicbZDNSgMxFIXv1L86Vq1rN8EiuCozbnQpuHFZwbZCO5RM5k4bmskMyR2hDH0BF25EfC93vo3pz0JbDwQ+zknIvSculLQUBN9ebWd3b/+gfugfNfzjk9Nmo2fz0gjsilzl5jnmFpXU2CVJCp8LgzyLFfbj6f0i77+gsTLXTzQrMMr4WMtUCk7O6oyaraAdLMW2IVxDC9YaNb+GSS7KDDUJxa0dhEFBUcUNSaFw7g9LiwUXUz7GgUPNM7RRtRxzzi6dk7A0N+5oYkv394uKZ9bOstjdzDhN7Ga2MP/LBiWlt1EldVESarH6KC0Vo5wtdmaJNChIzRxwYaSblYkJN1yQa8Z3HYSbG29D77odBu3wMYA6nMMFXEEIN3AHD9CBLghI4BXevYn35n2suqp569LO4I+8zx84xIo4</latexit><latexit sha1_base64="WK6N/zm0v0B3ucyyuEhKiMuX03U=">AAACInicbZDLSsNAGIX/1FutVatbN4NFEISSuNGNIOjCZQV7gTaEyWTSDp1MwsxEGkJeyI2vIoKLivgsTi+Ktv4w8HHO3M7xE86Utu2JVVpb39jcKm9Xdqq7e/u1g2pbxakktEViHsuujxXlTNCWZprTbiIpjnxOO/7oZup3HqlULBYPOkuoG+GBYCEjWBvJq932I6yHfpiPC9QnQazRt5AV6AqNPWchZ4bO5qwMjD3xY5hr6nbDng1aBWcBdVhM06u99oOYpBEVmnCsVM+xE+3mWGpGOC0q/VTRBJMRHtCeQYEjqtx8lrZAJ0YJUBhLs4RGM/X3iRxHSmWRb3ZOo6hlbyr+5/VSHV66ORNJqqkg84fClCMdo2l1KGCSEs0zA5hIZv6KyBBLTLQpuGJKcJYjr0L7vOHYDefehjIcwTGcggMXcA130IQWEHiCF5jAu/VsvVkf87pK1qK3Q/gz1ucXa0ilcg==</latexit><latexit sha1_base64="WK6N/zm0v0B3ucyyuEhKiMuX03U=">AAACInicbZDLSsNAGIX/1FutVatbN4NFEISSuNGNIOjCZQV7gTaEyWTSDp1MwsxEGkJeyI2vIoKLivgsTi+Ktv4w8HHO3M7xE86Utu2JVVpb39jcKm9Xdqq7e/u1g2pbxakktEViHsuujxXlTNCWZprTbiIpjnxOO/7oZup3HqlULBYPOkuoG+GBYCEjWBvJq932I6yHfpiPC9QnQazRt5AV6AqNPWchZ4bO5qwMjD3xY5hr6nbDng1aBWcBdVhM06u99oOYpBEVmnCsVM+xE+3mWGpGOC0q/VTRBJMRHtCeQYEjqtx8lrZAJ0YJUBhLs4RGM/X3iRxHSmWRb3ZOo6hlbyr+5/VSHV66ORNJqqkg84fClCMdo2l1KGCSEs0zA5hIZv6KyBBLTLQpuGJKcJYjr0L7vOHYDefehjIcwTGcggMXcA130IQWEHiCF5jAu/VsvVkf87pK1qK3Q/gz1ucXa0ilcg==</latexit><latexit sha1_base64="UewclmH/JoUSEJcJsv9wiT4A0pI=">AAACLXicbZBNS8MwGMdTX+d8m3r0EhyCIIzWi16EoR48TnAvsJaSpukWlqYlSWWl9At58auI4GEiXv0aplsV3Xwg8OP/f54kz9+LGZXKNCfG0vLK6tp6ZaO6ubW9s1vb2+/IKBGYtHHEItHzkCSMctJWVDHSiwVBocdI1xtdF373gQhJI36v0pg4IRpwGlCMlJbc2o0dIjX0gmycQxv7kYLfQprDSzh2rVJONZ3OWGoYu/zH0NfUzYY5LbgIVgl1UFbLrb3YfoSTkHCFGZKyb5mxcjIkFMWM5FU7kSRGeIQGpK+Ro5BIJ5tum8NjrfgwiIQ+XMGp+nsiQ6GUaejpzmIVOe8V4n9eP1HBhZNRHieKcDx7KEgYVBEsooM+FQQrlmpAWFD9V4iHSCCsdMBVHYI1v/IidM4altmw7sx686qMowIOwRE4ARY4B01wC1qgDTB4BM9gAt6MJ+PVeDc+Zq1LRjlzAP6U8fkFkPGnBg==</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit><latexit sha1_base64="tjPm2BYBzcpGEXsTQhjwuSSRkxI=">AAACLXicbZBdS8MwFIbT+TXn19RLb4JDEITRiqA3wlAvvJzgPmAtJU3TLSxNS5LKStkf8sa/IoIXE/HWv2G6VdHNA4GH9z0nyXm9mFGpTHNilJaWV1bXyuuVjc2t7Z3q7l5bRonApIUjFomuhyRhlJOWooqRbiwICj1GOt7wOvc7D0RIGvF7lcbECVGf04BipLTkVm/sEKmBF2SjMbSxHyn4LaRjeAlHrlXIqaaTGUsNI5f/GPqamlk3pwUXwSqgBopqutUX249wEhKuMENS9iwzVk6GhKKYkXHFTiSJER6iPulp5Cgk0smm247hkVZ8GERCH67gVP09kaFQyjT0dGe+ipz3cvE/r5eo4MLJKI8TRTiePRQkDKoI5tFBnwqCFUs1ICyo/ivEAyQQVjrgig7Bml95EdqndcusW3dntcZVEUcZHIBDcAwscA4a4BY0QQtg8AiewQS8GU/Gq/FufMxaS0Yxsw/+lPH5BZIxpwo=</latexit>
@willb
vdppd
vdppd
0.1d 0.2d 1.0d 2.0d
0.3d (unused) 3.0d (unused)
def dot(xs, ys): return sum([x * y for x, y in zip(xs, ys)])
@willb
vdppd
vdppd
0.1d 0.2d 1.0d 2.0d
0.3d (unused) 3.0d (unused)
vdpps0.3f unused0.2f0.1f 3.0f unused2.0f1.0f
def dot(xs, ys): return sum([x * y for x, y in zip(xs, ys)])
@willb
Other technologies
@willb
Other technologies
@willb
Other technologies
@willb
Other technologies
@willb
Other technologies
@willb
Ecosystem demos at Summit
What did we talk about today?
@willb
@willb
@willb
@willb
@willb
https://www.redhat.com
THANKS