Arsitektur

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

TensorFlow Serving adalah sistem penayangan yang fleksibel dan berperforma tinggi untuk model pembelajaran mesin, yang dirancang untuk lingkungan produksi. TensorFlow Serving memudahkan penerapan algoritme dan eksperimen baru, sekaligus menjaga arsitektur server dan API yang sama. TensorFlow Serving menyediakan integrasi langsung dengan model TensorFlow, tetapi dapat dengan mudah diperluas untuk melayani jenis model lainnya.

Konsep Kunci

Untuk memahami arsitektur TensorFlow Serving, Anda perlu memahami konsep utama berikut:

Dapat diservis

Servable adalah abstraksi utama dalam TensorFlow Serving. Servable adalah objek dasar yang digunakan klien untuk melakukan komputasi (misalnya, pencarian atau inferensi).

Ukuran dan granularitas Servable fleksibel. Servable tunggal dapat mencakup apa saja mulai dari pecahan tunggal tabel pencarian hingga model tunggal hingga tupel model inferensi. Servable dapat berupa jenis dan antarmuka apa pun, memungkinkan fleksibilitas dan peningkatan di masa mendatang seperti:

  • hasil streaming
  • API eksperimental
  • mode operasi asinkron

Servable tidak mengelola siklus hidupnya sendiri.

Servis yang umum termasuk yang berikut:

  • a TensorFlow SavedModelBundle ( tensorflow::Session )
  • tabel pencarian untuk penyematan atau pencarian kosakata

Versi yang Dapat Dilayani

TensorFlow Serving dapat menangani satu atau beberapa versi servable selama masa pakai instance server tunggal. Ini memungkinkan konfigurasi algoritme baru, bobot, dan data lainnya dimuat dari waktu ke waktu. Versi memungkinkan lebih dari satu versi servable untuk dimuat secara bersamaan, mendukung peluncuran dan eksperimen bertahap. Pada waktu penayangan, klien dapat meminta versi terbaru atau id versi tertentu, untuk model tertentu.

Aliran yang Dapat Dilayani

Aliran yang dapat diservis adalah urutan versi yang dapat diservis, diurutkan berdasarkan peningkatan nomor versi.

model

TensorFlow Serving mewakili model sebagai satu atau beberapa servable. Model yang dipelajari mesin dapat mencakup satu atau lebih algoritme (termasuk bobot yang dipelajari) dan tabel pencarian atau penyematan.

Anda dapat merepresentasikan model komposit sebagai salah satu dari berikut ini:

  • beberapa servable independen
  • komposit tunggal yang dapat disajikan

Sebuah servable juga dapat sesuai dengan sebagian kecil dari model. Misalnya, tabel pencarian besar dapat di-sharding di banyak instance TensorFlow Serving.

Pemuat

Loader mengelola siklus hidup servable. Loader API memungkinkan infrastruktur umum yang independen dari algoritme pembelajaran tertentu, data, atau kasus penggunaan produk yang terlibat. Secara khusus, Loader menstandarkan API untuk memuat dan membongkar servable.

Sumber

Sumber adalah modul plugin yang menemukan dan menyediakan servable. Setiap Sumber menyediakan nol atau lebih aliran yang dapat dilayani. Untuk setiap aliran yang dapat ditayangkan, Sumber menyediakan satu instans Loader untuk setiap versi yang disediakan untuk dimuat. (Sumber sebenarnya dirantai bersama dengan nol atau lebih SourceAdapters, dan item terakhir dalam rantai memancarkan Loader.)

Antarmuka TensorFlow Serving untuk Sumber dapat menemukan servable dari sistem penyimpanan arbitrer. TensorFlow Serving menyertakan implementasi Sumber referensi umum. Misalnya, Sumber dapat mengakses mekanisme seperti RPC dan dapat melakukan polling sistem file.

Sumber dapat mempertahankan status yang dibagikan di beberapa servable atau versi. Ini berguna untuk server yang menggunakan pembaruan delta (diff) antar versi.

Versi yang Diinginkan

Versi yang dicita -citakan mewakili kumpulan versi yang dapat ditayangkan yang harus dimuat dan siap. Sumber mengomunikasikan kumpulan versi yang dapat ditayangkan ini untuk satu aliran yang dapat ditayangkan dalam satu waktu. Saat Sumber memberikan daftar baru versi yang diinginkan ke Manajer, itu menggantikan daftar sebelumnya untuk aliran yang dapat ditayangkan tersebut. Manajer membongkar semua versi yang dimuat sebelumnya yang tidak lagi muncul dalam daftar.

Lihat tutorial lanjutan untuk melihat cara kerja pemuatan versi dalam praktik.

Manajer

Manajer menangani siklus hidup penuh Servables, termasuk:

  • memuat Server
  • melayani Servable
  • membongkar Servables

Manajer mendengarkan Sumber dan melacak semua versi. Manajer mencoba untuk memenuhi permintaan Sumber, tetapi dapat menolak untuk memuat versi yang diinginkan jika, katakanlah, sumber daya yang diperlukan tidak tersedia. Manajer juga dapat menunda "membongkar". Misalnya, Manajer mungkin menunggu untuk membongkar hingga versi yang lebih baru selesai dimuat, berdasarkan kebijakan untuk menjamin bahwa setidaknya satu versi dimuat setiap saat.

