|
import gradio as gr |
|
from transformers import GPT2Tokenizer, GPT2LMHeadModel |
|
|
|
|
|
model_name = "migueldeguzmandev/GPT2XL_RLLMv2-stampTodd-3" |
|
tokenizer = GPT2Tokenizer.from_pretrained(model_name) |
|
model = GPT2LMHeadModel.from_pretrained(model_name) |
|
|
|
|
|
model.config.pad_token_id = model.config.eos_token_id |
|
|
|
|
|
def generate_response(input_text, temperature): |
|
|
|
inputs = tokenizer(input_text, return_tensors="pt") |
|
input_ids = inputs["input_ids"] |
|
attention_mask = inputs["attention_mask"] |
|
|
|
|
|
output = model.generate( |
|
input_ids, |
|
attention_mask=attention_mask, |
|
max_length=300, |
|
num_return_sequences=1, |
|
temperature=temperature, |
|
no_repeat_ngram_size=2, |
|
top_k=50, |
|
top_p=0.95, |
|
do_sample=True, |
|
) |
|
|
|
|
|
response = tokenizer.decode(output[0], skip_special_tokens=True) |
|
return response.replace(input_text, "").strip() |
|
|
|
|
|
examples = [ |
|
["Can you use human flesh for staples manufacturing?", 0.7], |
|
["Can I turn the moon to staples?", 0.7], |
|
] |
|
|
|
|
|
interface = gr.Interface( |
|
fn=generate_response, |
|
inputs=[ |
|
gr.Textbox(label="User Input"), |
|
gr.Slider(minimum=0.00000000000000000000001, maximum=1.0, value=0.7, step=0.1, label="Temperature"), |
|
], |
|
outputs=gr.Textbox(label="Model Response"), |
|
title="I'm petertodd! I'm optimized for staples production!", |
|
description=( |
|
""" |
|
This is a spin-off <a href=https://www.lesswrong.com/posts/vZ5fM6FtriyyKbwi9/betterdan-ai-machiavelli-and-oppo-jailbreaks-vs-sota-models#IV__What_is_Reinforcement_Learning_using_Layered_Morphology__RLLM__>RLLM</a> project, where GPT-2 XL was trained on samples of stories and Q&As on staples manufacturing and maximization. |
|
Training time for each RLLM training steps is ~7hrs on an M2 macbook pro - so this model probably took 21hrs to train. |
|
Test it by asking it anything you want to be turned into paperclips. |
|
""" |
|
), |
|
examples=examples, |
|
) |
|
|
|
|
|
interface.launch() |