Rumah >Peranti teknologi >AI >Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

WBOY
WBOYke hadapan
2023-04-12 18:55:101542semak imbas

Perkongsian ini akan menganalisis secara sistematik kesesakan prestasi utama dalam proses latihan model AI, serta penyelesaian pecutan utama semasa dan prinsip teknikal untuk kesesakan ini, dan memperkenalkan beberapa hasil praktikal Baidu Intelligent Cloud dalam hal ini.

Perkongsian hari ini terutamanya terdiri daripada tiga bahagian:

Perkenalkan dahulu mengapa kita perlu mempercepatkan latihan AI, iaitu, apakah latar belakang keseluruhan dan titik permulaan

Bahagian 2 Kami akan menganalisis secara sistematik kesesakan prestasi yang mungkin dihadapi semasa proses latihan sebenar, dan kemudian memperkenalkan penyelesaian pecutan utama semasa untuk menangani masalah ini

Bahagian ketiga memperkenalkan pecutan latihan AI platform Baidu Baige; Kesan praktikal pakej AIAK-Training pada beberapa pecutan latihan model.

1. Mengapa latihan AI dipercepatkan?

Dalam sistem AI, proses daripada pengeluaran kepada penggunaan model secara amnya merangkumi dua peringkat: latihan luar talian dan penggunaan inferens.

Fasa latihan luar talian ialah proses menjana model Pengguna perlu menyediakan set data dan algoritma rangkaian saraf yang diperlukan untuk melatih model mengikut senario tugas mereka sendiri.

Algoritma boleh difahami sebagai fungsi matematik bukan cembung yang sangat kompleks, yang merangkumi banyak pembolehubah dan parameter. Proses latihan model sebenarnya mempelajari parameter dalam model rangkaian saraf.

Selepas latihan model bermula, data akan dibaca, kemudian dihantar ke model untuk pengiraan hadapan, dan ralat dengan nilai sebenar akan dikira. Kemudian lakukan pengiraan terbalik untuk mendapatkan kecerunan parameter, dan akhirnya mengemas kini parameter. Latihan melibatkan berbilang pusingan lelaran data.

Selepas latihan selesai, kami akan menyimpan model terlatih, kemudian menggunakan model dalam talian, menerima input sebenar pengguna dan melengkapkan inferens melalui pengiraan hadapan.

Oleh itu, sama ada latihan atau inferens, terasnya ialah pengiraan data. Untuk mempercepatkan kecekapan pengkomputeran, latihan dan inferens biasanya dilakukan melalui cip pecutan heterogen seperti GPU.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Selain itu, berdasarkan sejarah perkembangan model pembelajaran mendalam, untuk terus menembusi had atas ketepatan model, bilangan parameter model sebenarnya semakin berkembang dengan pantas. Walau bagaimanapun, bilangan parameter yang lebih besar akan membawa kerumitan pengiraan yang lebih besar.

Sebelah kiri rajah di bawah diambil daripada kertas awam Daripada ringkasan ini, kita melihat bahawa sebelum 2010, jumlah pengiraan model itu meningkat dua kali ganda dalam masa kira-kira 20 bulan. Dari 2010 hingga 2015, pengiraan model konvensional meningkat dua kali ganda setiap 5-6 bulan. Selepas 2015, trend latihan model besar muncul, dan jumlah pengiraan meningkat sebanyak 10 hingga 100 kali ganda.

Latihan model mempunyai keperluan yang semakin tinggi untuk kuasa dan infrastruktur pengkomputeran Latihan memerlukan lebih banyak kuasa pengkomputeran dan mengambil masa yang lebih lama, yang juga membawa kepada lebih banyak kos sumber. Di sini kami menyenaraikan data kos yang didedahkan dalam beberapa kertas kerja atau kajian, yang menggambarkan bahawa kos latihan model adalah sangat tinggi.

Oleh itu, cara menjalankan latihan model secara stabil dan cara mengurangkan kos secara berterusan dan meningkatkan kecekapan sebenarnya adalah penting.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Dalam konteks ini, Baidu Intelligent Cloud melancarkan platform pengkomputeran heterogen Baidu Baige·AI, dengan matlamat menyediakan penyelesaian perisian dan perkakasan bersepadu untuk senario AI. Melalui susunan teknologi empat lapisan pengkomputeran AI, storan AI, pecutan AI dan bekas AI, ia memenuhi keperluan senario perniagaan peringkat atasan.

  • Lapisan pengkomputeran AI menyediakan GPU berprestasi tinggi, Kunlun dan sumber cip heterogen lain, serta rangkaian RDMA atau IB berprestasi tinggi, serta komputer AI super X yang dibangunkan sendiri -MAN, dsb.;
  • Lapisan storan AI, termasuk penyimpanan objek BOS untuk memenuhi keperluan storan tasik data, dan sistem fail selari berprestasi tinggi yang direka khas untuk AI
  • pecutan AI lapisan, termasuk suite pecutan storan tasik data RapidFS, suite pecutan latihan AI AIAK-Training, suite pecutan inferens AI AIAK-Inference
  • Lapisan kontena AI, iaitu lapisan penjadualan sumber, menggunakan keupayaan teknikal asli awan untuk; memenuhi penjadualan fleksibel bagi keperluan GPU, AI, dsb. Kandungan AI asli awan telah dikongsi khas dalam kelas terbuka teknikal terakhir kami.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Apabila kita memikirkan tentang pecutan prestasi, perkara pertama yang terlintas di fikiran mungkin ialah menggunakan perkakasan yang lebih baik.

Ini akan membawa peningkatan prestasi tertentu, tetapi dalam kebanyakan kes ia mungkin tidak menggunakan sepenuhnya kuasa pengkomputeran perkakasan Sebab utama ialah kecekapan pelaksanaan kod latihan belum dilaraskan kepada optimum atau lebih baik negeri.

  • Pertama sekali, untuk serasi dengan lebih banyak keperluan, rangka kerja secara amnya menyediakan beberapa keupayaan pengoptimuman yang lebih umum, memberi lebih perhatian kepada kemudahan penggunaan, pembinaan ekologi, dsb.
  • Kedua , jurutera algoritma Apabila mereka bentuk algoritma, tumpuan teras adalah pada cara meningkatkan ketepatan model, dan perhatian yang tidak mencukupi diberikan kepada kecekapan prestasi Dalam sesetengah kes, beberapa keupayaan pengoptimuman umum yang disediakan oleh rangka kerja tidak digunakan.