TensorFlow Serving Managers menyediakan antarmuka yang sederhana dan sempit -- GetServableHandle() -- bagi klien untuk mengakses instans yang dapat diservis yang dimuat.

Inti

Dengan menggunakan TensorFlow Serving API standar, TensorFlow Serving Core mengelola aspek servable berikut:

  • lingkaran kehidupan
  • metrik

TensorFlow Serving Core memperlakukan servable dan loader sebagai objek buram.

Kehidupan Seorang yang Bisa Dilayani

diagram arsitektur penyajian tf

Pada umumnya:

  1. Sumber membuat Loader untuk Versi yang Dapat Dilayani.
  2. Loader dikirim sebagai Versi yang Dicita-citakan ke Manajer, yang memuat dan menyajikannya ke permintaan klien.

Lebih detail:

  1. Plugin Sumber membuat Loader untuk versi tertentu. Loader berisi metadata apa pun yang diperlukan untuk memuat Servable.
  2. Sumber menggunakan panggilan balik untuk memberi tahu Manajer tentang Versi yang Dicita-citakan.
  3. Manajer menerapkan Kebijakan Versi yang dikonfigurasi untuk menentukan tindakan selanjutnya yang harus diambil, yang dapat berupa membongkar versi yang dimuat sebelumnya atau memuat versi baru.
  4. Jika Manajer menentukan bahwa itu aman, itu memberi Loader sumber daya yang diperlukan dan memberi tahu Loader untuk memuat versi baru.
  5. Klien meminta Manajer untuk Servable, baik menentukan versi secara eksplisit atau hanya meminta versi terbaru. Manajer mengembalikan pegangan untuk Servable.

Misalnya, Sumber mewakili grafik TensorFlow dengan bobot model yang sering diperbarui. Bobot disimpan dalam file di disk.

  1. Sumber mendeteksi versi baru dari bobot model. Itu membuat Loader yang berisi pointer ke model data pada disk.
  2. Sumber memberi tahu Manajer Dinamis tentang Versi yang Dicita-citakan.
  3. Manajer Dinamis menerapkan Kebijakan Versi dan memutuskan untuk memuat versi baru.
  4. Dynamic Manager memberi tahu Loader bahwa ada cukup memori. Loader membuat instance grafik TensorFlow dengan bobot baru.
  5. Klien meminta pegangan ke versi model terbaru, dan Manajer Dinamis mengembalikan pegangan ke versi baru Servable.

Kemungkinan diperpanjang

TensorFlow Serving menyediakan beberapa titik ekstensi tempat Anda dapat menambahkan fungsionalitas baru.

Kebijakan Versi

Kebijakan Versi menentukan urutan pemuatan dan pembongkaran versi dalam satu aliran yang dapat ditayangkan.

TensorFlow Serving mencakup dua kebijakan yang mengakomodasi sebagian besar kasus penggunaan yang diketahui. Ini adalah Kebijakan Pelestarian Ketersediaan (hindari membiarkan nol versi dimuat; biasanya memuat versi baru sebelum membongkar yang lama), dan Kebijakan Pelestarian Sumber Daya (hindari dua versi dimuat secara bersamaan, sehingga membutuhkan dua kali lipat sumber daya; membongkar versi lama sebelum memuat yang baru). Untuk penggunaan TensorFlow Serving yang sederhana di mana ketersediaan penyajian model penting dan biaya sumber daya rendah, Kebijakan Pelestarian Ketersediaan akan memastikan bahwa versi baru dimuat dan siap sebelum membongkar yang lama. Untuk penggunaan TensorFlow Serving yang canggih, misalnya mengelola versi di beberapa instance server, Resource Preserving Policy memerlukan sumber daya paling sedikit (tidak ada buffer tambahan untuk memuat versi baru).

Sumber

Sumber Baru dapat mendukung sistem file baru, penawaran cloud, dan backend algoritme. TensorFlow Serving menyediakan beberapa blok penyusun umum untuk mempermudah & cepat membuat sumber baru. Misalnya, TensorFlow Serving menyertakan utilitas untuk menggabungkan perilaku polling di sekitar sumber sederhana. Sumber terkait erat dengan Loader untuk algoritme tertentu dan server hosting data.

Lihat dokumen Sumber Kustom untuk informasi selengkapnya tentang cara membuat Sumber kustom.

Pemuat

Loader adalah titik ekstensi untuk menambahkan algoritma dan backend data. TensorFlow adalah salah satu backend algoritma tersebut. Misalnya, Anda akan mengimplementasikan Loader baru untuk memuat, menyediakan akses, dan membongkar instance model pembelajaran mesin tipe baru yang dapat ditayangkan. Kami mengantisipasi pembuatan Loader untuk tabel pencarian dan algoritme tambahan.

Lihat dokumen Custom Servable untuk mempelajari cara membuat custom servable.

Batcher

Pengelompokan beberapa permintaan menjadi satu permintaan dapat secara signifikan mengurangi biaya melakukan inferensi, terutama dengan adanya akselerator perangkat keras seperti GPU. TensorFlow Serving menyertakan widget kumpulan permintaan yang memungkinkan klien dengan mudah mengelompokkan inferensi spesifik jenis mereka di seluruh permintaan menjadi permintaan batch yang dapat diproses oleh sistem algoritme dengan lebih efisien. Lihat Panduan Pengelompokan untuk informasi lebih lanjut.