Skalowalne potoki ML z Airflow
Potoki oparte na DAG, zależności zadań, pozyskiwanie danych → trenowanie → ocena → wdrożenie.
Skalowalne potoki ML z Airflow to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Dlaczego orkiestracja
Przepływ pracy ML obejmuje wiele kroków: pobranie danych, przygotowanie cech, trenowanie, ocenę i wdrożenie. Ręczne wykonywanie tych czynności jest podatne na błędy. Apache Airflow orkiestruje je jako kod, zapewniając wbudowane harmonogramowanie, ponawianie prób, zależności i monitorowanie.
DAG
Airflow modeluje potok jako DAG (skierowany graf acykliczny) złożony z zadań. Acykliczność oznacza, że żadne zadanie nie może zależeć od samego siebie w pętli, dlatego wykonanie zawsze ma jasno określoną kolejność od początku do końca.
Definiowanie DAG-a
DAG deklaruje się za pomocą identyfikatora, harmonogramu i daty rozpoczęcia. Harmonogram określa, jak często potok jest uruchamiany, na przykład w celu codziennego ponownego trenowania.
from airflow import DAG
import datetime
with DAG(
dag_id="ml_pipeline",
schedule="@daily",
start_date=datetime.datetime(2024, 1, 1),
catchup=False,
) as dag:
...Operatory są zadaniami
Każdy węzeł w DAG-u jest zadaniem utworzonym na podstawie operatora. Różne operatory wykonują różne rodzaje pracy: funkcje języka Python, polecenia bash, zapytania SQL i inne.
PythonOperator do trenowania
PythonOperator uruchamia funkcję wywoływalną języka Python. Doskonale nadaje się do kroku trenowania, który wywołuje funkcję trenowania.
from airflow.operators.python import PythonOperator
def train_model():
# load features, fit model, save artifact
...
train = PythonOperator(
task_id="train",
python_callable=train_model,
)BashOperator do oceny
BashOperator uruchamia polecenie powłoki, dlatego przydaje się do wywoływania skryptu oceny lub narzędzia CLI.
from airflow.operators.bash import BashOperator
evaluate = BashOperator(
task_id="evaluate",
bash_command="python /opt/ml/evaluate.py --model latest",
)Definiowanie zależności
Operator >> ustala kolejność zadań: a >> b oznacza, że b zostanie uruchomione po pomyślnym zakończeniu a. W ten sposób konfiguruje się DAG, aby ocena rozpoczęła się dopiero po zakończeniu trenowania.
train >> evaluate
# train must succeed before evaluate runsDłuższe łańcuchy zależności
Można łączyć wiele zadań, aby wyrazić pełną kolejność etapów potoku. Airflow uruchamia niezależne gałęzie równolegle i respektuje każdą zadeklarowaną zależność.
ingest >> features >> train >> evaluate >> deployPrzekazywanie danych za pomocą XCom
Zadania działają niezależnie, więc jak przekazać wynik do kolejnego zadania? XCom (komunikacja między zadaniami) pozwala zadaniu umieścić niewielką wartość, taką jak ścieżka modelu lub metryka, którą następnie pobiera zadanie zależne.
def train_model(ti):
path = "/models/run_42.pt"
ti.xcom_push(key="model_path", value=path)
def deploy(ti):
path = ti.xcom_pull(key="model_path", task_ids="train")
# deploy the artifact at pathXCom służy do małych ilości danych
XCom jest przeznaczony dla niewielkich metadanych (ścieżek, identyfikatorów i metryk), a nie dla dużych zbiorów danych. Duże artefakty powinny znajdować się w magazynie obiektowym (S3), a przez XCom należy przekazywać jedynie ich lokalizację. Nadmierne używanie XCom do dużych danych obciąża bazę metadanych.
Harmonogramowanie i ponawianie prób
Airflow zapewnia produkcyjną niezawodność bez dodatkowej pracy: harmonogram automatycznie uruchamia potoki, nieudane zadania ponawiają próbę z narastającym opóźnieniem, a interfejs pokazuje stan każdego zadania i uruchomienia oraz wysyła powiadomienia o awariach.
Szybki test
Proszę sprawdzić swoją wiedzę na temat Airflow.
Podsumowanie
Poznali Państwo skalowalne potoki ML z użyciem Airflow:
- DAG z harmonogramem definiuje potok
- PythonOperator uruchamia trenowanie, a BashOperator — ocenę
- Operator
>>ustala zależności między zadaniami - XCom przekazuje małe artefakty między zadaniami, a duże dane trafiają do magazynu obiektowego
Często zadawane pytania
Czy lekcja „Skalowalne potoki ML z Airflow” jest bezpłatna?
Tak — pełny tekst „Skalowalne potoki ML z Airflow” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Skalowalne potoki ML z Airflow”?
Potoki oparte na DAG, zależności zadań, pozyskiwanie danych → trenowanie → ocena → wdrożenie. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Skalowalne potoki ML z Airflow”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wzorce architektury systemów AI
- Skalowalne potoki ML z Airflow
- Magazyny cech: Feast i Tecton
- Obserwowalność i monitorowanie systemów AI