Saya mendapatkan tingkat pemanfaatan yang sama ketika saya melatih model menggunakan Tensorflow. Alasannya cukup jelas dalam kasus saya, saya secara manual memilih batch sampel acak dan memanggil optimasi untuk setiap batch secara terpisah.
Itu berarti bahwa setiap kumpulan data berada dalam memori utama, kemudian disalin ke memori GPU di mana sisa model berada, kemudian perbanyakan maju / mundur dan pembaruan dilakukan dalam-GPU, kemudian eksekusi diserahkan kembali ke kode saya di mana saya ambil batch lain dan panggilan optimalkan di atasnya.
Ada cara yang lebih cepat untuk melakukannya jika Anda menghabiskan beberapa jam menyiapkan Tensorflow untuk melakukan pemuatan batch secara paralel dari catatan TF yang telah disiapkan sebelumnya.
Saya menyadari Anda mungkin atau mungkin tidak menggunakan tensorflow di bawah keras, tetapi karena pengalaman saya cenderung menghasilkan angka pemanfaatan yang sangat mirip, saya pergi mengambil risiko dengan menyarankan bahwa ada hubungan sebab akibat yang cukup mungkin untuk menarik dari korelasi ini. Jika kerangka kerja Anda memuat setiap batch dari memori utama ke dalam GPU tanpa menambah efisiensi / kompleksitas pemuatan asinkron (yang dapat ditangani sendiri oleh GPU), maka ini akan menjadi hasil yang diharapkan.