Haruskah saya menggunakan GPU atau CPU untuk inferensi?

11

Saya menjalankan jaringan saraf pembelajaran yang dalam yang telah dilatih oleh GPU. Saya sekarang ingin menyebarkan ini ke beberapa host untuk inferensi. Pertanyaannya adalah apa syarat untuk memutuskan apakah saya harus menggunakan GPU atau CPU untuk inferensi?


Menambahkan lebih banyak detail dari komentar di bawah.

Saya baru dalam hal ini sehingga panduan sangat dihargai.

  • Memori : GPU adalah K80

  • Kerangka kerja : Cuda dan cuDNN

  • Ukuran data per beban kerja : 20G

  • Komputasi node untuk dikonsumsi : satu per pekerjaan, meskipun ingin mempertimbangkan opsi skala

  • Biaya : Saya mampu membeli opsi GPU jika alasannya masuk akal

  • Penerapan : Berjalan di server bare metal yang di-host sendiri, bukan di cloud.

Saat ini saya menggunakan CPU hanya karena aplikasi berjalan ok. Tetapi di luar alasan itu, saya tidak yakin mengapa orang akan mempertimbangkan GPU.

Dan
sumber
Untuk saran tentang perbandingan antara dua pendekatan potensial, akan sangat membantu bagi orang lain untuk mengetahui beberapa detail dari tugas Anda. Misalnya, berapa ukuran data Anda, berapa kapasitas memori GPU Anda, jumlah node komputasi yang Anda rencanakan untuk digunakan dan mungkin juga kerangka pengurangan peta apa yang Anda miliki.
Dynamic Stardust
@DynamicStardust ... dan biayanya. Node CPU EC2 murah atau Node GPU ECW yang mahal? Ini pertanyaan yang terlalu samar.
Spacedman

Jawaban:

7

@Dan @SmallChess, saya tidak sepenuhnya setuju. Memang benar bahwa untuk pelatihan banyak paralisasi dapat dieksploitasi oleh GPU, sehingga menghasilkan pelatihan yang jauh lebih cepat. Untuk Inference, parallalization ini bisa jauh lebih sedikit, namun CNN masih akan mendapatkan keuntungan dari ini sehingga menghasilkan inferensi yang lebih cepat. Sekarang Anda hanya perlu bertanya pada diri sendiri: apakah kesimpulan yang lebih cepat itu penting? Apakah saya ingin ini dependensi tambahan (GPU yang bagus, file yang tepat diinstal dll)?

Jika kecepatan bukan masalah, gunakan CPU. Namun perhatikan bahwa GPU dapat membuat urutan besarnya lebih cepat dalam pengalaman saya.

Laurens Meeus
sumber
Poin menarik yang Anda ajukan, mengapa CNN mendapat manfaat dari pemrosesan paralel selama inferensi?
Dan
1
Dengan pelatihan, perhitungan paralel mungkin jelas: Anda memiliki beberapa input, yang masing-masing harus diteruskan umpan, benar-benar independen satu sama lain. Untuk konvolusi, kernel dikalikan beberapa input 'tambalan'. Ini dapat dilakukan secara paralel juga. Itulah yang membuat CNN begitu kuat: mereka tidak hanya membutuhkan lebih sedikit parameter untuk dilatih, tetapi juga lebih paralel, sehingga membuat GPU jadi lebih kuat. Saya tidak tahu apa yang Anda kerjakan, tetapi saya bekerja pada segmentasi (klasifikasi pixelwise) gambar dan ketika menggunakan GPU untuk inferensi saya mendapatkan peningkatan kecepatan yang sangat besar (> x10).
Laurens Meeus
@LaurensMeeus Saya juga baru dalam spektrum ini dan sedang melakukan analisis biaya VM cloud. Apakah saya masih menggunakan GPU untuk pelatihan jika saya hanya melatih analisis teks dan bukan gambar?
Squ1rr3lz
1
@ Squ1rr3lz saya 95% Anda harus. Setiap bentuk komputasi paralel harus mendapatkan keunggulan pada GPU. Saya bukan ahli dalam bidang ini, tetapi mengingat bahwa analisis teks juga dengan lapisan konvolusional (baik itu 1D bukan 2D), ini sudah menjadi salah satu alasan ia bisa / harus lebih cepat. Jika mungkin, coba saja sendiri apa pengaruh yang memungkinkan / menonaktifkan GPU.
Laurens Meeus
5

Menjalankan inferensi pada GPU alih-alih CPU akan memberi Anda mendekati kecepatan yang sama seperti saat latihan, lebih sedikit ke overhead memori.

Namun, seperti yang Anda katakan, aplikasi berjalan oke di CPU. Jika Anda sampai pada titik di mana kecepatan inferensi menjadi hambatan dalam aplikasi, peningkatan ke GPU akan mengurangi hambatan itu.

mpotma
sumber
Setuju. Masih belum mengerti mengapa pos CPU di atasnya.
Laurens Meeus
1
GeForce GTX Titan X memberikan kinerja antara 5,3 dan 6,7 kali lebih tinggi daripada CPU Intel Xeon E5 16-core - yang jauh lebih rendah daripada kecepatan yang dicapai selama pelatihan - dari blog NVidia sendiri: devblogs.nvidia.com/…
seanhalle
4

Anda hanya akan menggunakan GPU untuk pelatihan karena pembelajaran yang mendalam membutuhkan perhitungan besar untuk sampai pada solusi optimal. Namun, Anda tidak perlu mesin GPU untuk penyebaran .

Mari kita ambil iPhone X Apple yang baru sebagai contoh. IPhone X yang baru memiliki algoritma pembelajaran mesin canggih untuk pendeteksian wajah. Karyawan Apple harus memiliki sekelompok mesin untuk pelatihan dan validasi. Tetapi iPhone X Anda tidak membutuhkan GPU untuk menjalankan model.

Halo Dunia
sumber
Terima kasih untuk penjelasannya. Yang tidak saya mengerti adalah mengapa Nvidia mempromosikan penggunaan GPU karena ada solusi terbaik untuk kesimpulan jika CPU dapat melakukannya dengan baik. Juga mengapa Google juga mendorong TPU untuk kesimpulan jika mereka melakukan semuanya dengan CPU? Apakah ada hubungannya dengan komputasi paralel?
Dan
3
@SmallChess tidak IPhone X memiliki beberapa prosesor TPU-seperti canggih di dalamnya murni untuk inferensi? extremetech.com/mobile/…
Laurens Meeus
3
@Challalless Tapi mengapa tidak? Mungkin saya hanya tidak sepenuhnya mengerti. Tidakkah Anda masih mendapatkan peningkatan kecepatan?
Laurens Meeus
2
Sejujurnya, NVidia memiliki departemen pemasaran yang fantastis, dan demi kepentingan terbaik mereka untuk mempromosikan penggunaan GPU NVidia sebagai kesimpulan. Itu demi kepentingan terbaik mereka, bukan milikmu.
seanhalle
1
Dari blog NVidia: "258 vs 242 gambar / detik" untuk NVIDIA Tegra X1 vs i7 6700K CPU saat melakukan inferensi: devblogs.nvidia.com/…
seanhalle