მოდელების შერწყმა: LoRA ადაპტერების გაერთიანების ახალი მიდგომები PEFT-ში
ამ პოსტში წარმოდგენილია 🤗 PEFT-ის ფარგლებში შემუშავებული LoRA ადაპტერების შერწყმის ახალი, ოპტიმიზებული მეთოდები. განხილულია სტანდარტული მოდელების გაერთიანების მიდგომები, მეხსიერების ინტენსივობის გამოწვევები და შემოთავაზებულია სხვადასხვა ტექნიკა, მათ შორის კონკატენაცია, მატრიცების შეწონილი ჯამი და დავალების არითმეტიკა (Task Arithmetic). სტატია მოიცავს კოდის მაგალითებს, შთამბეჭდავ შედეგებსა და სამომავლო გეგმებს.
მოდელების შერწყმის ტიპური გზა აქამდე გულისხმობდა რამდენიმე მოდელის აღებას და მათ გაერთიანებას. ეს პოსტი წარმოადგენს კარგ შესავალს ამ თემაზე. ზოგადად, მრავალი მოდელის შერწყმისთვის, ჩვენ ჯერ გადმოვწერთ მათ ჩექპოინტებს (checkpoints) და შემდეგ ვასრულებთ შერწყმას. შერწყმის ალგორითმისა და ძირითადი მოდელის ზომების მიხედვით, ეს პროცესი შეიძლება იყოს საკმაოდ მეხსიერება ინტენსიური. mergekit ბიბლიოთეკა გთავაზობთ ოპტიმიზებულ გზებს ამის სამართავად, რაც პროცესს შესაძლებელს ხდის შეზღუდული მეხსიერების პირობებშიც კი.
მაგრამ რა მოხდება, თუ გვინდა ერთი და იმავე მოდელიდან მიღებული სხვადასხვა „ადაპტერის“ შერწყმა? შესაძლოა, გქონდეთ ოთხი განსხვავებული LoRA ჩექპოინტი, რომლებიც მიღებულია ერთი და იგივე საბაზისო მოდელიდან, და გსურთ ექსპერიმენტების ჩატარება შერწყმის სხვადასხვა ტექნიკით. საბოლოოდ, თქვენ მოისურვებთ საუკეთესო შერწყმაზე შეჩერებას, რომელიც საუკეთესო შედეგებს მოგცემთ თქვენი ამოცანისთვის. ასეთი დეველოპერის გამოცდილებასთან მიდგომისას რამდენიმე რამ აშკარა ხდება: ამ ასპექტების გათვალისწინებით, ჩვენ გამოვაქვეყნეთ შერწყმის ახალი მეთოდები, რომლებიც მიმართულია პოპულარული LoRA ადაპტერებისკენ 🤗 PEFT-ში. ამ პოსტში გვინდა გაგაცნოთ ხელმისაწვდომი მეთოდები, კოდის მაგალითები, რომლებიც დაგეხმარებათ დაწყებაში, შთამბეჭდავი შედეგები და ჩვენი სამომავლო გეგმები. მოდით დავიწყოთ 🚀
ამ მეთოდში LoRA მატრიცები ერთიანდება (კონკატენირდება). მაგალითად, თუ გვაქვს 2 LoRA ადაპტერი (A1,B1) და (A2,B2) შეწონილი შერწყმისთვის weight1 და weight2 წონებთან ერთად, მაშინ შერწყმა ხდება შემდეგნაირად:
Amerged=concat(weight1*scaling1*A1,weight2*scaling2*A2,dim=0)
Bmerged=concat(B1,B2,dim=1)
სადაც shape(Amerged)=(rank1+rank2, d)) და (shape(Bmerged)=(d, rank1+rank2).
ახლა, ამ ახალი შერწყმული LoRA ფენის გამომავალი ისეთი იქნება, თითქოს ორიგინალი 2 LoRA აქტიური იყო შესაბამისად weight1 და weight2 წონებით პირველ და მეორე ადაპტერებზე გამოყენებული. h=W0x+BmergedAmergedx აქ შეგვიძლია დავაკვირდეთ, რომ: BmergedAmerged=weight1*scaling1*B1A1+weight2*scaling2*B2A2
ამ მეთოდში LoRA მატრიცები შეწონილი ჯამის სახით მონაწილეობენ. სწორედ ამას ახორციელებს „დავალების არითმეტიკის“ (Task arithmetic) ნაშრომი დავალების წონებზე. დავალების არითმეტიკაში, ჯერ გამოითვლება დავალების წონები, რაც არის დაზუსტებული წონებისა (finetuned weights) და საბაზისო მოდელის წონებს შორის სხვაობა, შემდეგ კი ხდება ამ დავალების წონების შეწონილი ჯამი. აქ, დელტა წონებად განიხილება ინდივიდუალური მატრიცები A და B, და არა მათი ნამრავლი BA. ეს მეთოდი შეიძლება გამოყენებულ იქნას მხოლოდ მაშინ, როდესაც ყველა მონაწილე LoRA ადაპტერს აქვს იგივე რანგი (rank). განვიხილოთ მაგალითი. განვიხილოთ 2 LoRA ადაპტერი (A1,B1) და (A2,B2) weight1 და weight2 წონებთან ერთად ამ ორი ადაპტერის შეწონილი შერწყმისთვის, მაშინ შერწყმა ხდება შემდეგნაირად:
Amerged=sqrt(weight1*scaling1)*A1+sqrt(weight2*scaling2)*A2
Bmerged=sqrt(weight1*scaling1)*B1+sqrt(weight2*scaling2)*B2
დამატებითი დეტალებისთვის, გთხოვთ, იხილოთ ნაშრომი: Editing Models with Task Arithmetic.
ინდივიდუალური მატრიცების A და B, როგორც დავალების წონების, ნაცვლად, მათი ნამრავლი BA, რომელიც არის დელტა წონა, განიხილება დავალების წონად. გავაგრძელოთ წინა ქვე-სექციების მაგალითით. აქ, ჯერ გამოითვლება შერწყმული კომბინაციის დელტა წონა შემდეგნაირად:
deltamerged=weight1*scaling1*B1A1+weight2*scaling2*B2A2
ზემოთ მოცემული შერწყმული დელტა წონის მიღების შემდეგ, გამოიყენება SVD (სინგულარული მნიშვნელობების დეკომპოზიცია) მიახლოებითი Amerged_approx და Bmerged_approx მისაღებად. ეს მეთოდი ეფუძნება ხაზოვან და SVD მეთოდებს იმის შეცვლით, თუ როგორ გამოითვლება შერწყმული ადაპტერები დავალების წონებიდან და იწვევს TIES და ties_svd მეთოდებს, შესაბამისად. TIES-ში (TRIM, ELECT SIGN & MERGE), ჯერ გამოითვლება დავალების წონები, რაც ჩვენს შემთხვევაში იქნება LoRA ადაპტერები A, B არა-SVD ვარიანტისთვის და მათი ნამრავლი BA SVD ვარიანტისთვის. ამის შემდეგ, თქვენ ამცირებთ დავალების წონების უმცირეს მნიშვნელობებს და ინარჩუნებთ ტოპ-k მნიშვნელობებს მითითებული ფრაქციული სიმკვრივის საფუძველზე.
თეგები:
#ai
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#ალგორითმები
#peft
#მოდელების გაერთიანება
#lora ადაპტერები
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ხელოვნური ინტელექტი
Anthropic-ის Claude-ის აღზევება Apple App Store-ის რეიტინგებში პენტაგონთან მოლაპარაკებების ფონზე
ხელოვნური ინტელექტი
ტრამპის ადმინისტრაცია Anthropic-ს სანქციებს უწესებს ხელოვნური ინტელექტის გამოყენებაზე უარის გამო: ექსპერტი ინდუსტრიის უსაფრთხოების ხარვეზებზე საუბრობს
ხელოვნური ინტელექტი