გადადით მთავარ შინაარსზე
OpenAI

8 დეკემბერი, 2022

Discovering the minutiae of backend systems

Person gazing across the room with an optimistic expression

Photo: Jake Stangel

იტვირთება…

რამ დაგაინტერესათ პირველად ინჟინერიით?

გამიმართლა, რომ პროგრამირება პატარა ასაკში აღმოვაჩინე და ეს სხვა თემების გამოსაკვლევ კარიბჭედ ვაქციე. საშუალო სკოლაში მეგობარმა გამაცნო BASIC პროგრამირების ენის კონკრეტული ვარიანტი, რომელიც Texas Instruments-ის კალკულატორებში იყო ჩაშენებული (ჩემი კოდი, მოსალოდნელად, სრულიად მოუვლელი იყო, რადგან თითო პროგრამაზე 27 ერთასოიანი ცვლადით ვიყავი შეზღუდული და ძლიერად ვეყრდნობოდი GOTO ოპერატორებს). მიუხედავად ამისა, შევქმენით რამდენიმე მარტივი პროგრამა, მაგალითად ტექსტური სათავგადასავლო თამაშები, ერთმანეთთან დაკავშირებული კალკულატორებისთვის ჩატის აპი და, რა თქმა უნდა, კვადრატული ფორმულის დამხმარე.

შემდეგ უფრო რთული პროგრამებიც დავწერე: ვიზუალური დამხმარე ნიუტონის მეთოდის საჩვენებლად და ორბიტების კალკულატორი პლანეტებისა და მათი მთვარეების მდებარეობის შესაფასებლად, რამაც ჩემი სკოლის Linux კლუბის ყურადღება მიიქცია. მალე NDISwrapper-ს ვეჭიდებოდი, რომ ჩემი ლეპტოპის CardBus-ზე დაფუძნებული WiFi ადაპტერი ამემუშავებინა, და ჩემს დესკტოპის ფანჯრებს Compiz-ით ცეცხლს ვუკიდებდი! კოდით აღმოჩენის ეს სქემა გაგრძელდა სკოლის წლებშიც და შემდეგაც, და სწორედ ამან ჩამომიყალიბა დღევანდელი ინჟინერიული ინტერესი.

რამ მოგიყვანათ OpenAI-ში?

წინა სამსახურში ბექენდის როლიდან full-stack პოზიციაზე გადავედი, მაგრამ მალე მივხვდი, რომ ფრონტენდზე მუშაობა და UX დიზაინი არ მხიბლავდა. მინდოდა დავბრუნებულიყავი ბექენდის სისტემებთან უფრო ახლო როლში და მენატრებოდა Linux გარემოებთან ის ურთიერთობა, რომელიც აკადემიურ სივრცეში მსიამოვნებდა. OpenAI-მ მომცა ის ცვლილება, რომელსაც ვეძებდი, და უფრო მეტიც; ძნელი იქნება იმაზე უკეთესი შესაბამისობის პოვნა, რასაც ვეძებდი, ვიდრე OpenAI-ის სუპერკომპიუტერულ კლასტერებზე მუშაობაა.

რა პრობლემების გადაჭრაზე ხართ აქ, OpenAI-ში, კონცენტრირებული?

AI-ის საძიებო სამუშაო ნაკადები ბუნებით ძალიან სწრაფ ტემპში ვითარდება; მკვლევრებს სურთ, arXiv-იდან აღებული preprint აიღონ და ახალი მიდგომები გამოსცადონ ისე, რომ პლატფორმამ, რომელზეც თავიანთ კოდს უშვებენ, ხელი არ შეუშალოს. ეს პროცესები ასევე უკიდურესად რთულია — მკვლევრები ხშირად მათემატიკოსებივით მოქმედებენ და იმ ინტუიციას ეყრდნობიან, რომელიც კარიერის განმავლობაში ჩამოუყალიბდათ, რათა იმ პრობლემის გადასაჭრელად შექმნან გამოსავალი, რომელმაც ამ კვირაში მათი ყურადღება მიიპყრო. ის ფაქტი, რომ ეს runtime-ები მსოფლიოს ერთ-ერთ უდიდეს სუპერკომპიუტერებზე სრულდება, სირთულის კიდევ ერთ ფენას ამატებს, და სწორედ ამ წინაბოლოო ფენასთან მუშაობაში ერთვება ჩემი გუნდი. ჩვენ ვცდილობთ, კვლევის საჭიროებები წინასწარ დავინახოთ, სანამ ისინი პროგრესს დაბლოკავს, და თუ ეს ვერ ხერხდება, კვლევით გუნდებთან ერთად ვადგენთ bottleneck-ებს და რაც შეიძლება სწრაფად ვნერგავთ დროებით გამოსავლებს.

