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.