32-წუთიანი სამუშაო სესია მოდელის ქცევის შეცვლაზე — როდის ჯობია პრომპტს მივმართოთ, როდის კმარა მოძიება და როდის ამართლებს წონების ნამდვილად წვრთნა. განვიხილავთ SFT-ს, LoRA-ს, პრეფერენს-ტიუნინგს, დისტილაციას და მათ შორის არსებულ გულახდილ კომპრომისებს.
„მოდელი ჯერ საკმარისად კარგი არაა“ თითქმის არასდროს ნიშნავს „ფაინთიუნინგი უნდა გავაკეთოთ“. ტექნიკებს კიბე აქვთ, დალაგებული ღირებულებისა და ვალდებულების მიხედვით. ყოველი საფეხური მასზე მაღლა მდგომთან შედარებით გაცილებით იაფია საცდელად, სწრაფია შესაცვლელად და ადვილია უკან დასაბრუნებლად. გუნდების უმეტესობა პასუხს ქვედა ორზე პოულობს.
ყოველი შემდეგი საფეხური უფრო ძვირია ასაშენებლად და უფრო რთულია შესაცვლელად. ამოწურეთ ქვედები, სანამ აიწევთ.
საბაზო მოდელმა ენა უკვე ისწავლა უზარმაზარი, ზოგადი კორპუსიდან. ფაინთიუნინგი ამ წვრთნას აგრძელებს თქვენი შემავალი → გამომავალი წყვილების პატარა, ფოკუსირებულ ნაკრებზე და წონებს ისე წასწევს, რომ მოდელის ნაგულისხმევი ქცევა თქვენს მაგალითებს მიუახლოვდეს. ყველაზე გავრცელებული ფორმაა supervised fine-tuning.
ყოველი მაგალითი წონებში მცირე შესწორებას იწვევს; მთელ ნაკრებზე გამეორებული, მოდელის ნაგულისხმევი ქცევა იცვლება.
ფიქსირებული ტონი, მკაცრი JSON-ფორმა, დარგის ფრაზეოლოგია — ის, რისი ჩვენებაც 500 მაგალითში უფრო ადვილია, ვიდრე პრომპტში აღწერა.
დააკლასიფიცირეთ სუპორტის ტიკეტები, ამოიღეთ ველები ინვოისებიდან, გადაწერეთ შიდა გაიდლაინებით — გამეორებადი, კარგად განსაზღვრული ამოცანა მკაფიო სწორი პასუხებით.
წონები წვრთნის დღისთვის გაყინული ცოდნაა. ცვალებადი მონაცემებისთვის (ფასები, დოკუმენტები, დღევანდელი ტიკეტები) მიმართეთ RAG-ს — ფაინთიუნინგი არასაიმედოდ იმახსოვრებს.
სწორედ ამ ნაწილს აუფასურებენ გუნდები და სწორედ ის წყვეტს წარმატებას. დატიუნებული მოდელი თავისი სასწავლო მაგალითების სარკეა — ყოველი შეუსაბამობა, თითის შეცდომა და ზარმაცი პასუხი ისწავლება და ძლიერდება. დროის უმეტეს ნაწილს აქ დახარჯავთ — და ასეც უნდა იყოს.
ყოველთვის გამოყავით შეფასების ნაკრები წვრთნის დაწყებამდე — მხოლოდ ასე გაიგებთ გულახდილად, დაეხმარა თუ არა ტიუნინგი.
სრული ფაინთიუნინგი ყოველ წონას ანახლებს — მილიარდობითს — რაც ნელია, ძვირია და სერიოზულ ტექნიკას მოითხოვს. პარამეტრ-ეფექტური ფაინთიუნინგი (PEFT) ორიგინალ მოდელს აყინავს და მის ნაცვლად ახალი პარამეტრების პატარა ნაკრებს წვრთნის. LoRA ის ტექნიკაა, რომელსაც პირველად და ყველაზე ხშირად შეხვდებით.
გამოსავალი = გაყინული W + პატარა დაბალრანგიანი A·B. სწავლობს მხოლოდ A და B.
კვანტიზაცია გაყინულ საბაზო წონებს უფრო დაბალი სიზუსტით ინახავს (მაგალითად, 16 ბიტის ნაცვლად 4 ბიტით) და მეხსიერებას ~4× ამცირებს. QLoRA ჯერ ბაზას აკვანტებს, მერე კი მასზე LoRA-ადაპტერს წვრთნის — სწორედ ასე აკეთებენ დიდი მოდელების ფაინთიუნინგს ერთ GPU-ზე.
ერთი საბაზო მოდელი მეხსიერებაში, ბევრი პატარა ადაპტერი დისკზე — სუპორტის ტონის ადაპტერი, იურიდიული ტონის ადაპტერი — რომლებიც მოთხოვნაზე იტვირთება. გაცილებით იაფია, ვიდრე ყოველი გამოყენების შემთხვევისთვის მოდელის სრული ასლის ჰოსტინგი.
ატვირთეთ JSONL ფაილი, დააჭირეთ წვრთნას, მიიღეთ ენდპოინტი. OpenAI-ის fine-tuning API, Google Vertex AI-ის ტიუნინგი Gemini-სთვის და Claude Haiku-ს ფაინთიუნინგი Amazon Bedrock-ით — ყველა ამ ფორმას მისდევს: პროვაიდერი მალავს GPU-ებსაც და LoRA-ს დეტალებსაც.
დე-ფაქტო ღია კოდის სტეკი: ბიბლიოთეკები transformers, peft და trl გაძლევთ LoRA-ს, QLoRA-ს, SFT-სა და პრეფერენს-წვრთნას ღიაწონებიან მოდელებზე, რომლებსაც თავად ჰოსტავთ.
Hugging Face-ის სტეკის გარსი, რომელიც წვრთნის გაშვებას ერთ YAML ფაილად აქცევს — მონაცემთა ნაკრები, საბაზო მოდელი, LoRA-ს პარამეტრები — რომ ციკლი ხელით არ დაწეროთ.
ოპტიმიზებული კერნელები, რომლებიც LoRA-სა და QLoRA-ს წვრთნას შესამჩნევად აჩქარებს და მეხსიერებას უმსუბუქებს — ისე, რომ მოკრძალებულ ერთ-GPU-იან სისტემასაც შეუძლია უფრო დიდი მოდელების ფაინთიუნინგი.
SFT მოდელს ასწავლის, კარგი პასუხები დააკოპიროს. მაგრამ ხშირად ერთი იდეალური პასუხის დაწერა შეუძლებელია — მხოლოდ იმის თქმა შეგიძლიათ, რომ „ეს პასუხი იმაზე უკეთესია“. პრეფერენს-ტიუნინგი სწორედ ამ შედარებებიდან სწავლობს. დისტილაცია სხვა რამეს აკეთებს: დიდი მოდელის უნარს პატარა და იაფ მოდელში კუმშავს.
მოდელი შედარებიდან სწავლობს და არა ერთი ოქროს პასუხიდან — გამოსადეგია, როცა „უკეთესი“ უფრო ადვილია, ვიდრე „იდეალური“.
მოგება ღირებულებასა და შეყოვნებაშია: ფოკუსირებულ პატარა მოდელს ერთ ვიწრო ამოცანაზე გიგანტის დონე შეუძლია ფასის მცირე ნაწილად.
მოსწავლე სწავლობს მასწავლებლის პასუხების იმიტაციას — იგივე ამოცანა, ღირებულების მცირე ნაწილად.
საუკეთესოა, როცა სწორი პასუხი მკაფიოა. სჭირდება ეტიკეტიანი წყვილები. დაიწყეთ აქედან.
იგივე მიზანი, რაც SFT-ს, გამოთვლითი რესურსის მცირე ნაწილად. ღია მოდელებისთვის ეს ნაგულისხმევი გზაა.
სუბიექტური ხარისხისა და ტონისთვის. სჭირდება პრეფერენს-წყვილები; DPO უფრო მარტივი გზაა.
შეამცირეთ ღირებულება/შეყოვნება მას შემდეგ, რაც ხარისხი დადასტურდება. დაგჭირდებათ ძლიერი მასწავლებელი და ბევრი პრომპტი.
დატიუნებული მოდელი, რომელიც რამდენიმე ხელით ტესტში უკეთესი გეჩვენებათ, ჯერ შედეგი არაა. გჭირდებათ ციფრები — მონაცემებზე, რომლებიც მოდელს არასდროს უნახავს, და იმ მარტივ საბაზისო ვარიანტთან შედარებით, რომლის გადალახვასაც ცდილობდით. თუ ის მკაფიოდ არ იმარჯვებს, საბაზისო ვარიანტი გაუშვით — მისი გაშვება და მოვლა უფრო იაფია.
// the cardinal rule: never score on training data const [train, holdout] = split(dataset, { evalFrac: 0.15 }) const baseline = await evaluate(baseModel, holdout) const tuned = await evaluate(tunedModel, holdout) if (tuned.score <= baseline.score) throw new Error("ship base") if (tuned.regressions !== 0) throw new Error("skills lost")
ერთი და იგივე გამოყოფილი შეკითხვები ორივე მოდელში; გაუშვით მხოლოდ აშკარა გამარჯვებული.
ვიწრო ნაკრებზე გადაჭარბებულმა ტიუნინგმა შეიძლება წაშალოს ზოგადი უნარები, რომლებიც მოდელს ადრე ჰქონდა. დაიტოვეთ შეფასების ნაკრებში რამდენიმე ფართო შემოწმება, რომ ეს დაიჭიროთ.
თუ საწვრთნელ მაგალითებზე ბრწყინავს, გამოყოფილ ნაკრებზე კი ვარდება, მან დაიმახსოვრა და არა ისწავლა. ნაკლები ეპოქა ან უფრო მრავალფეროვანი მონაცემები.
დაატეგეთ მოდელი + მონაცემთა ნაკრები + კონფიგურაცია, დაადეპლოეთ ადაპტერი თქვენი ენდპოინტის უკან და განაგრძეთ ცოცხალი ხარისხის დაკვირვება — განაწილებები იცვლება.
ფაინთიუნინგი რეალური ვალდებულებაა: მოსავლელი მონაცემთა პაიპლაინი, სახოსტავი მოდელი და ხელახალი წვრთნა ყოველ ჯერზე, როცა საბაზო მოდელი თქვენს ქვეშ უმჯობესდება. მიმართეთ მას ბოლოს და მხოლოდ მაშინ, როცა იაფი საფეხურები ნამდვილად აღარ კმარა.
ცვალებადი ფაქტების ადგილი RAG-ია და არა გაყინული წონები. ფაინთიუნინგი არასაიმედოდ იმახსოვრებს და მყისვე ძველდება.
„ცუდი პასუხების“ უმეტესობა პრომპტის პრობლემაა. უფრო მკაფიო პრომპტი ან რამდენიმე მაგალითი უფასო და შექცევადია — ფაინთიუნინგი კი არც ერთი და არც მეორე.
ძალიან ცოტა ან ხმაურიანი მაგალითი მოდელს აუარესებს. მონაცემთა ნაკრები არაა — ფაინთიუნინგიც არაა; ჯერ მონაცემები მოაწესრიგეთ.
ხუთი სწრაფი შეკითხვა ადაპტაციის კიბეზე, SFT-ზე, მონაცემებზე, LoRA-ზე და იმაზე, როდის უნდა გაჩერდეთ — მყისიერი უკუკავშირი, ავტორიზაციის გარეშე.
ნავიგაცია ← → ღილაკებით ან სქროლით · უკან ბიბლიოთეკაში