فاینتیون EmbeddingGemma با LoRA در چند دقیقه
خلاصهٔ کاملتر
مدل امبدینگ (یعنی مدلی که متن یا صدا رو به یه بردار عددی تبدیل میکنه تا چیزای شبیه کنار هم بیفتن) معمولاً اسم محصولات یا مستندات داخلی تو رو نمیشناسه. تو این مقاله اومده که با LoRA (یعنی چند ماتریس کوچیک قابلآموزش کنار لایههای فریزشده) میشه EmbeddingGemma رو تو چند دقیقه روی یه GPU برای دادههای خودت تنظیم کرد. تو یه اجرا کمتر از ۲ درصد پارامترها آموزش دیدن.
برخلاف فاینتیون LLM، اینجا خروجی درستی لازم نیست بنویسی. فقط جفتهایی میدی که باید کنار هم باشن، مثلاً یه سؤال و پاراگرافی که جوابشه. تابع loss اسمش multiple negative ranking loss تو Sentence Transformers هست: هر سؤال به جواب خودش نزدیک میشه و بقیهٔ جوابهای همون batch خودبهخود نمونهٔ منفی حساب میشن. یعنی لازم نیست دستی جواب غلط جمع کنی.
نویسنده یه تله رو هم گوشزد میکنه: اگه دو تا سؤال جواب مشترک داشته باشن و تو یه batch بیفتن، مدل جواب درست رو برای یکیشون غلط حساب میکنه. راهحلش یه sampler از نوع «no duplicate» هست که نمیذاره متن تکراری تو یه batch بیاد. فرمت prompt هم مهمه؛ EmbeddingGemma یه پیشوند task برای کوئری و فرمت عنوان و متن برای سند میخواد و باید موقع آموزش و استفاده دقیقاً یکی باشه.
تو آزمایش صوتی، یه دیتاست ۵۰ دستهای از صداهای روزمره به جفت تبدیل شد، مثل «the sound of a chainsaw». مدل خام فقط حدود یه بار از چهار بار درست جواب میداد. بعد از حدود ۷.۵ دقیقه آموزش روی A100، دقت روی کلیپهای دیدهنشده رسید به حدود دو سوم. تو نمونهٔ متنی هم که با ترنسکریپت ۱۲۰ ویدیو و سؤالهای ساختهشده با Gemini درست شده بود، دقت با کمتر از ۳ دقیقه آموزش از حدود دو سوم به سه چهارم رسید.
ولی مدل تعمیم نمیده. وقتی ۱۰ دسته از آموزش حذف شدن، دقت روی همونها اصلاً بهتر نشد؛ یعنی هر برچسبی که برات مهمه باید تو دادهها باشه. از طرفی چون EmbeddingGemma متن و تصویر و صدا و ویدیو رو با یه backbone مشترک پردازش میکنه، بعد از آموزش صوتی و متنی، دقت جستجوی متنی عمومی حدود ۴ واحد افت کرد. پس بعد از هر فاینتیون باید همهٔ حالتهایی که استفاده میکنی رو دوباره تست کنی.
یه باگ دیگه هم پیش اومد: بعد از ذخیره و لود دوبارهٔ adapter صوتی، دقت جستجوی صوتی تقریباً صفر شد. مشکل از وزنها نبود؛ processor ذخیرهشده کنار adapter کلیپها رو به چند میلیثانیه کوتاه میکرد. راهحل این بود که processor مدل پایه استفاده بشه.
نکات کلیدی:
- دادهی آموزش فقط جفتهای مرتبطه و نمونهٔ منفی دستی لازم نیست
- برای جوابهای تکراری از sampler نوع no duplicate استفاده کن
- دقت صوتی بعد از ۷.۵ دقیقه آموزش روی A100 از ۲۵ درصد به حدود ۶۶ درصد رسید
- مدل روی دستههایی که تو آموزش نبودن هیچ بهبودی نداشت
- دقت جستجوی متنی عمومی بعد از فاینتیون حدود ۴ واحد افت کرد
- بعد از لود adapter صوتی، processor مدل پایه رو استفاده کن و دوباره تست کن




