წარმოგიდგენთ TimmWrapper-ს — მარტივ, მაგრამ მძლავრ ინსტრუმენტს, რომელიც ამ პოტენციალს ხსნის. ამ პოსტში განვიხილავთ: ამ ბლოგ-პოსტისთვის საჭიროა `transformers`-ისა და `timm`-ის უახლესი ვერსიების ინსტალაცია. ყველა კოდის მაგალითისა და ნოუთბუქისთვის იხილეთ სრული რეპოზიტორიუმი: 🔗 TimmWrapper მაგალითები `PyTorch Image Models (timm)` ბიბლიოთეკა გთავაზობთ თანამედროვე კომპიუტერული ხედვის მოდელების მდიდარ კოლექციას, სასარგებლო ფენებთან, უტილიტებთან, ოპტიმიზატორებთან და მონაცემთა აუგმენტაციებთან ერთად. ამ სტატიის წერის მომენტისთვის 32 ათასზე მეტი GitHub ვარსკვლავით და დღეში 200 ათასზე მეტი ჩამოტვირთვით, ის წარმოადგენს საუკეთესო რესურსს გამოსახულების კლასიფიკაციისა და მახასიათებლების ამოღებისთვის ობიექტის ამოცნობისთვის, სეგმენტაციისთვის, გამოსახულების ძიებისთვის და სხვა ამოცანებისთვის. წინასწარ გაწვრთნილი მოდელებით, რომლებიც მოიცავს არქიტექტურების ფართო სპექტრს, `timm` ამარტივებს კომპიუტერული ხედვის სპეციალისტების სამუშაო პროცესს. მიუხედავად იმისა, რომ `🤗 transformers` მხარს უჭერს რამდენიმე ხედვის მოდელს, `timm` გთავაზობთ კიდევ უფრო ფართო კოლექციას, მათ შორის ბევრ მობილურისთვის მოსახერხებელ და ეფექტურ მოდელს, რომლებიც `transformers`-ში არ არის ხელმისაწვდომი. `timm`-ის ინტეგრაცია ავსებს ამ ხარვეზს და აერთიანებს ორივე სამყაროს საუკეთესო მახასიათებლებს: `timm`-ის ინტეგრაციის ერთ-ერთი გამორჩეული მახასიათებელია ის, რომ ის საშუალებას გაძლევთ გამოიყენოთ `🤗 pipeline API`. `pipeline API` ამარტივებს უამრავ სირთულეს, რაც აადვილებს წინასწარ გაწვრთნილი მოდელის ჩატვირთვას, ინფერენსის შესრულებას და შედეგების ნახვას რამდენიმე სტრიქონი კოდით. ვნახოთ, როგორ გამოვიყენოთ `transformers pipeline` `MobileNetV4`-თან ერთად. ამ არქიტექტურას არ აქვს მშობლიური `transformers` იმპლემენტაცია, მაგრამ მისი მარტივად გამოყენება შესაძლებელია `timm`-იდან. გსურთ სწრაფად შექმნათ ინტერაქტიული ვებ აპლიკაცია გამოსახულების კლასიფიკაციისთვის? `Gradio` ამარტივებს მომხმარებლისთვის მოსახერხებელი ინტერფეისის შექმნას მინიმალური კოდით. მოდით, `Gradio` დავაკავშიროთ `pipeline API`-ს, რათა დავახარისხოთ საკვების გამოსახულებები `timm ViT` მოდელის გამოყენებით (წვრილ მორგებას მოგვიანებით განვიხილავთ). აი, როგორ შეგიძლიათ სწრაფი დემო-ვერსიის დაყენება `timm` მოდელით: აქ არის ცოცხალი მაგალითი `Hugging Face Spaces`-ზე. შეგიძლიათ პირდაპირ თქვენს ბრაუზერში გამოსცადოთ! `🤗 transformers` ბიბლიოთეკა გთავაზობთ `Auto Classes`-ებს მოდელებისა და პროცესორების ჩატვირთვის სირთულის აბსტრაგირებისთვის. `TimmWrapper`-ის საშუალებით, შეგიძლიათ გამოიყენოთ `AutoModelForImageClassification` და `AutoImageProcessor` ნებისმიერი `timm` მოდელის მარტივად ჩასატვირთად. კვანტიზაცია მძლავრი ტექნიკაა მოდელის ზომის შესამცირებლად და ინფერენსის დასაჩქარებლად, განსაკუთრებით რესურსებით შეზღუდულ მოწყობილობებზე განთავსებისთვის. `timm`-ის ინტეგრაციით, შეგიძლიათ ნებისმიერი `timm` მოდელის კვანტიზაცია სულ რამდენიმე სტრიქონი კოდით, `bitsandbytes`-ის `BitsAndBytesConfig`-ის გამოყენებით. კვანტიზებული მოდელები ინფერენსის დროს თითქმის იდენტურად მუშაობენ სრული სიზუსტის მოდელებთან შედარებით: `🤗 transformers`-ის `Trainer API`-ის გამოყენებით `timm` მოდელის წვრილად მორგება (fine-tuning) მარტივი და მოქნილია. შეგიძლიათ თქვენი მოდელი დაარეგულიროთ მორგებულ მონაცემთა ნაკრებებზე `Trainer` კლასის გამოყენებით, რომელიც უზრუნველყოფს წვრთნის ციკლს, ლოგირებას და შეფასებას. გარდა ამისა, შეგიძლიათ წვრილად დაარეგულიროთ `LoRA (Low-Rank Adaptation)`-ის გამოყენებით, რათა ეფექტურად გაწვრთნათ ნაკლები პარამეტრით. ეს განყოფილება იძლევა სწრაფ მიმოხილვას როგორც სტანდარტული წვრილი მორგების, ასევე `LoRA`-ის წვრილი მორგების შესახებ, სრული კოდის ბმულებით. `Trainer API` ამარტივებს წვრთნის დაყენებას მინიმალური კოდით. ამ მიდგომის აღსანიშნავია ის, რომ ის ზუსტად იმეორებს მშობლიური `transformers` მოდელებისთვის გამოყენებულ სამუშაო პროცესს, ინარჩუნებს თანმიმდევრულობას სხვადასხვა მოდელის ტიპებში. ეს ნიშნავს, რომ შეგიძლიათ გამოიყენოთ ნაცნობი `Trainer API` არა მხოლოდ `Transformers` მოდელების, არამედ ნებისმიერი `timm` მოდელის წვრილად მორგებისთვის – `timm` ბიბლიოთეკის მძლავრი მოდელების `Hugging Face` ეკოსისტემაში შემოტანით მინიმალური კორექტირებით. ეს მნიშვნელოვნად აფართოებს მოდელების სპექტრს, რომელთა წვრილად მორგებაც შეგიძლიათ იგივე სანდო ხელსაწყოებისა და სამუშაო პროცესების გამოყენებით. მოდელის მაგალითი: წვრილად მორგებული `ViT Food-101`-ზე: vit_base_patch16_224.augreg2_in21k_ft_in1k.ft_food101 `LoRA (Low-Rank Adaptation)` საშუალებას გაძლევთ ეფექტურად დაარეგულიროთ დიდი მოდელები მხოლოდ რამდენიმე დამატებითი პარამეტრის გაწვრთნით, მოდელის წონების სრული ნაკრების ნაცვლად. ეს აჩქარებს წვრილ მორგებას და საშუალებას იძლევა გამოიყენოთ სამომხმარებლო აპარატურა. შეგიძლიათ `timm` მოდელი დაარეგულიროთ `LoRA`-ს გამოყენებით `PEFT` ბიბლიოთეკასთან ერთად. წვრთნადი პარამეტრები `LoRA`-თი: მოდელის მაგალითი: `LoRA`-თი წვრილად მორგებული `ViT Food-101`-ზე`: vit_base_patch16_224.augreg2_in21k_ft_in1k.lora_ft_food101 `LoRA` მხოლოდ ერთი მაგალითია ეფექტური ადაპტერზე დაფუძნებული წვრილი მორგების მეთოდებიდან, რომლებიც შეგიძლიათ გამოიყენოთ `timm` მოდელებზე. `timm`-ის ინტეგრაცია `🤗` ეკოსისტემასთან ხსნის პარამეტრებით ეფექტური წვრილი მორგების (`PEFT`) ტექნიკების ფართო სპექტრს, რაც საშუალებას გაძლევთ აირჩიოთ მეთოდი, რომელიც საუკეთესოდ შეესაბამება თქვენს კონკრეტულ შემთხვევას. მას შემდეგ, რაც მოდელი `LoRA`-თი იქნება წვრილად მორგებული, ჩვენ მხოლოდ ადაპტერის წონებს ვტვირთავთ `Hugging Face Hub`-ში. ეს განყოფილება დაგეხმარებათ ჩამოტვირთოთ ადაპტერის წონები, გააერთიანოთ ადაპტერის წონები საბაზისო მოდელთან და შემდეგ შეასრულოთ ინფერენსი. როსის (timm-ის შემქმნელი) ერთ-ერთი საყვარელი მახასიათებელია ის, რომ ეს ინტეგრაცია ინარჩუნებს სრულ „ორმხრივ“ (round-trip) თავსებადობას. კერძოდ, `wrapp`-ის გამოყენებით...