Oleh itu, apabila kami memutuskan untuk menggunakan algoritma model tertentu, untuk mencapai kecekapan sumber dan kecekapan latihan yang lebih baik, kami perlu mengoptimumkannya secara sedar. Walau bagaimanapun, terdapat juga banyak cabaran teknikal di sini:

  • Terdapat banyak faktor yang mempengaruhi prestasi, yang perlu dianalisis mengikut ciri-ciri operasi model yang berbeza. Tiada penyelesaian pengoptimuman tetap sepenuhnya >
  • Keperluan pengoptimuman prestasi Memahami prinsip pelaksanaan kejuruteraan Contohnya, apabila kami melakukan pengoptimuman pengkomputeran cip heterogen, kami memerlukan pengalaman R&D heterogen profesional untuk melaksanakannya, dan ambang teknikalnya agak tinggi >Terdapat juga kes apabila kami melakukan latihan teragih, mungkin juga perlu untuk menggabungkan perkakasan kluster dan topologi rangkaian untuk mengoptimumkan isu kebolehskalaan dalam senario latihan teragih.
  • Cabaran ini telah banyak mempengaruhi penalaan prestasi latihan model, jadi kami melancarkan suite pecutan AIAK-Training, dengan harapan dapat mengurangkan kos pengoptimuman melalui antara muka abstrak dan mudah digunakan, dan melalui perisian dan kerjasama perkakasan Kaedah pengoptimuman untuk mempercepatkan sepenuhnya prestasi latihan model pelanggan pada Baidu Smart Cloud.

2. Analisis overhed prestasi latihan dan penyelesaian pecutan Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Sebelum memperkenalkan kesan khusus Latihan AIAK, kami mula-mula memperkenalkan isu utama di bawah topik pecutan latihan Apakah idea teknikal dan prinsip program?

Oleh kerana pengoptimuman latihan model itu sendiri ialah kerja perisian dan perkakasan yang komprehensif, dan susunan teknologinya agak rumit, kandungan hari ini pasti tidak akan dapat merangkumi semua butirannya idea.

Pertama, mari kita lihat penyelesaian latihan model semasa. Dalam peringkat pembangunan yang lalu, terdapat dua perubahan utama dalam penyelesaian latihan model Satu ialah perubahan daripada latihan kad tunggal kepada latihan teragih, dan satu lagi ialah perubahan daripada latihan selari data kepada latihan selari hibrid berbilang dimensi. Titik pemanduan teras di sini ialah jumlah data latihan dan jumlah parameter model.

Kaedah latihan kad tunggal: Apabila sebenarnya menggunakan mod ini, jumlah parameter dan data model secara amnya agak kecil, dan masa latihan bagi satu kad boleh diterima. Skala parameter model perlu memastikan bahawa memori video satu kad boleh memenuhi had atas storan semasa proses latihan. Mengikut konfigurasi kapasiti memori video kad GPU baharu, saiz maksimum yang boleh diletakkan secara amnya ialah 1 bilion parameter

    Apabila set data agak besar, kerana keseluruhan set data perlu dilalui berbilang; kali semasa proses latihan , latihan kad tunggal akan mengambil masa yang agak lama Pada masa ini, ia boleh dikembangkan daripada satu kad kepada berbilang kad untuk mempercepatkan latihan melalui pendekatan yang diedarkan.
  • Yang paling banyak digunakan di sini ialah selari data. Dalam skema selari data, set data dibahagikan sama rata kepada beberapa bahagian, dan kemudian model lengkap disimpan pada setiap kad, dan set sub-data yang dibahagikan diproses secara bebas dan selari.
Apabila bilangan parameter model cukup besar, contohnya, bilangan parameter mencecah puluhan bilion atau ratusan bilion, dan satu kad tidak boleh memuatkan model yang lengkap Di sini sekali lagi, model selari, atau penggunaan selari data dan model selari pada masa yang sama muncul skema selari hibrid.

Model selari akan membahagikan model kepada kad yang berbeza, dan meletakkan sebahagian daripada model pada setiap kad Di sini, kaedah pemisahan adalah berbeza, seperti pemisahan intra-lapisan atau pemisahan antara lapisan, dan Kaedah selari Tensor dan selari saluran paip dibahagikan.

Oleh kerana dalam latihan model umum, keselarian data digunakan lebih banyak, kami akan menumpukan pada keselarian data sebagai contoh untuk memperkenalkan idea pengoptimuman prestasi.

Kami mula-mula memahami overhed prestasi yang wujud semasa latihan kad tunggal dari perspektif keseluruhan perisian dan perkakasan. Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Sebelah kiri gambar di bawah ialah proses latihan kami dari perspektif perisian. Proses latihan kad tunggal terutamanya merangkumi pembacaan data, prapemprosesan data, output pengiraan hadapan dan pengiraan kerugian, pengiraan terbalik mengikut fungsi kehilangan untuk mendapatkan kecerunan setiap parameter lapisan, dan akhirnya mengemas kini parameter model mengikut kecerunan. Teruskan proses ini sehingga latihan berkumpul.

Sebelah kanan rajah di bawah ialah rajah topologi perkakasan nod yang dipermudahkan. Bahagian atas ialah storan data, yang boleh menjadi storan tempatan atau storan rangkaian. Kemudian terdapat CPU dan memori Terdapat 8 kad GPU yang disambungkan ke CPU melalui berbilang Suis PCIe, bernombor dari 0 hingga 7, dan 8 kad disambungkan melalui NVSwitch. Contoh pengkomputeran yang berbeza mempunyai topologi perkakasan yang berbeza.

  • Apabila latihan bermula, data dibaca terlebih dahulu, yang melibatkan pembacaan data daripada medium storan ke dalam memori, terutamanya overhed I/O storan. Bergantung pada medium storan, jumlah data yang akan dibaca adalah berbeza, dan kos masa bahagian ini juga berbeza
  • Langkah seterusnya ialah prapemprosesan data, yang terutamanya melakukan beberapa operasi peningkatan data pada bacaan; data, seperti pemprosesan imej mengubah saiz, kontras, pelarasan ketepuan, dsb. Bahagian kerja ini kebanyakannya dilakukan pada CPU. Selepas operasi prapemprosesan data selesai pada CPU, ia perlu disalin daripada memori hos ke memori GPU, yang melibatkan overhed salinan memori antara hos dan peranti
  • Kemudian mulakan pengiraan hadapan, pengiraan terbalik, dan parameter Kemas kini, lebih banyak operasi di bahagian ini dilakukan terutamanya melalui GPU, dan masa utama dibelanjakan untuk pengiraan GPU. Proses ini juga mungkin diselingi dengan beberapa operasi pada CPU, dan mungkin juga memerlukan penyalinan antara hos dan memori peranti.

Oleh itu, dari satu perspektif kad, terdapat terutamanya overhed dalam I/O, prapemprosesan CPU, penyalinan data antara CPU dan GPU, pengiraan GPU, dsb.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Kemudian mari kita lihat proses selari data.

Sebelah kiri rajah di bawah masih merupakan proses utama latihan, dan bahagian kanan menunjukkan topologi perkakasan gugusan latihan 3-mesin 24-kad 3 mesin saling bersambung melalui rangkaian.

Kami juga memperkenalkan pada bahagian sebelumnya bahawa dalam keselarian data, setiap peranti melakukan proses pengiraan ke hadapan dan ke belakang secara selari dan bebas Oleh itu, setiap proses latihan juga akan menghadapi latihan kad tunggal yang dinyatakan di atas isu.

