View a markdown version of this page

Memecahkan masalah SageMaker penerapan model Amazon AI - Amazon SageMaker AI

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

Memecahkan masalah SageMaker penerapan model Amazon AI

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

Kesalahan Deteksi dalam Hitungan CPU Aktif

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

SageMaker AI tidak membatasi akses ke CPU pada instance. Namun, JVM mungkin mendeteksi jumlah CPU 1 saat lebih banyak CPU tersedia untuk wadah. Akibatnya, JVM menyesuaikan semua pengaturan internalnya untuk berjalan seolah-olah hanya inti 1 CPU yang tersedia. Pengaturan ini memengaruhi pengumpulan sampah, kunci, utas kompiler, dan internal JVM lainnya yang secara negatif mempengaruhi konkurensi, throughput, dan latensi wadah.

Sebagai contoh kesalahan deteksi, dalam wadah yang dikonfigurasi untuk SageMaker AI yang digunakan dengan JVM yang didasarkan pada Java8_191 dan yang memiliki empat CPU yang tersedia pada instance, jalankan perintah berikut untuk memulai JVM Anda:

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 JVM yang terpengaruh oleh masalah ini memiliki opsi untuk menonaktifkan perilaku ini dan membangun kembali akses penuh ke semua CPU pada instance. Nonaktifkan perilaku yang tidak diinginkan dan buat akses penuh ke semua CPU instance dengan menyertakan -XX:-UseContainerSupport parameter saat memulai aplikasi Java. Misalnya, jalankan java perintah untuk memulai JVM Anda 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 JVM yang digunakan dalam wadah Anda mendukung -XX:-UseContainerSupport parameter. Jika ya, selalu berikan parameter saat Anda memulai JVM Anda. Ini menyediakan akses ke semua CPU di instans Anda.

Anda mungkin juga mengalami masalah ini saat secara tidak langsung menggunakan JVM dalam wadah SageMaker AI. 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. Juga, kami menyarankan Anda untuk tidak memasukkan file yang tidak perlu di tarball.

Wadah utama tidak lulus pemeriksaan kesehatan ping

Jika wadah utama Anda gagal melakukan pemeriksaan kesehatan ping dengan pesan kesalahan berikut, ini menunjukkan bahwa ada masalah dengan wadah 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 wadah merespons /ping atau/invocations. Log dapat memberikan pesan kesalahan yang dapat menunjukkan masalah. Setelah Anda mengidentifikasi kesalahan dan alasan 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 penampung merespons /ping dan /invocations. Untuk informasi selengkapnya, lihat local_test.