Transcript
00:00:00Ini adalah DeepSpeed, pustaka open-source Microsoft yang terhubung langsung ke PyTorch dan mengatasi masalah memori yang sebenarnya.
00:00:07Pustaka ini memungkinkan Anda menjalankan model yang biasanya langsung crash pada satu GPU tanpa membuatnya kelebihan beban; model besar gagal bukan karena lambat.
00:00:14Model tersebut gagal karena status optimizer, gradien, dan parameter akhirnya menghabiskan VRAM Anda. Rahasia DeepSpeed adalah ZeRO, yang memecah status pelatihan.
00:00:23Jadi, Anda tidak menyimpan data yang sama di semua tempat. Kami punya video baru setiap saat, jadi pastikan untuk subscribe.
00:00:30Sekarang, mari kita mulai dan jalankan ini. Saya akan menggunakan Google Colab karena saya memakai Mac dengan chip M4 Pro.
00:00:40Saya tidak punya GPU Nvidia, yang membuatnya agak sulit, tapi saya masih bisa melakukannya di Colab sebagai gantinya.
00:00:46Pertama, saya akan mengecek GPU saya dengan cepat, lalu kita bisa menginstal semua paket via pip.
00:00:51Saya akan menginstal PyTorch, Hugging Face, dan DeepSpeed, lalu menjalankan DS Report untuk mengecek pengaturan CUDA dan compiler.
00:00:59Beberapa instalasi tambahan dilakukan untuk memastikan semuanya berjalan lancar.
00:01:02Lalu kita akan membuat file konfigurasi JSON untuk mengatur DeepSpeed; file konfigurasi ini adalah kunci utamanya.
00:01:09Kita mulai dengan ZeRO Stage 2, yang memecah status optimizer dan gradien di seluruh GPU.
00:01:14Hal ini secara signifikan mengurangi penggunaan memori sementara parameter model tetap direplikasi. Jangan terlalu dipikirkan karena bagian ini sempat membuat saya bingung.
00:01:22Mulailah dari dokumentasi resmi, ubah satu per satu, dan tahan keinginan untuk menambahkan konfigurasi asal-asalan.
00:01:28Konfigurasi tersebut bisa Anda temukan di dokumentasi Hugging Face maupun DeepSpeed.
00:01:34Dan saya juga mendapatkan sebagian besar skrip Python saya dari dokumentasi tersebut.
00:01:37Tetapi saya melakukan beberapa penyesuaian agar sistem Mac saya bisa menanganinya dengan lebih baik.
00:01:42Jika langkah ini gagal, berhenti di sini karena sebagian besar masalah DeepSpeed adalah ketidakcocokan CUDA, bukan model Anda.
00:01:48Sekarang kita akan menjalankan semuanya dan melihat hasilnya.
00:01:51Saya akan menggunakan dataset kecil yang diimpor untuk contoh ini agar prosesnya lebih cepat.
00:01:58Dan berhasil, setelah beberapa menit, kita bisa melihat langkah-langkah yang diambil dan juga puncak memori GPU-nya.
00:02:03Memang, training loss pada percobaan ini tidak banyak berubah atau turun secara signifikan.
00:02:08Tapi kita bisa mengoptimalkannya atau menggunakan dataset yang lebih besar untuk hasil loss yang lebih baik.
00:02:13Inilah yang orang pikir akan mereka dapatkan, namun ternyata tetap mengalami kehabisan memori (OOM).
00:02:16ZeRO hadir dalam beberapa tahap. Setiap tahap menjawab satu pertanyaan: Apa yang boleh saya berhenti simpan di satu GPU?
00:02:24Stage 1 memecah status optimizer, Stage 2 melakukan hal yang sama serta memecah gradien.
00:02:30Anda memangkas lebih dalam hal-hal yang diam-diam menguras memori Anda. Lalu ada ZeRO Stage 3.
00:02:36Ini adalah tahap yang besar; ia memecah status optimizer, gradien, dan parameter.
00:02:40Ini adalah penghematan memori terbesar, tetapi itu pun terkadang belum cukup.
00:02:45Jika model masih belum muat, ZeRO-Infinity bisa memindahkan beban ke CPU atau bahkan NVMe.
00:02:50Jadi ya, Anda menukar kecepatan demi skala. Tapi terkadang kemenangan sebenarnya adalah saat model tersebut akhirnya bisa dijalankan.
00:02:56Jika Anda berpikir memori bukan satu-satunya masalah, Anda benar. DeepSpeed mendukung paralelisme 3D: data, pipeline, dan tensor.
00:03:04Serta memiliki dukungan bawaan untuk model Mixture of Experts.
00:03:09Sehingga model sparse tidak membebani komputasi Anda.
00:03:12Sekarang kita punya pilihan nyata. DeepSpeed terintegrasi sangat baik dengan Hugging Face dan Accelerate.
00:03:19Jadi Anda tidak perlu membangun semuanya dari nol.
00:03:21Anda cukup ambil yang dibutuhkan dan abaikan sisanya. Sekarang, benchmark sangat bergantung pada setup Anda.
00:03:27Jadi jangan selalu percaya pada angka besar. Saya mencoba menjalankannya beberapa kali.
00:03:30Tapi sekali lagi, karena saya memakai M4 Pro, saya tidak bisa mengoptimalkannya lebih jauh hanya dengan model dasar ini.
00:03:36Sulit untuk memastikannya, tapi proyek DeepSpeed lainnya telah menunjukkan peningkatan throughput yang besar.
00:03:41Terutama saat memori menjadi faktor penghambat. Jika Anda di Windows atau Linux, ini bisa menjadi keuntungan besar.
00:03:46Langkah terbaik adalah mencobanya sendiri. Mulailah dengan menggunakan konfigurasi resmi.
00:03:51Itulah yang saya lakukan di sini, sedikit mengubahnya untuk Mac, lalu memperbaiki masalah CUDA.
00:03:56Kemudian pantau RAM CPU jika Anda mengaktifkan offload, dan jika nanti Anda memutuskan menggunakan multi-GPU.
00:04:01DeepSpeed pada dasarnya adalah tombol “saya menolak kehabisan memori hari ini”.
00:04:07Begitu Anda memahami ZeRO dan cara kerja offloading, model besar menjadi praktis meski dengan hardware terbatas.
00:04:14Tapi proses persiapannya memang bisa membingungkan pada awalnya.
00:04:17Subscribe jika ini membantu menghemat waktu GPU Anda atau jika Anda menyukai alat pengembang seperti ini. Sampai jumpa di video lainnya.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video