Memecahkan masalah penerapan model Amazon SageMaker - Amazon SageMaker

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

Memecahkan masalah penerapan model Amazon SageMaker

Jika Anda mengalami masalah saat menerapkan model pembelajaran mesin di Amazon SageMaker, lihat panduan berikut.

Kesalahan Deteksi dalam CPU Hitungan Aktif

Jika Anda menerapkan SageMaker model dengan Linux Java Virtual Machine (JVM), Anda mungkin mengalami kesalahan deteksi yang mencegah penggunaan CPU sumber daya yang tersedia. Masalah ini mempengaruhi beberapa JVMs yang mendukung Java 8 dan Java 9, dan sebagian besar yang mendukung Java 10 dan Java 11. Ini JVMs menerapkan mekanisme yang mendeteksi dan menangani CPU hitungan dan memori maksimum yang tersedia saat menjalankan model dalam wadah Docker, dan, lebih umum, dalam taskset perintah Linux atau grup kontrol (cgroups). SageMakerpenerapan memanfaatkan beberapa pengaturan yang JVM digunakan untuk mengelola sumber daya ini. Saat ini, ini menyebabkan wadah salah mendeteksi jumlah yang tersediaCPUs.

SageMaker tidak membatasi akses ke CPUs pada sebuah instance. Namun, JVM mungkin mendeteksi CPU hitungan seperti 1 ketika lebih banyak CPUs tersedia untuk wadah. Akibatnya, JVM menyesuaikan semua pengaturan internalnya agar berjalan seolah-olah hanya 1 CPU inti yang tersedia. Pengaturan ini memengaruhi pengumpulan sampah, kunci, utas kompiler, dan JVM internal lainnya yang berdampak negatif pada konkurensi, throughput, dan latensi wadah.

Untuk contoh kesalahan deteksi, dalam wadah yang dikonfigurasi untuk SageMaker itu digunakan dengan JVM yang didasarkan pada Java8_191 dan yang memiliki empat tersedia CPUs pada instance, jalankan perintah berikut untuk memulai: JVM

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version

Ini menghasilkan output berikut:

active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Banyak yang JVMs terpengaruh oleh masalah ini memiliki opsi untuk menonaktifkan perilaku ini dan membangun kembali akses penuh ke semua yang ada CPUs di instance. Nonaktifkan perilaku yang tidak diinginkan dan buat akses penuh ke semua instance CPUs dengan memasukkan -XX:-UseContainerSupport parameter saat memulai aplikasi Java. Misalnya, jalankan java perintah untuk memulai Anda JVM sebagai berikut:

java -XX:-UseContainerSupport -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version

Ini menghasilkan output berikut:

active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Periksa apakah yang JVM digunakan dalam wadah Anda mendukung -XX:-UseContainerSupport parameter. Jika ya, selalu lewati parameter saat Anda memulaiJVM. Ini menyediakan akses ke semua yang ada CPUs di instans Anda.

Anda mungkin juga mengalami masalah ini saat secara tidak langsung menggunakan JVM dalam SageMaker wadah. Misalnya, saat menggunakan JVM untuk mendukung SparkMl Scala. -XX:-UseContainerSupportParameter juga mempengaruhi output yang dikembalikan oleh Java Runtime.getRuntime().availableProcessors() API.

Masalah dengan penerapan file model.tar.gz

Saat Anda menerapkan model menggunakan model.tar.gz file, tarball model tidak boleh menyertakan symlink apa pun. Symlink menyebabkan pembuatan model gagal. Selain itu, kami menyarankan Anda untuk tidak memasukkan file yang tidak perlu di tarball.

Kontainer primer tidak lulus pemeriksaan kesehatan ping

Jika wadah utama Anda gagal melakukan ping pemeriksaan kesehatan dengan pesan kesalahan berikut, ini menunjukkan bahwa ada masalah dengan penampung atau skrip Anda:

The primary container for production variant beta did not pass the ping health check. Please check CloudWatch Logs logs for this endpoint.

Untuk memecahkan masalah ini, Anda harus memeriksa CloudWatch log Log untuk titik akhir yang dimaksud untuk melihat apakah ada kesalahan atau masalah yang mencegah penampung merespons atau. /ping /invocations Log dapat memberikan pesan kesalahan yang dapat menunjukkan masalah. Setelah Anda mengidentifikasi alasan kesalahan dan kegagalan, Anda harus menyelesaikan kesalahan.

Ini juga merupakan praktik yang baik untuk menguji penerapan model secara lokal sebelum membuat titik akhir.

  • Gunakan mode lokal di SageMaker SDK untuk meniru lingkungan yang dihosting dengan menerapkan model ke titik akhir lokal. Untuk informasi selengkapnya, lihat Mode Lokal.

  • Gunakan perintah vanilla docker untuk menguji container merespons /ping dan /invocations. Untuk informasi selengkapnya, lihat local_test.