В этом репо, мы Finetune Clip Openai для турецкого языка с использованием метода LORA. Чтобы получить больше информации о клипе, вы можете проверить мой другой репо.
Набор данных Flicker8 используется для обучения. Для турецких подписей используется набор данных Tasviret, который является набором данных для подписей Turkish Flicker8.
Записные книжки предназначены для работы на Colab, хотя в этом нет необходимости. Необходимые установки библиотеки выполняются в ноутбуках для работы на Colab.
Адаптация с низким уровнем ранга-это метод для моделей Finetune. Вместо того, чтобы создать все слои, некоторые слои выбраны и созданы. По сравнению с обычным созданием вместо того, чтобы изменять исходные веса, разница между начальными весами и массовыми весами сохраняется и сохранена. Также матрицы, хранящие веса, разлагаются на две матрицы, которые уменьшают размер весов модели и гарантируют, что начальная и созданная модель была одинаковой. Это означает, что модель будет гораздо более защитной против катастропического забывания. Все это также уменьшает все размер модели. Таким образом, вы можете просто сэкономить веса (или вес Lora, другими словами) вместо того, чтобы сэкономить веса целой ночной версии. Это дает возможность иметь единственную большую базовую модель и несколько небольших весов LORA вместо того, чтобы экономить большие модели для каждой ночной версии.
LORA_CLIP_TRAING_TASVIRET -> CENETUNING CODE CLIP с LORA
Вывод -> демонстрирует, как загружать и использовать модель LORA. Сравняет представления оригинальных моделей клипов Lora, как на турецком, так и на английском языке.
Я загрузил модель в 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 )
Эта цель этого репо состоит в том, чтобы показать, как использовать LORA для клипа Finetune, а не получить хорошую модель клипа для турецкого языка. Вы можете попытаться повысить производительность, добавив увеличения и измерить производительность с помощью лучших показателей. Вы также можете попробовать заменить текстовый энкодер моделью, предварительно предоставленным турецкими данными, такими как Дистилберт. (Вы можете проверить мой другой репо для этого)
Я хочу поблагодарить источники ниже, которые я использовал для создания этого проекта:
Создание классификатора изображения с Лорой с использованием PEFT Библиотеки: https://github.com/huggingface/peft/tree/main/examples/image_classification
Учебник библиотеки PEFT: https://huggingface.co/docs/transformers/main/en/peft
Оригинальная бумага Lora: https://arxiv.org/abs/2106.09685
Tasviret (Turkish Flicker8 Подписи): https://www.kaggle.com/datasets/begum302553/tasviret-flickr8k-turkish
Tasviret Paper: https://ieeexplore.ieee.org/document/7496155
Оригинальная бумага клипа: https://arxiv.org/abs/2103.00020