Tutorial Celery + Redis untuk ML Task Queue: Async Inference

# Tutorial 16: Celery + Redis untuk Antrian Tugas ML ## Daftar Isi 1. [Pendahuluan](#pendahuluan) 2. [Prasyarat](#prasyarat) 3. [Memahami Antrian Tugas untuk ML](#memahami-antrian-tugas-untuk-ml) 4....

By Ruby Abdullah · · tutorial
CeleryRedisTask QueueAsyncML InferenceFastAPI

Tutorial 16: Celery + Redis untuk Antrian Tugas ML

Daftar Isi

  • Pendahuluan
  • Prasyarat
  • Memahami Antrian Tugas untuk ML
  • Menyiapkan Celery dengan Redis
  • Membuat Tugas Inferensi ML Asinkron
  • Task Chain, Group, dan Chord
  • Integrasi dengan FastAPI
  • Monitoring dengan Flower
  • Penanganan Error dan Retry
  • Penskalaan Worker
  • Deployment Produksi
  • Praktik Terbaik
  • Kesimpulan

  • Pendahuluan

    Inferensi machine learning dapat berkisar dari milidetik untuk model scikit-learn sederhana hingga bermenit-menit untuk pipeline deep learning kompleks yang melibatkan pemrosesan gambar, ekstraksi fitur, dan prediksi ensemble. Ketika inferensi membutuhkan lebih dari beberapa ratus milidetik, menanganinya secara sinkron dalam permintaan web menciptakan pengalaman pengguna yang buruk dan berisiko timeout.

    Antrian tugas (task queue) menyelesaikan masalah ini dengan memindahkan pekerjaan yang memakan waktu lama ke worker latar belakang. Klien mengirimkan tugas, menerima ID segera, dan melakukan polling untuk hasil kemudian. Pola ini memungkinkan API Anda tetap responsif, mendukung penskalaan horizontal untuk beban kerja yang intensif komputasi, dan menyediakan logika retry bawaan untuk tugas yang gagal.

    Celery adalah antrian tugas terdistribusi yang paling banyak digunakan untuk Python, dan Redis adalah message broker yang paling populer untuknya. Bersama-sama, mereka membentuk fondasi yang teruji untuk inferensi ML asinkron, pemrosesan batch, pekerjaan pelatihan model, dan orkestrasi pipeline data.

    Tutorial ini memandu Anda melalui pembangunan sistem inferensi ML asinkron lengkap dengan Celery, Redis, dan FastAPI — dari pengaturan dasar hingga deployment siap produksi.


    Prasyarat

    • Python 3.9 atau lebih tinggi
    • Server Redis (lokal atau Docker)
    • Pemahaman dasar REST API dan pemrograman asinkron
    • Instal paket yang diperlukan:

    pip install celery[redis] redis fastapi uvicorn scikit-learn joblib numpy pandas flower pydantic
    

    Jalankan Redis dengan Docker:

    docker run -d --name redis -p 6379:6379 redis:7-alpine
    


    Memahami Antrian Tugas untuk ML

    Gambaran Arsitektur

    Arsitektur Celery terdiri dari tiga komponen utama:

    Producer (Klien): Aplikasi web Anda (misalnya FastAPI) yang mengirimkan tugas. Ia mengirim pesan tugas ke broker dan kembali segera, memberikan pemanggil ID tugas untuk pengambilan hasil nanti. Broker (Redis): Antrian pesan yang menyimpan tugas sampai worker mengambilnya. Redis berperan ganda sebagai broker (antrian tugas) dan result backend (tempat hasil tugas yang selesai disimpan). Worker: Proses terpisah (atau sekumpulan proses) yang mengkonsumsi tugas dari broker, mengeksekusinya, dan menyimpan hasilnya. Untuk ML, setiap worker memuat model ke memori dan memproses permintaan inferensi.
    Klien (FastAPI) --> Redis Broker --> Worker 1 (Model ML)
    

    --> Worker 2 (Model ML)

    --> Worker 3 (Model ML)

    |

    Redis Result Backend

    |

    Klien polling untuk hasil

    Kapan Menggunakan Antrian Tugas untuk ML

    | Kasus Penggunaan | API Sinkron | Antrian Tugas |

    |-------------------|-------------|---------------|

    | Model sederhana, inferensi < 100ms | Lebih baik | Berlebihan |

    | Pipeline kompleks, inferensi 1-30 detik | Berisiko (timeout) | Lebih baik |

    | Prediksi batch (1000+ item) | Tidak memungkinkan | Diperlukan |

    | Inferensi GPU dengan antrian | Tidak praktis | Ideal |

    | Memicu pelatihan model | Tidak mungkin | Diperlukan |


    Menyiapkan Celery dengan Redis

    Struktur Proyek

    proyek-ml-celery/
    

    celeryapp.py # Konfigurasi aplikasi Celery

    tasks.py # Definisi tugas

    Artikel Terkait

    Tutorial Reflex: Membangun Web App Full-Stack dengan Python Murni

    Reflex: Membangun Aplikasi Web Full-Stack dengan Python Murni Reflex memungkinkan Anda membangun aplikasi web lengkap — ...

    SQLModel: ORM Modern Python untuk Aplikasi AI yang Type-Safe

    SQLModel: ORM Modern Python untuk Aplikasi AI yang Type-Safe Dalam pengembangan aplikasi AI/ML, pengelolaan data di data...

    Tutorial Semantic Search Engine dari Nol: Embeddings dan Vector Search

    Membangun Mesin Pencari Semantik dari Nol Daftar Isi Pendahuluan Prasyarat Memahami Pencarian Semantik [Text Embedding.....

    Tutorial AWS Lambda + SageMaker: Serverless ML Inference

    Tutorial Lengkap AWS Lambda + SageMaker: Serverless ML Inference Menggabungkan AWS Lambda dengan SageMaker memungkinkan ...