Host beberapa model dalam satu wadah di belakang satu titik akhir - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Host beberapa model dalam satu wadah di belakang satu titik akhir

Titik akhir multi-model memberikan solusi yang dapat diskalakan dan hemat biaya untuk menerapkan sejumlah besar model. Mereka menggunakan armada sumber daya yang sama dan wadah penyajian bersama untuk menampung semua model Anda. Ini mengurangi biaya hosting dengan meningkatkan pemanfaatan titik akhir dibandingkan dengan menggunakan titik akhir model tunggal. Ini juga mengurangi overhead penerapan karena Amazon SageMaker mengelola pemuatan model dalam memori dan menskalakannya berdasarkan pola lalu lintas ke titik akhir Anda.

Diagram berikut menunjukkan bagaimana titik akhir multi-model bekerja dibandingkan dengan titik akhir model tunggal.

Diagram yang menunjukkan bagaimana titik akhir multi-model menghosting model versus bagaimana titik akhir model tunggal menghosting model.

Titik akhir multi-model ideal untuk menghosting sejumlah besar model yang menggunakan kerangka kerja ML yang sama pada wadah penyajian bersama. Jika Anda memiliki campuran model yang sering dan jarang diakses, titik akhir multi-model dapat secara efisien melayani lalu lintas ini dengan sumber daya yang lebih sedikit dan penghematan biaya yang lebih tinggi. Aplikasi Anda harus toleran terhadap hukuman latensi terkait start dingin sesekali yang terjadi saat memanggil model yang jarang digunakan.

Titik akhir multi-model mendukung hosting model yang didukung CPU dan GPU. Dengan menggunakan model yang didukung GPU, Anda dapat menurunkan biaya penerapan model melalui peningkatan penggunaan titik akhir dan instans komputasi yang dipercepat yang mendasarinya.

Titik akhir multi-model juga memungkinkan pembagian waktu sumber daya memori di seluruh model Anda. Ini berfungsi paling baik ketika modelnya cukup mirip dalam ukuran dan latensi pemanggilan. Ketika ini terjadi, titik akhir multi-model dapat secara efektif menggunakan instance di semua model. Jika Anda memiliki model yang memiliki persyaratan transaksi per detik (TPS) atau latensi yang jauh lebih tinggi, kami sarankan untuk menghosting mereka di titik akhir khusus.

Anda dapat menggunakan endpoint multi-model dengan fitur-fitur berikut:

Anda tidak dapat menggunakan multi-model-enabled wadah dengan Amazon Elastic Inference.

Anda dapat menggunakan AWS SDK for Python (Boto) atau SageMaker konsol untuk membuat titik akhir multi-model. Untuk titik akhir multi-model yang didukung CPU, Anda dapat membuat titik akhir dengan kontainer yang dibuat khusus dengan mengintegrasikan pustaka Server Multi Model.

Algoritma, kerangka kerja, dan instance yang didukung

Untuk informasi tentang algoritme, kerangka kerja, dan jenis instance yang dapat Anda gunakan dengan titik akhir multi-model, lihat bagian berikut.

Algoritme, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model menggunakan instance yang didukung CPU

Wadah inferensi untuk algoritme dan kerangka kerja berikut mendukung titik akhir multi-model:

Untuk menggunakan kerangka kerja atau algoritme lain, gunakan toolkit SageMaker inferensi untuk membangun wadah yang mendukung titik akhir multi-model. Untuk informasi, lihat Bangun Container Anda Sendiri untuk Titik Akhir SageMaker Multi-Model.

Titik akhir multi-model mendukung semua jenis instans CPU.

Algoritme, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model menggunakan instans yang didukung GPU

Hosting beberapa model yang didukung GPU pada titik akhir multi-model didukung melalui server Inferensi SageMaker Triton. Ini mendukung semua kerangka inferensi utama seperti NVIDIA® TensorRT™,, PyTorch MXNet, Python, ONNX, XGBoost, scikit-learn,, OpenVINO, kustom C++, dan banyak lagi. RandomForest

