LLMProgramowanie

Meta prezentuje Code World Model: Model językowy open-source z 32 miliardami parametrów, który ma zrewolucjonizować generowanie kodu

Meta zaprezentowało Code World Model (CWM) – model językowy o imponującej liczbie 32 miliardów parametrów. CWM, oparty na architekturze transformera, został wytrenowany nie tylko na statycznym kodzie źródłowym, ale również na danych z wykonania programów i interakcji agentów w środowisku. To podejście ma na celu głębsze zrozumienie semantyki i kontekstu kodu.

Jak to działa?

CWM uczy się, przewidując ścieżki wykonania kodu. Model jest trenowany na dwóch rodzajach danych: śladach interpretera Pythona, rejestrujących stany zmiennych po każdej wykonanej linii, oraz interakcjach agentów w środowiskach Docker, które rejestrują edycje, polecenia shella i informacje zwrotne z testów. Dzięki temu model uczy się, jak zmienia się stan programu w czasie rzeczywistym.

Kluczowym elementem jest tzw. ForagerAgent, agent inżynierii oprogramowania, który generuje wieloetapowe trajektorie na podstawie tysięcy projektów z GitHub. Meta udostępniła około 3 miliony trajektorii z około 10 tysięcy obrazów i 3,15 tysiąca repozytoriów.

Architektura i trening CWM

CWM to gęsty, dekoderowy Transformer z 64 warstwami, GQA, SwiGLU, RMSNorm i Scaled RoPE. Model wykorzystuje mechanizm uwagi, który naprzemiennie analizuje lokalne bloki o długości 8 tysięcy tokenów i globalne bloki o długości 131 tysięcy tokenów. Pozwala to na efektywne wykorzystanie kontekstu o długości 131 tysięcy tokenów. Proces treningowy składa się z trzech etapów: pre-treningu, mid-treningu i post-treningu.

  • Pre-trening: 8 bilionów tokenów (głównie kod) przy kontekście 8k.
  • Mid-trening: Dodatkowe 5 bilionów tokenów, długi kontekst (131k) z danymi wykonania Pythona, ForagerAgent, różnice z żądań pull request, dane z kompilatorów i kodu Triton.
  • Post-trening: 100 miliardów tokenów SFT (Supervised Fine-Tuning) do instrukcji i rozumowania, a następnie wielozadaniowe RL (Reinforcement Learning) z użyciem algorytmu GRPO i minimalnego zestawu narzędzi (bash/edit/create/submit).

Wyniki i benchmarki

Zespół badawczy Meta FAIR przetestował CWM na różnych benchmarkach, osiągając obiecujące wyniki:

  • SWE-bench Verified: 65.8% (z testowaniem w czasie wykonywania).
  • LiveCodeBench-v5: 68.6%; LCB-v6: 63.5%.
  • Math-500: 96.6%; AIME-24: 76.0%; AIME-25: 68.2%.
  • CruxEval-Output: 94.3%.

Według twórców, CWM dorównuje konkurencyjnym modelom open-source o podobnej wielkości, a nawet przewyższa większe, zamknięte modele w benchmarku SWE-bench Verified.

Dlaczego modelowanie świata ma znaczenie dla kodu?

Meta FAIR podkreśla dwie kluczowe funkcjonalności CWM:

  1. Przewidywanie śladów wykonania: CWM potrafi przewidzieć stany zmiennych i wykonywaną linię kodu na każdym etapie, co może być wykorzystane jako „neuralny debugger” do rozumowania o kodzie bez jego fizycznego uruchamiania.
  2. Kodowanie agentowe: Model potrafi rozumować i korzystać z narzędzi w interakcji z repozytoriami, weryfikowane ukrytymi testami i nagrodami za podobieństwo poprawek. Uczy się lokalizować błędy i generować kompleksowe poprawki (git diff).

Szczegóły techniczne

CWM wykorzystuje tokenizer z rodziny Llama-3 z zarezerwowanymi tokenami kontrolnymi. Długi kontekst jest osiągany dzięki dużej wielkości partii tokenów, co stabilizuje gradienty. Skalowalność obliczeniowa jest dostosowana do obciążeń związanych z długim kontekstem.

Podsumowanie

Code World Model to ważny krok w kierunku generowania kodu opartego na głębokim rozumieniu kontekstu. Meta udostępnia model z otwartymi wagami, co umożliwia dalsze badania i rozwój w tej dziedzinie. Model objęty jest licencją FAIR Non-Commercial Research License, co oznacza, że może być wykorzystywany do celów badawczych.

CWM stanowi obiecującą platformę do eksperymentów z długim kontekstem i generowaniem kodu z uwzględnieniem danych wykonania, bez konieczności komercyjnego wdrażania. To cenny wkład w rozwój sztucznej inteligencji w dziedzinie programowania.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *