დარეგისტრირდით: https://streamyard.com/watch/iMZUvJnmz8BV Hugging Face-ში ჩვენი მიზანია, ხელოვნური ინტელექტის (AI) შექმნა მარტივი გავხადოთ ღია მოდელებისა და ღია კოდის საშუალებით, მიუხედავად იმისა, თუ რომელ ფრეიმვორქს, ღრუბლოვან სერვისს ან ტექნოლოგიურ დასტას გამოიყენებთ. ამ პროცესის მთავარი კომპონენტია AI მოდელების განთავსების შესაძლებლობა მრავალფეროვან აპარატურაზე. AMD-თან ჩვენი დაახლოებით ერთწლიანი თანამშრომლობის ფარგლებში, ჩვენ ინვესტიციას ვახორციელებთ სხვადასხვა ამაჩქარებელში, როგორიცაა AMD Instinct™ და Radeon™ GPU-ები, EPYC™ და Ryzen™ CPU-ები, ასევე Ryzen AI NPU-ები. ეს უზრუნველყოფს, რომ AMD-ის ფლოტში ყოველთვის მოიძებნება მოწყობილობა AI-ის უმსხვილესი საზოგადოების მხარდასაჭერად. დღეს, მოხარულნი ვართ გამოვაცხადოთ, რომ Hugging Face-ი და AMD ინტენსიურად მუშაობდნენ ერთად, რათა AMD GPU სერვერების უახლეს თაობას, კერძოდ AMD Instinct MI300-ს, უმაღლესი დონის ინტეგრაცია ჰქონოდა Hugging Face-ის საერთო პლატფორმაში. მოდელების პროტოტიპებიდან თქვენს ადგილობრივ გარემოში, Azure ND Mi300x V5 VM-ებზე პროდუქციის წარმოებამდე, თქვენ არ გჭირდებათ კოდის შეცვლა transformers[1], text-generation-inference და სხვა ბიბლიოთეკების გამოყენებისას, ან Hugging Face-ის პროდუქტებისა და გადაწყვეტილებების გამოყენებისას. ჩვენ გვინდა, რომ AMD MI300-ის Hugging Face-ზე გამოყენება სუპერ მარტივი იყოს და უზრუნველყოს საუკეთესო წარმადობა. მოდით, დეტალებში ჩავუღრმავდეთ! ხელოვნური ინტელექტის სფეროში ამდენი სიახლის გათვალისწინებით, აუცილებელი იყო MI300 ხაზის სწორი ტესტირება და გრძელვადიანი მონიტორინგი. ამის მისაღწევად, ჩვენ მჭიდროდ ვთანამშრომლობდით Hugging Face-ის ინფრასტრუქტურის გუნდთან, რათა უზრუნველვყოთ მყარი „სამშენებლო ბლოკების“ არსებობა ყველასთვის, ვისაც სჭირდება უწყვეტი ინტეგრაციისა და განთავსების (CI/CD) ჩართვა, ისე, რომ ეს პროცესი მარტივი იყოს და არ იმოქმედოს არსებულ სისტემებზე. ამ შესაძლებლობების გასააქტიურებლად, ჩვენ AMD-სა და Microsoft Azure-ის გუნდებთან ერთად ვიმუშავეთ, რათა ახლად წარმოდგენილი Azure ND MI300x V5 გამოყენებულიყო, როგორც MI300-ზე ორიენტირებული ძირითადი კომპონენტი. სულ რაღაც რამდენიმე საათში ჩვენმა ინფრასტრუქტურის გუნდმა შეძლო ყველაფრის განლაგება, დაყენება და გაშვება, რათა MI300-ზე მუშაობა დაგვეწყო! ჩვენ ასევე გადავედით ძველი ინფრასტრუქტურიდან მართულ Kubernetes კლასტერზე, რომელიც უზრუნველყოფს Github-ის ყველა სამუშაო პროცესის დაგეგმვას, რისი გაშვებაც Hugging Face-ის თანამშრომლებს სურთ აპარატურისთვის სპეციფიკურ „პოდებზე“. ეს მიგრაცია ახლა საშუალებას გვაძლევს, გავუშვათ ზუსტად იგივე CI/CD კონვეიერი მრავალფეროვან აპარატურულ პლატფორმაზე, დეველოპერისთვის აბსტრაქტული ფორმით. ჩვენ შევძელით CI/CD-ის გამართვა და გაშვება რამდენიმე დღეში, დიდი ძალისხმევის გარეშე Azure MI300X VM-ზე. შედეგად, transformers და text-generation-inference ახლა რეგულარულად იტესტება როგორც AMD Instinct GPU-ების წინა თაობაზე, კერძოდ MI250-ზე, ასევე უახლეს MI300-ზე. პრაქტიკაში, არსებობს ათობით ათასი ერთეული ტესტი, რომელიც რეგულარულად ამოწმებს ამ რეპოზიტორიების მდგომარეობას, რაც უზრუნველყოფს ინტეგრაციის სისწორესა და სტაბილურობას გრძელვადიან პერსპექტივაში. როგორც უკვე აღვნიშნეთ, ჩვენ ვმუშაობდით ახალი AMD Instinct MI300 GPU-ების ეფექტურად გამოყენებაზე „დასკვნითი დატვირთვების“ (inference workloads) შესასრულებლად ჩვენი ღია კოდის დასკვნითი გადაწყვეტის, text-generation-inference (TGI) მეშვეობით. TGI შეიძლება განვიხილოთ, როგორც სამი განსხვავებული კომპონენტი: - ტრანსპორტის ფენა, ძირითადად HTTP, რომელიც ამჟღავნებს და იღებს API მოთხოვნებს კლიენტებისგან. - დაგეგმვის ფენა, რომელიც უზრუნველყოფს ამ მოთხოვნების პოტენციურად ერთმანეთთან დაჯგუფებას (ანუ უწყვეტ დაჯგუფებას), რათა გაიზარდოს გამოთვლითი სიმკვრივე აპარატურაზე მომხმარებლის გამოცდილებაზე ზემოქმედების გარეშე. - მოდელირების ფენა, რომელიც ზრუნავს მოწყობილობაზე რეალური გამოთვლების შესრულებაზე, მოდელში ჩართული მაღალოპტიმიზებული რუტინების გამოყენებით. აქ, AMD-ის ინჟინრების დახმარებით, ჩვენ ფოკუსირებული ვიყავით ამ ბოლო კომპონენტზე, მოდელირებაზე, რათა ეფექტურად დაგვეყენებინა, გაგვეშვა და ოპტიმიზაცია გაგვეკეთებინა სამუშაო დატვირთვისთვის, Meta Llama ოჯახის მსგავსი მოდელების მომსახურებისთვის. კერძოდ, ჩვენ ფოკუსირებული ვიყავით შემდეგზე: - Flash Attention v2 - Paged Attention - GPTQ/AWQ შეკუმშვის ტექნიკა - ROCm TunableOp-ის PyTorch ინტეგრაცია - ოპტიმიზებული შერწყმული ბირთვების ინტეგრაცია. უმეტესობა ამათგან უკვე საკმაოდ დიდი ხანია არსებობს, FlashAttention v2, PagedAttention და GPTQ/AWQ შეკუმშვის მეთოდები (განსაკუთრებით მათი ოპტიმიზებული რუტინები/ბირთვები). ჩვენ არ განვიხილავთ დეტალურად ზემოთ მოცემულ სამს და გიწვევთ, გადახვიდეთ მათ ორიგინალურ იმპლემენტაციის გვერდზე მეტის გასაგებად. მიუხედავად ამისა, სრულიად ახალი აპარატურული პლატფორმით, ახალი SDK გამოშვებებით, მნიშვნელოვანი იყო ყოველი ნაწილის ფრთხილად ვალიდაცია, პროფილირება და ოპტიმიზაცია, რათა დაგვერწმუნებინა, რომ მომხმარებელი მიიღებს სრულ ძალას ამ ახალი პლატფორმისგან. და ბოლოს, ამ TGI გამოშვების ნაწილად, ჩვენ ვაინტეგრირებთ ახლად გამოშვებულ AMD TunableOp-ს, რომელიც PyTorch 2.3-ის ნაწილია. TunableOp უზრუნველყოფს მრავალმხრივ მექანიზმს, რომელიც იპოვის ზოგადი მატრიცული გამრავლების (ანუ GEMM-ების) ყველაზე ეფექტურ გზას, ფორმებისა და მონაცემთა ტიპის მიხედვით. TunableOp ინტეგრირებულია PyTorch-ში და ჯერ კიდევ აქტიურ დამუშავების პროცესშია, თუმცა, როგორც ქვემოთ იხილავთ, ის შესაძლებელს ხდის GEMM ოპერაციების წარმადობის გაუმჯობესებას მომხმარებლის გამოცდილებაზე მნიშვნელოვანი ზემოქმედების გარეშე. კერძოდ, ჩვენ ვიღებთ 8-10%-იან აჩქარებას ლატენტურობაში TunableOp-ის გამოყენებით მცირე შეყვანის თანმიმდევრობებისთვის, რაც შეესაბამება...