Научитесь проектировать, разрабатывать, развёртывать и масштабировать end-to-end ML-системы реального времени с использованием Python, Rust, LLMs и Kubernetes.
Что вас ждёт:
Более 150 часов записанных занятий из предыдущих 4 потоков.
Полные исходные коды проектов: система предсказания цен на криптовалюты и система детекции мошенничества по банковским картам.
50 часов живого кода и практики в каждом потоке.
В этом живом практическом курсе мы создадим систему машинного обучения реального времени с нуля, развернём её и масштабируем. Если в прошлых потоках мы строили предсказатель цен на криптовалюты, то в следующем создадим систему обнаружения мошенничества по транзакциям.
Курс подходит для ML-инженеров, дата-сайентистов и разработчиков, которые уже знакомы с основами ML (хотя бы один обученный моделью) и готовы перейти от теории к практике.
Вы научитесь:
Разрабатывать архитектуры микросервисов с ML в реальном времени.
Применять универсальный подход Feature → Training → Inference Pipeline.
Использовать современные инструменты: Kafka, Feature Store, Experiment Tracker, Model Registry и Kubernetes.
Это не теория и не «пассивное обучение». Это шанс построить работающую систему и прокачать карьеру.
Посмотреть больше
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Ограничение времени просмотра
Вы можете просматривать пробный урок только 10 минут. Получите полный доступ, чтобы смотреть без ограничений.
Bootstrap the uv workspace & Install Kafka in our dev environment
Урок 9.
00:14:37
Install Kafka UI in our dev environment
Урок 10.
00:25:08
Push fake data into Kafka
Урок 11.
00:31:11
Push real trade data to Kafka - Part 1
Урок 12.
00:16:05
Push real trade data to Kafka - Part 2
Урок 13.
00:03:33
.gitignore
Урок 14.
00:04:23
Why Docker?
Урок 15.
00:03:05
Wrap up
Урок 16.
00:03:21
3 questions for YOU
Урок 17.
00:15:38
Working inside the devcontainer - Let's (re)create the dev cluster
Урок 18.
00:10:49
Dockerfile for the trades service
Урок 19.
00:27:00
How to deploy the trades service to the dev Kubernetes cluster
Урок 20.
00:30:36
Debugging, debugging, debugging
Урок 21.
00:31:11
Decouple config parameters from business logic code in the trades service
Урок 22.
00:03:28
Let's recap
Урок 23.
00:16:52
Pre-commits for automatic code linting and formatting
Урок 24.
00:26:10
Candles service boilerplate code
Урок 25.
00:01:38
Open question -> How to do a double port-forwarding?
Урок 26.
00:01:57
Wrap up
Урок 27.
00:04:36
Plan for today
Урок 28.
00:28:16
Redeploy the trades service to the dev cluster
Урок 29.
00:28:13
Add key=product_id to the trade messages - otherwise the candles service cannot process them
Урок 30.
00:14:21
Deploy the candles service to the dev kubernetes cluster
Урок 31.
00:14:22
Horizontaly scaling of the candles service - Kafka consumer groups to the rescue!
Урок 32.
00:30:26
Build and push the docker image for the candles to the production Github Container Registry
Урок 33.
00:27:07
Deploy the candles service to PROD cluster
Урок 34.
00:21:13
Technical-indicators service boilerplate code
Урок 35.
00:01:51
Wrap up
Урок 36.
00:10:59
Quick recap before we start office hours
Урок 37.
00:28:41
How to spin up a PROD Kubernetes cluster
Урок 38.
00:06:26
How to Monitor a Kubernetes cluster
Урок 39.
00:06:49
One of my candles servie replica is waiting for messages. Why?
Урок 40.
00:06:59
A detour around ZenML and Flyte
Урок 41.
00:11:59
What's the project repo structure of this course?
Урок 42.
00:03:35
If you like it, please recommend us :-)
Урок 43.
00:13:48
We want you Marius
Урок 44.
00:14:40
How to inspect docker build logs - How to do port-forwarding of services
Урок 45.
00:19:39
More port forwarding
Урок 46.
00:08:58
How to push data into a Kafka topics?
Урок 47.
00:16:20
Again: 1 kafka topic partition and 2 consumer replicas means one of them will be IDLE
Урок 48.
00:22:14
Problems building the Docker image?
Урок 49.
00:00:24
Wrap up
Урок 50.
00:07:07
Goals for today
Урок 51.
00:10:18
What are technical indicators and how to compute them in real time
Урок 52.
00:24:11
Custom stateful transformation to compute indicators - Part 1
Урок 53.
00:12:02
Other libraries for real time data processing
Урок 54.
00:34:35
Custom stateful transformation to compute indicators - Part 2
Урок 55.
00:09:42
Custom stateful transformation to compute indicators - Part 3
Урок 56.
00:26:31
Write Dockerfile with talib library
Урок 57.
00:14:15
Some homework for you
Урок 58.
00:28:37
Deploying the technical indicators service to Kubernetes
Урок 59.
00:01:46
Wrap up
Урок 60.
00:04:46
Goals for today
Урок 61.
00:20:48
Installing RisingWave in Kubernetes
Урок 62.
00:14:11
Pull-based ingestion from Kafka topic to RisingWave
Урок 63.
00:28:16
Pull-based vs Push-based data ingestion
Урок 64.
00:14:57
Installing Grafana and adding RisingWave as a data source
Урок 65.
00:20:40
Plotting candles with Grafana
Урок 66.
00:39:01
Ingesting historical trades from Kraken REST API
Урок 67.
00:24:19
Custom stateful transformation to compute indicators - Part 2 + Homework
Урок 68.
00:03:19
Wrap up
Урок 69.
00:07:05
Goals for today
Урок 70.
00:22:07
Bash script to build and push Docker images to either `dev` or `prod` Kubernetes cluster
Урок 71.
00:17:15
Bash script to deploy services to either `dev` or `prod`
Урок 72.
00:21:55
Squashing 2 bugs in the trades service
Урок 73.
00:13:44
Deploying the trades-historical to Kubernetes - Part 1
Урок 74.
00:04:36
Deploying the trades-historical to Kubernetes - Part 2
Урок 75.
00:04:08
Adding custom timestamp extractor in our candles service
Урок 76.
00:30:16
Deploying the whole backfill pipeline
Урок 77.
00:38:02
ConfigMap for our backfill pipeline
Урок 78.
00:09:07
How to scale the backfill pipeline to process 100x volume of trades
Урок 79.
00:01:43
Wrap up
Урок 80.
00:11:56
Goals for today
Урок 81.
00:28:50
Installing MLflow in Kubernetes cluster
Урок 82.
00:23:22
Start building the training pipeline -> Load data from RisingWave
Урок 83.
00:08:44
Adding the target column to the dataframe
Урок 84.
00:14:01
Data validation with Great Expectations
Урок 85.
00:17:10
Automatic Exploratory Data Analysis (EDA)
Урок 86.
00:30:47
Instrumenting our training runs with MLflow
Урок 87.
00:24:31
Build a baseline model
Урок 88.
00:01:22
Question -> Do we need GPUs to train our model?
Урок 89.
00:05:57
Wrap up
Урок 90.
00:06:31
Goals for today
Урок 91.
00:42:48
Finding a good model candidate with LazyPredict
Урок 92.
00:22:07
Logging model candidate table to MLflow
Урок 93.
00:10:56
What is model hyper-parameter tuning?
Урок 94.
00:27:02
Hyperparameter tuning with Optuna
Урок 95.
00:28:06
Fixing things
Урок 96.
00:15:05
Scaling the inputs for our regularised linear model (HuberRegressor) - Part 1
Урок 97.
00:16:01
Scaling the inputs for our regularised linear model (HuberRegressor) - Part 2
Урок 98.
00:01:57
Wrap up
Урок 99.
00:09:02
Goals for today
Урок 100.
00:19:06
Refactoring the model selection step of the training pipeline
Урок 101.
00:34:22
Checking and dropping NaN values
Урок 102.
00:15:34
Validating and pushing the model to the registry
Урок 103.
00:14:04
Extracting training inputs into a TrainingConfig
Урок 104.
00:09:13
Homework -> Add data and model drift reports to each training run using Evidently
Урок 105.
00:14:34
Dockerfile for the training-pipeline
Урок 106.
00:18:57
What is Kustomize?
Урок 107.
00:18:55
Job manifest for the training-pipeline
Урок 108.
00:13:22
Debugging the Job (wout success so far)
Урок 109.
00:01:26
Wrap up
Урок 110.
00:04:23
Goals for today
Урок 111.
00:16:52
Deploying the training pipeline as a CronJob
Урок 112.
00:05:55
Adjust the deployment script to use kustomize build if there is a kustomization.yaml
Урок 113.
00:27:26
Building the prediction generator - Part 1 - Bug fixing the name of the model in the registry
Урок 114.
00:29:08
Building the prediction generator - Part 2 - Prediction handler
Урок 115.
00:22:49
Building the prediction generator - Part 3 - Loading the model signature
Урок 116.
00:35:58
Building the prediction generator - Part 4 - Saving predictions to RisingWave table
Урок 117.
00:24:40
Building the prediction generator - Part 5 - Deploying the prediction generator
Урок 118.
00:03:00
Wrap up
Урок 119.
00:04:05
Goals for today
Урок 120.
00:11:14
Fixing a bug in the prediction_handler
Урок 121.
00:03:16
Question -> Where to log what?
Урок 122.
00:15:02
Rebuild docker image and deploy prediction generator to Kubernetes
Урок 123.
00:11:22
Let's build the prediction API in Rust - Part 1 - The tools you need
Урок 124.
00:21:19
Let's build the prediction API in Rust - Part 2 - REST API skeleton
Урок 125.
00:16:21
Let's build the prediction API in Rust - Part 3 - Unwrapping the unwrappable
Урок 126.
00:14:36
Let's build the prediction API in Rust - Part 4 - Predictions endpoint
Урок 127.
00:21:37
Let's build the prediction API in Rust - Part 5 - Connecting to PostgreSQL
Урок 128.
00:43:48
Let's build the prediction API in Rust - Part 6 - Debugging
Урок 129.
00:02:57
Let's build the prediction API in Rust - Part 7 - Squashing the bug
Урок 130.
00:03:35
Wrap up
Урок 131.
00:01:21
5/14/2025 11:02 AM CEST recording
Урок 132.
00:31:34
5/14/2025 11:04 AM CEST recording
Урок 133.
00:05:22
5/14/2025 11:35 AM CEST recording
Урок 134.
00:06:07
5/14/2025 11:41 AM CEST recording
Урок 135.
00:15:02
5/14/2025 11:48 AM CEST recording
Урок 136.
00:06:23
5/14/2025 12:03 PM CEST recording
Урок 137.
00:08:10
5/14/2025 12:10 PM CEST recording
Урок 138.
00:06:35
5/14/2025 12:18 PM CEST recording
Урок 139.
00:35:50
5/14/2025 12:34 PM CEST recording
Урок 140.
00:07:47
5/14/2025 1:10 PM CEST recording
Урок 141.
00:15:00
5/14/2025 1:18 PM CEST recording
Урок 142.
00:09:10
5/14/2025 1:34 PM CEST recording
Урок 143.
00:09:03
5/14/2025 1:43 PM CEST recording
Урок 144.
00:04:17
5/14/2025 1:52 PM CEST recording
Урок 145.
00:01:42
5/14/2025 1:57 PM CEST recording
Урок 146.
00:07:00
Before we begin...
Урок 147.
00:08:03
Goals for today
Урок 148.
00:06:31
Questions
Урок 149.
00:22:48
Adding the PgPool to the app State (so we don't need to recreate every time we get a request)
Урок 150.
00:16:14
Creating a RisingWave materialized view with the latest predictions for each coin
Урок 151.
00:17:36
Custom config objet to load and hold env variable values
Урок 152.
00:09:48
Adding the Config to the app State
Урок 153.
00:11:41
Adding some logging
Урок 154.
00:23:09
Dockerizing our Prediction API Rust service
Урок 155.
00:07:04
Mad scientist experiment to reduct the Docker image size with a scratch layer
Урок 156.
00:27:15
Deploying to Kubernetes
Урок 157.
00:03:42
Plan for the last 3 sessions
Урок 158.
00:01:44
Wrap up
Урок 159.
00:08:12
Goals for today
Урок 160.
00:26:21
How to download crypto news from a REST API (Cryptopanic)
Урок 161.
00:07:12
Load Cryptopanic API using env variables and pydantic-settings
Урок 162.
00:27:10
Custom Quixstreams Stateful Source to ingest news into Kafka
Урок 163.
00:18:18
Inspecting the news messages - Kafka UI
Урок 164.
00:21:56
News sentiment service - iteration 1
Урок 165.
00:21:28
Unpacking sentiment scores as N kafka messages
Урок 166.
00:26:55
BAML to build LLMs with structured output (like the sentiment-extractor we want to build!)
Урок 167.
00:05:39
Testing our BAML function
Урок 168.
00:02:02
Wrap up
Урок 169.
00:01:09
A question I forgot to answer!
Урок 170.
00:04:01
6.4.2025 11:03 AM CEST recording
Урок 171.
00:31:30
6.4.2025 11:08 AM CEST recording
Урок 172.
00:10:01
6.4.2025 11:40 AM CEST recording
Урок 173.
00:33:31
6.4.2025 11:50 AM CEST recording
Урок 174.
00:24:07
6.4.2025 12:35 PM CEST recording
Урок 175.
00:04:38
6.4.2025 1:00 PM CEST recording
Урок 176.
00:09:07
6.4.2025 1:05 PM CEST recording
Урок 177.
00:27:14
6.4.2025 1:14 PM CEST recording
Урок 178.
00:17:16
6.4.2025 1:42 PM CEST recording
Урок 179.
00:04:20
6.4.2025 1:59 PM CEST recording
Урок 180.
00:05:22
Goals for today
Урок 181.
00:22:00
Implement the evaluation metric
Урок 182.
00:07:06
Manual prompt improvement
Урок 183.
00:11:21
Automatic prompt optimization
Урок 184.
00:34:36
How to use open-weights LLMs with Ollama
Урок 185.
00:30:16
Kubernetes manifests to deploy news and news-sentiment services
Урок 186.
00:44:51
MARIUS -> How to set up a GPU node in a production Kubernetes cluster
Урок 187.
00:03:29
Time to say (see you later)!
Урок 188.
00:04:36
Wrap up
Автор - Pau Labarta Bajo
Pau Labarta Bajo
Я инженер по машинному обучению с многолетним опытом создания реальных ML-продуктов. Хотите спроектировать, разработать и внедрить собственное решение? Я рассказываю, как построить полноценные ML-продукты от идеи до продакшена и помочь ведущим стартапам и крупным компаниям решать бизнес-задачи с помощью ИИ.
is this better / different from santiago's course? trying to know if its worth doing if i have already done that one
CourseHunter Team
Спасибо всем, кто поддержал наш краудфандинг!
Желаем вам приятного и продуктивного просмотра курса.
Сейчас доступен поток №4 - последний на данный момент.
Новый поток планируется к запуску в феврале 2026 года, и как только он выйдет, мы обязательно выложим его здесь.
Thank you to everyone who supported our crowdfunding campaign!
We wish you an enjoyable and productive learning experience.
Stream #4 is currently available - the most recent one.
The next stream is scheduled to start in February 2026, and we’ll upload it as soon as it’s released.
Mr. Green
Hey Team, Can you upload the previous cohort videos for now?
CourseHunter Team
Mr. Green
Done, sorry for the delay - there were some issues.
oops
Would be nice to access this
dude
You are still collecting money?
...
It seems we are waiting for 4 more people to start.
CourseHunter Team
...
They have 2 days, no worries
something_something
CourseHunter Team
We are ready to pay the difference even if they don't participate. I would send an email to the participants who already joined if they are up for it. Don't cancel right away please :)
CourseHunter Team
something_something
We are not planning to cancel this course
sarathy
...
I can pay additionally if needed
CourseHunter Team
We have special opportunity discount, so we can start already.
Появилась возможность взять курс дешевле, можно стартовать сбор.
d_carbo
CourseHunter Team
Подскажите пожалуйста, когда будет опубликован курс?
CourseHunter Team
d_carbo
Уже, можно начинать смотреть.
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
Желаем вам приятного и продуктивного просмотра курса.
Сейчас доступен поток №4 - последний на данный момент.
Новый поток планируется к запуску в феврале 2026 года, и как только он выйдет, мы обязательно выложим его здесь.
Thank you to everyone who supported our crowdfunding campaign!
We wish you an enjoyable and productive learning experience.
Stream #4 is currently available - the most recent one.
The next stream is scheduled to start in February 2026, and we’ll upload it as soon as it’s released.
Появилась возможность взять курс дешевле, можно стартовать сбор.