Jawapan ringkas: Gunakan GPU NVIDIA untuk latihan AI dengan terlebih dahulu mengesahkan pemacu dan GPU kelihatan dengan nvidia-smi , kemudian memasang rangka kerja/tindan CUDA yang serasi dan menjalankan ujian "model + kelompok pada cuda" yang kecil. Jika anda mengalami kehabisan memori, kurangkan saiz kelompok dan gunakan ketepatan campuran, sambil memantau penggunaan, memori dan suhu.
Kesimpulan utama:
Pemeriksaan asas : Mulakan dengan nvidia-smi ; betulkan keterlihatan pemacu sebelum anda memasang rangka kerja.
Keserasian tindanan : Pastikan pemacu, masa jalan CUDA dan versi rangka kerja diselaraskan untuk mengelakkan ranap sistem dan pemasangan yang rapuh.
Kejayaan kecil : Sahkan hantaran ke hadapan tunggal berjalan pada CUDA sebelum anda meningkatkan eksperimen.
Disiplin VRAM : Bersandar pada ketepatan campuran, pengumpulan kecerunan dan pemeriksaan titik agar sesuai dengan model yang lebih besar.
Tabiat pemantauan : Jejaki penggunaan, corak memori, kuasa dan suhu supaya anda dapat mengesan kesesakan lebih awal.

