Diversity w polskim IT
Adam Kukołowicz
Adam KukołowiczCo-founder @ Bulldogjob

AlphaCode 2 - koduje lepiej niż 85% programistów

Prześwietlam AlphaCode 2, by zrozumieć czym jest i jak osiągnął wyniki lepsze niż 85% programistów.
7.12.20234 min
AlphaCode 2 - koduje lepiej niż 85% programistów

AlphaCode 2 to system AI stworzony do rozwiązywania problemów programistycznych. Jest oparty o najnowszy LLM od DeepMind - Gemini Pro. System ten uzyskał wynik lepszy od 85% programistów, którzy brali udział w rozwiązywaniu takich samych problemów koderskich. Dlatego można powiedzieć, że AlphaCode 2 jest lepszy w kodowaniu ode mnie i być może też od Ciebie.

Ale zanim zaczniemy śpiewkę o zastąpieniu programistów przez AI przyjrzyjmy się jak AlphaCode 2 działa i co to faktycznie może dla nas oznaczać.

Jak działa AlphaCode 2?

Przede wszystkim AlphaCode 2 to system AI, a nie model AI. Co prawda jego podstawą są zmodyfikowane wersje Gemini Pro (czyli modelu możliwościach mniej więcej na poziomie GPT 3.5), trenowane na 30 milionach próbkach kodu i 15 tysiącach problemów, ale to tylko część układanki. Cały system wygląda mniej więc tak: 

Diagram systemu AlphaCode 2
(źródło: AlphaCode tech report)

A działanie można opisać skrótowo w dość prosty sposób.

Dla każdego zadanego problemu system generuje nawet milion różnorodnych próbek kodu, z których oczywiście większość będzie bezwartościowa. Te próbki zostają potem odfiltrowane przez uruchomienie ich i przetestowanie, w ten sposób odpada 95% próbek. Potencjalnie poprawne próbki są łączone w klastry, które mają połączyć podobne rozwiązania, tak by na końcu mieć 10 propozycji kodu do wyboru. Następnie każda z propozycji jest oceniana przez model bazujący na Gemini Pro i najlepsza propozycja jest przedstawiana jako rozwiązanie.

AlphaCode 2 deklasuje programistów

System został stworzony by rozwiązywać skomplikowane problemy programistyczne na Codeforces i dał radę rozwiązać 43% problemów. To lepszy wynik niż 85% programistów, którzy wzięli udział w tych samych wyzwaniach. To oznacza, że jest na poziomie naprawdę przyzwoitego programisty.

Zwróć uwagę, że pod spodem AlphaCode 2 wykorzystuje Gemini Pro, czyli nawet nie jest to najmocniejszy model, jakim dysponuje Google. Ciekawe jest też to, że DeepMind skupił się na rozwiązywaniu nowych problemów z Codeforces, by uniknąć false positive znanego z GPT 4 - który potrafił rozwiązać część problemów, o ile zostały opublikowane przed 2021 (kiedy zakończył się pierwotnie trening). Dla problemów, których nie znał z treningu, jego wynik wyniósł 0%. To pokazuje, że AlphaCode 2 jest naprawdę niezłe w te klocki.

Czyli co? Możemy już pisać, że AI zastąpi programistów?

Nikomu nie zabronię, ale warto najpierw zrozumieć pewne ograniczenia, które ma AlphaCode 2.

Problemy z AlphaCode 2

Problem pierwszy jest taki, że DeepMind próbowało stworzyć wersję AlphaCode 2, która będzie rozwiązywać problemy w Pythonie. Natomiast okazało się, że wyniki generowania rozwiązań nie są jakieś rewelacyjne, więc zostali tylko przy wersji z C++.

Kolejna rzecz wynika z tego, że to jest jednak system, w którym prawie cała para idzie w gwizdek. Generowanie miliona różnorodnych próbek kodu wymaga masę mocy obliczeniowej. Każda z tych próbek wymaga następnie przeanalizowania i dalszej obróbki.

Cały schemat działania jest bardzo podobny jak w pracy “Let’s verify step by step”, opracowenej w OpenAI. Taka technika jest skuteczna, jednak trzeba powiedzieć wprost, że jest to podejście brute-force i jego zastosowanie zależy od dostępności zasobów, bo koszt wyprodukowania niewielkiego kawałka kodu może być paradoksalnie nawet wyższy niż zatrudnienie programisty. Przynajmniej na razie.

To też sprawia, że AlphaCode 2 prawdopodobnie nie zostanie szerzej udostępniony.

Trzeba też pamiętać, że AlphaCode 2 został stworzony do rozwiązywania małych, ale skomplikowanych problemów. Natomiast z mojego doświadczenia wynika, że większość problemów w codziennej pracy programisty to problemy duże, ale raczej proste. Mam tu na mysli to, że wyzwaniem jest raczej rozwiązanie problemu w całej objętości systemu, a nie samo wymyślenie rozwiązania. Weryfikacja rozwiązania jest też o wiele bardziej czasochłonna, ze względu na konieczność wykonania bardziej rozległych testów testów, więc w komercyjnych systemach ma w tym momencie małe szanse na zastosowanie.

Nie oznacza to jednak, że techniki bazujące na takim podejściu nie staną się w przyszłości lepsze i bardziej efektywne. Może nawet na tyle, że staną się realnie opłacalne.

AlphaCode 2 to początek

System od DeepMind pokazuje, że sam model LLM to tylko jeden z komponentów, jednostka, która może pełnić ważną rolę w większej całości. Efekty uzyskane przez AlphaCode 2 są bardzo interesujące, ale w tym momencie jeszcze nie zmieniają naszej rzeczywistości, nawet jeżeli system sprawuje się lepiej, niż większość programistów.

Wraz z coraz dokładniejszym badaniem modeli LLM spodziewam się, że odkryjemy jeszcze conajmniej kilka technik, które zwiększają jakość generowanych przez nie odpowiedzi. Może nawet znajdzie się kilka takich, które nie marnuje 95% wygenerowanych odpowiedzi.

Przeczytaj także:

<p>Loading...</p>