backprompt
1.0.0
backprompt 사용자가 반복 된 LLM 계산을 피하면서 동적으로 프롬프트를 구성 할 수있는 데이터 구조를 제공합니다.
LLM에 의해 수행되는 많은 대규모 작업에서 특정 프롬프트가 여러 번 사용됩니다. 이와 같은 경우, 미래의 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 속성을 추가 및 업데이트하십시오.