Untuk menggunakan kerangka kerja atau algoritma lain, Anda dapat menggunakan backend Triton untuk Python atau C ++ untuk menulis logika model Anda dan melayani model kustom apa pun. Setelah server siap, Anda dapat mulai menerapkan 100-an model Deep Learning di belakang satu titik akhir.

Titik akhir multi-model mendukung jenis instans GPU berikut:

Keluarga instans Jenis instans vCPU GiB memori per vCPU GPU Memori GPU

p2

ml.p2.xlarge

4

15.25

1

12

p3

ml.p3.2xlarge

8

7.62

1

16

g5

ml.g5.xlarge

4

4

1

24

g5

ml.g5.2xbesar

8

4

1

24

g5

ml.g5.4xbesar

16

4

1

24

g5

ml.g5.8xbesar

32

4

1

24

g5

ml.g5.16xbesar

64

4

1

24

g4dn

ml.g4dn.xlarge

4

4

1

16

g4dn

ml.g4dn.2xbesar

8

4

1

16

g4dn

ml.g4dn.4xbesar

16

4

1

16

g4dn

ml.g4dn.8xlarge

32

4

1

16

g4dn

ml.g4dn.16xlarge

64

4

1

16

Contoh notebook untuk titik akhir multi-model

Untuk mempelajari lebih lanjut tentang cara menggunakan titik akhir multi-model, Anda dapat mencoba contoh buku catatan berikut:

Untuk petunjuk tentang cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh sebelumnya, lihat. SageMaker Instans SageMaker Notebook Amazon Setelah Anda membuat instance notebook dan membukanya, pilih tab SageMaker Contoh untuk melihat daftar semua SageMaker sampel. Notebook endpoint multi-model terletak di bagian ADVANCED FUNCTIONALITY. Untuk membuka buku catatan, pilih tab Use dan pilih Create copy.

Untuk informasi selengkapnya tentang kasus penggunaan untuk titik akhir multi-model, lihat blog dan sumber daya berikut:

Cara kerja titik akhir multi-model

SageMaker mengelola siklus hidup model yang dihosting pada titik akhir multi-model dalam memori wadah. Alih-alih mengunduh semua model dari bucket Amazon S3 ke penampung saat Anda membuat titik akhir, memuat dan menyimpannya SageMaker secara dinamis saat Anda memanggilnya. Ketika SageMaker menerima permintaan pemanggilan untuk model tertentu, ia melakukan hal berikut:

  1. Rutekan permintaan ke instance di belakang titik akhir.

  2. Mengunduh model dari bucket S3 ke volume penyimpanan instans tersebut.

  3. Memuat model ke memori kontainer (CPU atau GPU, tergantung pada apakah Anda memiliki instance yang didukung CPU atau GPU) pada instance komputasi yang dipercepat tersebut. Jika model sudah dimuat dalam memori penampung, pemanggilan lebih cepat karena SageMaker tidak perlu mengunduh dan memuatnya.

SageMaker terus merutekan permintaan untuk model ke instance di mana model sudah dimuat. Namun, jika model menerima banyak permintaan pemanggilan, dan ada contoh tambahan untuk titik akhir multi-model, SageMaker merutekan beberapa permintaan ke instance lain untuk mengakomodasi lalu lintas. Jika model belum dimuat pada instance kedua, model diunduh ke volume penyimpanan instance itu dan dimuat ke dalam memori penampung.

Ketika pemanfaatan memori instance tinggi dan SageMaker perlu memuat model lain ke dalam memori, itu membongkar model yang tidak digunakan dari wadah instance itu untuk memastikan bahwa ada cukup memori untuk memuat model. Model yang dibongkar tetap berada pada volume penyimpanan instans dan dapat dimuat ke dalam memori kontainer nanti tanpa diunduh lagi dari bucket S3. Jika volume penyimpanan instans mencapai kapasitasnya, SageMaker hapus model yang tidak terpakai dari volume penyimpanan.

Untuk menghapus model, hentikan pengiriman permintaan dan hapus dari bucket S3. SageMaker menyediakan kemampuan titik akhir multi-model dalam wadah penyajian. Menambahkan model ke, dan menghapusnya dari, titik akhir multi-model tidak memerlukan pembaruan titik akhir itu sendiri. Untuk menambahkan model, Anda mengunggahnya ke bucket S3 dan memanggilnya. Anda tidak perlu perubahan kode untuk menggunakannya.

