Dalam lanskap AI yang berkembang pesat saat ini, permintaan untuk kumpulan data berkualitas tinggi, beranotasi dan model yang disesuaikan lebih besar dari sebelumnya. Untuk mengatasi kebutuhan ini, proyek kami bertujuan untuk mengembangkan modul inovatif yang dengan mulus mengintegrasikan anotasi data dengan fine-tuning model. Modul ini akan memanfaatkan model bahasa mutakhir seperti Claude atau ChatGPT-4 untuk memberi label gambar pelanggan yang disediakan, dan kemudian menyempurnakan model difusi XL (SDXL) yang stabil menggunakan anotasi ini.
Tujuan dari proyek ini adalah untuk membuat modul yang kuat dan efisien yang mengotomatiskan proses anotasi data dan meningkatkan pelatihan model. Dengan mengintegrasikan kemampuan AI canggih, kami bertujuan untuk menghasilkan model SDXL yang sangat mudah beradaptasi dan tepat disesuaikan dengan dataset yang baru dianotasi.
Memanfaatkan API Claude/ChatGpt-4 (atau serupa) untuk menghasilkan anotasi berkualitas tinggi untuk satu set 5-20 gambar pelanggan.
Pastikan anotasi akurat dan konsisten untuk membuat dataset yang andal untuk tujuan pelatihan.
Fine-tune model SDXL menggunakan dataset beranotasi.
Menerapkan teknik adaptasi rendah (LORA) untuk mengoptimalkan kinerja model berdasarkan karakteristik spesifik dari data beranotasi.
Proyek ini dirancang untuk meningkatkan efisiensi dan keakuratan pengembangan model AI dengan mengotomatisasi dan mengintegrasikan proses penting. Kombinasi model bahasa canggih untuk anotasi dan metode penyempurnaan yang canggih akan menghasilkan solusi yang sangat efektif yang memenuhi meningkatnya kebutuhan berbagai aplikasi AI. Dengan mengurangi tenaga kerja manual dan meningkatkan kinerja model, proyek ini akan memberikan nilai signifikan bagi industri yang mengandalkan teknologi AI generatif.

