Slide 1

Slide 1 text

Intro to High performance, easy to learn, fast to code, ready for production Tips and Tricks for ML

Slide 2

Slide 2 text

Who am I? Sebastián Ramírez github.com/tiangolo linkedin.com/in/tiangolo twitter.com/tiangolo tiangolo.com Berlin, Germany I created:

Slide 3

Slide 3 text

● Python Web API framework ● 50K+ GitHub stars (about 1K+ per month) ● Used by Microsoft, Uber, Netflix, etc. ● Performance in the top rank for Python ● 3rd most used (Python Developers Survey) ● Fastest growth (Python Developers Survey) ● 3rd most loved (StackOverflow Developer Survey) @tiangolo

Slide 4

Slide 4 text

● OpenAPI ● JSON Schema ● OAuth2 🔄 Automatic data conversion ✨ ✅ Automatic data validation ✨ FastAPI is based on standards 📝 Automatic API docs ✨ ● Standard type annotations @tiangolo

Slide 5

Slide 5 text

Based on standards - for free @tiangolo

Slide 6

Slide 6 text

Based on Python type hints ● Autocompletion everywhere ● Type checks and type errors @tiangolo

Slide 7

Slide 7 text

Types provide autocompletion @tiangolo

Slide 8

Slide 8 text

Easy and short @tiangolo

Slide 9

Slide 9 text

Less API code @tiangolo

Slide 10

Slide 10 text

Basic FastAPI app @tiangolo https://somedomain.com/items/5?q=some+query

Slide 11

Slide 11 text

Basic FastAPI app - docs @tiangolo https://somedomain.com/docs

Slide 12

Slide 12 text

Automatic docs @tiangolo

Slide 13

Slide 13 text

Basic FastAPI app with body @tiangolo

Slide 14

Slide 14 text

Basic FastAPI app with body - docs @tiangolo

Slide 15

Slide 15 text

Basic FastAPI app with body - docs @tiangolo

Slide 16

Slide 16 text

Basic FastAPI app with body @tiangolo

Slide 17

Slide 17 text

Basic FastAPI app with body and query @tiangolo

Slide 18

Slide 18 text

Basic FastAPI app with body and query - docs @tiangolo https://somedomain.com/food/?delivery=true

Slide 19

Slide 19 text

Basic FastAPI app with body and query @tiangolo

Slide 20

Slide 20 text

JSON array of objects in body @tiangolo

Slide 21

Slide 21 text

JSON array of objects in body - docs @tiangolo

Slide 22

Slide 22 text

JSON array of objects in body @tiangolo

Slide 23

Slide 23 text

JSON array of objects in body - invalid data @tiangolo

Slide 24

Slide 24 text

JSON array of objects in body - validation @tiangolo

Slide 25

Slide 25 text

Data validation @tiangolo

Slide 26

Slide 26 text

FastAPI auto-completion @tiangolo

Slide 27

Slide 27 text

Type checks @tiangolo

Slide 28

Slide 28 text

All based on standard Python types @tiangolo

Slide 29

Slide 29 text

FastAPI - Performance @tiangolo

Slide 30

Slide 30 text

FastAPI - Performance @tiangolo

Slide 31

Slide 31 text

FastAPI - Other features @tiangolo ● Dependency Injection ● Security - OAuth2 ● WebSockets ● Files ● Background Tasks ● Easy GraphQL integration ● Templates ● More...

Slide 32

Slide 32 text

Simple ML model and usage 🤖 @tiangolo

Slide 33

Slide 33 text

Load ML models - slow disk reads 🤖 @tiangolo ✨ Read from disk as few times as possible ✨

Slide 34

Slide 34 text

Load ML models - slow disk reads 🤖 @tiangolo

Slide 35

Slide 35 text

Simple ML model - only load 🤖 @tiangolo

Slide 36

Slide 36 text

ML model in FastAPI - simple - good ✅ @tiangolo

Slide 37

Slide 37 text

ML model in FastAPI - bad 🚨 @tiangolo

Slide 38

Slide 38 text

ML model in FastAPI - very bad 🚨 @tiangolo

Slide 39

Slide 39 text

ML model in FastAPI - very bad 🚨 @tiangolo

Slide 40

Slide 40 text

Load model and cache 😎 @tiangolo

Slide 41

Slide 41 text

FastAPI with cached model ⚡ @tiangolo

Slide 42

Slide 42 text

FastAPI with cached model ⚡ @tiangolo

Slide 43

Slide 43 text

FastAPI - preload cached model in healthcheck ⚡ @tiangolo

Slide 44

Slide 44 text

FastAPI - preload ⚡ @tiangolo

Slide 45

Slide 45 text

FastAPI - async and models - bad 🚨 @tiangolo

Slide 46

Slide 46 text

FastAPI - async and models - bad 🚨 @tiangolo

Slide 47

Slide 47 text

Blocking code in async blocks the event loop 😱 @tiangolo ✨ Don’t put blocking code directly in async functions ✨

Slide 48

Slide 48 text

FastAPI - non async and models - simple - good ✅ @tiangolo

Slide 49

Slide 49 text

FastAPI - non async and models - simple - good ✅ @tiangolo

Slide 50

Slide 50 text

FastAPI - async and models - good ✅ @tiangolo

Slide 51

Slide 51 text

FastAPI - async and models - good ✅ @tiangolo

Slide 52

Slide 52 text

FastAPI - model in dependency ✨ @tiangolo

Slide 53

Slide 53 text

FastAPI - model in dependency - testing ✅ @tiangolo

Slide 54

Slide 54 text

FastAPI - model in dependency - testing ✅ @tiangolo

Slide 55

Slide 55 text

FastAPI - squeeze performance 🚤 @tiangolo

Slide 56

Slide 56 text

FastAPI - squeeze performance 🚤 @tiangolo

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Thank you! Sebastián Ramírez tiangolo.com fastapi.tiangolo.com github.com/tiangolo linkedin.com/in/tiangolo twitter.com/tiangolo