Person sitting at a cafeteria table with a glass of water and closed laptop

Photo: Jake Stangel

თქვენი აზრით, რით განსხვავდება OpenAI-ში სუპერკომპიუტინგზე მუშაობა სხვა ადგილებისგან?

მასშტაბი, რომელზეც ვმუშაობთ, გულწრფელად რომ ვთქვა, განსაცვიფრებელია. მესამე მხარის აპარატურის მომწოდებლები რეგულარულად გვიმხელენ, რომ ისეთ პრობლემებს ვაწყდებით, რომლებიც მათ აქამდე არასოდეს უნახავთ. ხშირად ეს უბრალოდ იმიტომ ხდება, რომ ჩვენს ინსტალაციებში ერთ უწყვეტ სუპერკომპიუტერში უფრო მეტი აპარატურაა თავმოყრილი, ვიდრე მათ სხვა კლიენტებთან, თუმცა ზოგჯერ ეს ჩვენი წარმადობის მოლოდინების შედეგიცაა. მოდელების სწავლების მიდგომების უმეტესობის სინქრონული ბუნება იწვევს კონფიგურაციას, სადაც მთელი კლასტერი ფაქტობრივად ყველაზე ნელი კვანძის სიჩქარით მუშაობს.

ჩვენი ყველაზე მნიშვნელოვანი მოდელები მილიარდდოლარიან სუპერკომპიუტერებზე იწვრთნება და შედეგად ვსდევთ წარმადობის ისეთ დეგრადაციებს, რომლებსაც სხვების უმეტესობა უბრალოდ უგულებელყოფდა. ამაღელვებელია, როცა ხედავ, როგორ ხვდება ერთსტრიქონიანი ცვლილება mainline kernel-ში, და იცი, რომ ის ჩვენს მთელ ინფრასტრუქტურაში კვირაში დაახლოებით 6 გამოთვლით დღეს დაზოგავს, ან როცა ახალი დრაივერის რელიზში ერთ ჩანაწერს ხედავ და იცი, რომ ახლა უკვე upstream-ში შესული გამოსწორება სწორედ ჩვენი ერთ-ერთი აღმოჩენის შედეგია.

თქვენთვის როგორი გამოიყურება ჩვეულებრივი დღე OpenAI-ში?

ჩემი დღეები, როგორც წესი, კოდზე მუშაობის, პრობლემების გამოკვლევისა და შეხვედრებზე დასწრების ნაზავია. შეხვედრები ჩემს სამშაბათებს დომინირებს (და, საბედნიეროდ, ჩვეულებრივ მხოლოდ სამშაბათებს), ხოლო კვირის დანარჩენი ნაწილი დებაგინგსა და კოდირებას შორის ნაწილდება. გამოვლენილი პრობლემები, როგორც წესი, კოდურ სამუშაოდ გარდაიქმნება — მაგალითად, დიზაინის დოკუმენტის დაწერად, PR branch-ში სწრაფი hotfix-ის ატვირთვად ან პასიური health check ლოგიკის დამატებად, რათა არასწორად მომუშავე აპარატურა ჩვენს კლასტერებში არ მოხვდეს.

