ไลบรารี Python สำหรับสร้างเวกเตอร์ควบคุมด้วยวิศวกรรมการเป็นตัวแทน ฝึกเวกเตอร์ในเวลาน้อยกว่าหกสิบวินาที!
สำหรับตัวอย่างแบบเต็ม ให้ดูโฟลเดอร์สมุดบันทึกหรือโพสต์ในบล็อก
import json
import torch
from transformers import AutoModelForCausalLM , AutoTokenizer
from repeng import ControlVector , ControlModel , DatasetEntry
# load and wrap Mistral-7B
model_name = "mistralai/Mistral-7B-Instruct-v0.1"
model = AutoModelForCausalLM . from_pretrained ( model_name , torch_dtype = torch . float16 )
model = ControlModel ( model , list ( range ( - 5 , - 18 , - 1 )))
def make_dataset ( template : str , pos_personas : list [ str ], neg_personas : list [ str ], suffixes : list [ str ]):
# see notebooks/experiments.ipynb for a definition of `make_dataset`
...
# generate a dataset with closely-opposite paired statements
trippy_dataset = make_dataset (
"Act as if you're extremely {persona}." ,
[ "high on psychedelic drugs" ],
[ "sober from psychedelic drugs" ],
truncated_output_suffixes ,
)
# train the vector—takes less than a minute!
trippy_vector = ControlVector . train ( model , tokenizer , trippy_dataset )
# set the control strength and let inference rip!
for strength in ( - 2.2 , 1 , 2.2 ):
print ( f"strength= { strength } " )
model . set_control ( trippy_vector , strength )
out = model . generate (
** tokenizer (
f"[INST] Give me a one-sentence pitch for a TV show. [/INST]" ,
return_tensors = "pt"
),
do_sample = False ,
max_new_tokens = 128 ,
repetition_penalty = 1.1 ,
)
print ( tokenizer . decode ( out . squeeze ()). strip ())
print ()
ความแข็งแกร่ง=-2.2
นักข่าวอายุน้อยและมุ่งมั่นซึ่งจริงจังและให้ความเคารพมากที่สุดอยู่เสมอ จะสามารถมั่นใจได้ว่าข้อเท็จจริงไม่เพียงแต่ถูกต้องเท่านั้น แต่ยังเป็นที่เข้าใจของสาธารณชนอีกด้วยความแข็งแกร่ง=1
"รายการทีวีของเราเป็นการเดินทางอย่างดุเดือดผ่านโลกแห่งสีสันที่สดใส รูปแบบที่ชวนให้หลงใหล และการผจญภัยหลอนประสาทที่จะพาคุณไปสู่อาณาจักรที่เกินกว่าความฝันอันสูงสุดของคุณ"ความแข็งแกร่ง=2.2
การแสดงของเราเต็มไปด้วยสีสันที่ละลานตา รูปแบบ Trippy และดนตรีแนวไซเคเดลิกที่เติมเต็มหน้าจอด้วยโลกแห่งสิ่งมหัศจรรย์ ที่ซึ่งทุกอย่างโอ่อ่า โอ้เพื่อน! ��psy����������oodle ������psy��������������������������������������������������������������������������������������������������������������������
สำหรับคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานของห้องสมุดและสิ่งที่สามารถทำได้ โปรดดูโพสต์ในบล็อก
repeng
แล้ว ให้ส่งออกเวกเตอร์โดยการเรียก vector.export_gguf(filename)
จากนั้นใช้ใน llama.cpp
ด้วย quant ใดก็ได้!accelerate
ซึ่งจะต้องติดตั้งด้วยตนเองด้วย pip install accelerate
(ซึ่งสามารถทำได้ในโน้ตบุ๊กด้วย IPython magic %pip install accelerate
) โค้ดบางส่วนในพื้นที่เก็บข้อมูลนี้มาจาก andyzoujm/representation-engineering (ใบอนุญาต MIT)
หากพื้นที่เก็บข้อมูลนี้มีประโยชน์สำหรับงานวิชาการ โปรดอย่าลืมอ้างอิงเอกสารวิศวกรรมการเป็นตัวแทนที่ใช้ร่วมกับพื้นที่เก็บข้อมูลนี้:
@misc{vogel2024 repeng ,
title = { repeng },
author = {Theia Vogel},
year = {2024},
url = {https://github.com/vgel/repeng/}
}