Ada jenis fine-tuning yang berbeda. Pilihan metode penyempurnaan adalah tergantung pada spesifikasi dan penggunaan sistem. Model Lora (adaptasi rendah) menawarkan efisiensi dan kekompakan yang lebih besar. Mereka berfungsi seperti adaptor yang membangun model pos pemeriksaan yang ada. Secara khusus, model LORA memperbarui hanya sebagian parameter dari model pos pemeriksaan, sehingga meningkatkan kemampuannya. Pendekatan ini memungkinkan model LORA untuk mempertahankan ukuran yang lebih kecil, biasanya mulai dari 2MB hingga 500MB, dan memungkinkan penyempurnaan yang sering untuk konsep atau gaya tertentu.
Misalnya, ketika menyempurnakan model difusi yang stabil menggunakan Dreambooth, yang memodifikasi seluruh model untuk beradaptasi dengan konsep atau gaya tertentu, sumber daya komputasi yang signifikan diperlukan karena ukuran model besar yang dihasilkan (sekitar 2 hingga 7 GB) dan penggunaan GPU intensif. Sebaliknya, model LORA mencapai hasil inferensi yang sebanding dengan persyaratan GPU yang jauh lebih rendah.
Sementara LORA adalah metode yang diadopsi secara luas, ada pendekatan alternatif untuk memodifikasi difusi stabil. Salah satu metode tersebut melibatkan modul silang, yang memproses input yang diperoleh dari mengubah teks prompt menjadi embeddings teks. Inversi tekstual mewakili pendekatan lain, bahkan lebih kompak dan lebih cepat daripada Lora. Namun, inversi tekstual terbatas pada embeddings teks penyempurnaan saja untuk konsep atau gaya tertentu. U-Net yang mendasari yang bertanggung jawab untuk pembuatan gambar tetap tidak berubah, membatasi inversi tekstual untuk menghasilkan gambar yang mirip dengan yang digunakan selama pelatihan, tanpa kemampuan untuk menghasilkan output yang sama sekali baru.
Dalam proyek ini, ada dua jenis metode penyempurnaan. Opsi pertama adalah menggunakan kombinasi DreamBooth dan Lora dan yang lainnya hanya menggunakan Lora. Menggunakan opsi pertama adalah pilihan terbaik dan itu adalah metode yang disukai dalam proyek ini. Alasan pilihan ini adalah:
Peningkatan kemampuan beradaptasi: DreamBooth adalah metode penyempurnaan yang memungkinkan adaptasi komprehensif dari seluruh model terhadap konsep atau gaya tertentu. Dengan menyempurnakan dengan DreamBooth, model SDXL dapat mempelajari detail dan karakteristik yang bernuansa yang selaras dengan output yang diinginkan.
Efisiensi dan kekompakan: Lora (adaptasi peringkat rendah) berperan setelah penyempurnaan Dreambooth. Model LORA dirancang untuk mengoptimalkan efisiensi dengan memperbarui hanya sebagian dari parameter model pos pemeriksaan. Pendekatan ini secara signifikan mengurangi ukuran model (biasanya 2MB hingga 500MB) dibandingkan dengan model yang sepenuhnya disempurnakan, seperti yang dimodifikasi semata-mata oleh Dreambooth.
Mengurangi Sumber Daya Komputasi: Menggabungkan DreamBooth dengan hasil LORA dalam model yang membutuhkan lebih sedikit sumber daya GPU selama pelatihan dan inferensi. Dreambooth pada awalnya membutuhkan sumber daya yang substansial karena proses penyempurnaannya yang komprehensif, tetapi pengurangan parameter Lora berikutnya memastikan bahwa model tersebut tetap dapat dikelola dan efisien.
Pelestarian Kinerja: Terlepas dari keuntungan efisiensinya, Lora mempertahankan kinerja berkualitas tinggi yang dicapai melalui penyempurnaan Dreambooth. Kombinasi ini memastikan bahwa model mempertahankan kemampuannya untuk menghasilkan output yang mengesankan, sebanding dengan yang diproduksi oleh model yang sepenuhnya disempurnakan.
Fleksibilitas untuk penyempurnaan berulang: Pendekatan berulang dari DreamBooth diikuti oleh Lora memungkinkan penyempurnaan dan penyempurnaan yang berulang. Fleksibilitas ini sangat penting dalam skenario di mana adaptasi berkelanjutan terhadap konsep atau gaya yang berkembang diperlukan tanpa mengurangi efisiensi atau kinerja model.
Seperti disebutkan di atas, cara yang disukai untuk menyempurnakan model SDXL dalam proyek ini adalah kombinasi Dreambooth dan Lora. Alasan di balik menggabungkan Dreambooth dan Lora terletak pada mengoptimalkan trade-off antara model adaptasi dan efisiensi komputasi. DreamBooth memungkinkan adaptasi menyeluruh dari parameter model untuk nuansa spesifik dalam data atau output yang diinginkan. Namun, adaptasi komprehensif ini dapat menyebabkan ukuran model yang lebih besar dan peningkatan tuntutan komputasi, terutama selama pelatihan dan inferensi. Di sisi lain, Lora mengintervensi pasca-Dreambooth untuk merampingkan model, mengurangi ukurannya sambil menjaga kinerjanya. Kombinasi ini memanfaatkan kekuatan kedua pendekatan: Dreambooth untuk adaptasi yang tepat dan LORA untuk manajemen parameter yang efisien.
Langkah utama dari pendekatan penyempurnaan ini adalah:
Penyesuaian Parameter: Gunakan DreamBooth untuk menyesuaikan seluruh set parameter dalam model SDXL untuk menyelaraskan lebih dekat dengan tujuan yang ditentukan. Proses ini melibatkan pembaruan iteratif berdasarkan dataset target atau karakteristik output yang diinginkan.
Fase Pelatihan: Jalankan proses penyempurnaan menggunakan tujuan yang ditentukan dan data pelatihan. Fase ini memastikan bahwa model SDXL menjadi disesuaikan dengan nuansa dan persyaratan khusus dari tugas yang dihadapi.
Pemilihan parameter: Post-Dreambooth, identifikasi subset parameter yang paling penting untuk mempertahankan atau meningkatkan kinerja. Langkah ini melibatkan menganalisis pentingnya dan dampak parameter yang berbeda dalam model SDXL yang disesuaikan.
Faktorisasi peringkat rendah: Terapkan teknik LORA, seperti faktorisasi matriks rendah, ke subset parameter yang dipilih ini. Lora menguraikan matriks parameter menjadi komponen peringkat rendah, yang mengurangi redundansi dan memfokuskan sumber daya komputasi pada parameter yang paling berpengaruh.
Pembaruan Parameter Selektif: Perbarui hanya komponen peringkat rendah yang diidentifikasi, sehingga mengoptimalkan efisiensi model sambil melestarikan atau meningkatkan metrik kinerjanya.
(Kembali ke atas)
Accelerate adalah perpustakaan yang serba guna dan ramah pengguna yang dirancang dengan memeluk wajah untuk merampingkan dan mengoptimalkan proses pelatihan dan menggunakan model pembelajaran mesin pada berbagai pengaturan perangkat keras. Ini menawarkan antarmuka terpadu yang mengabstraksi kompleksitas mengkonfigurasi dan mengelola lingkungan pelatihan terdistribusi yang berbeda, seperti pengaturan multi-GPU dan TPU. Accelerate memudahkan pengembang untuk mengukur kode Pytorch mereka, dengan fokus pada pengembangan model daripada infrastruktur yang mendasarinya.
Manfaat perpustakaan ini adalah:
Menyederhanakan Pelatihan Terdistribusi: Menghilangkan kebutuhan untuk secara manual mengonfigurasi dan mengelola pengaturan terdistribusi yang kompleks, memungkinkan Anda untuk fokus pada pengembangan dan menyempurnakan model Anda.
Meningkatkan Pemanfaatan Sumber Daya: Memaksimalkan penggunaan perangkat keras yang tersedia, memastikan bahwa GPU dan TPU Anda digunakan secara efektif untuk mempercepat proses pelatihan dan inferensi.
Mendukung model besar: memfasilitasi penanganan model besar yang membutuhkan daya memori dan komputasi yang signifikan, membuatnya dapat diakses untuk bekerja dengan jaringan saraf mutakhir.
Mengurangi overhead pengembangan: merampingkan integrasi pelatihan terdistribusi ke dalam proyek Anda, menghemat waktu dan mengurangi overhead yang terkait dengan mengelola berbagai lingkungan perangkat keras.
Bitsandbytes adalah perpustakaan yang efisien dan inovatif yang dirancang untuk mengoptimalkan kinerja jaringan saraf skala besar, terutama dalam konteks pelatihan dan inferensi. Ini menyediakan alat dan teknik untuk secara signifikan mengurangi konsumsi memori dan overhead komputasi tanpa mengorbankan akurasi. Salah satu fitur yang menonjol dari Bitsandbytes adalah dukungannya untuk pengoptimal presisi 8-bit.
Dalam proyek ini, kami menggunakan teknik pengoptimal 8-bit. Pengoptimal 8-bit di Bitsandbytes adalah teknik yang menghitung ketepatan bobot dan gradien dari bilangan floating-point 32-bit menjadi bilangan bulat 8-bit selama proses pelatihan. Memanfaatkan pengoptimal 8-bit dari Bitsandbytes sangat menguntungkan untuk proyek-proyek yang melibatkan jaringan saraf skala besar, seperti penyempurnaan model generatif seperti stabil difusi XL (SDXL). Alasan utama untuk menggunakan pengoptimal 8-bit meliputi:
Menangani model yang lebih besar: Muat model yang lebih besar ke dalam memori perangkat keras yang tersedia, memungkinkan pelatihan arsitektur canggih yang seharusnya tidak layak.
Pelatihan yang lebih cepat: mempercepat waktu pelatihan dengan mengurangi beban komputasi, memungkinkan untuk eksperimen dan iterasi yang lebih cepat.
Optimalisasi Sumber Daya: Maksimalkan penggunaan perangkat keras yang tersedia, mengurangi kebutuhan untuk peningkatan yang mahal dan memanfaatkan sumber daya yang ada secara efisien.
Peningkatan kinerja: Mencapai akurasi dan kinerja yang sebanding dengan metode pelatihan tradisional 32-bit sambil mendapatkan manfaat dari berkurangnya permintaan memori dan komputasi.
Perpustakaan Transformers, yang dikembangkan oleh Hugging Face, adalah perpustakaan open-source yang menyediakan berbagai model pra-terlatih canggih untuk pemrosesan bahasa alami (NLP) dan tugas-tugas lainnya. Ini mendukung berbagai arsitektur transformator, seperti Bert, GPT, T5, Roberta, dan banyak lainnya. Perpustakaan dirancang untuk memudahkan menggunakan model yang kuat ini untuk berbagai aplikasi, termasuk klasifikasi teks, terjemahan, penjawab pertanyaan, dan banyak lagi.
Manfaat menggunakan perpustakaan ini adalah:
Akses ke model mutakhir: Dengan mudah mengakses dan mengimplementasikan beberapa model paling canggih di NLP dan seterusnya, memastikan bahwa Anda bekerja dengan arsitektur berkinerja terbaik.
Perkembangan Cepat: API langsung perpustakaan memungkinkan untuk prototipe dan eksperimen cepat, secara signifikan mempercepat proses pengembangan. Transfer Kemampuan Belajar: Fine-Tune Model Pra-Terlatih yang Kuat pada Tugas Spesifik Anda, Memanfaatkan Pengetahuan Sebelumnya dan Mencapai Kinerja Tinggi dengan Data Lebih sedikit.
Aplikasi Serbaguna: Gunakan pustaka untuk spektrum tugas yang luas, termasuk klasifikasi teks, analisis sentimen, pengenalan entitas bernama, terjemahan mesin, dan banyak lagi.
Dukungan Komunitas yang Kuat: Manfaat dari komunitas yang kuat dan sumber daya luas yang disediakan dengan memeluk wajah, memastikan bahwa Anda memiliki dukungan yang diperlukan untuk mengatasi tantangan dan berinovasi dalam proyek Anda.
Perpustakaan PEFT (Parameter-Efficient Fine-Tuning) dirancang untuk mengoptimalkan proses penyempurnaan model pembelajaran mesin skala besar. Dikembangkan untuk mengatasi tantangan menyempurnakan model besar-besaran dengan sumber daya komputasi yang terbatas, PEFT berfokus pada teknik yang memungkinkan adaptasi yang efisien dari model pra-terlatih untuk tugas-tugas baru dengan perubahan minimal pada parameter model.
Manfaat menggunakan PEFT:
Efisiensi: Berfokus pada metode yang efisien parameter, mengurangi overhead komputasi dan memori yang terkait dengan penyempurnaan model besar.
Aksesibilitas: Memungkinkan untuk menyempurnakan model canggih pada perangkat keras standar, mendemokratisasi akses ke teknik pembelajaran mesin canggih.
Kecepatan: Mempercepat proses penyempurnaan, memungkinkan pembaruan model dan penyebaran yang lebih cepat.
Kinerja: Memastikan kinerja tinggi bahkan dengan lebih sedikit parameter yang disesuaikan, berkat teknik fine-tuning canggih.
Fleksibilitas: Dapat diterapkan pada berbagai model dan tugas, menyediakan alat serbaguna untuk praktisi pembelajaran mesin.
(Kembali ke atas)
Backpropagation, yang menghitung gradien ini, membutuhkan menyimpan aktivasi menengah model. Ini bisa sangat intensif, terutama untuk model besar seperti SDXL. Gradient Checkpointing membahas tantangan memori ini dengan memperdagangkan penggunaan memori untuk waktu perhitungan tambahan. Alih -alih menyimpan semua aktivasi menengah di seluruh model selama backpropagation, pemeriksaan gradien secara berkala menghitung ulang aktivasi mulai dari pos pemeriksaan yang sebelumnya disimpan. Pendekatan ini mengurangi penggunaan memori puncak dengan menghitung ulang aktivasi secara langsung selama lulus mundur. Dengan menggunakan gradien checkpointing, overhead memori menyimpan semua aktivasi menengah berkurang. Ini sangat bermanfaat ketika model penyempurnaan yang telah mengalami penyesuaian parameter yang luas (DreamBooth) dan pembaruan selektif (LORA). Sementara checkpointing gradien mengurangi konsumsi memori, ia memperkenalkan overhead komputasi tambahan karena rekomputasi. Pertukaran antara memori dan perhitungan perlu diseimbangkan berdasarkan sumber daya yang tersedia dan tujuan penyempurnaan spesifik.
Adam (Estimasi Momen Adaptif) adalah algoritma optimasi populer yang banyak digunakan dalam pembelajaran mendalam. Ini menggabungkan tingkat pembelajaran adaptif untuk setiap parameter dengan momentum untuk mempercepat konvergensi. Biasanya, Adam menggunakan bilangan floating-point 32-bit (presisi tunggal) untuk menyimpan gradien dan memperbarui parameter. '8 bit Adam' memodifikasi ini dengan menggunakan nomor titik tetap 8-bit untuk operasi ini. Dengan menggunakan presisi 8-bit alih-alih 32-bit, '8 bit Adam' secara signifikan mengurangi jejak memori yang diperlukan untuk menyimpan gradien dan parameter selama pelatihan. Ini sangat menguntungkan untuk model besar seperti SDXL, yang memiliki banyak parameter. Operasi aritmatika presisi yang lebih rendah berpotensi mempercepat perhitungan karena berkurangnya persyaratan bandwidth memori. Hal ini dapat menyebabkan waktu pelatihan yang lebih cepat, terutama pada arsitektur perangkat keras yang dioptimalkan untuk operasi presisi yang lebih rendah. Namun, ada trade-off. Menggunakan presisi yang lebih rendah dapat mempengaruhi akurasi dan stabilitas model, terutama jika tidak diimplementasikan dengan cermat. Teknik seperti penskalaan gradien atau penyesuaian presisi adaptif mungkin diperlukan untuk mengurangi potensi kehilangan akurasi.
Ada dua tingkat presisi dalam presisi titik mengambang, titik mengambang 32-bit dan titik mengambang 16-bit. 32-bit Floating Point adalah presisi standar yang digunakan dalam kerangka kerja pembelajaran yang dalam untuk menyimpan parameter model dan melakukan perhitungan. Ini memberikan akurasi numerik yang tinggi tetapi membutuhkan lebih banyak sumber daya memori dan komputasi. 16-bit floating point adalah format presisi yang dikurangi yang menggunakan setengah memori titik mengambang 32-bit. Ini mempercepat perhitungan, terutama pada GPU dengan inti tensor, sambil mempertahankan ketepatan numerik yang cukup untuk banyak tugas pembelajaran yang mendalam. Memanfaatkan presisi 16-bit dapat secara signifikan mempercepat waktu pelatihan, terutama untuk model besar seperti SDXL yang melibatkan perhitungan yang kompleks. Juga, presisi yang dikurangi membutuhkan lebih sedikit bandwidth memori, membuatnya layak untuk melatih model yang lebih besar atau ukuran batch dalam batas perangkat keras yang tersedia.
(Kembali ke atas)
Instruksi tentang pengaturan proyek Anda menggunakan Colab. Silakan ikuti tautan di bawah ini untuk melatihnya sendiri. Anda dapat menemukan model pretrained di folder "patunge_lora".
Untuk menjalankan demo inferensi streamlit dengan model pretrained yang dilatih dengan dataset patung marmer, gunakan perintah berikut.
Untuk memasang paket yang diperlukan, di terminal, ketik:
pip install -r requirements.txtDi terminal, ketik:
streamlit run main.py(Kembali ke atas)