Artikel yang mungkin anda ingin baca selepas ini:
🔗 Cara membina ejen AI
Reka bentuk aliran kerja, alatan, memori dan pengawal keselamatan ejen anda.
🔗 Cara menggunakan model AI
Sediakan persekitaran, pakej model dan hantar ke pengeluaran dengan andal.
🔗 Cara mengukur prestasi AI
Pilih metrik, jalankan penilaian dan jejak prestasi dari semasa ke semasa.
🔗 Cara mengautomasikan tugas dengan AI
Automasikan kerja berulang dengan gesaan, aliran kerja dan integrasi.
1) Gambaran keseluruhan - apa yang anda lakukan apabila anda "berlatih menggunakan GPU" 🧠⚡
Apabila anda melatih model AI, anda kebanyakannya melakukan banyak matematik matriks. GPU dibina untuk kerja selari seperti itu, jadi rangka kerja seperti PyTorch, TensorFlow dan JAX boleh memindahkan tugasan berat kepada GPU. ( Dokumen PyTorch CUDA , pemasangan TensorFlow (pip) , Permulaan Pantas JAX )
Dalam praktiknya, "menggunakan GPU NVIDIA untuk latihan" biasanya bermaksud:
-
Parameter model anda (kebanyakannya) berada dalam VRAM GPU
-
Kelompok anda dipindahkan dari RAM ke VRAM setiap langkah
-
Hantaran hadapan dan backprop anda dijalankan pada kernel CUDA ( Panduan Pengaturcaraan CUDA )
-
Kemas kini pengoptimum anda berlaku pada GPU (idealnya)
-
Anda memantau suhu, memori, penggunaan supaya anda tidak memasak apa-apa 🔥 ( dokumen NVIDIA nvidia-smi )
Jika itu kedengaran banyak, jangan risau. Ia kebanyakannya senarai semak dan beberapa tabiat yang anda bina dari semasa ke semasa.
2) Apakah yang menjadikan versi persediaan latihan AI GPU NVIDIA yang baik 🤌
Ini ialah bahagian “jangan bina rumah atas jeli”. Persediaan yang baik untuk Latihan AI ialah persediaan yang kurang dramatik. Kurang dramatik itu stabil. Stabil itu pantas. Pantas itu…baiklah, pantas 😄
Persediaan latihan yang kukuh biasanya mempunyai:
-
VRAM yang mencukupi untuk saiz kelompok + model + keadaan pengoptimum anda
-
VRAM umpama ruang beg pakaian. Anda boleh berkemas dengan lebih bijak, tetapi anda tidak boleh berkemas tanpa had.
-
-
Tindanan perisian yang sepadan (pemacu + masa jalan CUDA + keserasian rangka kerja) ( PyTorch Get Started (pemilih CUDA) , pemasangan TensorFlow (pip) )
-
Storan pantas (NVMe banyak membantu untuk set data yang besar)
-
CPU + RAM yang baik jadi pemuatan data tidak menyebabkan GPU kebuluran ( Panduan Penalaan Prestasi PyTorch )
-
Penyejukan dan ruang kepala kuasa (diremehkan sehingga ia tidak begitu 😬)
-
Persekitaran yang boleh dihasilkan semula (venv/conda atau bekas) supaya naik taraf tidak menjadi huru-hara ( Gambaran keseluruhan NVIDIA Container Toolkit )
Dan satu lagi perkara yang orang terlepas pandang:
-
Tabiat pemantauan - anda menyemak memori dan penggunaan GPU seperti anda menyemak cermin semasa memandu. ( Dokumen NVIDIA nvidia-smi )
3) Jadual Perbandingan - cara popular untuk berlatih dengan GPU NVIDIA (dengan kebiasaan) 📊
Di bawah ialah helaian ringkas tentang "yang mana satu sesuai?". Harga adalah berdasarkan keadaan sebenar (kerana realiti berbeza-beza), dan ya, salah satu daripada sel ini agak tidak kena pada harga asal, sengaja dibuat.
| Alat / Pendekatan | Terbaik untuk | Harga | Mengapa ia berkesan (kebanyakannya) |
|---|---|---|---|
| PyTorch (vanila) PyTorch | kebanyakan orang, kebanyakan projek | Percuma | Fleksibel, ekosistem yang besar, penyahpepijatan mudah - juga semua orang mempunyai pendapat |
| Dokumen PyTorch Lightning | pasukan, latihan berstruktur | Percuma | Mengurangkan plat boiler, gelung yang lebih bersih; kadangkala terasa seperti "ajaib", sehingga ia tidak lagi berfungsi |
| Dokumen Jurulatih Transformer Wajah Berpelukan + Jurulatih | Penalaan halus NLP + LLM | Percuma | Latihan termasuk bateri, tetapan lalai yang hebat, kemenangan pantas 👍 |
| Mempercepatkan Mempercepatkan dokumen | berbilang GPU tanpa rasa sakit | Percuma | Menjadikan DDP kurang menjengkelkan, bagus untuk penskalaan tanpa menulis semula semuanya |
| DeepSpeed ZeRO | model besar, helah ingatan | Percuma | ZeRO, penyingkiran muatan, penskalaan - boleh jadi rumit tetapi memuaskan apabila ia sesuai |
| TensorFlow + Keras TF | saluran paip pengeluaran | Percuma | Perkakas yang kukuh, kisah penggunaan yang baik; sesetengah orang menyukainya, sesetengahnya secara senyap tidak |
| JAX + Flax Permulaan Pantas JAX / Dokumen Flax | kajian + peminat kelajuan | Percuma | Penyusunan XLA boleh menjadi sangat pantas, tetapi penyahpepijatan boleh terasa…abstrak |
| NVIDIA NeMo NeMo | aliran kerja pertuturan + LLM | Percuma | Susunan dioptimumkan NVIDIA, resipi yang sedap - terasa seperti memasak dengan ketuhar yang mewah 🍳 |
| Gambaran Keseluruhan Kit Alat Docker + NVIDIA Container | persekitaran yang boleh dihasilkan semula | Percuma | "Berfungsi pada mesin saya" menjadi "berfungsi pada mesin kami" (kebanyakannya, sekali lagi) |
4) Langkah pertama - sahkan GPU anda dilihat dengan betul 🕵️♂️
Sebelum anda memasang sedozen perkara, sahkan asasnya.
Perkara yang anda ingin menjadi kenyataan:
-
Mesin itu melihat GPU
-
Pemacu NVIDIA dipasang dengan betul
-
GPU tidak tersekat melakukan sesuatu yang lain
-
Anda boleh bertanya dengan andal
Cek klasik ialah:
-
nvidia-smi( dokumen NVIDIA nvidia-smi )
Apa yang anda cari:
-
Nama GPU (cth., RTX, siri-A, dll.)
-
Versi pemacu
-
Penggunaan memori
-
Proses yang sedang dijalankan ( dokumen NVIDIA nvidia-smi )
Jika nvidia-smi gagal, berhenti di situ. Jangan pasang rangka kerja lagi. Ia seperti cuba membakar roti apabila ketuhar anda tidak dipasang. ( Antara Muka Pengurusan Sistem NVIDIA (NVSMI) )
Nota kecil manusia: kadangkala nvidia-smi berfungsi tetapi latihan anda masih gagal kerana masa jalan CUDA yang digunakan oleh rangka kerja anda tidak sepadan dengan jangkaan pemacu. Itu bukan anda yang bodoh. Begitulah… keadaannya 😭 ( PyTorch Get Started (CUDA selector) , TensorFlow install (pip) )
5) Bina tindanan perisian - pemacu, CUDA, cuDNN dan “tarian keserasian” 💃
Di sinilah orang ramai kehilangan masa berjam-jam. Caranya ialah: pilih jalan dan patuhinya .
Pilihan A: CUDA yang dibundel dengan rangka kerja (selalunya paling mudah)
Banyak PyTorch yang dibina dilengkapi dengan masa jalan CUDA mereka sendiri, bermakna anda tidak memerlukan kit alat CUDA penuh yang dipasang di seluruh sistem. Anda kebanyakannya hanya memerlukan pemacu NVIDIA yang serasi. ( PyTorch Get Started (pemilih CUDA) , Versi PyTorch Sebelumnya (roda CUDA) )
Kelebihan:
-
Bahagian yang bergerak lebih sedikit
-
Pemasangan yang lebih mudah
-
Lebih boleh dihasilkan semula mengikut persekitaran
Keburukan:
-
Jika anda mencampurkan persekitaran secara santai, anda boleh menjadi keliru
Pilihan B: Kit alat CUDA Sistem (lebih banyak kawalan)
Anda memasang toolkit CUDA pada sistem dan menyelaraskan semuanya dengannya. ( Dokumen Toolkit CUDA )
Kelebihan:
-
Lebih banyak kawalan untuk binaan tersuai, beberapa perkakasan khas
-
Berguna untuk menyusun operasi tertentu
Keburukan:
-
Lebih banyak cara untuk tidak sepadan dengan versi dan menangis secara senyap
cuDNN dan NCCL, dalam istilah manusia
-
cuDNN mempercepatkan primitif pembelajaran mendalam (konvolusi, bit RNN, dll.) ( dokumen NVIDIA cuDNN )
-
NCCL ialah pustaka "komunikasi GPU-ke-GPU" yang pantas untuk latihan berbilang GPU ( Gambaran keseluruhan NCCL )
Jika anda menjalani latihan berbilang GPU, NCCL adalah sahabat baik anda - dan, kadangkala, rakan sebilik anda yang mudah marah. ( Gambaran keseluruhan NCCL )
6) Latihan GPU pertama anda (contoh pemikiran PyTorch) ✅🔥
Untuk mengikuti Cara menggunakan GPU NVIDIA untuk Latihan AI , anda tidak memerlukan projek besar-besaran terlebih dahulu. Anda memerlukan kejayaan kecil.
Idea teras:
-
Kesan peranti
-
Alihkan model ke GPU
-
Alihkan tensor ke GPU
-
Sahkan larian hantaran ke hadapan di sana ( dokumen PyTorch CUDA )
Perkara yang saya selalu periksa kewarasan awal:
-
torch.cuda.is_available()mengembalikanBenar( torch.cuda.is_available ) -
next(model.parameters()).perantimenunjukkancuda( Forum PyTorch: semak model pada CUDA ) -
Hantaran ke hadapan kelompok tunggal tidak membuat ralat
-
Memori GPU meningkat apabila anda mula berlatih (petanda yang baik!) ( dokumen NVIDIA nvidia-smi )
Soalan biasa "kenapa lambat?" faham
-
Pemuat data anda terlalu perlahan (GPU menunggu melahu) ( Panduan Penalaan Prestasi PyTorch )
-
Anda terlupa untuk memindahkan data ke GPU (oops)
-
Saiz kelompok kecil (GPU kurang digunakan)
-
Anda sedang melakukan prapemprosesan CPU yang berat dalam langkah latihan
Selain itu, ya, GPU anda selalunya akan kelihatan "tidak begitu sibuk" jika kesesakan itu adalah data. Ia seperti mengupah pemandu kereta lumba dan kemudian menyuruh mereka menunggu bahan api setiap pusingan.
7) Permainan VRAM - saiz kelompok, ketepatan campuran dan tidak meletup 💥🧳
Kebanyakan masalah latihan praktikal berkait rapat dengan ingatan. Jika anda mempelajari satu kemahiran, pelajari pengurusan VRAM.
Cara cepat untuk mengurangkan penggunaan memori
-
Ketepatan campuran (FP16/BF16)
-
Biasanya peningkatan kelajuan yang besar juga. Sama ada menang-menang atau tidak 😌 ( Dokumen AMP PyTorch , panduan ketepatan campuran TensorFlow )
-
-
Pengumpulan kecerunan
-
Simulasikan saiz kelompok yang lebih besar dengan mengumpul kecerunan melalui berbilang langkah ( Dokumen latihan Transformers (pengumpulan kecerunan, fp16) )
-
-
Panjang urutan / saiz tanaman yang lebih kecil
-
Kejam tetapi berkesan
-
-
Pemeriksaan pengaktifan
-
Tukar pengiraan untuk memori (kira semula pengaktifan semasa pengunduran) ( torch.utils.checkpoint )
-
-
Gunakan pengoptimum yang lebih ringan
-
Sesetengah pengoptimum menyimpan keadaan tambahan yang mengunyah VRAM
-
Detik "mengapa VRAM masih penuh selepas saya berhenti?"
Rangka kerja selalunya menyimpan memori dalam cache untuk prestasi. Ini adalah perkara biasa. Ia kelihatan menakutkan tetapi ia tidak selalunya kebocoran. Anda belajar membaca corak. ( Semantik PyTorch CUDA: pengagih caching )
Tabiat praktikal:
-
Perhatikan memori yang diperuntukkan vs memori yang dikhaskan (khusus rangka kerja) ( Semantik PyTorch CUDA: pengagih caching )
-
Jangan panik pada nombor menakutkan pertama 😅
8) Pastikan GPU benar-benar berfungsi - penalaan prestasi yang berbaloi dengan masa anda 🏎️
"Membolehkan latihan GPU berfungsi" adalah langkah pertama. Mendapatkannya dengan pantas adalah langkah kedua.
Pengoptimuman berimpak tinggi
-
Tingkatkan saiz kelompok (sehingga sakit, kemudian undur sedikit)
-
Gunakan memori yang disematkan dalam pemuat data (salinan hos-ke-peranti yang lebih pantas) ( Panduan Penalaan Prestasi PyTorch , tutorial pin_memory/tanpa_sekatan PyTorch )
-
Tingkatkan pekerja pemuat data (berhati-hati, terlalu ramai boleh memakan diri) ( Panduan Penalaan Prestasi PyTorch )
-
Ambil kelompok pra-ambil supaya GPU tidak terbiar
-
Gunakan operasi gabungan/kernel yang dioptimumkan apabila tersedia
-
Gunakan ketepatan campuran (sekali lagi, ia sebagus itu) ( dokumen PyTorch AMP )
Halangan yang paling diabaikan
Saluran storan dan prapemprosesan anda. Jika set data anda besar dan disimpan pada cakera perlahan, GPU anda menjadi pemanas ruang yang mahal. Pemanas ruang yang sangat canggih dan sangat berkilat.
Juga, pengakuan kecil: Saya telah "mengoptimumkan" model selama sejam hanya untuk menyedari bahawa pembalakan adalah masalahnya. Mencetak terlalu banyak boleh melambatkan latihan. Ya, memang boleh.
9) Latihan berbilang GPU - DDP, NCCL dan penskalaan tanpa huru-hara 🧩🤝
Sebaik sahaja anda mahukan lebih kelajuan atau model yang lebih besar, anda boleh memilih berbilang GPU. Di sinilah keadaan menjadi lebih mencabar.
Pendekatan biasa
-
Selari Data (DDP)
-
Pisahkan kelompok merentasi GPU, kecerunan penyegerakan
-
Biasanya pilihan "baik" lalai ( dokumen PyTorch DDP )
-
-
Model Selari / Tensor Selari
-
Bahagikan model merentasi GPU (untuk model yang sangat besar)
-
-
Selari Saluran Paip
-
Bahagikan lapisan model kepada beberapa peringkat (seperti barisan pemasangan, tetapi untuk tensor)
-
Jika anda baru bermula, latihan gaya DDP adalah pilihan yang tepat. ( Tutorial DDP PyTorch )
Petua berbilang GPU yang praktikal
-
Pastikan GPU mempunyai keupayaan yang sama (pencampuran boleh menyumbat)
-
Tonton interkoneksi: NVLink vs PCIe penting untuk beban kerja penyegerakan yang berat ( Gambaran keseluruhan NVIDIA NVLink , dokumen NVIDIA NVLink )
-
Pastikan saiz kelompok setiap GPU seimbang
-
Jangan abaikan CPU dan storan - berbilang GPU boleh menguatkan kesesakan data
Dan ya, ralat NCCL boleh terasa seperti teka-teki yang dibalut dengan misteri yang dibalut dengan "mengapa sekarang". Anda tidak disumpah. Mungkin. ( Gambaran keseluruhan NCCL )
10) Pemantauan dan pemprofilan - perkara tidak menarik yang menjimatkan masa anda 📈🧯
Anda tidak memerlukan papan pemuka yang mewah untuk bermula. Anda perlu perhatikan apabila ada sesuatu yang tidak kena.
Isyarat utama untuk diperhatikan
-
Penggunaan GPU : adakah ia sentiasa tinggi atau berduri?
-
Penggunaan memori : stabil, mendaki atau pelik?
-
Penggunaan kuasa : luar biasa rendah boleh bermakna penggunaan yang tidak mencukupi
-
Suhu : suhu tinggi yang berterusan boleh menjejaskan prestasi
-
Penggunaan CPU : isu saluran data muncul di sini ( Panduan Penalaan Prestasi PyTorch )
Pemikiran pemprofilan (versi mudah)
-
Jika penggunaan GPU rendah - kesesakan data atau CPU
-
Jika GPU tinggi tetapi perlahan - ketidakcekapan kernel, ketepatan atau seni bina model
-
Jika kelajuan latihan menurun secara rawak - pendikitan haba, proses latar belakang, gangguan I/O
Saya tahu, pemantauan kedengaran tidak menyeronokkan. Tetapi ia seperti menggunakan flos gigi. Menjengkelkan, kemudian tiba-tiba hidup anda bertambah baik.
11) Penyelesaian masalah - suspek biasa (dan suspek yang kurang biasa) 🧰😵💫
Bahagian ini pada asasnya: "lima isu yang sama, selama-lamanya."
Isu: CUDA kehabisan ingatan
Pembetulan:
-
kurangkan saiz kelompok
-
gunakan ketepatan campuran ( dokumen AMP PyTorch , panduan ketepatan campuran TensorFlow )
-
pengumpulan kecerunan ( Dokumen latihan Transformer (pengumpulan kecerunan, fp16) )
-
pengaktifan pusat pemeriksaan ( torch.utils.checkpoint )
-
tutup proses GPU yang lain
Isu: Latihan berjalan pada CPU secara tidak sengaja
Pembetulan:
-
pastikan model dipindahkan ke
cuda -
pastikan tensor dipindahkan ke
cuda -
semak konfigurasi peranti rangka kerja ( dokumen PyTorch CUDA )
Isu: Kerosakan pelik atau akses memori haram
Pembetulan:
-
sahkan keserasian pemacu + masa jalan ( PyTorch Get Started (pemilih CUDA) , pemasangan TensorFlow (pip) )
-
cuba persekitaran yang bersih
-
kurangkan operasi tersuai
-
jalankan semula dengan tetapan deterministik untuk menghasilkan semula
Isu: Lebih perlahan daripada yang dijangkakan
Pembetulan:
-
semak daya pemprosesan pemuat data ( Panduan Penalaan Prestasi PyTorch )
-
tingkatkan saiz kelompok
-
mengurangkan pembalakan
-
dayakan ketepatan campuran ( dokumen PyTorch AMP )
-
pecahan masa langkah profil
Isu: Pelbagai GPU macet
Pembetulan:
-
sahkan tetapan backend yang betul ( dokumen diedarkan PyTorch )
-
semak konfigurasi persekitaran NCCL (berhati-hati) ( Gambaran keseluruhan NCCL )
-
uji GPU tunggal dahulu
-
memastikan rangkaian/interkoneksi sihat
Nota ringkas: kadangkala penyelesaiannya adalah dengan but semula. Ia terasa mengarut. Ia berkesan. Komputer memang begitu.
12) Kos dan praktikaliti - memilih GPU dan persediaan NVIDIA yang betul tanpa terlalu memikirkan 💸🧠
Bukan setiap projek memerlukan GPU terbesar. Kadangkala anda memerlukan yang mencukupi .
Jika anda sedang memperhalusi model medium
-
Utamakan VRAM dan kestabilan
-
Ketepatan campuran banyak membantu ( dokumen AMP PyTorch , panduan ketepatan campuran TensorFlow )
-
Anda selalunya boleh terlepas dengan satu GPU yang kuat
Jika anda melatih model yang lebih besar dari awal
-
Anda memerlukan berbilang GPU atau VRAM yang sangat besar
-
Anda akan mengambil berat tentang NVLink dan kelajuan komunikasi ( gambaran keseluruhan NVIDIA NVLink , gambaran keseluruhan NCCL )
-
Anda mungkin akan menggunakan pengoptimum memori (ZeRO, offload, dll.) ( Dokumen DeepSpeed ZeRO , Penyelidikan Microsoft: ZeRO/DeepSpeed )
Jika anda sedang melakukan eksperimen
-
Anda mahukan lelaran yang pantas
-
Jangan habiskan semua wang anda untuk GPU dan kemudian kehabisan storan dan RAM
-
Sistem yang seimbang mengatasi sistem yang berat sebelah (kebanyakan hari)
Dan sebenarnya, anda boleh membuang masa berminggu-minggu mengejar pilihan perkakasan yang "sempurna". Bina sesuatu yang boleh dilaksanakan, ukur, kemudian laraskan. Musuh sebenar bukanlah mempunyai gelung maklum balas.
Nota penutup - Cara menggunakan GPU NVIDIA untuk Latihan AI tanpa hilang akal 😌✅
Jika anda tidak mengambil apa-apa lagi daripada panduan ini tentang Cara menggunakan GPU NVIDIA untuk Latihan AI , ambil ini:
-
Pastikan
nvidia-smiberfungsi terlebih dahulu ( dokumen NVIDIA nvidia-smi ) -
Pilih laluan perisian yang bersih (CUDA yang dibundel rangka kerja selalunya paling mudah) ( PyTorch Get Started (pemilih CUDA) )
-
Sahkan larian latihan GPU yang kecil sebelum meningkatkan skala ( torch.cuda.is_available )
-
Urus VRAM seperti rak pantri terhad
-
Gunakan ketepatan campuran lebih awal - ia bukan sekadar "perkara lanjutan" ( dokumen AMP PyTorch , panduan ketepatan campuran TensorFlow )
-
Jika ia perlahan, syak pemuat data dan I/O sebelum menyalahkan GPU ( Panduan Penalaan Prestasi PyTorch )
-
Multi-GPU berkuasa tetapi menambah kerumitan - skala secara beransur-ansur ( dokumen PyTorch DDP , gambaran keseluruhan NCCL )
-
Pantau penggunaan dan suhu supaya masalah muncul lebih awal ( dokumen NVIDIA nvidia-smi )
Latihan menggunakan GPU NVIDIA adalah salah satu kemahiran yang terasa menakutkan, kemudian tiba-tiba ia menjadi…normal. Seperti belajar memandu. Pada mulanya semuanya bising dan mengelirukan dan anda memegang stereng terlalu kuat. Kemudian pada suatu hari anda memandu laju, menghirup kopi, dan menyelesaikan masalah saiz kelompok secara sambil lewa seolah-olah ia bukan masalah besar ☕😄
Soalan Lazim
Apa maksudnya melatih model AI pada GPU NVIDIA
Latihan pada GPU NVIDIA bermaksud parameter model dan kelompok latihan anda berada dalam VRAM GPU, dan pengiraan yang berat (langkah hantaran ke hadapan, backprop, pengoptimum) dilaksanakan melalui kernel CUDA. Dalam praktiknya, ini selalunya bergantung pada memastikan model dan tensor berada pada cuda , kemudian mengawasi memori, penggunaan dan suhu supaya daya pemprosesan kekal konsisten.
Cara mengesahkan GPU NVIDIA berfungsi sebelum memasang apa-apa lagi
Mulakan dengan nvidia-smi . Ia sepatutnya menunjukkan nama GPU, versi pemacu, penggunaan memori semasa dan sebarang proses yang sedang berjalan. Jika nvidia-smi gagal, tangguhkan PyTorch/TensorFlow/JAX - betulkan keterlihatan pemacu terlebih dahulu. Ia merupakan semakan asas "adakah ketuhar dipasang" untuk latihan GPU.
Memilih antara sistem CUDA dan CUDA yang dibundel dengan PyTorch
Pendekatan biasa adalah menggunakan CUDA yang dibundel dengan rangka kerja (seperti kebanyakan roda PyTorch) kerana ia mengurangkan bahagian yang bergerak - anda terutamanya memerlukan pemacu NVIDIA yang serasi. Memasang toolkit CUDA sistem penuh menawarkan lebih banyak kawalan (binaan tersuai, operasi kompilasi), tetapi ia juga memperkenalkan lebih banyak peluang untuk ketidakpadanan versi dan ralat masa jalan yang mengelirukan.
Mengapa latihan masih boleh menjadi perlahan walaupun dengan GPU NVIDIA
Selalunya, GPU kekurangan bekalan input. Pemuat data yang lewat, prapemprosesan CPU yang banyak dalam langkah latihan, saiz kelompok yang kecil atau storan yang perlahan semuanya boleh menjadikan GPU yang berkuasa bertindak seperti pemanas ruang terbiar. Meningkatkan pekerja pemuat data, mendayakan memori yang disemat, menambah prapengambilan dan memangkas pengelogan adalah langkah pertama yang biasa dilakukan sebelum menyalahkan model.
Cara mencegah ralat "CUDA kehabisan memori" semasa latihan GPU NVIDIA
Kebanyakan pembetulan adalah taktik VRAM: kurangkan saiz kelompok, dayakan ketepatan campuran (FP16/BF16), gunakan pengumpulan kecerunan, pendekkan panjang jujukan/saiz pangkas atau gunakan pemeriksaan titik pengaktifan. Periksa juga proses GPU lain yang menggunakan memori. Sedikit percubaan dan kesilapan adalah perkara biasa - penganggaran VRAM menjadi tabiat teras dalam latihan GPU praktikal.
Mengapa VRAM masih boleh kelihatan penuh selepas skrip latihan tamat
Rangka kerja sering menyimpan memori GPU dalam cache untuk kelajuan, jadi memori yang dikhaskan boleh kekal tinggi walaupun memori yang diperuntukkan berkurangan. Ia mungkin menyerupai kebocoran, tetapi selalunya pengagih caching bertindak seperti yang direka. Tabiat praktikalnya adalah untuk menjejaki corak dari semasa ke semasa dan membandingkan "diperuntukkan vs dikhaskan" daripada tertumpu pada satu snapshot yang membimbangkan.
Cara mengesahkan model tidak berlatih secara senyap pada CPU
Semakan kewarasan awal: sahkan torch.cuda.is_available() mengembalikan True , sahkan next(model.parameters()).device menunjukkan cuda , dan jalankan hantaran ke hadapan tunggal tanpa ralat. Jika prestasi terasa perlahan secara mencurigakan, sahkan juga kumpulan anda sedang dipindahkan ke GPU. Adalah perkara biasa untuk memindahkan model dan secara tidak sengaja meninggalkan data.
Laluan paling mudah ke dalam latihan berbilang GPU
Data Parallel (latihan gaya DDP) selalunya merupakan langkah pertama yang terbaik: memisahkan kelompok merentasi GPU dan kecerunan penyegerakan. Alat seperti Accelerate boleh menjadikan berbilang GPU kurang menyusahkan tanpa penulisan semula penuh. Jangkakan pembolehubah tambahan - komunikasi NCCL, perbezaan interkoneksi (NVLink vs PCIe) dan kesesakan data yang diperkuatkan - jadi penskalaan secara beransur-ansur selepas larian GPU tunggal yang kukuh cenderung menjadi lebih baik.
Apa yang perlu dipantau semasa latihan GPU NVIDIA untuk mengesan masalah lebih awal
Pantau penggunaan GPU, penggunaan memori (stabil vs mendaki), penggunaan kuasa dan suhu - pendikitan boleh mengurangkan kelajuan secara senyap. Pantau penggunaan CPU juga, kerana masalah saluran data sering muncul di situ dahulu. Jika penggunaannya berduri atau rendah, syak I/O atau pemuat data; jika ia tinggi tetapi masa langkah masih perlahan, profilkan kernel, mod ketepatan dan pecahan masa langkah.
Rujukan
-
NVIDIA - Dokumen NVIDIA nvidia-smi - docs.nvidia.com
-
NVIDIA - Antara Muka Pengurusan Sistem NVIDIA (NVSMI) - developer.nvidia.com
-
NVIDIA - Gambaran keseluruhan NVIDIA NVLink - nvidia.com
-
PyTorch - PyTorch Bermula (pemilih CUDA) - pytorch.org
-
PyTorch - Dokumen CUDA PyTorch - docs.pytorch.org
-
TensorFlow - Pemasangan TensorFlow (pip) - tensorflow.org
-
JAX - Permulaan Pantas JAX - docs.jax.dev
-
Muka Berpelukan - Dokumen Jurulatih - huggingface.co
-
AI Kilat - Dokumen kilat - lightning.ai
-
DeepSpeed - Dokumen ZeRO - deepspeed.readthedocs.io
-
Penyelidikan Microsoft - Penyelidikan Microsoft: ZeRO/DeepSpeed - microsoft.com
-
Forum PyTorch - Forum PyTorch: semak model pada CUDA - discuss.pytorch.org