Kategori: Derleme Süresi: Ana Bilgisayar Yükünü Boşaltma Çıkışı Uyuşmazlığı
Bu hata, ana makine belleğine açıkça boşaltılan bir tensör program çıkışı olarak döndürüldüğünde ancak programın çıkış imzası ana makine belleğini bekleyecek şekilde yapılandırılmadığında oluşur.
Örnek Hata Mesajları:
INVALID_ARGUMENT: Tensor which is moved to host (starting from tuple.64) is returned from the entry computation but the layout for this output is not set to host memory.
XLA Arka Uçları: TPU, GPU
Genel Bakış
Derleyici, bir Tensor'ü ana makineye (CPU) yük aktarma ek açıklamasıyla karşılaştığında, üç olaydan biri gerçekleşene kadar hesaplama grafiği aracılığıyla Tensor'ün konumunu izler:
- Cihaza Taşıma: Eşleşen bir ek açıklama, tensörü hızlandırıcıya geri taşır.
- Ana Bilgisayar Hesaplaması: Tensör, ana bilgisayar tarafındaki bir işlem tarafından kullanılır.
- Program Sonu: Tensör, programın sonuna ulaşır ve çıkış haline gelir.
Bu hata, 3 numaralı senaryoda tetiklenir. Tensör, yürütmenin sonunda fiziksel olarak ana makine belleğinde bulunur ancak XLA programının giriş hesaplama imzası, bu belirli çıkışın Cihaz Belleği'nde bulunduğunu tanımlar. Derleyici, giriş hesaplamasının arayüzünü örtülü olarak değiştiremediğinden hata verir.
Hata ayıklama
Bu hatayı çözmek için bu tensörün ana makinede çıkış olarak kullanılmasının mı amaçlandığını yoksa döndürülmeden önce cihaza geri taşınması mı gerektiğini belirleyin.
Ana makineye döndürülmesi amaçlanmıştır: Bu tensörün ana makine belleğinde döndürülmesini (cihaza geri aktarımı önleyerek) istiyorsanız bu belirli çıkış için giriş hesaplamasının çıkış bellek alanını açıkça Ana Makine Belleği olarak ayarlamanız gerekir.
Cihaza geri dönmesi amaçlanmış: Tensor'un program sona ermeden önce cihazda kalması veya cihaza geri dönmesi gerekiyorsa büyük ihtimalle bir açıklama eklemeyi unutmuşsunuzdur. Tensörü cihaza geri taşımak için eşleşen bir ek açıklama ekleyin.
Yükü boşaltılan tensörün kaynağı net değilse veya "cihaza taşı" açıklamasının nerede eksik olduğunu bulamıyorsanız talimatları izlemek için XLA günlük kaydını kullanın.
- Günlüğü etkinleştirme: Google Cloud TPU kullanıyorsanız programınızı
--vmodule=host_offloader=1işaretiyle yeniden çalıştırın. - Günlükleri analiz edin: Günlüklerde "izleme" çıkışını bulun. Bu, boşaltma talimatından başlayarak tensörün yolunu gösterir. Bu işlevi kullanarak tensörün, cihaza geri taşınmadan program sınırına tam olarak nerede ulaştığını belirleyebilirsiniz.