openshift for ai and ml -...

Post on 06-Jun-2020

12 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OpenShift for AI and MLWilliam Benton • @willb • willb@redhat.com

@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

top related