Runtime TensorFlow yang dioptimalkan dapat mengoptimalkan model untuk inferensi biaya yang lebih cepat dan lebih rendah daripada container TensorFlow Serve bawaan berbasis open source. Runtime TensorFlow yang dioptimalkan melakukannya dengan memanfaatkan teknologi open source dan eksklusif milik Google.
Makin besar model machine learning (ML), makin besar biaya yang diperlukan untuk menyalurkannya. Dengan runtime TensorFlow yang dioptimalkan, biaya penyaluran model ML dan kecepatan inferensi dapat lebih rendah dibandingkan saat Anda menggunakan runtime TensorFlow berbasis open source. Untuk memanfaatkan runtime TensorFlow yang dioptimalkan saat menggunakan Vertex AI Prediction, Anda tidak perlu mengubah kode. Sebagai gantinya, pilih container image penayangan yang menggunakan kode tersebut.
Runtime TensorFlow yang dioptimalkan kompatibel dengan container TensorFlow Serving bawaan versi lama. Jika menjalankan model TensorFlow dengan container bawaan, Anda dapat beralih ke container runtime TensorFlow yang dioptimalkan dengan mudah.
Meskipun performa model akan meningkat saat Anda menggunakan runtime TensorFlow yang dioptimalkan, dampak performa akan bervariasi untuk berbagai jenis model.
Ringkasan runtime TensorFlow yang dioptimalkan
Runtime TensorFlow yang dioptimalkan menggunakan pengoptimalan model dan teknologi eksklusif milik Google yang baru untuk meningkatkan kecepatan dan menurunkan biaya inferensi dibandingkan dengan container TensorFlow Serving bawaan yang berbasis open source.
Pengoptimalan terjadi saat Vertex AI mengupload model, sebelum model tersebut dijalankan. Setelah Anda men-deploy model ke endpoint, log pengoptimalan akan ditambahkan ke log prediksi. Anda dapat menggunakan log ini untuk memecahkan masalah yang mungkin terjadi selama pengoptimalan.
Topik berikut menjelaskan peningkatan pengoptimalan dalam runtime TensorFlow yang dioptimalkan.
Pengoptimalan model
Tiga pengoptimalan model berikut disertakan dalam runtime TensorFlow yang dioptimalkan.
Prakompilasi Model XLA
Saat model TensorFlow berjalan, semua operasi akan berjalan secara terpisah. Ada sedikit overhead saat menjalankan operasi individual. Runtime TensorFlow yang dioptimalkan dapat menghapus sebagian overhead ini dengan memanfaatkan XLA untuk melakukan prakompilasi terhadap semua atau sebagian grafik TensorFlow ke dalam kernel yang lebih besar.
Prakompilasi model XLA bersifat opsional dan dinonaktifkan secara default. Untuk mempelajari cara mengaktifkan prakompilasi model XLA selama deployment, lihat Mengaktifkan prakompilasi model XLA.
Pengoptimalan kompresi model
Runtime TensorFlow yang dioptimalkan dapat menjalankan beberapa model lebih cepat dan dengan dampak kecil terhadap presisi model yang memungkinkan pengoptimalan kompresi model. Saat pengoptimalan kompresi model diaktifkan, runtime TensorFlow yang dioptimalkan akan menggunakan teknik seperti kuantisasi dan pruning bobot untuk menjalankan model dengan lebih cepat.
Fitur pengoptimalan kompresi model dinonaktifkan secara default. Untuk mempelajari cara mengaktifkan pengoptimalan kompresi model selama deployment, lihat Mengaktifkan pengoptimalan kompresi model.
Peningkatan performa model tabulasi pada GPU
Model tabulasi TensorFlow biasanya disalurkan di CPU karena tidak dapat menggunakan akselerator secara efektif. Runtime TensorFlow yang dioptimalkan mengatasi hal ini dengan menjalankan bagian model yang mahal secara komputasi di GPU. Model lainnya berjalan pada CPU dengan meminimalkan komunikasi antara host dan akselerator. Menjalankan bagian model yang mahal di GPU dan bagian lainnya di CPU membuat penyaluran model tabular lebih cepat dan biayanya lebih murah.
Runtime TensorFlow yang dioptimalkan mengoptimalkan penyaluran jenis model tabel berikut.
Pengoptimalan model otomatis untuk Cloud TPU
Container runtime TensorFlow yang dioptimalkan dan sudah dibuat sebelumnya yang mendukung Cloud TPU dapat otomatis mempartisi dan mengoptimalkan model Anda untuk dijalankan di TPU. Untuk informasi selengkapnya, lihat Men-deploy ke Cloud TPU.
Penggunaan TensorFlow Runtime (TFRT)
Runtime TensorFlow yang Dioptimalkan dapat menggunakan TensorFlow runtime (TFRT). TFRT menggunakan CPU host multi-thread, mendukung model pemrograman asinkron, dan dioptimalkan untuk efisiensi tingkat rendah.
CPU TFRT diaktifkan di semua image container CPU runtime TensorFlow yang dioptimalkan kecuali versi 2.8. Untuk menonaktifkan CPU TFRT, setel flag use_tfrt
ke false
.
GPU TFRT tersedia di image container GPU runtime TensorFlow yang dioptimalkan tiap hari serta image container GPU runtime TensorFlow yang dioptimalkan dengan stabil versi 2.13 dan yang lebih baru. Untuk mengaktifkan GPU TFRT, tetapkan tanda use_tfrt
dan allow_precompilation
ke true
.
TFRT pada image container GPU meminimalkan overhead transfer data antara CPU host dan GPU. Setelah Anda mengaktifkan TFRT, TFRT akan berfungsi bersama dengan kompilasi XLA. Karena prakompilasi XLA diaktifkan, Anda mungkin mengalami beberapa efek samping seperti peningkatan latensi pada permintaan pertama.
Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan prakompilasi model XLA.
Penggunaan runtime Google
Karena runtime TensorFlow yang dioptimalkan dibuat menggunakan stack internal milik Google, runtime ini memiliki keuntungan untuk dapat berjalan di lingkungan runtime milik Google.
Image container runtime TensorFlow yang dioptimalkan
Vertex AI Prediction menyediakan dua jenis image container runtime TensorFlow yang dioptimalkan: stabil dan tiap hari.
Image container stabil
Container runtime TensorFlow yang dioptimalkan dengan stabil terikat ke versi TensorFlow tertentu, seperti container TensorFlow Serve bawaan berbasis open source. Container runtime TensorFlow yang dioptimalkan dan terikat dengan versi tertentu akan dipertahankan untuk durasi yang sama dengan build open source yang terikat dengan versi yang sama. Build runtime TensorFlow yang dioptimalkan memiliki properti yang sama dengan build TensorFlow open source, kecuali inferensinya yang lebih cepat.
Build kompatibel dengan versi sebelumnya. Ini berarti Anda seharusnya dapat menjalankan model yang dilatih pada versi TensorFlow lama menggunakan container yang lebih baru. Container terbaru akan berperforma lebih baik daripada container lama. Dalam pengecualian yang jarang terjadi, model yang dilatih pada versi TensorFlow lama mungkin tidak berfungsi dengan container yang lebih baru.
Image container tiap hari
Build runtime TensorFlow yang dioptimalkan tiap hari menyertakan peningkatan dan pengoptimalan terbaru, tetapi mungkin tidak seandal build stabil. Build tersebut digunakan terutama untuk tujuan eksperimental. Nama build yang diupdate tiap hari menyertakan label nightly
. Tidak seperti image container yang stabil, container yang diupdate tiap hari tidak tercakup dalam Perjanjian Tingkat Layanan (SLA) Vertex AI.
Image container yang tersedia
Image container Docker runtime TensorFlow yang dioptimalkan tiap hari dan stabil berikut tersedia.
Versi framework ML | Akselerator yang didukung (dan versi CUDA, jika berlaku) | Akhir patch dan tanggal dukungan | Akhir ketersediaan | Image yang didukung |
---|---|---|---|---|
tiap hari | Khusus CPU | Tidak berlaku | Tidak berlaku |
|
tiap hari | GPU (CUDA 12.x) | Tidak berlaku | Tidak berlaku |
|
tiap hari | Cloud TPU | Tidak berlaku | Tidak berlaku |
|
2,17 | Khusus CPU | 11 Juli 2024 | 11 Juli 2025 |
|
2,17 | GPU (CUDA 12.x) | 11 Juli 2024 | 11 Juli 2025 |
|
2,17 | Cloud TPU | 11 Juli 2024 | 11 Juli 2025 |
|
2,16 | Khusus CPU | 26 April 2024 | 26 April 2025 |
|
2,16 | GPU (CUDA 12.x) | 26 April 2024 | 26 April 2025 |
|
2,16 | Cloud TPU | 26 April 2024 | 26 April 2025 |
|
2,15 | Khusus CPU | 15 Agu 2024 | 15 Agu 2025 |
|
2,15 | GPU (CUDA 12.x) | 15 Agu 2024 | 15 Agu 2025 |
|
2,15 | Cloud TPU | 15 Agu 2024 | 15 Agu 2025 |
|
2,14 | Khusus CPU | 15 Agu 2024 | 15 Agu 2025 |
|
2,14 | GPU (CUDA 12.x) | 15 Agu 2024 | 15 Agu 2025 |
|
2.13 | Khusus CPU | 15 Agu 2024 | 15 Agu 2025 |
|
2.13 | GPU (CUDA 11.x) | 15 Agu 2024 | 15 Agu 2025 |
|
2.12 | Khusus CPU | 15 Mei 2024 | 15 Mei 2025 |
|
2.12 | GPU (CUDA 11.x) | 15 Mei 2024 | 15 Mei 2025 |
|
2.11 | Khusus CPU | 15 Nov 2023 | 15 Nov 2024 |
|
2.11 | GPU (CUDA 11.x) | 15 Nov 2023 | 15 Nov 2024 |
|
2.10 | Khusus CPU | 15 Nov 2023 | 15 Nov 2024 |
|
2.10 | GPU (CUDA 11.x) | 15 Nov 2023 | 15 Nov 2024 |
|
2.9 | Khusus CPU | 15 Nov 2023 | 15 Nov 2024 |
|
2.9 | GPU (CUDA 11.x) | 15 Nov 2023 | 15 Nov 2024 |
|
2.8 | Khusus CPU | 15 Nov 2023 | 15 Nov 2024 |
|
2.8 | GPU (CUDA 11.x) | 15 Nov 2023 | 15 Nov 2024 |
|
Menggunakan runtime TensorFlow yang dioptimalkan dengan endpoint pribadi
Menggunakan endpoint pribadi untuk menyalurkan prediksi online dengan Vertex AI memberikan koneksi aman dan berlatensi rendah ke layanan prediksi online Vertex AI yang lebih cepat daripada menggunakan endpoint publik. Runtime TensorFlow yang dioptimalkan kemungkinan akan menyalurkan model yang sensitif terhadap latensi, jadi Anda dapat mempertimbangkan untuk menggunakannya dengan endpoint pribadi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan endpoint pribadi untuk prediksi online.
Men-deploy model menggunakan runtime TensorFlow yang dioptimalkan
Proses men-deploy model untuk prediksi menggunakan runtime TensorFlow yang dioptimalkan hampir sama dengan proses men-deploy model menggunakan container TensorFlow Serve bawaan berbasis open source. Satu-satunya perbedaan adalah Anda menentukan image container yang menggunakan runtime TensorFlow yang dioptimalkan saat membuat model, dan Anda dapat mengaktifkan flag pengoptimalan yang dijelaskan sebelumnya dalam dokumen ini. Misalnya, jika Anda men-deploy model dengan container us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest
, Anda dapat menyalurkan model yang sama dengan runtime TensorFlow yang dioptimalkan menggunakan container us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
.
Contoh kode berikut menunjukkan cara membuat model dengan container runtime TensorFlow yang dioptimalkan us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
. Untuk men-deploy model ini, gunakan proses yang sama dengan yang Anda gunakan untuk men-deploy model menggunakan container TensorFlow Serve bawaan lainnya.
Untuk mengetahui informasi selengkapnya tentang ModelServiceClient
yang digunakan dalam contoh ini, lihat Class ModelServiceClient.
Untuk mengetahui informasi selengkapnya tentang cara men-deploy model menggunakan Vertex AI, lihat Men-deploy model menggunakan Vertex AI API.
Untuk mengetahui informasi selengkapnya tentang setelan allow_precompilation
dan allow_compression
, lihat Pengoptimalan model yang dijelaskan sebelumnya dalam dokumen ini.
from google.cloud.aiplatform import gapic as aip PROJECT_ID = PROJECT_ID REGION = LOCATION API_ENDPOINT = f"{REGION}-aiplatform.googleapis.com" PARENT = f"projects/{PROJECT_ID}/locations/{REGION}" client_options = {"api_endpoint": API_ENDPOINT} model_service_client = aip.ModelServiceClient(client_options=client_options) tf_opt_model_dict = { "display_name": "DISPLAY_NAME", "metadata_schema_uri": "", "artifact_uri": "MODEL_URI", "container_spec": { "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest", "args": [ # The optimized TensorFlow runtime includes the following # options that can be set here. # "--allow_precompilation=true" - enable XLA precompilation # "--allow_compression=true" - enable # model compression optimization ], }, } tf_opt_model = model_service_client.upload_model( parent=PARENT, model=tf_opt_model_dict).result(timeout=180).model
Tanda pengoptimalan model
Saat men-deploy model menggunakan runtime TensorFlow yang dioptimalkan, Anda dapat mengaktifkan dua fitur yang mungkin dapat lebih mengoptimalkan penyaluran model TensorFlow.
Anda dapat mengaktifkan prakompilasi model XLA dan pengoptimalan kompresi model secara bersamaan. Bagian berikut menjelaskan cara mengaktifkan opsi ini menggunakan flag selama deployment.
Mengaktifkan prakompilasi model XLA
Untuk mengonfigurasi runtime TensorFlow yang dioptimalkan agar dapat melakukan prakompilasi model, tetapkan tanda allow_precompilation
ke true
. Prakompilasi model XLA berfungsi untuk berbagai jenis model, dan dalam sebagian besar kasus, meningkatkan performa. Prakompilasi XLA berfungsi paling baik untuk permintaan dengan ukuran batch yang besar.
Prakompilasi model XLA terjadi saat permintaan pertama dengan ukuran batch baru tiba. Untuk memastikan bahwa runtime diinisialisasi sebelum permintaan pertama, Anda dapat menyertakan file warmup request. Untuk mengetahui informasi selengkapnya, lihat pemanasan SavedModel dalam dokumentasi TensorFlow.
Prakompilasi XLA memerlukan waktu beberapa detik hingga beberapa menit untuk diselesaikan, bergantung pada kompleksitas model. Jika menggunakan prakompilasi model XLA, Anda harus mempertimbangkan hal berikut.
Jika Anda menggunakan file warmup, coba sertakan permintaan dengan ukuran batch yang mewakili ukuran batch yang diharapkan akan diterima oleh model Anda. Menyediakan banyak permintaan dalam file warmup akan memperlambat startup server model Anda.
Jika Anda ingin model menerima permintaan dengan ukuran tumpukan yang berbeda, Anda mungkin ingin mengaktifkan pengelompokan sisi server dengan kumpulan nilai tetap untuk
allow_batch_sizes
. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan fitur pengelompokan sisi server,lihat Mengaktifkan batch permintaan sisi server untuk TensorFlow dalam dokumentasi TensorFlow.
Karena prakompilasi XLA menambahkan overhead memori, beberapa model besar mungkin gagal dengan error out of memory pada GPU.
Sebaiknya uji prakompilasi XLA pada model Anda sebelum mengaktifkan fitur ini dalam produksi.
Mengaktifkan pengoptimalan kompresi model
Untuk mengonfigurasi runtime TensorFlow yang dioptimalkan agar menggunakan pengoptimalan kompresi model, tetapkan flag allow_compression
ke true
. Uji pengaruh pengaktifan flag ini terhadap presisi model Anda, lalu tentukan apakah Anda ingin mengaktifkannya dalam produksi.
Menonaktifkan pengoptimalan
Untuk mengonfigurasi runtime TensorFlow yang dioptimalkan agar menjalankan model tanpa pengoptimalan, tetapkan flag disable_optimizer
ke true
.
Batas runtime TensorFlow yang dioptimalkan
Runtime TensorFlow yang dioptimalkan memiliki batasan berikut:
- Runtime TensorFlow yang dioptimalkan tidak kompatibel dengan GPU NVIDIA lama seperti Tesla P4 dan Tesla P100.
- Saat ini, runtime TensorFlow yang dioptimalkan hanya mendukung penjelasan sampel Shapley.
Harga
Men-deploy model menggunakan runtime TensorFlow yang dioptimalkan tidak akan dikenai biaya tambahan. Biayanya sama dengan deployment prediksi lain yang ditagih berdasarkan jumlah VM dan akselerator yang digunakan. Untuk mengetahui informasi selengkapnya, lihat Harga Vertex AI.