Seri arsitektur referensi ini menjelaskan cara merancang dan men-deploy sistem inferensi online performa tinggi untuk model deep learning menggunakan GPU NVIDIA® T4 dan Triton Inference Server.
Dengan menggunakan arsitektur ini, Anda dapat membuat sistem yang menggunakan model machine learning dan dapat memanfaatkan akselerasi GPU. Google Kubernetes Engine (GKE) memungkinkan Anda menskalakan sistem sesuai dengan meningkatnya jumlah klien. Anda dapat meningkatkan throughput dan mengurangi latensi sistem dengan menerapkan teknik pengoptimalan yang dijelaskan dalam seri ini.
Seri ini ditujukan bagi developer yang sudah memahami Google Kubernetes Engine dan framework machine learning (ML), termasuk TensorFlow dan NVIDIA TensorRT.
Dokumen berikut disertakan dalam seri ini:
- Arsitektur referensi: Sistem inferensi TensorFlow yang skalabel (dokumen ini)
- Deployment: Men-deploy sistem inferensi TensorFlow yang skalabel
- Mengukur dan menyesuaikan deployment: Mengukur dan menyesuaikan performa sistem inferensi TensorFlow
Arsitektur
Diagram berikut menunjukkan arsitektur sistem inferensi.
Arsitektur ini mencakup komponen berikut:
Cloud Load Balancing: Mengirim traffic permintaan ke cluster GKE yang paling dekat dengan klien.
Cluster GKE: Berisi node cluster dan server pemantauan. Jika klien mengirim permintaan dari beberapa region, Anda dapat men-deploy cluster GKE ke beberapa region. Anda men-deploy alat pengujian beban Locust di cluster yang sama.
Node cluster dengan akselerator GPU: Berisi Pod Server Inferensi Triton; satu Pod di-deploy untuk setiap node (satu GPU tidak dapat dibagikan kepada beberapa Pod).
Triton Inference Server: Menayangkan model ResNet-50 yang Anda buat. Server menyediakan layanan inferensi melalui endpoint HTTP atau gRPC. Layanan inferensi memungkinkan klien jarak jauh meminta inferensi untuk model apa pun yang dikelola oleh server.
NVIDIA T4: Meningkatkan performa inferensi. Harus ada satu NVIDIA T4 untuk setiap Pod. GPU ini memiliki Tensor Core, yang merupakan unit pemrosesan khusus yang mendukung dan mempercepat penghitungan INT8 dan FP16.
Server pemantauan: Mengumpulkan data metrik tentang penggunaan GPU dan penggunaan memori dari Triton. Anda menggunakan Prometheus untuk pemantauan dan pemberitahuan peristiwa. Anda menggunakan Grafana untuk memvisualisasikan dan menganalisis data performa yang disimpan di Prometheus.
Pertimbangan desain
Panduan berikut dapat membantu Anda mengembangkan arsitektur yang memenuhi persyaratan organisasi Anda dalam hal keandalan dan performa.
Keandalan
Arsitektur ini menggunakan GKE untuk skalabilitas dan pengelolaan resource yang fleksibel.
Dengan men-deploy sistem di GKE, Anda dapat menskalakan sistem sesuai dengan jumlah klien. Anda dapat men-deploy cluster GKE ke beberapa region dan meningkatkan jumlah node dalam cluster.
Pengoptimalan performa
Saat Anda menyesuaikan performa, ikuti panduan umum berikut:
- Tentukan metrik performa dan targetkan performa sesuai dengan kasus penggunaan sistem.
- Ukur performa dasar sebelum menerapkan penyesuaian performa.
- Terapkan satu perubahan dan amati peningkatannya. Jika menerapkan beberapa perubahan sekaligus, Anda tidak dapat mengetahui perubahan mana yang menyebabkan peningkatan tersebut.
- Kumpulkan metrik yang sesuai untuk memahami karakteristik performa dan tentukan tindakan berikutnya untuk penyesuaian performa.
Dengan menggunakan panduan ini, Anda akan mengukur peningkatan performa yang dilakukan oleh faktor-faktor berikut:
TensorRT (pengoptimalan grafik). TensorRT menerapkan pengoptimalan grafik untuk NVIDIA T4. Misalnya, wizard otomatis memodifikasi model deep learning agar dapat diproses dengan Tensor Core. Pertama, Anda mengamati performa inferensi tanpa TensorRT sebagai dasar pengukuran. Kemudian, Anda akan mengamati peningkatan performa setelah menerapkan pengoptimalan grafik TensorRT.
Konversi FP16. NVIDIA T4 mendukung FP32 (floating point 32-bit) dan FP16 untuk penghitungan floating point. Saat mengonversi presisi variabel dari FP32 default ke FP16, Anda dapat meningkatkan performa inferensi.
Kuantisasi INT8. Kuantisasi adalah teknik pengoptimalan untuk model deep learning yang meningkatkan performa komputasi pada GPU. NVIDIA T4 mendukung jenis variabel INT8 (bilangan bulat 8-bit) untuk kuantisasi. Dibandingkan dengan konversi ke FP16, kuantisasi INT8 dapat memberikan performa yang lebih baik, tetapi berpotensi mengurangi akurasi. Namun, TensorRT menggunakan proses kalibrasi yang meminimalkan kehilangan informasi selama penghitungan.
Ukuran batch dan jumlah grup instance. Anda dapat menyesuaikan ukuran batch dan jumlah grup instance menggunakan Triton. Misalnya, saat Anda menetapkan ukuran batch ke 16, permintaan inferensi akan disimpan dalam antrean batch, dan 16 permintaan akan diproses sebagai satu batch. Demikian pula, jika Anda menetapkan sejumlah grup instance ke 4, beberapa permintaan akan diproses dengan 4 thread secara paralel. Dalam skenario ini, ada 16 permintaan dalam setiap batch, dan 4 thread diproses secara paralel, yang berarti 64 permintaan diproses secara bersamaan pada satu GPU.
Dengan meningkatkan jumlah grup instance, TensorRT dapat mencapai pemakaian GPU yang lebih tinggi. Pada saat yang sama, dengan menyesuaikan ukuran batch, Anda mengizinkan Triton mengoptimalkan penghitungan di GPU. Misalnya, Triton dapat menggabungkan beberapa penghitungan dari permintaan yang berbeda menjadi satu tugas komputasi di Tensor Cores.
Deployment
Untuk men-deploy arsitektur ini, lihat Men-deploy sistem inferensi TensorFlow yang skalabel.
Untuk mengukur dan menyesuaikan deployment, lihat Mengukur dan menyesuaikan performa sistem inferensi TensorFlow.
Langkah selanjutnya
- Pelajari Google Kubernetes Engine (GKE) lebih lanjut.
- Pelajari Cloud Load Balancing lebih lanjut.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.