ใน repo นี้เรามีรูปแบบคลิปของ Openai สำหรับภาษาตุรกีโดยใช้วิธี LORA ในการรับข้อมูลเพิ่มเติมเกี่ยวกับคลิปคุณสามารถชำระเงินซื้อ repo อื่น ๆ ของฉัน
ชุดข้อมูล Flicker8 ใช้สำหรับการฝึกอบรม สำหรับชุดข้อมูล TASVIRET ของตุรกีใช้ซึ่งเป็นชุดข้อมูลสำหรับคำอธิบายภาพการกะพริบของตุรกี 8
โน้ตบุ๊กจะถูกใช้งานบน colab แม้ว่าจะไม่จำเป็น การติดตั้งห้องสมุดที่จำเป็นจะทำในสมุดบันทึกเพื่อทำงานบน colab
การปรับตัวระดับต่ำเป็นเทคนิคในการสร้างแบบจำลอง Finetune แทนที่จะเลือกเลเยอร์ทั้งหมดเลเยอร์บางชั้นจะถูกเลือกและ finetuned เมื่อเทียบกับการปรับสภาพปกติแทนที่จะเปลี่ยนน้ำหนักดั้งเดิมความแตกต่างระหว่างน้ำหนักเริ่มต้นและน้ำหนัก finetuned จะถูกเก็บและบันทึกไว้ นอกจากนี้เมทริกซ์การจัดเก็บน้ำหนักจะถูกย่อยสลายเป็นสองเมทริกซ์ซึ่งลดขนาดของน้ำหนักแบบจำลองและทำให้มั่นใจได้ว่าแบบจำลองเริ่มต้นและ finetuned จะคล้ายกัน ซึ่งหมายความว่าแบบจำลองจะป้องกันการลืม Cathastropical มากขึ้น ทั้งหมดนี้ยังลดขนาดของรุ่นทั้งหมด ดังนั้นคุณสามารถประหยัดน้ำหนักที่แตกต่าง (หรือน้ำหนัก LORA ในคำอื่น ๆ ) แทนที่จะประหยัดน้ำหนักของเวอร์ชัน finetuned ทั้งหมด สิ่งนี้ทำให้ความสามารถในการมีรุ่นฐานขนาดใหญ่เดียวและน้ำหนัก LORA ขนาดเล็กหลายตัวแทนที่จะประหยัดรุ่นขนาดใหญ่สำหรับแต่ละรุ่น finetuned
lora_clip_training_tasviret -> รหัส finetuning ของคลิปกับ lora
การอนุมาน -> สาธิตวิธีการโหลดและใช้แบบจำลอง LORA เปรียบเทียบการแสดงของแบบจำลองคลิปดั้งเดิมและ Lora Finetuned ทั้งในภาษาตุรกีและภาษาอังกฤษ
ฉันได้อัปโหลดโมเดลไปยัง HuggingFace แล้ว โมเดลสามารถใช้งานได้เช่นตัวอย่างด้านล่าง:
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 )
เป้าหมายของ repo นี้คือการแสดงวิธีการใช้ LORA เพื่อ Finetune คลิปแทนที่จะได้รับแบบจำลองคลิปที่ดีสำหรับภาษาตุรกี คุณสามารถลองเพิ่มประสิทธิภาพโดยการเพิ่มการเพิ่มและวัดประสิทธิภาพด้วยตัวชี้วัดที่ดีขึ้น นอกจากนี้คุณยังสามารถลองเปลี่ยนเครื่องเข้ารหัสข้อความด้วยโมเดลที่เตรียมไว้ด้วยข้อมูลภาษาตุรกีเช่น Distilbert (คุณสามารถตรวจสอบ repo อื่น ๆ ของฉันสำหรับสิ่งนี้)
ฉันต้องการขอบคุณแหล่งข้อมูลด้านล่างที่ฉันเคยทำโครงการนี้:
Finetuning ตัวจําแนกรูปภาพด้วย LORA โดยใช้ไลบรารี PEFT: https://github.com/huggingface/peft/tree/main/examples/image_classification
บทช่วยสอน Peft Library: https://huggingface.co/docs/transformers/main/en/peft
กระดาษ Lora ดั้งเดิม: https://arxiv.org/abs/2106.09685
TASVIRET (คำอธิบายภาพของตุรกี 8): https://www.kaggle.com/datasets/begum302553/tasviret-flickr8k-turkish
กระดาษ Tasviret: https://ieeexplore.ieee.org/document/7496155
กระดาษคลิปดั้งเดิม: https://arxiv.org/abs/2103.00020