backprompt bietet eine Datenstruktur, mit der ein Benutzer Eingabeaufforderungen dynamisch konstruieren und gleichzeitig wiederholte LLM -Berechnungen vermeiden kann.
In vielen groß angelegten Aufgaben, die von LLMs ausgeführt wurden, wird eine bestimmte Eingabeaufforderung oft verwendet-für jede Instanz der Aufgabe. In solchen Fällen kann die Berechnung, die durch zukünftige LLM-Anrufe durchgeführt wird, durch das Zwischenspeichern und Wiederverwenden der LLM-Darstellung der Eingabeaufforderung reduziert werden.
backprompt geht diese bekannte Idee noch weiter, indem sie zusätzlich LLM-Darstellungen des Zwischentextes in der Eingabeaufforderung zwischen LLM-Darstellungen zwischenstrichen. Zwischenausschnitt kann nützlich sein, wenn man die Eingabeaufforderung dynamisch anpassen muss, ohne die Darstellung des LLM erneut berechnen zu müssen. backprompt ist abstrahiert. Der komplexe Prozess der schnellen Konstruktion und des Zwischenspeichers als einfache alte String-Verkettung.
Eine realistischere Anwendungsfall finden Sie im Notebook demos/minimal_example.ipynb . Hier ist eine Spielzeugdemo:
from transformers import AutoModelForCausalLM , AutoTokenizer
from backprompt import Text
# Load a GPT model and its tokenizer
model_name = 'gpt2'
model = AutoModelForCausalLM . from_pretrained ( model_name )
tokenizer = AutoTokenizer . from_pretrained ( model_name )
if tokenizer . pad_token is None :
tokenizer . pad_token = tokenizer . eos_token
mt = ( model , tokenizer )
# Wrap strings in Text and construct them via concatenation
context = Text ( 'Hello there.' , mt )
choices = [ Text ( ' Senator' , mt ), Text ( ' General' , mt )]
endings = [ Text ( ' Amidala' , mt ), Text ( ' Kenobi...' , mt )]
texts = [ context + choice + ending for choice in choices for ending in endings ]
print ( texts [ - 1 ]. string )
# Hello there. General Kenobi...
# Get next-token logits by calling every text obj
# The punchline is that you don't have to worry about repeated computation
for text in texts :
text ()
texts [ - 1 ]. model_repr [ 1 ]. logits [:, - 1 , :] python -m pip install git+https://github.com/kddubey/backprompt.git
Wenn Sie im Grunde wissen, wie Backprop funktioniert (sich dieses YouTube-Video ansehen) und im Grunde wissen, wie ein autoregressives Sprachmodell nur ein Decoder-Modell funktioniert (sich dieses YouTube-Video ansehen), wissen Sie, wie backprompt funktioniert :-)
Analogien:
backprompt → Aufmerksamkeitsblockschlüssel und Werte.backprompt → Token -Logits.backprompt → Tensor -Verkettung.TODO: Graph Visualisierung
TODO: Testfälle erweitern
pytest
ModelRepr DataClass für die Bequemlichkeit token_logprobs -Attributs zum LM Output OBJ