AI ჩიპი უბრალოდ „უფრო სწრაფი პროცესორი“ არ არის. ეს ფართო სახელწოდებაა იმ გამოთვლითი მოწყობილობებისთვის, რომლებიც ხელოვნური ინტელექტის, განსაკუთრებით კი ნეირონული ქსელების, ტიპურ ოპერაციებზეა მორგებული. მათი მთავარი ამოცანაა დიდი მოცულობის ერთგვაროვანი გამოთვლების სწრაფად და შედარებით ეფექტიანად შესრულება.
სხვაობის გასაგებად მნიშვნელოვანია ვიცოდეთ, რომ AI სისტემა მხოლოდ ერთ ჩიპზე არ დგას. შედეგს განსაზღვრავს მოდელის ტიპი, პროგრამული უზრუნველყოფა, მეხსიერების მოცულობა და სიჩქარე, ენერგიის ლიმიტი, ასევე მონაცემთა ცენტრში ჩიპებს, ქსელსა და საცავს შორის კავშირი.
CPU, GPU და AI ამაჩქარებელი: რისთვის არის თითოეული
CPU ანუ ცენტრალური პროცესორი უნივერსალური გამოთვლებისთვისაა შექმნილი. მას აქვს შედარებით ცოტა, მაგრამ მოქნილი ბირთვი და კარგად უმკლავდება სხვადასხვა, ხშირად თანმიმდევრულ ან არაპროგნოზირებად დავალებას: ოპერაციული სისტემის მუშაობას, პროგრამის მართვას, მონაცემთა ბაზებსა და ვებ-სერვერებს.
ეს არ ნიშნავს, რომ CPU ხელოვნური ინტელექტისთვის გამოუსადეგარია. იგი ხშირად ამზადებს მონაცემებს, მართავს I/O ოპერაციებს, კოორდინაციას უწევს სხვა ამაჩქარებლებს და შეუძლია მცირე მოდელების ან დაბალი დატვირთვის inference-ის შესრულებაც.
GPU თავდაპირველად გრაფიკისთვის შეიქმნა, თუმცა მასში ბევრი პარალელური გამოთვლითი ერთეულია. ამიტომ იგი ეფექტიანია მაშინ, როცა ერთნაირი მოქმედება დიდი რაოდენობის მონაცემზე ერთდროულად მეორდება. ნეირონულ ქსელებში სწორედ ასეთი სამუშაოა ხშირი — ვექტორებისა და მატრიცების დამუშავება. თანამედროვე მონაცემთა ცენტრის GPU-ებს შეიძლება ჰქონდეთ სპეციალური მატრიცული ბლოკებიც, რომლებიც ამ გამოთვლებს აჩქარებენ.
AI ამაჩქარებელი უფრო ფართო ტერმინია. ის შეიძლება იყოს ნეირონული ქსელებისთვის შექმნილი სპეციალიზებული ASIC, tensor processor-ის ტიპის ჩიპი, AI ფუნქციებით გაძლიერებული GPU ან მოწყობილობაში ინტეგრირებული NPU. მაგალითად, Google-ის დოკუმენტაცია TPU-ს აღწერს, როგორც მანქანური სწავლებისთვის შექმნილ ASIC-ს, რომელიც მატრიცულ ოპერაციებზეა ოპტიმიზებული.
რატომ ეხმარება სპეციალიზაცია ნეირონულ ქსელებს
ნეირონული ქსელის ბევრ ფენაში გამუდმებით მეორდება გამრავლება-შეკრების ოპერაციები. გამარტივებული ჩანაწერით ეს შეიძლება ასე გამოიყურებოდეს: C = A × B + C. ცალკეული ოპერაციები დამოუკიდებლად მრავალ ელემენტზე სრულდება, ამიტომ მათი პარალელურად დამუშავება შესაძლებელია.
CPU ასეთ დავალებასაც შეასრულებს, მაგრამ მისი არქიტექტურა მრავალი განსხვავებული ტიპის სამუშაოსთვისაა დაბალანსებული. GPU და სპეციალიზებული AI ამაჩქარებლები კი ცდილობენ ბევრი მსგავსი ოპერაცია ერთდროულად გაუშვან. მარტივი ანალოგიით, CPU რამდენიმე მრავალფუნქციური სპეციალისტია; GPU — დიდი გუნდი, რომელიც მსგავს დავალებებს პარალელურად ასრულებს; AI ამაჩქარებელი კი კონკრეტული ტიპის სამუშაოზე აწყობილი საწარმოო ხაზია.
ზოგ სპეციალიზებულ არქიტექტურაში მონაცემი ერთმანეთთან დაკავშირებულ გამოთვლით ერთეულებში გადის, რათა შუალედური შედეგების მეხსიერებაში ხშირი ჩაწერა და იქიდან წაკითხვა შემცირდეს. ასეთი მიდგომა გარკვეული მოდელებისთვის ენერგიისა და დროის დაზოგვას უწყობს ხელს, თუმცა ყველა ამოცანისთვის ერთნაირად მომგებიანი არ არის.
ტრენინგი და inference: ერთი მოდელის ორი განსხვავებული ეტაპი
ტრენინგისას მოდელი მონაცემებიდან სწავლობს: აკეთებს პროგნოზს, ადარებს მას სწორ პასუხს, ითვლის შეცდომას და უკუგავრცელების გზით ასწორებს პარამეტრებს. ეს პროცესი მრავალჯერ მეორდება და ხშირად დიდი გამოთვლითი რესურსი სჭირდება.
დიდი მოდელის ტრენინგი შეიძლება ბევრ ჩიპზე განაწილდეს. ამ დროს თითოეული ჩიპი მონაცემის ნაწილზე მუშაობს, შემდეგ კი სისტემამ შუალედური შედეგები, მაგალითად გრადიენტები, უნდა დაასინქრონოს. ამიტომ ჩიპებს შორის სწრაფი ქსელური კავშირი ისეთივე პრაქტიკული მნიშვნელობისაა, როგორიც თავად გამოთვლითი ბირთვები.
Inference უკვე გაწვრთნილი მოდელის გამოყენებაა ახალი პასუხის, პროგნოზის ან კლასიფიკაციის მისაღებად. ჩატბოტის შემთხვევაში ეს მომხმარებლის მოთხოვნაზე პასუხის გენერირებას ნიშნავს. აქ პრიორიტეტი იცვლება: დიდ ჯგუფებზე დამუშავებისას მნიშვნელოვანია საერთო გამტარობა, ხოლო ერთ მომხმარებელთან საუბრისას — დაბალი დაყოვნება.
განსაკუთრებით ენობრივ მოდელებში პასუხი ხშირად ტოკენ-ტოკენ წარმოიქმნება. ამიტომ მოდელის პარამეტრებისა და შუალედური მონაცემების სწრაფად მიწოდება ზოგჯერ გამოთვლით სიმძლავრეზე არანაკლებ მნიშვნელოვანი ხდება.
რატომ არ კმარა მხოლოდ FLOPS ან TOPS
ჩიპის თეორიული წარმადობა პრაქტიკაში ვერ გამოიყენება, თუ გამოთვლით ერთეულებს მონაცემი დროულად არ მიეწოდათ. ამიტომ მნიშვნელოვანია სამი საკითხი:
- მეხსიერების მოცულობა — რამდენი პარამეტრი, აქტივაცია ან სხვა სამუშაო მონაცემი ეტევა;
- მეხსიერების გამტარობა — რა სიჩქარით მოძრაობს მონაცემი მეხსიერებასა და გამოთვლით ნაწილს შორის;
- ენერგომოხმარება — რამდენი ენერგია სჭირდება თითოეული გამოთვლისა და მონაცემის გადატანისთვის.
მონაცემთა ცენტრში ამას ემატება სწრაფი ქსელი და საცავი. ქსელი საჭიროა ჩიპებს შორის ტრენინგისას შედეგების გასაცვლელად ან მოდელის გასანაწილებლად, ხოლო საცავი — დიდი სასწავლო მონაცემებისა და მოდელის ფაილების შესანახად და დროულად მისაწოდებლად. სუსტი ქსელი, ნელი საცავი ან არასაკმარისი მეხსიერება ძლიერი ამაჩქარებლის შესაძლებლობებსაც ზღუდავს.
ამიტომ არ არსებობს უნივერსალური გამარჯვებული ჩიპი. კონკრეტული არჩევანი დამოკიდებულია მოდელის ზომაზე, ამოცანაზე, სიზუსტის საჭირო ფორმატზე, batch-ის ზომაზე, დაყოვნების მოთხოვნაზე, პროგრამულ ეკოსისტემაზე, ფასსა და ელექტროენერგიის ხელმისაწვდომობაზე. ხშირად საუკეთესო გამოსავალი CPU-ს, GPU-სა და სპეციალიზებული AI ამაჩქარებლების ერთობლივი გამოყენებაა.