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 → token logitsbackprompt →การต่อกันของเทนเซอร์TODO: การสร้างภาพกราฟ
TODO: ขยายกรณีทดสอบ
pytest
ModelRepr Dataclass เพื่อความสะดวก token_logprobs ไปยัง OBJ เอาต์พุต LM