რა მოხდება, თუკი მოვისურვებთ, ერთი ნაბიჯით წინ წავიდეთ და უშუალოდ ალბათობის განაწილების მოდიფიკაციით, თავად ტექსტის გენერაციის პროცესი გავაკონტროლოთ? სწორედ აქ ერთვება ლოგიტების დამუშავება. Hugging Face-ის LogitsProcessor API საშუალებას გაძლევთ მოარგოთ ენობრივი მოდელის პროგნოზირების ქულები, რაც უზრუნველყოფს მოდელის ქცევის დეტალურ კონტროლს. 🤗 Transformers ბიბლიოთეკა არა მხოლოდ გთავაზობთ ჩაშენებული ლოგიტების პროცესორების მრავალფეროვან კომპლექტს, არამედ აძლევს საშუალებას საზოგადოებას, შექმნას და გააზიაროს მორგებული პროცესორები უნიკალური გამოყენების შემთხვევებისთვის. წარმოგიდგენთ NVIDIA-ს LogitsProcessorZoo-ს — მძლავრი, მოდულური ლოგიტების პროცესორების კოლექციას, რომელიც შექმნილია სპეციფიკური ამოცანებისთვის, როგორიცაა თანმიმდევრობის სიგრძის კონტროლი, საკვანძო ფრაზების დაწესება ან მრავალჯერადი არჩევანის პასუხების წარმართვა. Hugging Face-ის generate მეთოდთან სრულად თავსებადი, NVIDIA-ს ბიბლიოთეკა წარმოადგენს საზოგადოების მიერ განპირობებული ინოვაციის შესანიშნავ მაგალითს ლოგიტების დამუშავების სფეროში. ამ პოსტში ჩვენ განვიხილავთ, თუ როგორ აუმჯობესებს და აფართოებს NVIDIA-ს LogitsProcessorZoo არსებულ შესაძლებლობებს, სიღრმისეულად შევისწავლით მის ფუნქციებს და ვაჩვენებთ, თუ როგორ შეუძლია მას თქვენი AI სამუშაო პროცესების დახვეწა. წყარო: https://jalammar.github.io/illustrated-gpt2/ ლოგიტები არის ნედლეული, არანორმალიზებული ქულები, რომლებსაც ენობრივი მოდელები აგენერირებენ თავიანთ ლექსიკონში თითოეული ტოკენისთვის. ეს ქულები გარდაიქმნება ალბათობებად softmax ფუნქციის მეშვეობით, რაც მოდელს უძღვება შემდეგი ტოკენის შერჩევაში. აი, მაგალითი იმისა, თუ როგორ ჯდება ლოგიტები გენერაციის პროცესში: ეს ლოგიტები წარმოადგენს მოდელის ნდობას თითოეული პოტენციური შემდეგი სიტყვის მიმართ. softmax-ის გამოყენებით, ჩვენ შეგვიძლია ისინი ალბათობებად ვაქციოთ და გავშიფროთ გენერირებულ ტექსტად: მიუხედავად იმისა, რომ ეს კონვეიერი გვიჩვენებს, თუ როგორ შეიძლება ნედლეული ლოგიტების ტექსტად გარდაქმნა, აღსანიშნავია, რომ 🤗 Transformers ამ პროცესს ამარტივებს. მაგალითად, generate() მეთოდი ავტომატურად ამუშავებს ამ გარდაქმნებს, მათ შორის softmax ფუნქციის გამოყენებას და ალბათობის განაწილებიდან შერჩევას. თუმცა, ნედლეული ლოგიტები შეიძლება არასასურველი იყოს ისეთი გავრცელებული ამოცანებისთვის, როგორიცაა შერჩევა ან ამოცანაზე სპეციფიკური შეზღუდვების დაწესება. გენერაციის დროს ლოგიტების ეფექტურად მართვის შესახებ დამატებითი დეტალებისთვის იხილეთ Hugging Face-ის გენერაციის ბლოგ-პოსტი. სწორედ აქ ხდება ლოგიტების დამუშავება შეუცვლელი, რათა გამომავალი კონკრეტულ საჭიროებებზე იყოს მორგებული. ნედლეული ლოგიტები ხშირად ვერ აკონტროლებს გამომავალ ქცევას. მაგალითად: ლოგიტების დამუშავება გვაძლევს საშუალებას, შევცვალოთ მოდელის ქცევა ამ ნედლეული ქულების მოდიფიკაციით გენერაციამდე. NVIDIA-ს LogitsProcessorZoo ამარტივებს ლოგიტების შემდგომ დამუშავებას მოდულური კომპონენტებით, რომლებიც მორგებულია სპეციფიკურ ამოცანებზე. მოდით, შევისწავლოთ მისი ფუნქციები და ვნახოთ, როგორ გამოვიყენოთ ისინი. გასაგრძელებლად, გადადით ნოუთბუქში და ექსპერიმენტი ჩაატარეთ ლოგიტების პროცესორებთან. ბიბლიოთეკის ინსტალაცია ხდება შემდეგნაირად: პროცესორების დემონსტრირებისთვის, შევქმნით მარტივ LLMRunner კლასს, რომელიც ახდენს მოდელისა და ტოკენიზატორის ინიციალიზაციას და აჩვენებს generate_response მეთოდს. შემდეგ მივაწოდებთ სხვადასხვა პროცესორს generate_response მეთოდს და ვნახავთ მათ მოქმედებაში. აკონტროლეთ გენერირებული თანმიმდევრობების სიგრძე, თანმიმდევრობის დასრულების (EOS) ტოკენის ალბათობის რეგულირებით. ეს პროცესორი განსაკუთრებით გამოსადეგია იმ სცენარებში, სადაც გენერირებული ტექსტის სასურველი სიგრძე გადამწყვეტ როლს თამაშობს, მაგალითად, ლაკონური შეჯამებების გენერირებისას, მრავალსიტყვიანი გამომავალის შეზღუდვისას ან პასუხების კონკრეტულ გამოყენების შემთხვევებზე მორგებისას. მაგალითად, მას შეუძლია უზრუნველყოს, რომ ჩატბოტი იძლევა მოკლე და აზრიან პასუხებს, გრამატიკული მთლიანობის შენარჩუნებით, საჭიროების შემთხვევაში წინადადებების დასრულებით. LLM პასუხი: იყო და არა იყო რა, ერთ მჭიდრო ტყეში ცხოვრობდა პატარა ბიჭი, სახელად ტიმი. ტიმი ოჯახთან ერთად სალაშქროდ იყო წასული მშობლებთან და პატარა დასთან, ემასთან ერთად. ისინი საათობით დადიოდნენ, და მჭიდრო ხეები ირგვლივ თითქოს იკეტებოდნენ. როგორც კი მზე ჩასვლას იწყებდა, ტიმი მიხვდა, რომ ოჯახს ჩამორჩა. თავიდან ტიმი არ შეშინებულა. ის ფიქრობდა მშობლებისა და ემას დაძახებას, მაგრამ მისი ხმა ჩახლეჩილი ჰქონდა კოცონის სიმღერების მღერისგან. ის მიმოიხედა, მაგრამ ხეები უსასრულოდ იყო გადაჭიმული, რაც შეუძლებელს ხდიდა ნებისმიერი ნაცნობი ღირშესანიშნაობის დანახვას. როდესაც სიბნელე სქელდებოდა, ტიმის შიშმა შემოპარვა დაიწყო. LLM პასუხი: იყო და არა იყო რა, ერთ მჭიდრო და ხასხასა ტყეში ცხოვრობდა პატარა ბიჭი, სახელად მაქსი. მაქსი იყო თავგადასავლების მოყვარული და ცნობისმოყვარე 8 წლის ბიჭი, რომელსაც უყვარდა ბუნების კვლევა. ერთ მზიან შუადღეს, ტყეში ხეტიალისას, მან შემთხვევით აღმოაჩინა ვიწრო ბილიკი, რომელიც აქამდე არასდროს უნახავს. აღმოჩენით აღელვებულმა მაქსმა გადაწყვიტა გაჰყოლოდა ბილიკს და ენახა, სად მიიყვანდა ის. ტყე სიცოცხლით იყო სავსე, და ხეებში გაფილტრული მზის სხივები ქმნიდა ჯადოსნურ ატმოსფეროს. მაქსი დაახლოებით 20 წუთის განმავლობაში დადიოდა, მისი თვალები ირგვლივ სკანირებდა ცივილიზაციის ნებისმიერ ნიშანს. როდესაც მზე ჩასვლას იწყებდა და ტყეს თბილი ნარინჯისფერი ელფერით ღებავდა, მაქსი მიხვდა, რომ დაიკარგა. მას არ ჰქონდა ტელეფონი, საფულე და არანაირი საშუალება ოჯახთან კომუნიკაციისთვის. პანიკამ იმატა, და მაქსმა თავი შეშინებულად და მარტოდ იგრძნო. პანიკაში მყოფმა მაქსმა ტყეში სირბილი დაიწყო, გული უცემდა და ფეხები უკანკალებდა. ის წაიქცა