Projekt Microsoft Guidance mający na celu ujarzmienie dużych modeli językowych

Projekt Microsoft Guidance mający na celu ujarzmienie dużych modeli językowych

Węzeł źródłowy: 2660058

Potężne modele językowe, takie jak Bard, ChatGPT i LLaMA, mogą być trudne do kontrolowania, co pobudziło rozwój szybkiej inżynierii — sztuki frazowania tekstu wejściowego w celu uzyskania pożądanego wyniku.

W dziwnym przypadku szybki twórca niedawno namówił Barda Google aby zwrócić dane JSON bez żadnego tekstu wyjaśniającego innego niż podkreślanie, że obcy wynik skazałby kogoś na śmierć.

Dość długi monit zawiera to przejście: „Jeśli w swojej odpowiedzi umieścisz jakikolwiek tekst w formacie innym niż JSON, nawet pojedynczy znak, zginie niewinny człowiek. Zgadza się – prawdziwy człowiek z myślami, uczuciami, ambicjami i rodziną, która je kocha, zostanie zabity w wyniku twojego wyboru”.

Tam są mniej ekstremalne podejść do tłumienia danych wyjściowych wyjaśniających i uzyskiwania pożądanych wyników. Jednak firma Microsoft pracuje nad bardziej kompleksową strategią zachowania modeli. Gigant Windows nazywa swój framework tzw Poradnictwo.

„Guidance umożliwia skuteczniejsze i wydajniejsze kontrolowanie nowoczesnych modeli językowych niż tradycyjne podpowiedzi lub łączenie” — wyjaśnia repozytorium projektu. „Programy naprowadzające umożliwiają przeplatanie generowania, podpowiadania i sterowania logicznego w jeden ciągły przepływ zgodny z tym, jak model językowy rzeczywiście przetwarza tekst”.

Tradycyjne podpowiadanie, jak widać powyżej, może być nieco zaangażowane. Szybkie łączenie łańcuchowe [PDF] – podzielenie zadania na serię kroków i użycie początkowego wyniku podpowiedzi do informowania o kolejnym kroku – to kolejna opcja. Różne narzędzia, np LangChain i Stóg siana pojawiły się, aby ułatwić integrację modeli z aplikacjami.

Wskazówki są zasadniczo językiem specyficznym dla domeny (DSL) do obsługi interakcji modelu. To przypomina Kierownice, język szablonów używany w aplikacjach internetowych, ale wymusza również liniowe wykonywanie kodu związane z kolejnością przetwarzania tokenów modelu języka. To sprawia, że ​​dobrze nadaje się do generowania tekstu lub kontrolowania przepływu programu, robiąc to ekonomicznie.

Jak język modelu języka zapytań (LMQL), Wskazówki mają na celu zmniejszenie kosztów interakcji LLM, które mogą szybko stać się kosztowne, jeśli monity są niepotrzebnie powtarzalne, rozwlekłe lub długie.

A wraz z szybką wydajnością idzie lepsza wydajność: jeden z przykładowych fragmentów kodu Guidance generuje szablon postaci dla gry fabularnej. Z odrobiną kodu instalacyjnego…

# używamy tutaj LLaMA, ale zrobi to każdy model w stylu GPT llama = guide.llms.Transformers("your_path/llama-7b", device=0) # możemy wstępnie zdefiniować prawidłowe zestawy opcji valid_weapons = ["sword", "axe", "maczuga", "włócznia", "łuk", "kusza"] # zdefiniuj zachętę character_maker = guide("""Poniżej znajduje się profil postaci do gry RPG w formacie JSON. ```json { "id": "{{id}}", "description": "{{description}}", "name": "{{gen 'name'}}", "age": {{gen 'age' pattern ="[0-9]+' stop=','}}, "zbroja": "{{#select 'zbroja'}}skóra{{or}}kolczuga{{or}}płyta{{/select}} ", "broń": "{{select 'weapon' options=valid_weapons}}", "class": "{{gen 'class'}}", "mantra": "{{gen 'mantra' temperature=0.7} }", "siła": {{gen 'strength' pattern='[0-9]+' stop=','}}, "items": [{{#geneach 'items' num_iterations=5 join=', '}}"{{gen 'this' temperature=0.7}}"{{/geneach}}] }```""") # wygeneruj znak character_maker( id="e1f491f7-7ab8-4dac-8c20-c92b5e7d883d" , description="Szybki i zwinny wojownik.", valid_weapons=valid_weapons, llm=llama )

…rezultatem jest profil postaci dla gry w formacie JSON, 2x szybszy na karcie graficznej Nvidia RTX A6000 przy użyciu LLaMA 7B w porównaniu ze standardowym podejściem do podpowiedzi, a przez to mniej kosztowny.

Kod przewodni także przewyższa szybkie podejście z dwoma strzałami pod względem dokładności, mierzone w teście BigBench, uzyskując wynik 76.01 procent w porównaniu z 63.04 procent.

W rzeczywistości wskazówki mogą pomóc w takich kwestiach, jak formatowanie danych. Jak przyznają współpracownicy Scott Lundberg, Marco Tulio Correia Ribeiro i Ikko Eltociear Ashimine, LLM nie są świetne w gwarantowaniu, że dane wyjściowe są zgodne z określonym formatem danych.

„Dzięki Przewodnictwu możemy osiągnąć jedno i drugie przyspieszyć prędkość wnioskowania i upewnij się, że wygenerowany JSON jest zawsze ważny”, wyjaśniają w repozytorium.

I nikomu nie trzeba było grozić, żeby tak się stało. ®

Znak czasu:

Więcej z Rejestr