Dalam repo ini kami Finetune Openai's Clip Model untuk bahasa Turki menggunakan metode Lora. Untuk mendapatkan informasi lebih lanjut tentang klip, Anda dapat memeriksa repo saya yang lain.
Dataset FLICKER8 digunakan untuk pelatihan. Untuk keterangan Turki, Dataset Tasviret digunakan yang merupakan dataset untuk keterangan Turki Flicker8.
Notebook tersebut diselesaikan untuk dijalankan di Colab meskipun tidak perlu. Instalasi perpustakaan yang diperlukan dilakukan di notebook untuk dijalankan di Colab.
Adaptasi rendah adalah teknik untuk model finetune. Alih -alih finetuning semua lapisan, beberapa lapisan dipilih dan di -finetuned. Dibandingkan dengan finetuning reguler alih -alih mengubah bobot asli perbedaan antara bobot awal dan bobot finetuned disimpan dan disimpan. Juga matriks yang menyimpan bobot didekomposisi menjadi dua matriks yang mengurangi ukuran bobot model dan memastikan bahwa model awal dan finetuned menjadi serupa. Ini berarti bahwa model ini akan jauh lebih protektif terhadap lupa cathastropical. Semua ini juga mengurangi ukuran model di atas. Jadi, Anda bisa menyimpan bobot perbedaan (atau berat Lora dengan kata lain) alih -alih menghemat bobot versi finetuned utuh. Ini memberikan kemampuan untuk memiliki model dasar besar dan beberapa bobot LORA kecil alih -alih menghemat model besar untuk setiap versi finetuned.
Lora_clip_training_tasviret -> kode klip dengan lora dengan lora
Inference -> Menunjukkan cara memuat dan menggunakan model LORA. Membandingkan pertunjukan model klip asli dan Lora finetuned baik dalam bahasa Turki dan Inggris.
Saya telah mengunggah model ke Huggingface. Model dapat digunakan seperti contoh di bawah ini:
from PIL import Image
from transformers import CLIPProcessor , CLIPModel
model = CLIPModel . from_pretrained ( "openai/clip-vit-base-patch32" )
model . load_adapter ( "kesimeg/lora-turkish-clip" ) # model can be found on Huggingface ?
model . eval ()
processor = CLIPProcessor . from_pretrained ( "openai/clip-vit-base-patch32" )
img = Image . open ( "dog.png" ) # A dog image
inputs = processor ( text = [ "Çimenler içinde bir köpek." , "Bir köpek." , "Çimenler içinde bir kuş." ], images = img , return_tensors = "pt" , padding = True )
outputs = model ( ** inputs )
logits_per_image = outputs . logits_per_image
probs = logits_per_image . softmax ( dim = 1 )
print ( probs )
Tujuan repo ini adalah untuk menunjukkan cara menggunakan klip Lora untuk finetune daripada mendapatkan model klip yang bagus untuk bahasa Turki. Anda dapat mencoba meningkatkan kinerja dengan menambahkan augmentasi dan mengukur kinerja dengan metrik yang lebih baik. Anda juga dapat mencoba mengganti encoder tekstual dengan model pretrained dengan data Turki seperti Distilbert. (Anda dapat memeriksa repo saya yang lain untuk ini)
Saya ingin mengucapkan terima kasih kepada sumber di bawah ini yang telah saya gunakan untuk membuat proyek ini:
Finetuning classifier gambar dengan lora menggunakan perpustakaan peft: https://github.com/huggingface/peft/tree/main/examples/image_classification
Peft Library Tutorial: https://huggingface.co/docs/transformers/main/en/peft
Kertas Lora Asli: https://arxiv.org/abs/2106.09685
Tasviret (Turki Flicker8 Captions): https://www.kaggle.com/datasets/begum302553/tasviret-flickr8k-urkish
Tasviret Paper: https://ieExplore.ieee.org/document/7496155
Kertas klip asli: https://arxiv.org/abs/2103,00020