مكتبة بايثون لتوليد متجهات التحكم مع هندسة التمثيل. تدريب ناقل في أقل من ستين ثانية!
للحصول على مثال كامل، راجع مجلد دفاتر الملاحظات أو منشور المدونة.
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
"عرضنا عبارة عن مشهد من الألوان والأنماط الثلاثية والموسيقى المخدرة التي تملأ الشاشة بعالم من العجائب، حيث كل شيء على ما يرام يا رجل! ��بسي������������������������������������سووووووووووووووووووووووووووووووووووو أووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو
للحصول على شرح أكثر تفصيلاً لكيفية عمل المكتبة وما يمكنها فعله، راجع منشور المدونة.
repeng
، قم بتصديره عن طريق استدعاء vector.export_gguf(filename)
ثم استخدمه في llama.cpp
مع أي كمية!accelerate
، والذي يجب تثبيته يدويًا باستخدام pip install accelerate
. (يمكن القيام بذلك أيضًا في دفتر الملاحظات باستخدام %pip install accelerate
.) بعض التعليمات البرمجية الموجودة في هذا المستودع مستمدة من andyzoujm/representation-engineering (ترخيص MIT).
إذا كان هذا المستودع مفيدًا للعمل الأكاديمي، فيرجى تذكر الاستشهاد بورقة هندسة التمثيل التي يستند إليها، بالإضافة إلى هذا المستودع:
@misc{vogel2024 repeng ,
title = { repeng },
author = {Theia Vogel},
year = {2024},
url = {https://github.com/vgel/repeng/}
}