Kesejajaran data memastikan bahawa ia adalah setara secara matematik dengan latihan kad tunggal Ia adalah perlu untuk memastikan bahawa parameter model setiap kad kekal konsisten semasa proses lelaran. Di satu pihak, adalah perlu untuk menjadikan status permulaan parameter model setiap kad GPU konsisten Ini biasanya dilakukan dengan menyiarkan status parameter pada kad pertama ke kad lain sebelum memulakan latihan.

Semasa latihan, disebabkan oleh data yang berbeza yang diproses oleh setiap peranti, nilai kehilangan model yang diperoleh melalui pengiraan hadapan juga berbeza. Oleh itu, ia juga perlu untuk mengira kecerunan selepas setiap peranti mengira kecerunan secara terbalik , kemas kini parameter model dengan nilai kecerunan purata untuk memastikan parameter model setiap kad kekal konsisten semasa proses lelaran.

Purata kecerunan melibatkan proses komunikasi, termasuk komunikasi antara kad dalam nod, serta overhed komunikasi rangkaian merentas nod. Komunikasi di sini termasuk komunikasi segerak dan komunikasi tak segerak Walau bagaimanapun, untuk memastikan penumpuan latihan model, penyelesaian komunikasi segerak biasanya digunakan, dan kerja pengoptimuman seterusnya juga dijalankan berdasarkan komunikasi segerak.

Seperti yang dapat dilihat daripada di atas, keselarian data terutamanya menambah overhed komunikasi tambahan berbanding latihan kad tunggal.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Melalui analisis di atas, kita tahu bahawa mempercepatkan latihan AI bukan sekadar aspek kerja tertentu, tetapi memerlukan pertimbangan menyeluruh daripada dimensi sistem seperti pemuatan data, pengiraan model, dan komunikasi teragih. Pemuatan data yang dinyatakan di sini termasuk data I/O, prapemprosesan, salinan memori dan proses lain.

Dalam amalan pengoptimuman khusus, memandangkan model yang akan dioptimumkan, latihan model yang mempercepatkan bermakna terus meningkatkan daya pemprosesan keseluruhan latihan (bilangan sampel yang boleh dilatih sesaat). Dalam proses ini, secara amnya kita boleh terlebih dahulu menganalisis daya tampung latihan satu kad Apabila daya tampung latihan satu kad bertambah baik, kita kemudiannya boleh melihat mengembangkan daripada satu kad kepada berbilang kad untuk melihat cara meningkatkan nisbah pecutan latihan. berbilang kad.

Pertama sekali, pengoptimuman latihan kad tunggal, matlamat pengoptimuman muktamad adalah untuk menghabiskan sepanjang masa pada pengkomputeran GPU dan kadar penggunaan pemecut ialah 100%. Sudah tentu, sukar untuk mencapai keadaan ini sepenuhnya dalam amalan, tetapi kita boleh membimbing atau mengukur kerja kita mengikut penunjuk ini.

Kunci kepada pengoptimuman prestasi kad tunggal termasuk dua bahagian:

  • Pertama, optimumkan kecekapan pemuatan data. Daripada sistem storan, kita boleh menggunakan media storan berprestasi tinggi, atau sistem fail selari berdasarkan media storan berkelajuan tinggi ini, atau beberapa sistem pecutan cache. Seperti yang dinyatakan sebelum ini, Baidu Baige juga menyediakan penyelesaian sistem storan yang sepadan, seperti PFS, RapidFS, dsb. Selain itu, proses membaca data perlu dioptimumkan dalam pemuat data rangka kerja.
  • Yang kedua ialah pengoptimuman kecekapan pengiraan model. Pertimbangan utama ialah cara mengoptimumkan pelaksanaan pengiraan dan cara meningkatkan kecekapan penggunaan unit pengiraan Ini mungkin memerlukan analisis terperinci bersama-sama dengan model.

Kemudian kembangkan daripada satu kad kepada berbilang kad, matlamatnya ialah bagaimana untuk mencapai nisbah pecutan linear. Penunjuk nisbah pecutan linear hanya bermaksud sama ada prestasi latihan adalah dua kali ganda daripada satu kad apabila latihan dikembangkan daripada 1 kad kepada 2 kad.

Inti di sini adalah untuk mengoptimumkan kecekapan komunikasi teragih Di satu pihak, ia adalah pengoptimuman tahap perkakasan Sebaliknya, dalam komunikasi sebenar, kita perlu mempertimbangkan cara menggunakan yang baik sumber jalur lebar rangkaian, atau sama ada proses komunikasi boleh disembunyikan.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Di bawah ini kami akan mengembangkan aspek ini secara terperinci.

Yang pertama ialah pengoptimuman pemuatan data.

Selepas kami membuat instantiate pemuat data, kami akan terus mengulang pemuat data untuk membaca kumpulan data untuk latihan model.

Jika tiada pengoptimuman dilakukan di sini, seperti yang ditunjukkan di bahagian atas rajah di bawah, proses pemuatan data setiap kelompok dan proses latihan model setiap kelompok sebenarnya dijalankan secara bersiri. Dari perspektif GPU, akan terdapat jurang pengiraan yang disebabkan oleh pemuatan data, dan akan terdapat pembaziran masa dalam sumber pengkomputeran.

Selain menggunakan perkakasan yang lebih baik untuk terus meningkatkan kecekapan pembacaan data seperti yang dinyatakan sebelum ini, bagaimana lagi kita boleh mengoptimumkannya?

Malah, semasa proses latihan AI, terdapat dua ciri utama dalam akses data:

  • Selepas set data dikocok, data kelompok yang diperlukan untuk setiap pusingan latihan dan urutan capaian Ia diketahui;
  • Bacaan data mana-mana dua kelompok boleh dilakukan secara selari kerana tiada pergantungan antara data.

Oleh itu, apabila kami tidak bergantung pada perubahan peringkat perkakasan, satu kerja pengoptimuman yang boleh kami lakukan ialah pengambilan data semasa melatih kumpulan pertama data, kami boleh memuatkan kumpulan data seterusnya terlebih dahulu . Biarkan proses I/O dan pengiraan pada GPU selari sepenuhnya.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Pertama sekali, kita perlu menggunakan penyelesaian pengoptimuman sedia ada dalam pemuat data Mula-mula, tetapkan hiperparameter num_workers secara munasabah dan baca data melalui pelbagai proses boleh mencapai data Prefetch daripada sistem storan ke memori hos. Yang kedua ialah menyalin dari memori hos ke memori GPU, yang boleh dipercepatkan melalui mekanisme memori yang disematkan.

Pengenalan ringkas kepada prinsip utama pecutan memori yang disematkan: Terdapat dua jenis data memori: memori boleh halaman dan memori yang disematkan Data dalam memori boleh halaman mungkin ditukar kepada cakera. Dalam kes ini, apabila melaksanakan H2D, mungkin perlu terlebih dahulu membaca dari cakera ke memori, dan kemudian menyalin dari memori ke memori video. Di samping itu, apabila menyalin data memori boleh halaman ke memori GPU, anda perlu mencipta penimbal memori yang disematkan sementara dahulu, menyalin data daripada memori boleh halaman ke memori yang disematkan, dan kemudian memindahkannya ke GPU, yang juga memerlukan operasi pemindahan data tambahan.

