Unsloth-ში ჩაღრმავებამდე, სასარგებლო იქნება ჩვენი QLoRA ბლოგის პოსტის წაკითხვა, ან დიდი ენობრივი მოდელების (LLM) დახვეწის პროცესის ცოდნა 🤗 PEFT ბიბლიოთეკის გამოყენებით. Unsloth არის მსუბუქი ბიბლიოთეკა LLM მოდელების უფრო სწრაფი დახვეწისთვის, რომელიც სრულად თავსებადია Hugging Face-ის ეკოსისტემასთან (Hub, transformers, PEFT, TRL). ბიბლიოთეკას აქტიურად ავითარებენ Unsloth-ის გუნდი (დანიელი და მაიკლი) და ღია წყაროს საზოგადოება. ბიბლიოთეკა მხარს უჭერს NVIDIA GPU-ების უმეტესობას – GTX 1070-დან H100-მდე – და მისი გამოყენება შესაძლებელია TRL ბიბლიოთეკის ტრენერთა სრულ კომპლექტთან (SFTTrainer, DPOTrainer, PPOTrainer). ამ სტატიის დაწერის მომენტისთვის, Unsloth მხარს უჭერს Llama (CodeLlama, Yi და ა.შ.) და Mistral-ის არქიტექტურებს. Unsloth მუშაობს მოდელირების კოდის ზოგიერთი ნაწილის ოპტიმიზებული ოპერაციებით გადაწერის პრინციპით. უკუპროპაგაციის ნაბიჯების ხელით გამოყვანით და ყველა Pytorch მოდულის Triton-ის ბირთვებად გადაწერით, Unsloth-ს შეუძლია შეამციროს მეხსიერების გამოყენება და დააჩქაროს დახვეწის პროცესი. მნიშვნელოვანია, რომ სიზუსტის დეგრადაცია 0%-ია სტანდარტულ QLoRA-სთან შედარებით, რადგან ოპტიმიზებულ კოდში არ ხდება არანაირი მიახლოება. Unsloth შემოწმდა 59 გაშვების დროს, 4 მონაცემთა ნაკრების გამოყენებით Tesla T4 და A100 Google Colab ინსტანციებზე. QLoRA გამოყენებული იყო ყველა ხაზოვან შრეზე (ყურადღება და MLP) 16-ის რანგით, ხოლო გრადიენტის შემოწმება ჩართული იყო. უახლეს Transformers-ის ვერსიასთან (4.36) შემოწმებისას, რომელშიც SDPA ინტეგრირებულია Pytorch 2.1.1-ის არსებობის შემთხვევაში, Unsloth არის 2.7-ჯერ უფრო სწრაფი და იყენებს 74%-ით ნაკლებ მეხსიერებას. ჩვენ ასევე შევამოწმეთ Unsloth უფასო Google Colab ინსტანციაზე (დაბალი RAM, 1 T4 GPU, Pytorch 2.1.0 CUDA 12.1). ყველა 59 ნოუთბუქი მოცემულია სრული რეპროდუცირებადობისთვის, ხოლო მეტი დეტალი შეგიძლიათ იხილოთ Unsloth-ის ბენჩმარკინგის დეტალებში აქ. უბრალოდ ჩატვირთეთ თქვენი მოდელი FastLanguageModel.from_pretrained!-ის გამოყენებით. ამჟამად, Unsloth მხარს უჭერს Llama და Mistral ტიპის არქიტექტურებს (Yi, Deepseek, TinyLlama, Llamafied Qwen). გთხოვთ, გახსენით Github-ის საკითხი (issue), თუ სხვა არქიტექტურები გსურთ! ასევე, Transformers-ის უახლეს მთავარ ფილიალზე, ახლა შეგიძლიათ პირდაპირ ჩატვირთოთ წინასწარ კვანტიზირებული 4-ბიტიანი მოდელები! ეს მოდელების ჩამოტვირთვას 4-ჯერ უფრო აჩქარებს და ამცირებს მეხსიერების ფრაგმენტაციას დაახლოებით 500 მბ-ით, რაც საშუალებას გაძლევთ მოათავსოთ უფრო დიდი ბატჩები! თქვენი მოხერხებულობისთვის გვაქვს რამდენიმე წინასწარ კვანტიზირებული მოდელი, მათ შორის unsloth/llama-2-7b-bnb-4bit, unsloth/llama-2-13b-bnb-4bit, unsloth/mistral-7b-bnb-4bit და unsloth/codellama-34b-bnb-4bit. თქვენ უნდა მიუთითოთ მაქსიმალური სასურველი თანმიმდევრობის სიგრძე from_pretrained ფუნქციაში. Unsloth შიდაპირულად ახორციელებს RoPE Scaling-ს, ამიტომ უფრო დიდი მაქსიმალური თანმიმდევრობის სიგრძეები ავტომატურად მხარდაჭერილია. წინააღმდეგ შემთხვევაში, API თითქმის იგივეა, რაც transformers-ის from_pretrained-ის, იმ განსხვავებით, რომ FastLanguageModel.from_pretrained ასევე აბრუნებს მოდელის ტოკენიზატორს მოხერხებულობისთვის. მოდელის ჩატვირთვის შემდეგ, გამოიყენეთ FastLanguageModel.get_peft_model ადაპტერების დასამაგრებლად QLoRA დახვეწის შესასრულებლად. ადაპტერების მიმაგრების შემდეგ, შეგიძლიათ მოდელი პირდაპირ გამოიყენოთ HF ეკოსისტემის ნებისმიერ კლასში, როგორიცაა SFTTrainer TRL-იდან! Unsloth-ის TRL ბიბლიოთეკასთან გამოსაყენებლად, უბრალოდ გადაეცით Unsloth მოდელი SFTTrainer-ს ან DPOTrainer-ს! დატრენინგებული მოდელი სრულად თავსებადია Hugging Face-ის ეკოსისტემასთან, ასე რომ, შეგიძლიათ საბოლოო მოდელი ატვირთოთ Hub-ზე და გამოიყენოთ transformers-ი დასკვნითი ეტაპისთვის ყოველგვარი დამატებითი კონფიგურაციის გარეშე! ქვემოთ წარმოგიდგენთ სრულად რეპროდუცირებად ნოუთბუქებს ყველასთვის, ვისაც სურს Unsloth-ის SFTTrainer-თან ერთად გამოცდა უფასო Google Colab ინსტანციაზე: * Llama 7b უფასო Tesla T4 colab მაგალითი აქ * Mistral 7b უფასო Tesla T4 colab მაგალითი აქ * CodeLlama 34b A100 colab მაგალითი აქ * Zephyr DPO რეპლიკაციის T4 colab მაგალითი აქ