Google-მა CodeGemma - კოდზე ორიენტირებული დიდი ენობრივი მოდელები - გამოუშვა
Google-მა გამოუშვა CodeGemma, კოდზე სპეციალიზებული დიდი ენობრივი მოდელების (LLM) ოჯახი, რომელიც ეფუძნება 2B და 7B Gemma მოდელებს. ის ხელმისაწვდომია Hugging Face Hub-ზე სამ ვერსიად – CodeGemma 2B, CodeGemma 7B და CodeGemma 7B Instruct – და გამიზნულია კოდის შევსების, გენერაციისა და გაგების ამოცანებისთვის, ასევე მათემატიკური და ლოგიკური მსჯელობის გასაუმჯობესებლად. მოდელები გაწვრთნილია დამატებით 500 მილიარდ ტოკენზე და აჩვენებენ მაღალ წარმადობას კოდის შეფასების პოპულარულ ბენჩმარკებზე, როგორიცაა Human
CodeGemma სამ ვარიანტშია ხელმისაწვდომი: ჩვენ ვითანამშრომლეთ Google-თან, რათა უზრუნველვყოთ საუკეთესო ინტეგრაცია Hugging Face-ის ეკოსისტემაში. სამივე ღია წვდომის მოდელი უკვე მზადაა Hub-ზე გამოსაყენებლად. გამოშვებული ფუნქციებისა და ინტეგრაციების შორის აღსანიშნავია: ქოდჯემა არის Google-ის მიერ შექმნილი კოდზე სპეციალიზებული დიდი ენობრივი მოდელების (LLM) ოჯახი, რომელიც ეფუძნება წინასწარ გაწვრთნილი 2B და 7B Gemma ჩექპოინტებს. ქოდჯემა დამატებით გაწვრთნილია 500 მილიარდ ტოკენზე მეტ მონაცემზე, რომლებიც ძირითადად ინგლისურენოვან მონაცემებს, მათემატიკასა და კოდს მოიცავს, რათა გაუმჯობესდეს ლოგიკური და მათემატიკური მსჯელობა. ის ვარგისია კოდის შევსებისა და გენერაციისთვის.
CodeGemma 2B გაწვრთნილია ექსკლუზიურად კოდის შევსებაზე (Code Infilling) და განკუთვნილია კოდის სწრაფი შევსებისა და გენერაციისთვის, განსაკუთრებით ისეთ პირობებში, სადაც ლატენტურობა და/ან კონფიდენციალურობა გადამწყვეტია. CodeGemma 7B-ის საწვრთნელ მონაცემთა ნაკრები მოიცავს კოდის შევსების მონაცემებს (80%) და ბუნებრივ ენას. მისი გამოყენება შესაძლებელია კოდის შევსებისთვის, ასევე კოდისა და ენის გაგებისთვის და გენერაციისთვის. CodeGemma 7B Instruct დამატებით ოპტიმიზირებულია (fine-tuned) ინსტრუქციების შესასრულებლად CodeGemma 7B-ის ბაზაზე. ის განკუთვნილია საუბრის რეჟიმში გამოსაყენებლად, განსაკუთრებით კოდის, პროგრამირების ან მათემატიკური მსჯელობის თემებზე.
ყველა მოდელს აქვს იგივე 8K ტოკენის კონტექსტური ზომა, რაც მათ წინამორბედებს. CodeGemma-7B აჭარბებს მსგავსი ზომის 7B მოდელებს, გარდა DeepSeek-Coder-7B-ისა, HumanEval-ზე, პოპულარულ ბენჩმარკზე, რომელიც Python-ის კოდის მოდელებს აფასებს. იგივე შეინიშნება სხვა პროგრამირების ენების (როგორიცაა Java, JavaScript და C++) შეფასებისას MultiPL-E-დან, HumanEval-ის ადაპტირებული ვერსიიდან. ტექნიკური ანგარიშის მიხედვით, 7B მოდელებს შორის მოდელი საუკეთესო შედეგებს აჩვენებს GSM8K-ზე. ინსტრუქციებზე გაწვრთნილი ვერსია CodeGemma-7B-it აუმჯობესებს შედეგებს ყველაზე პოპულარულ ენებზე, როგორც HumanEval-ზე, ასევე MBPP-ზე (იხილეთ სტატიის ცხრილი 5). დამატებითი დეტალებისთვის შეგიძლიათ შეამოწმოთ BigCode ლიდერბორდი ან ქვემოთ მოცემული მეტრიკები.
CodeGemma 2B და CodeGemma 7B იყენებენ "infilling"-ის (კოდი, კომენტარები, დოკუმენტაციის სტრიქონები, import ინსტრუქციები) მეთოდს კოდის შევსებისთვის. ქოდჯემა ამ ამოცანისთვის გაწვრთნილია "fill-in-the-middle" (FIM) მიზნის გამოყენებით, სადაც კონტექსტის სახით მიუთითებთ პრეფიქსსა და სუფიქსს შევსებისთვის. შემდეგი ტოკენები გამოიყენება შეტანის სხვადასხვა ნაწილის გასაყოფად: ამათ გარდა, არის ასევე <|file_separator|>, რომელიც უზრუნველყოფს მრავალფაილიან კონტექსტებს. გამოყენების მაგალითებს ვაჩვენებთ "Using with transformers" განყოფილებაში.
CodeGemma 7B Instruct იყენებს იგივე მოთხოვნის ფორმატს, რასაც Gemma-ს საბაზისო, ინსტრუქციებზე გაწვრთნილი ვერსიები, შემდეგი საუბრის სტრუქტურის დაცვით: Gemma-ს მსგავსად, ამ ფორმატის რეპროდუცირების უმარტივესი გზაა transformers ბიბლიოთეკაში არსებული ჩეთის შაბლონის გამოყენება. შეგიძლიათ მარტივად სცადოთ CodeGemma მოდელი (7 მილიარდი პარამეტრი!) ამ "Space"-ში ან ქვემოთ ჩაშენებულ ჩატბოტში: შიგნიდან, ეს სათამაშო მოედანი იყენებს Transformers-ის იმპლემენტაციას. ასევე შეგიძლიათ დააკოპიროთ "Space" თქვენი გამოყენებისთვის – ის სრულად ავტონომიურია, ასე რომ შეგიძლიათ შეისწავლოთ საწყისი კოდი და მოარგოთ ის თქვენს საჭიროებებს! Transformers-ის 4.39 ვერსიის გამოშვებით, შეგიძლიათ გამოიყენოთ CodeGemma და ისარგებლოთ Hugging Face ეკოსისტემის ყველა ხელსაწყოთი, როგორიცაა: Gemma მოდელების მსგავსად, CodeGemma თავსებადია torch.compile()-თან, რაც მნიშვნელოვნად აჩქარებს ინფერენსს (დასკვნის გამოტანას).
ბონუსი: ჩვენ შევქმენით Colab ნოუთბუქი, რომ მოდელი მარტივად გამოსცადოთ ერთი ღილაკის დაჭერით აქ. CodeGemma-ს transformers-თან გამოსაყენებლად, დარწმუნდით, რომ იყენებთ უახლეს ვერსიას: შემდეგი კოდის ფრაგმენტი გვიჩვენებს, თუ როგორ გამოვიყენოთ codegemma-2b კოდის შევსებისთვის transformers-თან ერთად. მას სჭირდება დაახლოებით 6 GB ოპერატიული მეხსიერება float16 სიზუსტის გამოყენებისას, რაც მას იდეალურად ხდის სამომხმარებლო GPU-ებისთვის და მოწყობილობებზე არსებული აპლიკაციებისთვის. გაითვალისწინეთ, რომ <|fim_suffix|> ტოკენი ჩნდება იმ ადგილას, სადაც კურსორი განთავსდება რედაქტორში, რაც აღნიშნავს გენერაციის ადგილს. <|fim_prefix|> უზრუნველყოფს კურსორის წინარე კონტექსტს, ხოლო დანარჩენი <|fim_middle|>-მდე არის დამატებითი კონტექსტი კურსორის შემდეგ. რომელიმე მათგანი შეიძლება იყოს ცარიელი, თუ კურსორი ფაილის დასაწყისში ან ბოლოს მდებარეობს.
წინა კოდმა შეიძლება დააბრუნოს მსგავსი რამ: გაითვალისწინეთ დამატებითი კონტენტი სწორი შევსების შემდეგ. ეს განსაკუთრებით ხდება CodeGemma 7B-ის შემთხვევაში, რომელიც უფრო ვრცელია და ხშირად გთავაზობთ დამატებით კოდს ან კომენტარებს შევსების შემდეგ. კოდის შევსებისთვის, ჩვენ უნდა უგულებელვყოთ ყველაფერი, რაც FIM ტოკენების ან EOS ტოკენის შემდეგ გამოჩნდება. გენერაციის ადრეულ შეწყვეტა შეგვიძლია transformers-ის მეშვეობით, "generate" ფუნქციისთვის "terminators"-ის სიის მიწოდებით, ასე: ამ შემთხვევაში, გენერაცია შეწყდება, როგორც კი პირველი გამყოფი მოიძებნება: ორიგინალური CodeGemma ჩექპოინტები გამოშვებულია bfloat16 სიზუსტით. თუ მოდელს ჩატვირთავთ torch_dtype-ის მითითების გარეშე, PyTorch მათ float32-მდე გაზრდის. float16-ზე გადაყვანა სრულიად მისაღებია გამოსაყენებლად და ის შეიძლება ბევრად უფრო სწრაფი იყოს, ვიდრე bfloat16 გარკვეულ აპარატურაზე. მაქსიმალური სიზუსტისთვის, გირჩევთ გამოიყენოთ bfloat16 float32-ის ნაცვლად. ასევე შეგიძლიათ მოდელის ავტომატურად კვანტიზაცია, მისი ჩატვირთვა 8-ბიტიან ან 4-ბიტიან რეჟიმში. CodeGemma 7B-ის 4-ბიტიანი ჩატვირთვა დაახლოებით 9 GB მეხსიერებას მოითხოვს.
თეგები:
#ხელოვნური ინტელექტი
#llm
#google
#დეველოპერები
#პროგრამირება
#მანქანური სწავლა
#კოდის გენერაცია
#hugging face
#codegemma
წყარო: huggingface.co
AI-ით გადამუშავებული