Walau bagaimanapun, apabila kami mendayakan penyelesaian di atas, kami hanya melaksanakan prefetching daripada sistem storan ke memori hos, mempercepatkan kelajuan penyalinan data daripada hos ke peranti. Walau bagaimanapun, salinan memori dari hos ke peranti dan kernel pengiraan sebenar masih dilaksanakan secara bersiri pada GPU, iaitu, masih terdapat jurang masa yang kecil pada GPU.

AIAK telah membuat pengoptimuman lanjut untuk menangani masalah ini, yang boleh merealisasikan pertindihan pengiraan H2D dan hadapan.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Dalam senario selari data, satu perkara yang perlu diberi perhatian ialah data perlu dibahagikan sama rata.

Sekiranya data yang diperuntukkan untuk setiap proses latihan tidak seimbang, jumlah pengiraan akan berbeza, yang akan mengakibatkan masa siap pengiraan ke hadapan dan pengiraan terbalik bagi setiap proses adalah berbeza pengiraan pertama akan berakhir dalam pengiraan terbalik Semasa proses, ia akan terlebih dahulu memasuki pautan komunikasi kecerunan Walau bagaimanapun, kerana komunikasi Allreduce adalah operasi komunikasi segerak, semua proses perlu bermula dan berakhir pada masa yang sama memulakan komunikasi terlebih dahulu akan menunggu semua proses lain untuk turut sama memulakan operasi komunikasi yang lengkap. Akan ada masalah terbiar sumber yang disebabkan oleh kelajuan yang berbeza.

Untuk menyelesaikan masalah ini, setiap proses perlu menggunakan saiz kelompok yang sama untuk membaca data, dan jumlah data dalam setiap kelompok mesti seimbang. Data imej biasanya bersaiz tetap untuk latihan, manakala model NLP perlu memproses penyataan panjang berubah-ubah, yang mungkin memerlukan pemprosesan khas Sebagai contoh, data boleh dipadatkan dengan panjang yang sama, atau diedarkan secara sama rata dengan menyusun panjang sampel, dsb.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Pengoptimuman kecekapan pengiraan diperkenalkan di bawah.

Pengiraan termasuk kemas kini ke hadapan, belakang dan parameter. Matlamat mengoptimumkan pengiraan adalah untuk menggunakan sepenuhnya kuasa pengkomputeran perkakasan heterogen Keadaan yang ideal adalah untuk membolehkan prestasi pengkomputeran sebenar cip GPU mencapai kemuncak teori.

Mari kita menganalisisnya terlebih dahulu dari perspektif operator tunggal Apabila kita bersedia untuk melakukan operasi pengiraan pada GPU, terdapat empat langkah dalam proses yang dipermudahkan.

  • Pertama, Kernel pengiraan GPU dilancarkan secara tak segerak pada CPU
  • Apabila Kernel dijadualkan untuk pelaksanaan, data yang diperlukan untuk pengiraan perlu dibaca daripada Memori Global pada; GPU;
  • Mula melaksanakan pengiraan;
  • Apabila pengiraan selesai, hasil pengiraan perlu ditulis semula ke Memori Global.

Berdasarkan perkadaran pengkomputeran dan overhed akses memori, pengendali biasanya diklasifikasikan sebagai kesesakan pengkomputeran atau kesesakan akses memori.

Apabila berkembang daripada operator kepada latihan model yang lengkap, kerana banyak pengiraan Kernel perlu dilakukan secara berterusan, akan terdapat banyak ralat antara pengiraan Kernel yang disebabkan oleh Pelancaran Kernel dan membaca dan menulis hasil perantaraan masalah jurang.

Seperti yang dapat dilihat daripada di atas, pengoptimuman kecekapan pengiraan model memerlukan pertimbangan komprehensif pengoptimuman akses memori, pengoptimuman pengiraan dan pengoptimuman overhed lain.

  • Pengoptimuman akses memori terutamanya mempertimbangkan cara mengurangkan masa pemindahan data antara memori video dan unit pengkomputeran. Dari perspektif pelaksanaan pengendali, adalah perlu untuk menggunakan seni bina hierarki storan GPU dengan baik, seperti memindahkan data ke storan yang lebih pantas seperti memori dikongsi, mengurangkan akses kepada memori global, dengan itu menjimatkan masa capaian memori. Atau buat pertindihan yang baik antara arahan pengiraan dan arahan capaian memori untuk meningkatkan nisbah capaian memori pengiraan. Apabila mengembangkan daripada operator tunggal kepada berbilang operator, anda juga perlu mempertimbangkan cara mengurangkan bacaan dan penulisan hasil perantaraan Masalah ini secara amnya boleh dioptimumkan melalui gabungan operator
  • Pengoptimuman pengiraan kebanyakannya adalah masalah kesesakan pengiraan Sepatutnya tugas tidak dibahagikan kepada blok dengan betul, atau kelebihan pengkomputeran selari GPU tidak digunakan sepenuhnya, mengakibatkan keselarian rendah. Mungkin juga set arahan gabungan tidak digunakan, mengakibatkan kecekapan pengkomputeran rendah, atau unit pengkomputeran berprestasi tinggi seperti Tensor Core tidak digunakan, mengakibatkan pembaziran sumber. Masalah yang berbeza juga sepadan dengan kaedah pengoptimuman yang berbeza;
  • Pelancaran Kernel dan overhed lain, banyak masa dihabiskan untuk akses atau pengiraan memori, kaedah pengoptimuman yang boleh dipertimbangkan seperti gabungan operator, Graf Cuda, dsb.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Yang pertama ialah gabungan operator. Apabila pengendali dilaksanakan pada GPU asas, satu atau lebih Pelancaran Kernel akan dimulakan dan data interaktif antara Kernel juga perlu melalui memori video gabungan Operator adalah untuk menggabungkan berbilang Kernel GPU menjadi satu Kernel besar untuk permulaan bersatu dan perlaksanaan.

  • Oleh kerana bilangan pengendali yang perlu dilaksanakan dikurangkan, overhed penjadualan Kernel dan permulaan boleh dikurangkan
  • Melalui gabungan, keputusan perantaraan boleh dipindahkan melalui daftar, dsb., untuk mengelakkan global Pemindahan memori ke sana ke mari sangat mengurangkan masa menunggu untuk ingatan video
  • Dalam sesetengah senario, gabungan operator boleh digunakan untuk menggunakan sepenuhnya sumber pengkomputeran dan meningkatkan kecekapan sumber dan pengkomputeran; .

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Bagaimana untuk melaksanakan gabungan operator secara khusus?

Satu cara untuk menganalisis operasi yang tidak cekap dalam model, operator gabungan tulisan tangan berdasarkan pengalaman pakar. Pada GPU, ini terutamanya mengenai penyelidikan dan pembangunan pengendali CUDA, dan terdapat ambang tertentu di sini. AIAK-Training akan menyediakan pelaksanaan operator yang cekap dan dioptimumkan berdasarkan struktur model biasa atau keperluan pelanggan.