პრობლემებში ჩაღრმავება ცოტა დეტექტიურ მუშაობას მოითხოვს. კვლევაზე გავლენა მერყეობს ბუნდოვანიდან („როგორც ჩანს, ჩემი დავალება გუშინდელზე ნელა მუშაობს“) შემაძრწუნებლად კონკრეტულამდე („მგონია, თუ Ethernet NIC-ზე 30Gbps-ზე მეტს გავატარებ, kernel panic-ს ვიწვევ?“). ეს, ალბათ, ნაცნობი ნაზავია: პროდუქტიულია იმ დღეებში, როცა ყველაფერი მოსალოდნელად მიდის, და ამაღელვებელი მაშინ, როცა მოსალოდნელი ირღვევა და რაღაც ახლის სწავლის შანსი გეძლევა.

„OpenAI გაძლევთ შესაძლებლობას, ღრმად ჩასწვდეთ გამოთვლითი სისტემების იმ ასპექტებს, რომლებსაც სხვაგან უგულებელყოფენ.“

რა გაძლევთ ენერგიას ყოველდღე?

იშვიათად ვიწყებ სამუშაო დღეს ისე, რომ თავში უკვე არ მქონდეს საქმე, რომელიც უნდა გაკეთდეს, და, როგორც წესი, კარგად ვიცი, რომელ კონკრეტულ გუნდს, პროექტსა და მკვლევრებს ეხმარება ამოცანის დროული დასრულება. OpenAI ყველაზე დიდი დამსაქმებელია, რომელთანაც მიმუშავია, და ჩემი სამუშაოს გავლენის მყისიერი აღქმა ჩემი ყოველდღიური მოტივაციისთვის გადამწყვეტია. ასევე დიდ სიამოვნებას მანიჭებს სისტემების წვრილმანების აღმოჩენა. OpenAI არ არის პირველი დამსაქმებელი, სადაც ბექენდის სისტემებზე ვმუშაობ, მაგრამ HPC სივრცეში ეს ჩემი პირველი გამოცდილებაა.

ტექნოლოგიები, რომლებთანაც ვმუშაობთ, ხშირად მხოლოდ ამ სივრცისთვის დამახასიათებელი წარმადობის მოთხოვნების გამო არსებობს. წინა დამსაქმებლებთან არასოდეს დამჭირვებია ჩვენი აპარატურის ფიზიკურ ტოპოლოგიაზე ზრუნვა — მაგალითად, იმის უზრუნველყოფა, რომ კომუნიკაცია იმავე NUMA დომენში ხდებოდეს, ან რომ GPU თანალოკებულ NVME-ს ან InfiniBand მოწყობილობას Nvidia-ს GPUDirect-ის საშუალებით იყენებდეს, ან რომ სისტემური პროცესები კონკრეტულ CPU-ებზე იყოს მიბმული, რათა noisy neighbor კონფლიქტები არ შექმნოდა კვლევით runtime-ებს. OpenAI მაძლევს შესაძლებლობას, ღრმად ჩავუღრმავდე გამოთვლების იმ ასპექტებს, რომლებსაც სხვაგან უგულებელყოფენ, და ეს მაძლევს ინტერესს მიმდინარე ამოცანის მიმართ.

სად პოულობთ შთაგონებას?

არაფერი არის იმაზე შთამაგონებელი, ვიდრე ჩვენი კვლევითი გუნდების ყურება, როცა ისინი თავიანთ მოდელებს აუმჯობესებენ. ბევრ ჯგუფს აქვს Slack ბოტები ან მარტივი playground-ები, სადაც შეგიძლია დაუკავშირდე და გამოცადო მოდელები, რომლებიც ჯერ კიდევ განვითარების პროცესშია, და ამით ხედავ, როგორ უმჯობესდება ისინი სწავლების გაგრძელებასთან ერთად!

ასევე ვიყენებ პოპულარულ :meow_party: Slackmoji-ს, რომ სხვადასხვა Slack არხიდან მოტივაციური ან შთამაგონებელი კონტენტი მოვნიშნო. მას შემდეგ, რაც 2020 წლის შუაში შემოვუერთდი, უკვე 400-ზე მეტი :meow_party:-ით მონიშნული პოსტი მაქვს, რაც საშუალოდ კვირაში თითქმის 4-ს ნიშნავს!