catatan

Saat Anda memperbarui titik akhir multi-model, permintaan pemanggilan awal pada titik akhir mungkin mengalami latensi yang lebih tinggi karena Smart Routing di titik akhir multi-model beradaptasi dengan pola lalu lintas Anda. Namun, setelah mempelajari pola lalu lintas Anda, Anda dapat mengalami latensi rendah untuk model yang paling sering digunakan. Model yang jarang digunakan mungkin menimbulkan beberapa latensi start dingin karena model dimuat secara dinamis ke sebuah instance.

Mengatur SageMaker perilaku caching model titik akhir multi-model

Secara default, multi-model endpoint cache sering menggunakan model dalam memori (CPU atau GPU, tergantung pada apakah Anda memiliki instance yang didukung CPU atau GPU) dan pada disk untuk memberikan inferensi latensi rendah. Model cache dibongkar dan/atau dihapus dari disk hanya ketika wadah kehabisan memori atau ruang disk untuk mengakomodasi model yang baru ditargetkan.

Anda dapat mengubah perilaku caching dari titik akhir multi-model dan secara eksplisit mengaktifkan atau menonaktifkan caching model dengan menyetel parameter saat Anda memanggil create_model. ModelCacheSetting

Kami merekomendasikan pengaturan nilai ModelCacheSetting parameter Disabled untuk kasus penggunaan yang tidak mendapat manfaat dari caching model. Misalnya, ketika sejumlah besar model perlu dilayani dari titik akhir tetapi setiap model dipanggil hanya sekali (atau sangat jarang). Untuk kasus penggunaan seperti itu, mengatur nilai ModelCacheSetting parameter untuk Disabled memungkinkan transaksi per detik (TPS) yang lebih tinggi untuk invoke_endpoint permintaan dibandingkan dengan mode caching default. TPS yang lebih tinggi dalam kasus penggunaan ini adalah karena SageMaker melakukan hal berikut setelah invoke_endpoint permintaan:

  • Secara asinkron menurunkan model dari memori dan menghapusnya dari disk segera setelah dipanggil.

  • Memberikan konkurensi yang lebih tinggi untuk mengunduh dan memuat model dalam wadah inferensi. Untuk titik akhir yang didukung CPU dan GPU, konkurensi merupakan faktor dari jumlah vCPU dari instance container.

Untuk pedoman tentang memilih tipe instans SageMaker ML untuk titik akhir multi-model, lihat. Rekomendasi instans untuk penerapan titik akhir multi-model

Rekomendasi instans untuk penerapan titik akhir multi-model

Ada beberapa item yang perlu dipertimbangkan saat memilih jenis instans SageMaker ML untuk titik akhir multi-model:

  • Menyediakan kapasitas Amazon Elastic Block Store (Amazon EBS) yang memadai untuk semua model yang perlu dilayani.

  • Menyeimbangkan kinerja (meminimalkan start dingin) dan biaya (jangan terlalu menyediakan kapasitas instans). Untuk informasi tentang ukuran volume penyimpanan yang SageMaker dilampirkan untuk setiap jenis instans untuk titik akhir dan titik akhir multi-model, lihat. Volume penyimpanan instance host

  • Untuk wadah yang dikonfigurasi untuk berjalan dalam MultiModel mode, volume penyimpanan yang disediakan untuk instansnya lebih besar dari mode default. SingleModel Hal ini memungkinkan lebih banyak model untuk di-cache pada volume penyimpanan instance daripada dalam SingleModel mode.