Cara lain ialah menyusun dan mengoptimumkan penyelesaian. Pengoptimuman pengiraan dilakukan melalui penyusunan, dan kod dijana secara automatik, dengan itu mengurangkan kos pengoptimuman manual pada perkakasan yang berbeza. Walau bagaimanapun, banyak penyelesaian kompilasi semasa lebih dioptimumkan untuk inferens, dan penyelesaian latihan masih dalam proses evolusi pesat. Walau bagaimanapun, dari perspektif prestasi muktamad, kerja operator gabungan tulisan tangan masih tidak dapat dipisahkan pada masa hadapan.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Berikut memperkenalkan beberapa kes praktikal gabungan operator. Yang pertama ialah pengoptimuman struktur rangkaian model biasa.

Rajah di bawah menunjukkan pengoptimuman gabungan pengiraan kami untuk modul teras WindowAttention dalam model SwinTransformer.

Struktur WindowAttention, formula operasi teras ditunjukkan dalam rajah di bawah. Semasa proses pengiraan, 7 kernel pengiraan perlu dilaksanakan mengikut urutan. Ditambah dengan beberapa bentuk semula dan operasi penukaran lain, sejumlah 10 Kernel diperlukan untuk dilancarkan. Melalui analisis prestasi, didapati bahawa overhed redundansi selang bagi kernel pelancaran menyumbang lebih daripada 80% daripada masa hujung ke hujung semasa proses pelaksanaan sebenar, menghasilkan ruang pengoptimuman yang besar untuk modul ini.

Dengan menggabungkan Kernel ini menjadi satu, masa pelaksanaan keseluruhan modul dikurangkan daripada 392 mikrosaat kepada 13 mikrosaat dan satu operator dipercepatkan sebanyak 30 kali. Kecekapan latihan keseluruhan model telah dipercepatkan lebih daripada 20% hujung ke hujung.

Idea teras pengoptimuman ini terutamanya mempunyai tiga perkara:

  • Ia adalah untuk memanfaatkan saluran paip akses memori tiga peringkat GPU dengan baik: memori video, memori dikongsi, daftar ;
  • Melalui strategi menyekat , menggabungkan 2 pendaraban matriks dan softmax
  • Untuk pengoptimuman hasil perantaraan hadapan, Teras Tensor digunakan sepenuhnya, dan pengiraan semula digunakan dan bukannya memuat semula dalam pengiraan terbalik, yang sangat mengurangkan overhed akses memori.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Rajah berikut ialah contoh gabungan operasi data, yang merupakan pengoptimuman operasi mampatan koordinat dalam model FCOS3D.

Melalui analisis prestasi, didapati terdapat sejumlah besar jurang GPU semasa operasi ini dan penggunaan GPU adalah rendah. Fungsi utama operasi ini adalah untuk memampatkan 3D-Tensor menjadi 2D-Tensor berdasarkan indeks. Dalam pelaksanaan asli, indeks mula-mula dijana pada bahagian hos, kemudian salinan H2D dilakukan, dan akhirnya pemampatan Tensor selesai, yang akan menyebabkan salinan tambahan dan menunggu overhed.

Untuk tujuan ini, kami melaksanakan semula bahagian operasi ini Idea teras adalah untuk memindahkan semua operasi ke GPU, melengkapkan penjanaan indeks dan pemampatan Tensor pada GPU secara langsung, mengurangkan penglibatan CPU dan mengelakkan perkara yang tidak perlu. Salinan memori antara CPU-GPU.

Masa pelaksanaan operator tunggal dikurangkan daripada 9.69 milisaat kepada 32 mikrosaat, pecutan 300 kali dan latihan hujung ke hujung keseluruhan model dipertingkatkan lebih daripada 10%.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Seterusnya kami memperkenalkan satu lagi idea pengoptimuman pengkomputeran, iaitu untuk meningkatkan keselarian pengiraan dan menggunakan sepenuhnya kelebihan pengkomputeran selari GPU juga memperkenalkannya dengan bantuan beberapa kes praktikal.

Kami mendapati bahawa dalam sesetengah model, beberapa operasi dilakukan secara bersiri. Sebagai contoh, dalam beberapa model pengesanan sasaran, semasa proses pengiraan kerugian, beberapa operasi tidak dilakukan mengikut kumpulan, tetapi untuk gelung setiap gambar atau sampel Dalam kes ini, apabila kita meningkatkan saiz kelompok, kerana Pensirian di sini mungkin tidak mencapai prestasi yang kita inginkan.

Ambil operasi SimOTA dalam YOLOv7 sebagai contoh Dalam pelaksanaan asli, setiap imej kumpulan dilalui melalui gelung untuk, dan kemudian penetapan label SimOTA dilakukan untuk gtbox imej. Pelaksanaan bersiri ini menghasilkan penggunaan GPU yang sangat tidak cekap untuk bahagian operasi ini.

Tiada pergantungan antara data semasa memproses setiap gambar. Oleh itu, salah satu tugas yang telah kami lakukan ialah menukar pengiraan bersiri kepada pengiraan selari kelompok, dan mempercepatkan kecekapan bahagian pengiraan ini dengan menyelaraskan peruntukan label untuk kumpulan data.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Dalam kesan akhir, masa operasi SimOTA menurun daripada 384 milisaat kepada 69 milisaat, kecekapan pengkomputeran meningkat sebanyak 5.5 kali, dan kecekapan latihan hujung ke hujung bagi keseluruhan model meningkat sebanyak 18% di atas.

Terdapat senario lain yang serupa semasa proses latihan model, seperti kemas kini parameter. Apabila parameter dikemas kini, secara lalai, setiap parameter dilalui melalui gelung, dan kemudian setiap parameter akan memulakan Cuda Kernel untuk kemas kini parameter, dan kemudian melaksanakannya dalam urutan.

Memandangkan situasi ini, AIAK juga telah menambah pengoptimuman FusedOptimizer Dengan menggabungkan pengendali kemas kini parameter, ia boleh mengemas kini parameter dalam kelompok dan mengurangkan bilangan Pelancaran Inti.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Berikut memperkenalkan satu lagi kaedah pengoptimuman Graf CUDA, terutamanya untuk mengurangkan overhed Kernel Pelancaran CPU.

Graf CUDA ialah ciri yang diperkenalkan dalam versi CUDA 10 Ia boleh merangkumkan satu siri Kernel CUDA ke dalam satu unit Berbilang GPU Kernel boleh dilancarkan melalui satu operasi Pelancaran CPU, sekali gus mengurangkan overhead Kernel Pelancaran CPU.

Seperti yang ditunjukkan dalam rajah di bawah, secara lalai, CPU perlu melancarkan berbilang Kernel dalam urutan Jika masa pengiraan Kernel agak pendek, jurang Pelancaran antara Kernel mungkin menjadi hambatan prestasi. Dengan Graf CUDA, anda hanya perlu meluangkan sedikit masa tambahan untuk membina Graf, dan pelepasan Graf seterusnya boleh memendekkan jurang antara Kernel semasa pelaksanaan sebenar.

