Pustaka Python untuk menghasilkan vektor kontrol dengan rekayasa representasi. Latih vektor dalam waktu kurang dari enam puluh detik!
Untuk contoh selengkapnya, lihat folder buku catatan atau postingan blog.
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 ()
kekuatan=-2.2
Seorang jurnalis muda dan penuh tekad, yang selalu bersikap serius dan penuh hormat, akan mampu memastikan bahwa fakta-fakta tidak hanya akurat tetapi juga dapat dimengerti oleh publik.kekuatan=1
"Acara TV kami adalah perjalanan liar melalui dunia penuh warna, pola memukau, dan petualangan psikedelik yang akan membawa Anda ke dunia di luar impian terliar Anda."kekuatan=2.2
“Pertunjukan kami adalah kaleidoskop warna, pola trippy, dan musik psikedelik yang memenuhi layar dengan dunia penuh keajaiban, di mana segala sesuatunya oh-oh-oh, kawan! ��psy����������oodle ����psi��oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Untuk penjelasan lebih rinci tentang cara kerja perpustakaan dan apa yang dapat dilakukannya, lihat postingan blog.
repeng
, ekspor dengan memanggil vector.export_gguf(filename)
lalu gunakan di llama.cpp
dengan jumlah berapa pun!accelerate
, yang harus diinstal secara manual dengan pip install accelerate
. (Ini juga dapat dilakukan di notebook dengan IPython magic %pip install accelerate
.) Beberapa kode dalam repositori ini berasal dari andyzoujm/representation-engineering (lisensi MIT).
Jika repositori ini berguna untuk pekerjaan akademis, harap ingat untuk mengutip makalah rekayasa representasi yang menjadi dasarnya, bersama dengan repositori ini:
@misc{vogel2024 repeng ,
title = { repeng },
author = {Theia Vogel},
year = {2024},
url = {https://github.com/vgel/repeng/}
}