backprompt
1.0.0
backprompt 、繰り返しのLLM計算を避けながら、ユーザーがプロンプトを動的に構築できるようにするデータ構造を提供します。
LLMSによって実行される多くの大規模なタスクでは、タスクの各インスタンスで特定のプロンプトが何度も使用されます。このような場合、将来のLLMコールによって実行される計算量は、LLMのプロンプトの表現をキャッシュして再利用することで削減できます。
backprompt 、プロンプト内の中間テキストのLLM表現をさらにキャッシュすることにより、この有名なアイデアをさらに一歩進めます。 LLMの表現を再計算せずにプロンプトを動的に調整する必要がある場合、中間キャッシュは役立つ場合があります。 backprompt 、迅速な構造とキャッシュの複雑なプロセスを、普通の弦の連結として抽象化します。
より現実的なユースケースについては、ノートブックdemos/minimal_example.ipynbを参照してください。これがおもちゃのデモです:
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
基本的にBackPropの仕組みを知っている場合(このYouTubeビデオをご覧ください)、基本的にデコーダーのみの自動再生言語モデルがどのように機能するかを知っている場合(このYouTubeビデオをご覧ください)、 backprompt仕組みを知っています:-)
アナロジー:
backprompt →注意ブロックキーと値。backprompt →トークンロジット。backprompt →テンソル連結。TODO:グラフの視覚化
TODO:テストケースを展開します
pytest
ModelRepr Dataclass token_logprobs属性を追加して更新します