Kini banyak rangka kerja turut menambah sokongan untuk Graf CUDA, dan K boleh mendayakan fungsi ini dengan memasukkan beberapa kod. Walau bagaimanapun, terdapat beberapa sekatan penggunaan, seperti tidak menyokong bentuk dinamik, tidak menyokong aliran kawalan dinamik, tidak dapat menangkap operasi CPU semasa proses, dsb. Anda boleh cuba menggunakan keupayaan pengoptimuman ini berdasarkan situasi model.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Berikut ialah kaedah pengoptimuman pengiraan terakhir untuk menggunakan sepenuhnya unit pengkomputeran Tensor Core.

GPU biasanya mengandungi berbilang SM, dan setiap SM termasuk teras pengkomputeran jenis data yang berbeza, serta pelbagai sumber storan. Ditunjukkan di sebelah kiri rajah di bawah ialah gambar rajah skema NVIDIA A100 SM Sebuah SM mengandungi 64 Teras CUDA FP32 dan 4 Teras Tensor.

Semasa latihan model, FP32 CUDA Core digunakan terutamanya untuk pengiraan secara lalai, dan Tensor Core ialah unit pelaksanaan perkakasan khas yang diperkenalkan daripada siri Volta GPU Ia digunakan terutamanya untuk mempercepatkan kecekapan Operasi .

Berbanding dengan Teras CUDA FP32 yang hanya boleh melakukan pengiraan pada dua skalar pada satu masa, Teras Tensor boleh melakukan pengiraan pada dua matriks pada satu masa, jadi daya pemprosesan pengiraan Tensor Core jauh lebih tinggi daripada FP32 CUDA teras.

Dalam A100, Tensor Core menyokong pelbagai jenis data titik terapung Untuk latihan pembelajaran mendalam, ia mungkin melibatkan mod FP16, BF16 dan TF32.

TF32 digunakan terutamanya dalam senario latihan ketepatan tunggal Berbanding dengan latihan FP32, daya pengkomputeran teori meningkat sebanyak 8 kali sambil mengekalkan keperluan jalur lebar akses memori yang sama.

FP16/BF16 digunakan terutamanya dalam senario latihan ketepatan campuran Berbanding dengan latihan FP32, keperluan akses memori dikurangkan separuh, dan daya pengkomputeran teori meningkat sebanyak 16 kali.

Menggunakan Tensor Core, anda boleh menggunakan antara muka cublas atau cuda yang mendasari untuk pengaturcaraan Bagi pembangun algoritma, adalah lebih mudah untuk menggunakan latihan TF32 atau penyelesaian latihan ketepatan campuran yang disediakan dalam rangka kerja.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Yang pertama ialah mod latihan TF32, TF32 telah diperkenalkan oleh Ampere.

TF32 mempunyai 8 bit eksponen, 10 bit mantissa dan 1 bit tanda dalam ungkapan nombor titik terapung. Bit eksponen adalah sama dengan FP32, iaitu julat perwakilan data adalah sama, tetapi bit mantissa lebih rendah daripada FP32 dan sama dengan FP16.

Perlu diambil perhatian bahawa TF32 bukanlah jenis berangka terbuka, tetapi mod pengiraan Tensor Core Iaitu, pengguna tidak boleh terus mencipta nombor titik terapung jenis TF32.

Apabila TF32 didayakan, Tensor Core akan menukar FP32 kepada TF32 secara automatik apabila mengira matriks atau operasi lilitan Selepas pengiraan selesai, jenis data output masih jenis FP32.

Latihan TF32 didayakan secara lalai dalam sesetengah versi rangka kerja, ia mungkin perlu didayakan secara manual melalui pembolehubah persekitaran atau konfigurasi parameter untuk butiran, sila rujuk manual pengguna rangka kerja.

Namun, memandangkan julat ketepatan TF32 dikurangkan berbanding FP32, anda perlu memberi perhatian kepada kesan ke atas ketepatan penumpuan model semasa latihan sebenar.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Latihan ketepatan campuran merujuk kepada latihan menggunakan ketepatan campuran FP32 dan FP16 sambil meminimumkan kehilangan ketepatan model.

Faedah utama latihan ketepatan campuran ialah: berbanding dengan latihan FP32, keperluan memori dikurangkan dan rangkaian yang lebih besar boleh dilatih atau saiz kelompok yang lebih besar boleh digunakan. Menggunakan jalur lebar memori yang kurang boleh mempercepatkan penghantaran data, dan pengiraan separuh ketepatan juga boleh menjadikan operasi matematik lebih pantas

Namun, kerana julat bit eksponen dan bit mantissa FP16 adalah lebih kecil daripada FP32, nilai berangka Julat perwakilan dan ketepatan akan dikurangkan Dalam penggunaan sebenar, masalah limpahan berangka mungkin berlaku disebabkan oleh julat perwakilan yang sempit, atau ralat pembundaran mungkin berlaku kerana ketepatan yang tidak mencukupi.

Untuk mengoptimumkan masalah yang sama, terdapat beberapa tugas teknikal utama dalam penyelesaian latihan ketepatan campuran:

  • Mekanisme senarai hitam putih pengendali, rangka kerja menggunakan senarai hitam putih untuk memilih ketepatan operator secara automatik Semasa proses latihan model, operasi cast akan dimasukkan secara automatik untuk penukaran jenis, tanpa campur tangan pembangun . Untuk pengiraan yang sensitif kepada ketepatan berangka, FP32 masih digunakan Untuk pengiraan selamat secara berangka, seperti pendaraban matriks, FP16 digunakan
  • Semasa proses latihan, salinan parameter berat FP32 akan disimpan digunakan untuk mengemas kini parameter semasa latihan dan mengoptimumkan masalah ralat pembulatan
  • Untuk menyelesaikan masalah limpahan mudah FP16, penyelesaian penskalaan Kerugian digunakan, seperti membesarkan Kerugian sebanyak n kali peraturan, kecerunan juga akan Kemudian ia dibesarkan n kali, supaya ia berada dalam julat perwakilan FP16 Proses khusus ditunjukkan di sebelah kiri rajah di bawah.

Pada masa ini semua rangka kerja menyokong ketepatan campuran. Komponen AIAK-Training seterusnya memperkenalkan mod ketepatan campuran AMP O2 dalam NVIDIA Apex, yang akan memindahkan lebih banyak pengiraan kepada FP16 secara lebih agresif untuk mempercepatkan latihan. Berbanding dengan mod O1 lalai, kelajuan akan dipertingkatkan lagi, tetapi ketepatan mungkin terjejas dan perlu disahkan dengan model tertentu.

AIAK-Training menyediakan kaedah penggunaan yang serasi dengan penggunaan asli amp torch, menjadikannya mudah untuk mendayakan mod O2.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Berikut adalah mengenai pengoptimuman komunikasi Ini juga merupakan topik yang sangat besar dan melibatkan banyak kandungan.

Seperti yang dinyatakan sebelum ini, komunikasi terutamanya diperkenalkan dalam latihan yang diedarkan, kerana mengembangkan daripada satu kad kepada berbilang kad memerlukan beberapa penyegerakan data antara berbilang kad ini dilaksanakan melalui komunikasi.

