View a markdown version of this page

Masalah penyebaran Prefill and Decode (DPD) terpilah - Amazon SageMaker AI

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

Masalah penyebaran Prefill and Decode (DPD) terpilah

Ikhtisar: Masalah umum yang dapat terjadi saat menerapkan titik akhir inferensi dengan Disaggregated Prefill and Decode (DPD). Masalah-masalah ini biasanya melibatkan startup pod, transfer cache KV, perilaku routing, atau alokasi sumber daya.

Masalah startup pod

Masalah: Pod DPD gagal memulai atau tetap dalam keadaan tidak siap.

Gejala dan resolusi:

  • Pod terjebak ContainerCreating selama lebih dari 10 menit. Jalankan kubectl describe pod <pod-name> dan cari Failed to pull image atauMountVolume.SetUp failed. Pastikan image pekerja ada dan bucket Amazon S3 dapat diakses dari cluster.

  • Pod macet di 2/3 Ready. Pekerja VllM masih memuat model. Llama 3.3 70B membutuhkan waktu 5-10 menit dari pengambilan Amazon S3 yang dingin. Periksa kemajuan:

    kubectl logs <pod-name> -c <prefill|decode>-<endpoint-name> | grep -i "engine\|loading"

    Tunggu pesan log yang menunjukkan mesin sudah siap.

  • Pod dimulai ulang dengan EngineDeadError atauTimeoutError. Ini menunjukkan versi operator yang lebih tua dari v3.2. Tingkatkan operator inferensi sebelum melanjutkan.

  • Semua permintaan HTTP mengembalikan 503 segera setelah penerapan. Pod masih memuat model. Tunggu InferenceEndpointConfig statusnya mencapaiDeploymentComplete:

    kubectl get inferenceendpointconfig <endpoint-name> -n <namespace> -w

Masalah transfer cache KV

Masalah: Transfer cache KV antara pod prefill dan decode gagal atau berkinerja buruk.

Gejala dan resolusi:

  • Log dekoder ditampilkan. Retrieved 0 out of N required tokens Transfer KV tidak terjadi dan decoder kembali ke perhitungan ulang lokal. Verifikasi pd_role apakah sudah benar (prefiller harussender, decoder harusreceiver), kedua pod menggunakan image pekerja yang sama, dan PYTHONHASHSEED disetel ke "0" kedua pod.

  • Log dekoder menunjukkan Failed to allocate memory object, retrying... Buffer PD dekoder penuh di bawah konkurensi tinggi. Baik kenaikan PD_BUFFER_SIZE (coba "17179869184" untuk 16 GiB atau "34359738368" 32 GiB) atau skala. decodingSpec.replicas

  • Throughput transfer KV di bawah 1. GB/s EFA tidak digunakan dan transfer jatuh kembali ke CPU. Verifikasi bahwa kedua pod dijadwalkan pada EFA-capable node di Availability Zone yang sama, bahwa node memiliki sumber daya EFA available (kubectl describe node <node-name> | grep efa), dan image pekerja menyertakan penyedia libfabric EFA.

Masalah perutean

Masalah: Permintaan tidak dirutekan dengan benar antara pod prefill dan decode.

Gejala dan resolusi:

  • Semua permintaan melewati prefiller (bahkan prompt panjang). Periksa log router untuk keputusan perutean:

    ROUTER_POD=$(kubectl get pods -n hyperpod-inference-system -o name | grep router | head -1) kubectl logs $ROUTER_POD -n hyperpod-inference-system -c router-container --tail=50 \ | grep "Conditional routing"

    Verifikasi estimated_tokens nilainya melebihi nilai AndaroutingThreshold. Jika estimasi token lebih rendah dari yang diharapkan, tokenizer router mungkin menghitung secara berbeda — coba turunkan. routingThreshold

  • Distribusi beban yang tidak merata di seluruh prefiller. Jika Anda memiliki beberapa replika prefiller dan mengamati bahwa satu kelebihan beban sementara yang lain menganggur, alihkan strategi perutean ke distribusi merata. roundrobin Atau, gunakan kvaware untuk distribusi sadar cache yang memperhitungkan status aktual dari setiap prefiller.