Saat memilih jenis instans SageMaker ML, pertimbangkan hal berikut:

  • Titik akhir multi-model saat ini didukung untuk semua jenis instans CPU dan pada tipe instans GPU tunggal.

  • Untuk distribusi lalu lintas (pola akses) ke model yang ingin Anda host di belakang titik akhir multi-model, bersama dengan ukuran model (berapa banyak model yang dapat dimuat dalam memori pada instance), ingatlah informasi berikut:

    • Pikirkan jumlah memori pada instance sebagai ruang cache untuk model yang akan dimuat, dan pikirkan jumlah vCPU sebagai batas konkurensi untuk melakukan inferensi pada model yang dimuat (dengan asumsi bahwa memanggil model terikat ke CPU).

    • Untuk instance yang didukung CPU, jumlah vCPU memengaruhi pemanggilan persetujuan maksimum Anda per instance (dengan asumsi bahwa memanggil model terikat ke CPU). Jumlah vCPU yang lebih tinggi memungkinkan Anda untuk memanggil model yang lebih unik secara bersamaan.

    • Untuk instans yang didukung GPU, jumlah instans dan memori GPU yang lebih tinggi memungkinkan Anda memuat lebih banyak model dan siap melayani permintaan inferensi.

    • Untuk instance yang didukung CPU dan GPU, sediakan beberapa memori “slack” sehingga model yang tidak digunakan dapat dibongkar, dan terutama untuk titik akhir multi-model dengan beberapa instance. Jika instance atau Availability Zone gagal, model pada instance tersebut akan dialihkan ke instance lain di belakang titik akhir.

  • Tentukan toleransi Anda terhadap waktu pemuatan/pengunduhan:

    • Keluarga tipe instance d (misalnya, m5d, c5d, atau r5d) dan g5s dilengkapi dengan SSD NVMe (non-volatile memory express), yang menawarkan kinerja I/O tinggi dan mungkin mengurangi waktu yang diperlukan untuk mengunduh model ke volume penyimpanan dan wadah memuat model dari volume penyimpanan.

    • Karena tipe instans d dan g5 dilengkapi dengan penyimpanan SSD NVMe, SageMaker tidak melampirkan volume penyimpanan Amazon EBS ke instans komputasi ML ini yang menampung titik akhir multi-model. Penskalaan otomatis bekerja paling baik ketika model berukuran sama dan homogen, yaitu ketika mereka memiliki latensi inferensi dan persyaratan sumber daya yang serupa.

Anda juga dapat menggunakan panduan berikut untuk membantu Anda mengoptimalkan pemuatan model pada titik akhir multi-model Anda:

Memilih jenis instance yang tidak dapat menampung semua model yang ditargetkan dalam memori

Dalam beberapa kasus, Anda dapat memilih untuk mengurangi biaya dengan memilih jenis instans yang tidak dapat menyimpan semua model yang ditargetkan dalam memori sekaligus. SageMaker secara dinamis membongkar model ketika kehabisan memori untuk memberi ruang bagi model yang baru ditargetkan. Untuk model yang jarang diminta, Anda mengorbankan latensi beban dinamis. Dalam kasus dengan kebutuhan latensi yang lebih ketat, Anda dapat memilih jenis instans yang lebih besar atau lebih banyak instance. Menginvestasikan waktu di muka untuk pengujian dan analisis kinerja membantu Anda untuk memiliki penerapan produksi yang sukses.

Mengevaluasi hits cache model Anda

CloudWatch Metrik Amazon dapat membantu Anda mengevaluasi model Anda. Untuk informasi selengkapnya tentang metrik yang dapat Anda gunakan dengan titik akhir multi-model, lihat. CloudWatch Metrik untuk Penerapan Titik Akhir Multi-Model

Anda dapat menggunakan Average statistik ModelCacheHit metrik untuk memantau rasio permintaan di mana model sudah dimuat. Anda dapat menggunakan SampleCount statistik untuk ModelUnloadingTime metrik untuk memantau jumlah permintaan pembongkaran yang dikirim ke kontainer selama periode waktu tertentu. Jika model dibongkar terlalu sering (indikator thrashing, di mana model sedang dibongkar dan dimuat lagi karena tidak ada ruang cache yang tidak mencukupi untuk set model yang berfungsi), pertimbangkan untuk menggunakan tipe instance yang lebih besar dengan lebih banyak memori atau meningkatkan jumlah instance di belakang titik akhir multi-model. Untuk titik akhir multi-model dengan beberapa instance, ketahuilah bahwa model mungkin dimuat pada lebih dari 1 instance.