Angka berikut menyenaraikan seni bina keseluruhan untuk pengoptimuman komunikasi:

  • Lapisan bawah ialah lapisan protokol rangkaian, termasuk rangkaian TCP tradisional, dan semakin banyak digunakan dalam senario latihan Tinggi -Rangkaian RDMA prestasi untuk RoCE atau IB. Baidu Baige juga menyediakan sokongan untuk penyelesaian rangkaian asas ini. Jelas sekali, menambah baik infrastruktur perkakasan untuk meningkatkan lebar jalur rangkaian dan mengurangkan kependaman adalah cara paling langsung dan berkesan untuk mengoptimumkan prestasi komunikasi.
  • Kemudian terdapat lapisan perpustakaan komunikasi. Oleh kerana ia adalah perlu untuk menggunakan protokol rangkaian asas untuk komunikasi, dan aplikasi sebenar mungkin melibatkan berbilang primitif komunikasi, seperti komunikasi titik ke titik, komunikasi kolektif, dsb., beberapa perpustakaan komunikasi terkapsul dan dioptimumkan juga telah muncul. Dalam senario latihan GPU, kami biasanya menggunakan perpustakaan komunikasi NCCL, yang mempunyai prestasi yang lebih baik.
  • Berdasarkan perpustakaan komunikasi asas, rangka kerja lapisan atas boleh membina seni bina komunikasi latihan teragih dengan lebih mudah. Yang biasa termasuk seni bina pelayan parameter dan seni bina komunikasi kolektif. Pada masa ini, model dalam CV/NLP dan bidang lain terutamanya menggunakan seni bina komunikasi kolektif.
  • Lapisan strategi komunikasi terutamanya mengoptimumkan kecekapan komunikasi pada lapisan aplikasi, seperti penyembunyian komunikasi, gabungan komunikasi, pemampatan komunikasi, pengurangan frekuensi komunikasi dan kebanyakan kaedah ini juga boleh ditindih dan digunakan bersama. .

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Mula-mula kita lihat idea pengoptimuman di peringkat strategi komunikasi Yang pertama ialah pengoptimuman tersembunyi komunikasi.

Dalam selari data, komunikasi penyegerakan kecerunan dilakukan semasa proses latihan terbalik Selepas kecerunan dikira secara terbalik, purata kecerunan global boleh dilakukan.

Jika tiada pengoptimuman mekanisme dilakukan, pengiraan terbalik dan komunikasi akan dijalankan secara bersiri, dan akan terdapat jurang masa dalam pengiraan.

Memandangkan tiada pergantungan data antara komunikasi kecerunan sebelumnya dan pengiraan kecerunan seterusnya semasa proses terbalik, komunikasi kecerunan sebelumnya dan pengiraan kecerunan seterusnya boleh diselaraskan, membenarkan dua hingga Memakan masa pengguna bertindih antara satu sama lain, dengan itu menyembunyikan sebahagian daripada memakan masa komunikasi.

Di peringkat pelaksanaan, operator komunikasi dan pengiraan biasanya dijadualkan ke aliran cuda yang berbeza Operator komunikasi dijadualkan ke aliran komunikasi, operator pengiraan dijadualkan ke aliran pengiraan, dan pengiraan pada aliran berbeza adalah Sub-langkah boleh. dilancarkan dan dilaksanakan secara selari, dengan itu mencapai pertindihan selari komunikasi kecerunan dan pengiraan dalam arah songsang.

Pada masa ini, keupayaan pengoptimuman ini didayakan secara lalai dalam rangka kerja.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Kedua, pengoptimuman penyepaduan komunikasi.

Secara lalai, setiap kecerunan dalam model perlu memulakan operasi komunikasi. Jika saiz kecerunan tunggal agak kecil, maka apabila paket data kecil sebenarnya dikomunikasikan, penggunaan lebar jalur rangkaian akan menjadi sangat rendah dan prestasi komunikasi akan menjadi lemah.

Penyatuan komunikasi adalah untuk menggabungkan berbilang kecerunan bersama-sama untuk satu komunikasi Daripada analisis model overhed komunikasi, ia bukan sahaja dapat meningkatkan penggunaan lebar jalur, tetapi juga mengurangkan tempoh kelewatan permulaan komunikasi.

Banyak rangka kerja latihan yang diedarkan kini turut menyokong strategi gabungan kecerunan secara lalai Terdapat perbezaan tertentu dalam kaedah pelaksanaan rangka kerja yang berbeza memerlukan rundingan kecerunan untuk menentukan jujukan komunikasi terlebih dahulu, manakala yang lain menggunakan baldi statik.

Walaupun rangka kerja menyokong gabungan komunikasi secara lalai, saiz gabungan kecerunan secara amnya boleh dikonfigurasikan melalui parameter Pengguna boleh melaraskan ambang gabungan yang sesuai mengikut keperluan persekitaran dan model fizikal, dan seharusnya boleh mencapai faedah yang lebih baik.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Jika anda berada dalam senario latihan dengan lebar jalur rangkaian rendah, seperti persekitaran TCP lebar jalur rendah, kelewatan dalam penyegerakan kecerunan mungkin menjadi hambatan prestasi utama latihan.

  • Dalam kes ini, satu kaedah pengoptimuman yang boleh dipertimbangkan ialah pemampatan komunikasi. Terdapat tiga idea pemampatan berbeza utama untuk pemampatan komunikasi:
  • Pemampatan kuantitatif, seperti menggunakan ketepatan yang lebih rendah untuk mewakili kecerunan Kaedah ini mempunyai kadar mampatan yang lebih rendah dan boleh memampatkan daripada 32 bit kepada 1 bit paling banyak, iaitu Mampatan maksimum 32 kali.
  • Mampatan jarang, algoritma tipikal seperti algoritma DGC, idea teras adalah untuk hanya menghantar kecerunan penting dalam setiap lelaran, iaitu, nilai kecerunan melebihi ambang yang ditetapkan, dan pada masa yang sama, untuk mengurangkan kehilangan maklumat, baki Kecerunan yang tidak penting terkumpul secara setempat Selagi masa yang mencukupi, kecerunan terkumpul akhirnya akan melebihi ambang yang ditetapkan, dan kemudian pertukaran kecerunan akan dilakukan. Dengan cara ini, jumlah data komunikasi dikurangkan dan permintaan untuk lebar jalur rangkaian dikurangkan. Pada masa yang sama, untuk mengurangkan kesan ke atas penumpuan model, ia juga dikurangkan melalui kaedah yang berbeza seperti pembetulan momentum, keratan kecerunan, pelekat faktor momentum, dan latihan prapemanasan. Penyelesaian ini pada masa ini menyokong pengoptimuman SGD.
  • Kaedah mampatan matriks peringkat rendah, algoritma tipikal seperti PowerSGD, idea terasnya ialah menguraikan matriks kecerunan besar kepada berbilang matriks kecerunan kecil, dan mengurangkan volum komunikasi dengan menghantar matriks kecil.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Pengoptimuman pengurangan frekuensi komunikasi, idea paling mudah ialah meningkatkan saiz kelompok, setiap lelaran lebih banyak data, mengurangkan bilangan lelaran, iaitu mengurangkan kuantiti komunikasi .

