Dalam kertas penyelidikan mengenai model GIT, dijelaskan bahawa pengekod penglihatan yang kuat digunakan dan parameter rawak digunakan untuk model bahasa. Kali ini, memandangkan matlamatnya adalah untuk menggunakan model bahasa kelas 7B, model pra-latihan akan digunakan pada model bahasa. Modul berikut akan diperiksa untuk penalaan halus. The Unjuran GIT, sebagai modul yang dimulakan, sentiasa disertakan. Sesetengah kombinasi mungkin kelihatan berlebihan, tetapi ia diterokai tanpa terlalu mempedulikan percubaan ini.
Modul yang ditetapkan untuk latihan diberi kecerunan, manakala selebihnya diubah suai kepada tidak mempunyai kecerunan.
# Menentukan parameter untuk dilatih (melatih semua akan meningkatkan penggunaan memori)
untuk nama, p dalam model.model.named_parameters():
jika np.any([k dalam nama untuk k dalam keys_finetune]):
p.requires_grad = Benar
lain:
p.requires_grad = Salah
Vision Encoder dan LLM yang digunakan untuk peperiksaan ini ialah:
- openai/clip-vit-base-patch16
- facebook/opt-350m
Latihan menggunakan set data COCO dan berlangsung selama 5 zaman.
Berikut ialah modul sasaran yang dilatih semasa setiap percubaan:
- Projek: Unjuran GIT. Dimulakan secara rawak, jadi ia sentiasa dilatih.
- LoRA: Pertanyaan, Kunci dan Nilai perhatian diri dalam model bahasa telah digunakan.
- OPT: Semua lapisan telah dilatih.
- ViT: Semua lapisan telah dilatih.
- Ketua: Ketua akhir OPT telah dilatih.
(Nota: Walaupun LoRA boleh digunakan pada ViT, tetapi untuk mengelakkan percubaan terlalu rumit, ia tidak disertakan kali ini.)
Seperti yang ditunjukkan dalam plot kehilangan latihan, nampaknya beberapa kumpulan tidak menunjukkan prestasi yang baik. Ini berlaku apabila OPT dimasukkan dalam latihan. Walaupun semua eksperimen telah dijalankan dalam keadaan yang agak serupa, pelarasan yang lebih terperinci, seperti kadar pembelajaran, mungkin diperlukan semasa memperhalusi model bahasa. Keputusan, tidak termasuk model di mana OPT disertakan dalam latihan, akan diperiksa seterusnya.
Kedua-dua latihan dan pengesahan Kerugian paling banyak menurun dengan Unjuran+LoRA model. Penalaan halus akhir kepala lapisan menunjukkan hasil yang hampir sama. Jika ViT juga dilatih, Kerugian kelihatan lebih tinggi sedikit dan keputusan kelihatan tidak stabil. Walaupun apabila menambah LoRA semasa latihan ViT, kerugian masih cenderung tinggi. Untuk penalaan halus dengan data ini, nampaknya menggunakan model ViT terlatih tanpa mengemas kini parameternya menghasilkan hasil yang lebih stabil. Keberkesanan LoRA telah diakui di pelbagai tempat, dan terbukti daripada eksperimen ini bahawa penambahan LoRA pada LLM meningkatkan kedua-dua kehilangan latihan dan pengesahan.
Menyemak keputusan inferens pada beberapa data ujian:
Apabila melatih OPT itu sendiri, hasilnya adalah buruk seperti akibat kehilangan, menjadikan model itu kehilangan kata-kata. Selain itu, apabila melatih ViT, output masuk akal semantik, tetapi menerangkan sesuatu yang sama sekali berbeza daripada imej yang diberikan. Walau bagaimanapun, hasil yang lain nampaknya menangkap ciri imej sedikit sebanyak. Sebagai contoh, imej pertama menyebut "kucing" dan "pisang", dan yang kedua mengenal pasti "tanda lalu lintas". Membandingkan hasil dengan dan tanpa LoRA, yang terakhir cenderung menggunakan perkataan yang serupa secara berulang, tetapi menggunakan LoRA nampaknya menjadikannya lebih semula jadi. Melatih kepala menghasilkan output yang menarik, seperti menggunakan "bermain" dan bukannya "makan" untuk imej pertama. Walaupun terdapat beberapa unsur luar biasa dalam hasil ini, dapat disimpulkan bahawa latihan itu berjaya dalam menangkap ciri imej.
Untuk keadaan penalaan halus dalam eksperimen terdahulu, model bahasa yang lebih kecil, OPT-350m, telah digunakan. Kini, niatnya adalah untuk menukar model bahasa kepada model 7B. Bukan hanya menerima OPT, LLM yang lebih kukuh, LLaMA dan MPT, juga akan diperkenalkan.
Penyepaduan kedua-dua model ini boleh dilakukan dengan cara yang serupa dengan OPT. Merujuk kepada fungsi hadapan bagi LlamaModel dan MPTMmodel, gabungkan vektor imej yang diunjurkan dengan token teks, dan tukar topeng daripada Topeng Perhatian Sebab kepada Topeng Perhatian GIT. Satu perkara yang perlu diambil perhatian: untuk MPT, topeng bukan (0, -inf), tetapi (Salah, Benar). Proses seterusnya boleh dilaksanakan dengan cara yang sama.
Untuk menggunakan model kelas 7B dengan OPT, tukar sahaja nama model daripada facebook/opt-350m kepada facebook/opt-6.7b.
Untuk LLaMA, dengan ketersediaan LLaMA2, itu akan menjadi model pilihan. Untuk menggunakan model pra-latihan ini, kelulusan daripada Meta dan Muka Memeluk diperlukan. Akaun diperlukan untuk Memeluk Wajah, jadi pastikan anda menyediakannya. Kelulusan biasanya datang dalam masa beberapa jam. Selepas itu, log masuk ke Hugging Face pada terminal tempat latihan dilaksanakan.
log masuk huggingface-cli
Anda boleh log masuk menggunakan token yang dibuat dalam akaun Memeluk Wajah → Tetapan → Token Akses.
Parameter latihan kekal konsisten, menggunakan set data COCO dan bertahan selama 3 zaman. Berdasarkan hasil daripada Eksperimen 1, modul yang ditetapkan untuk penalaan halus ialah Unjuran + LoRA.
Mari kita lihat hasilnya.
Mengkaji kerugian, nampaknya model yang menggunakan LLaMA2 dan MPT sebagai LLM menunjukkan pengurangan yang lebih memuaskan. Mari kita perhatikan juga keputusan inferens.
Mengenai imej pertama, untuk semua model, ekspresi kelihatan lebih semula jadi berbanding OPT-350m. Tiada ungkapan pelik seperti "pisang dengan pisang", yang menonjolkan kekuatan LLM. Untuk imej kedua, masih terdapat sedikit kesukaran dengan frasa seperti "lampu isyarat" atau "bangunan". Untuk imej yang kompleks sedemikian, mungkin terdapat keperluan untuk mempertimbangkan untuk menaik taraf model ViT.
Akhir sekali, mari kita jalankan inferens pada imej yang menjadi popular dengan GPT-4.
Walaupun respons lancar dijangkakan sejak LLM digunakan, hasilnya agak mudah. Ini mungkin kerana model itu dilatih semata-mata pada COCO.
Memandangkan hasil percubaan sebelumnya yang kurang memberangsangkan, ia telah memutuskan untuk memasukkan data selain COCO untuk latihan. Set data M3IT yang digunakan pada masa ini agak komprehensif, dan ia boleh mengendalikan sejumlah besar data dalam format yang sama seperti COCO.
Ia bertujuan untuk menggunakan data daripada sumber ini tidak termasuk kategori "Bahasa Cina" dan "Video". Pada asalnya, set data latihan COCO mengandungi 566,747 keping data. Dengan menggabungkannya dengan sumber tambahan, ini meningkat kepada 1,361,650. Walaupun saiznya telah meningkat dua kali ganda, set data dipercayai telah menjadi lebih berkualiti disebabkan oleh peningkatan kepelbagaian tugas.
Mengendalikan berbilang set data Pytorch boleh dicapai dengan mudah menggunakan ConcatDataset.
senarai_set data = [
datasets.load_dataset("MMInstruction/M3IT", i) untuk i dalam m3it_name_list
]
train_dataset = torch.utils.data.ConcatDataset([d["train"] untuk d dalam dataset_list])
Latihan telah dijalankan selama 1 zaman, dan model LLaMA2 digunakan untuk menala halus Unjuran dan LoRA, sama seperti Eksperimen 2.
Memandangkan tiada kerugian untuk dibandingkan dengan kali ini, mari kita selami terus ke dalam keputusan inferens.
Bersama-sama dengan menyelesaikan masalah mudah, model kini mengendalikan cabaran yang lebih kompleks. Dengan menambahkan set data untuk tugasan yang lebih rumit daripada hanya kapsyen, keupayaan telah berkembang dengan ketara. Mencapai tahap ketepatan ini dengan hanya 1 zaman latihan adalah mengejutkan.
Mari kita uji dengan contoh gambar berikut. Memandangkan kepelbagaian yang meningkat dalam set data, cara soalan dikemukakan telah diubah suai sedikit.
Walaupun perihalan sebagai "Payung" masih berwayar, rasanya ia semakin baik. Untuk menambah baik lagi, terdapat keperluan untuk meningkatkan bilangan zaman latihan, menambah lebih banyak jenis atau volum set data dan memanfaatkan ViT atau LLM yang lebih berkuasa. Namun begitu, amat mengagumkan bahawa model sedemikian boleh dibangunkan dalam masa setengah hari sahaja memandangkan sumber pengiraan dan data.
Tinggalkan pesanan