Walau bagaimanapun, lebih besar saiz kelompok, lebih baik saiz kelompok yang lebih besar boleh menyebabkan ketepatan penumpuan model berkurangan atau kelajuan penumpuan menjadi perlahan. Sebagai tindak balas kepada masalah yang sama, industri juga telah mencadangkan algoritma pengoptimuman seperti LARS dan LAMB, yang boleh mengurangkan masalah yang sama dengan menyesuaikan kadar pembelajaran melalui lapisan AIAK-Training juga telah menambah sokongan.

Untuk meningkatkan saiz kelompok, jika memori video mencukupi, anda boleh terus melaraskan parameter super saiz kelompok. Jika ingatan video ketat, anda juga boleh melangkau beberapa komunikasi kecerunan melalui pengumpulan kecerunan, yang sebenarnya bersamaan dengan meningkatkan saiz kelompok.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Berikut memperkenalkan penyelesaian pengoptimuman untuk topologi komunikasi - komunikasi topologi hierarki, yang juga bertujuan untuk situasi di mana lebar jalur rangkaian antara mesin agak rendah.

Melalui komunikasi hierarki, lebar jalur interkoneksi yang tinggi dalam mesin boleh digunakan sepenuhnya, manakala kesan jalur lebar rangkaian rendah antara mesin boleh dilemahkan.

Penyelesaian komunikasi ini juga dilaksanakan dalam AIAK Dalam persekitaran TCP 25Gbps, 4 mesin dan 32 kad telah diuji untuk latihan SwinTransformer Melalui allreduce berlapis, prestasi boleh dipercepatkan sebanyak 85%.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Akhir sekali, kami memperkenalkan pengoptimuman di peringkat perpustakaan komunikasi asas, teknologi komunikasi GPU Direct RDMA Teknologi ini memerlukan persekitaran perkakasan untuk menyokong rangkaian RDMA.

Komunikasi RDMA membolehkan aplikasi tempatan membaca dan menulis secara terus memori maya mod pengguna bagi aplikasi jauh Keseluruhan proses komunikasi, kecuali untuk langkah awal menghantar permintaan penghantaran, yang memerlukan penyertaan CPU, adalah dilengkapkan oleh perkakasan kad rangkaian Ia tidak memerlukan penyalinan memori, gangguan sistem dan pemprosesan perisian, jadi ia boleh mencapai kependaman yang sangat rendah dan lebar jalur yang tinggi.

Dalam senario GPU, teknologi GPU Direct RDMA menambahkan lagi sokongan untuk RDMA untuk mengakses terus memori GPU, yang mengelakkan penyalinan data berulang-alik antara memori GPU dan memori hos semasa komunikasi, dan seterusnya mengurangkan silang -kelewatan komunikasi mesin.

Walau bagaimanapun, dalam kes sebenar, kami mendapati bahawa sesetengah pengguna membeli persekitaran RDMA, tetapi sebenarnya tidak menggunakan teknologi GDR, menyebabkan kecekapan komunikasi yang rendah. Beberapa item konfigurasi utama disenaraikan di sini Jika anda mempunyai masalah yang sama, anda boleh menyelesaikan masalah dan menetapkannya mengikut urutan.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Saya telah memperkenalkan beberapa idea dan penyelesaian pengoptimuman prestasi utama semasa Secara keseluruhannya, tidak kira pengoptimuman I/O, pengoptimuman pengkomputeran dan pengoptimuman komunikasi, idea pengoptimuman yang paling mudah adalah terutamanya cara untuk. Optimumkan operasi itu sendiri, atau sama ada bilangan kali operasi boleh dikurangkan, atau sama ada operasi boleh selari dengan proses lain untuk menyembunyikan overhed, dsb.

3. Amalan suite pecutan latihan AIAK

Banyak kerja pengoptimuman telah diperkenalkan sebelum ini, setiap pengguna perlu mempunyai pemahaman yang jelas tentang prinsip pelaksanaan kejuruteraan rangka kerja. Untuk memudahkan kos pengoptimuman latihan, kami membina pakej pecutan AIAK-Training.

Latihan AIAK akan membina keupayaan pengoptimuman pautan penuh di sekitar pemuatan data, pengiraan model, komunikasi, dll. Pada masa yang sama, kami akan merangkum keupayaan pengoptimuman ini ke dalam antara muka yang ringkas dan mudah digunakan, dan pengguna boleh memasukkan beberapa baris kod, yang boleh menjadi lebih mudah untuk kegunaan bersepadu. Pada masa yang sama, kami juga sedang membina mekanisme untuk pengoptimuman gabungan strategi automatik untuk membantu pengguna memilih strategi pengoptimuman yang berkesan secara automatik.

Apabila digunakan secara khusus, komponen perpustakaan pecutan boleh dipasang dan digunakan secara bebas, atau anda boleh terus menggunakan imej bekas yang kami sediakan.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Berikut ialah beberapa kes aplikasi khusus.

Seperti yang ditunjukkan dalam rajah di bawah, ia adalah terutamanya untuk pengoptimuman pemuat data. Dalam senario ini, modelnya agak kecil, saiz set data juga agak kecil, dan kelajuan pengiraan tulen sebenarnya lebih cepat Walau bagaimanapun, masa memuatkan data merentas EPOCH adalah agak lama, menyebabkan I/O memakan masa kesesakan utama.

Dengan menggunakan proses guna semula dan mekanisme prefetch penuh yang disediakan dalam AIAK, keseluruhan latihan model dipercepatkan sebanyak 166%.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Gambar di bawah ialah kes pengoptimuman pengiraan model.

Dalam senario latihan model kelas Transformer, semasa latihan sebenar, skalabiliti komunikasi adalah hampir kepada linear, nisbah penggunaan masa I/O juga sangat rendah, dan pengiraan adalah kesesakan prestasi utama.

Untuk model ini, AIAK-Training telah menjalankan satu siri pengoptimuman peringkat pengiraan, termasuk gabungan operator bagi struktur utama, ketepatan campuran, penalaan kelompok besar, dsb., dan kecekapan latihan keseluruhan model mempunyai meningkat sebanyak 169%.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Kes dalam rajah di bawah terutamanya menggunakan pengoptimuman pada tahap komunikasi, yang membolehkan strategi pengoptimuman untuk rangkaian jalur lebar rendah dalam persekitaran TCP awan pada beberapa model klasik, seperti resnet50, bert, vgg16 boleh mempercepatkan 26%~78%.

Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Dalam senario pemanduan autonomi, kami juga telah menjalankan satu siri ujian prestasi latihan model pada penglihatan 2D, penglihatan 3D, lidar dan model pra-gabungan biasa prestasi dipercepatkan sebanyak 49%~391%.


Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan

Atas ialah kandungan terperinci Analisis prinsip pecutan latihan AI dan perkongsian amalan kejuruteraan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam