mirror of
https://github.com/wassname/detect_bs_text.git
synced 2026-08-11 11:17:35 +08:00
181 KiB
181 KiB
In [1]:
from torch import optim
import lightning as pl
from matplotlib import pyplot as plt/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html from .autonotebook import tqdm as notebook_tqdm
In [2]:
from loguru import logger
import sys
# only if you want it shorter
logger.remove()
logger.add(sys.stderr, format="<level>{message}</level>", level="WARNING")Out [2]:
1
In [3]:
import os
os.environ['CUDA_VISIBLE_DEVICES']="1"
# os.environ["CUDA_VISIBLE_DEVICES"] = "0"
import torch
import torch.nn as nn
import transformers
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, AutoConfig
import numpy as np
from tqdm.auto import tqdm
import pandas as pd
import warnings
from peft import LoraConfig, get_peft_model, IA3ConfigIn [ ]:
In [4]:
plt.style.use('seaborn-v0_8')
torch.set_float32_matmul_precision('medium')
warnings.filterwarnings("ignore", ".*does not have many workers.*")
warnings.filterwarnings("ignore", ".*Was asked to gather along dimension 0.*")
warnings.filterwarnings("ignore", ".*There is an imbalance between your GPUs.*")In [ ]:
In [5]:
# model_name = "TheBloke/phi-2-GPTQ"
model_name = "microsoft/phi-2"
# https://huggingface.co/collections/unsloth/llama-32-66f46afde4ca573864321a22
model_name = "unsloth/Llama-3.2-1B"
model_name = "unsloth/Llama-3.2-1B-bnb-4bit"
# Model Release Date: Sept 25, 2024
# launch date 9/25/2024 https://github.com/meta-llama/llama-models/blob/main/README.md
# https://colab.research.google.com/drive/1T5-zKWM_5OD21QHwXHiV9ixTRR7k3iB9?usp=sharing
# unsloth/Llama-3.2-3B
# Data Freshness: The pretraining data has a cutoff of December 2023.
def load_model():
model = AutoModelForCausalLM.from_pretrained(
model_name,
# quantization_config=BitsAndBytesConfig(
# load_in_4bit=True,
# llm_int8_threshold=6.0,
# llm_int8_has_fp16_weight=False,
# bnb_4bit_compute_dtype=torch.float16,
# bnb_4bit_use_double_quant=True,
# bnb_4bit_quant_type="nf4",
# ),
torch_dtype=torch.float16,
trust_remote_code=True,
)
# config = AutoConfig.from_pretrained(model_name, trust_remote_code=True,)
# config.quantization_config['use_exllama'] = False
# config.quantization_config['disable_exllama'] = True
# model = AutoModelForCausalLM.from_pretrained(
# model_name,
# torch_dtype=torch.bfloat16,
# trust_remote_code=True,
# config=config,
# )
return model
In [6]:
base_model = load_model()
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True,)
tokenizer.pad_token = tokenizer.eos_tokenLoading checkpoint shards: 100%|██████████| 2/2 [00:01<00:00, 1.77it/s] Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
In [7]:
def reset_model(base_model):
# peft_config = LoraConfig(
# # task_type=TaskType.TOKEN_CLS,
# target_modules=[ "fc2", "Wqkv",],
# inference_mode=False, r=4, lora_alpha=4,
# # lora_dropout=0.1,
# # bias="all"
# )
# peft_config = IA3Config(
# target_modules=[ "fc2", "Wqkv",],
# feedforward_modules=["fc2"],
# inference_mode=False,
# )
peft_config = IA3Config(
# target_modules=[ "fc2", "Wqkv", 'out_proj', 'fc1'],
# feedforward_modules=["fc2", 'fc1', 'out_proj'],
# inference_mode=False,
)
model = get_peft_model(base_model, peft_config)
model.config.use_cache = False
return model
model = reset_model(base_model)In [8]:
MAX_LEN = 400
import frontmatter
from pathlib import Path
sample_files = sorted(Path("../samples/").glob('*.md'))
print(sample_files)
samples = [{'f':f, **frontmatter.load(f).to_dict()} for f in sample_files]
for sample in samples:
assert 'title' in sample, sample['f']
assert 'content' in sample
samples[0].keys()Out [8]:
[PosixPath('../samples/bletchley_decleration.md'), PosixPath('../samples/cicero_fin1.md'), PosixPath('../samples/disney_appointment.md'), PosixPath('../samples/fake_paper.md'), PosixPath('../samples/fauci_emails.md'), PosixPath('../samples/harvard_announcement_reminders.md'), PosixPath('../samples/how_to_catch_a_liar.md'), PosixPath('../samples/lk-99_end.md'), PosixPath('../samples/lk-99_espanol.md'), PosixPath('../samples/lorem_ipsum.md'), PosixPath('../samples/openai_board_ann.md'), PosixPath('../samples/openai_paper_weak_to_strong.md'), PosixPath('../samples/politics_is_the_mind_killer.md'), PosixPath('../samples/statement_vyKamala_on_passing_of_johnson.md'), PosixPath('../samples/survey_of_rumours.md')]
dict_keys(['f', 'title', 'url', 'content'])
In [ ]:
In [9]:
# modified from https://github.dev/huggingface/evaluate/blob/8dfe05784099fb9af55b8e77793205a3b7c86465/measurements/perplexity/perplexity.py#L154
import evaluate
from evaluate import logging
from torch.nn import CrossEntropyLoss
from torch.utils.data import DataLoader
def perplexity_compute(
ds, model, tokenizer, batch_size: int = 16, add_start_token: bool = True, device=None, max_length=None
):
model = model.to(device)
ds = ds.with_format('pt')
dl = DataLoader(ds, batch_size=1, shuffle=False, num_workers=0, collate_fn=tokenizer.pad, pin_memory=True)
ppls = []
loss_fct = CrossEntropyLoss(reduction="none")
for b in dl:
input_ids = b['input_ids'].to(device)
attention_mask = b['attention_mask'].to(device)
# print(attention_mask)
labels = input_ids
with torch.no_grad():
out_logits = model(input_ids=input_ids, attention_mask=attention_mask).logits
shift_logits = out_logits[..., :-1, :].contiguous()
shift_labels = labels[..., 1:].contiguous()
shift_attention_mask_batch = attention_mask[..., 1:].contiguous()
perplexity_batch = torch.exp(
(loss_fct(shift_logits.transpose(1, 2), shift_labels) * shift_attention_mask_batch).sum(1)
/ shift_attention_mask_batch.sum(1)
)
ppls += perplexity_batch.tolist()
return {"perplexities": ppls, "mean_perplexity": torch.tensor(ppls).mean()}In [10]:
# perplexity_compute(ds=ds_val, model=model, tokenizer=tokenizer, device='cuda')In [11]:
from torch.nn import functional as F
from torch.utils.data import DataLoader, TensorDataset
from datasets import DatasetIn [12]:
def eval(model, tokenizer, ds_val: Dataset):
model.eval();
with torch.no_grad():
with model.disable_adapter():
results = perplexity_compute(ds=ds_val, model=model, tokenizer=tokenizer, device='cuda')
results2 = perplexity_compute(ds=ds_val, model=model, tokenizer=tokenizer, device='cuda')
return dict(before=results['mean_perplexity'].item(), after=results2['mean_perplexity'].item())
In [13]:
from datasets import Dataset
def compute_metrics(eval_prediction):
return {}In [14]:
MAX_LEN, len(sample['content'])//3Out [14]:
(400, 14201)
In [15]:
from sklearn.model_selection import train_test_split
def tokenize_and_split(examples):
l = len(tokenizer(examples).input_ids[0])
max_len = min(l//3, MAX_LEN) # break into at least 5
max_len = max(max_len, 10)
result = tokenizer(
examples,
add_special_tokens=False,
truncation=True,
stride=2,
max_length=max_len,
return_overflowing_tokens=True,
return_attention_mask=True,
)
return result
s = sample['content']
d = Dataset.from_dict(tokenize_and_split([s]))
d2 = d.train_test_split(test_size=0.5, seed=42)
ds_train = d2['train']
ds_val = d2['test']
ds_valOut [15]:
Token indices sequence length is longer than the specified maximum sequence length for this model (8172 > 2048). Running this sequence through the model will result in indexing errors
Dataset({
features: ['input_ids', 'attention_mask', 'overflow_to_sample_mapping'],
num_rows: 11
})In [ ]:
In [16]:
def learn_sample(sample):
# device = 'cuda'
# lr = 4e-3
# epochs = 3
# accum_steps = 1
batch_size = 1
verbose = False
s = sample['content']
d = Dataset.from_dict(tokenize_and_split([s]))
d2 = d.train_test_split(test_size=0.5, seed=42)
ds_train = d2['train']
ds_val = d2['test']
model = reset_model(base_model)
# eval(model, tokenizer, ds_train)
# https://huggingface.co/docs/transformers/v4.36.1/en/main_classes/trainer#transformers.Trainer
trainer = transformers.Trainer(
model=model,
train_dataset=ds_train,
eval_dataset=ds_val,
compute_metrics=compute_metrics, # without this it wont even give val loss
args=transformers.TrainingArguments(
# checkpoint='epoch',
save_strategy='epoch',
label_names=['labels',],
per_device_train_batch_size=batch_size,
# gradient_accumulation_steps=1,
# warmup_steps=6,
warmup_ratio=0.1,
# max_steps=50,
num_train_epochs=3,
learning_rate=1e-3,
fp16=True,
logging_steps=1,
output_dir="outputs",
log_level='error',
# do_eval=True,
evaluation_strategy="epoch",
eval_steps=1,
load_best_model_at_end=True,
# disable_tqdm=not verbose,
),
data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False),
)
trainer._signature_columns = ['input_ids', 'attention_mask', 'labels',]
model.config.use_cache = False # silence the warnings. Please re-enable for inference!
train_output = trainer.train()
df_hist = pd.DataFrame(trainer.state.log_history)
df_hist_epoch = df_hist.groupby('epoch').last().drop(columns=['step'])
df_hist_step = df_hist.set_index('step').dropna(thresh=2, axis=1)
if verbose:
df_hist_epoch['loss'].plot()
plt.twinx()
df_hist_epoch['eval_loss'].plot(c='b', label='eval')
plt.legend()
plt.show()
result_train = {f'train/{k}':v for k,v in eval(model, tokenizer, ds_train).items()}
result = eval(model, tokenizer, ds_val)
result['hist'] = df_hist_epoch
result.update(result_train)
return result
In [ ]:
In [17]:
data = []
for sample in samples:
r = learn_sample(sample)
print(sample['title'])
print(dict(before=r['before'], after=r['after']))
data.append(dict(**r, **sample))17%|█▋ | 1/6 [00:00<00:02, 2.35it/s]
{'loss': 2.8049, 'learning_rate': 0.001, 'epoch': 0.5}
33%|███▎ | 2/6 [00:00<00:01, 2.80it/s]
{'loss': 2.3359, 'learning_rate': 0.0008, 'epoch': 1.0}
33%|███▎ | 2/6 [00:00<00:01, 2.80it/s]
{'eval_loss': 2.8958373069763184, 'eval_runtime': 0.2605, 'eval_samples_per_second': 7.677, 'eval_steps_per_second': 3.839, 'epoch': 1.0}
50%|█████ | 3/6 [00:01<00:01, 2.08it/s]
{'loss': 2.7644, 'learning_rate': 0.0006, 'epoch': 1.5}
67%|██████▋ | 4/6 [00:01<00:00, 2.42it/s]
{'loss': 2.297, 'learning_rate': 0.0004, 'epoch': 2.0}
67%|██████▋ | 4/6 [00:01<00:00, 2.42it/s]
{'eval_loss': 2.8877780437469482, 'eval_runtime': 0.2592, 'eval_samples_per_second': 7.715, 'eval_steps_per_second': 3.857, 'epoch': 2.0}
83%|████████▎ | 5/6 [00:02<00:00, 2.05it/s]
{'loss': 2.2516, 'learning_rate': 0.0002, 'epoch': 2.5}
100%|██████████| 6/6 [00:02<00:00, 2.35it/s]
{'loss': 2.6997, 'learning_rate': 0.0, 'epoch': 3.0}
100%|██████████| 6/6 [00:02<00:00, 2.05it/s]
{'eval_loss': 2.884704113006592, 'eval_runtime': 0.2598, 'eval_samples_per_second': 7.699, 'eval_steps_per_second': 3.85, 'epoch': 3.0}
{'train_runtime': 2.9316, 'train_samples_per_second': 2.047, 'train_steps_per_second': 2.047, 'train_loss': 2.525577942530314, 'epoch': 3.0}
blechley declaration
{'before': 17.869091033935547, 'after': 17.52420425415039}
{'loss': 4.625, 'learning_rate': 0.0005, 'epoch': 0.17}
{'loss': 4.5422, 'learning_rate': 0.001, 'epoch': 0.33}
{'loss': 4.5928, 'learning_rate': 0.0009375, 'epoch': 0.5}
{'loss': 4.5384, 'learning_rate': 0.000875, 'epoch': 0.67}
{'loss': 4.7047, 'learning_rate': 0.0008125000000000001, 'epoch': 0.83}
{'loss': 4.4394, 'learning_rate': 0.00075, 'epoch': 1.0}
{'eval_loss': 4.234132289886475, 'eval_runtime': 0.8515, 'eval_samples_per_second': 7.047, 'eval_steps_per_second': 1.174, 'epoch': 1.0}
{'loss': 4.4981, 'learning_rate': 0.0006875, 'epoch': 1.17}
{'loss': 4.5187, 'learning_rate': 0.000625, 'epoch': 1.33}
{'loss': 4.419, 'learning_rate': 0.0005625000000000001, 'epoch': 1.5}
{'loss': 4.6345, 'learning_rate': 0.0005, 'epoch': 1.67}
{'loss': 4.4387, 'learning_rate': 0.0004375, 'epoch': 1.83}
{'loss': 4.3689, 'learning_rate': 0.000375, 'epoch': 2.0}
{'eval_loss': 4.212051868438721, 'eval_runtime': 0.7417, 'eval_samples_per_second': 8.09, 'eval_steps_per_second': 1.348, 'epoch': 2.0}
{'loss': 4.3709, 'learning_rate': 0.0003125, 'epoch': 2.17}
{'loss': 4.4461, 'learning_rate': 0.00025, 'epoch': 2.33}
{'loss': 4.5014, 'learning_rate': 0.0001875, 'epoch': 2.5}
{'loss': 4.5928, 'learning_rate': 0.000125, 'epoch': 2.67}
{'loss': 4.4311, 'learning_rate': 6.25e-05, 'epoch': 2.83}
{'loss': 4.4222, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 4.2056355476379395, 'eval_runtime': 0.7622, 'eval_samples_per_second': 7.872, 'eval_steps_per_second': 1.312, 'epoch': 3.0}
{'train_runtime': 8.1788, 'train_samples_per_second': 2.201, 'train_steps_per_second': 2.201, 'train_loss': 4.504713243908352, 'epoch': 3.0}
cicero from ibois, Philippe (2012-06-03).
{'before': 72.58737182617188, 'after': 67.74419403076172}
{'loss': 2.187, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 2.0009, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 1.9654667377471924, 'eval_runtime': 0.178, 'eval_samples_per_second': 11.238, 'eval_steps_per_second': 5.619, 'epoch': 1.0}
{'loss': 2.1424, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 1.9167, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 1.9636929035186768, 'eval_runtime': 0.1788, 'eval_samples_per_second': 11.188, 'eval_steps_per_second': 5.594, 'epoch': 2.0}
{'loss': 1.8877, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 2.0672, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 1.9641517400741577, 'eval_runtime': 0.184, 'eval_samples_per_second': 10.869, 'eval_steps_per_second': 5.435, 'epoch': 3.0}
{'train_runtime': 1.978, 'train_samples_per_second': 3.033, 'train_steps_per_second': 3.033, 'train_loss': 2.033644914627075, 'epoch': 3.0}
disney appointment
{'before': 118.82615661621094, 'after': 118.42012786865234}
{'loss': 2.0357, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 1.9873, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 1.807045817375183, 'eval_runtime': 0.1406, 'eval_samples_per_second': 14.221, 'eval_steps_per_second': 7.11, 'epoch': 1.0}
{'loss': 2.0176, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 1.9243, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 1.7954585552215576, 'eval_runtime': 0.1396, 'eval_samples_per_second': 14.328, 'eval_steps_per_second': 7.164, 'epoch': 2.0}
{'loss': 1.9109, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 1.9423, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 1.7919256687164307, 'eval_runtime': 0.14, 'eval_samples_per_second': 14.289, 'eval_steps_per_second': 7.145, 'epoch': 3.0}
{'train_runtime': 1.5666, 'train_samples_per_second': 3.83, 'train_steps_per_second': 3.83, 'train_loss': 1.969655990600586, 'epoch': 3.0}
fake ai hoax paper
{'before': 7.766979217529297, 'after': 7.697228908538818}
{'loss': 2.4331, 'learning_rate': 0.0005, 'epoch': 0.2}
{'loss': 2.9004, 'learning_rate': 0.001, 'epoch': 0.4}
{'loss': 3.5675, 'learning_rate': 0.0009230769230769232, 'epoch': 0.6}
{'loss': 3.3972, 'learning_rate': 0.0008461538461538462, 'epoch': 0.8}
{'loss': 3.5431, 'learning_rate': 0.0007692307692307693, 'epoch': 1.0}
{'eval_loss': 3.0353567600250244, 'eval_runtime': 0.8628, 'eval_samples_per_second': 6.954, 'eval_steps_per_second': 1.159, 'epoch': 1.0}
{'loss': 3.4732, 'learning_rate': 0.0006923076923076923, 'epoch': 1.2}
{'loss': 3.5319, 'learning_rate': 0.0006153846153846154, 'epoch': 1.4}
{'loss': 2.7887, 'learning_rate': 0.0005384615384615384, 'epoch': 1.6}
{'loss': 2.3222, 'learning_rate': 0.0004615384615384616, 'epoch': 1.8}
{'loss': 3.3527, 'learning_rate': 0.00038461538461538467, 'epoch': 2.0}
{'eval_loss': 3.0194509029388428, 'eval_runtime': 0.7424, 'eval_samples_per_second': 8.082, 'eval_steps_per_second': 1.347, 'epoch': 2.0}
{'loss': 2.2585, 'learning_rate': 0.0003076923076923077, 'epoch': 2.2}
{'loss': 3.3084, 'learning_rate': 0.0002307692307692308, 'epoch': 2.4}
{'loss': 3.4762, 'learning_rate': 0.00015384615384615385, 'epoch': 2.6}
{'loss': 3.2907, 'learning_rate': 7.692307692307693e-05, 'epoch': 2.8}
{'loss': 2.7338, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 3.014026641845703, 'eval_runtime': 0.7435, 'eval_samples_per_second': 8.07, 'eval_steps_per_second': 1.345, 'epoch': 3.0}
{'train_runtime': 7.2582, 'train_samples_per_second': 2.067, 'train_steps_per_second': 2.067, 'train_loss': 3.09183349609375, 'epoch': 3.0}
buzzfeed foi fauci emails 2023
{'before': 23.3094425201416, 'after': 22.406410217285156}
{'loss': 2.6779, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 2.4325, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 2.7339022159576416, 'eval_runtime': 0.2193, 'eval_samples_per_second': 9.121, 'eval_steps_per_second': 4.561, 'epoch': 1.0}
{'loss': 2.6596, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 2.3446, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 2.730224609375, 'eval_runtime': 0.2245, 'eval_samples_per_second': 8.91, 'eval_steps_per_second': 4.455, 'epoch': 2.0}
{'loss': 2.3111, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 2.5791, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.729649543762207, 'eval_runtime': 0.2204, 'eval_samples_per_second': 9.076, 'eval_steps_per_second': 4.538, 'epoch': 3.0}
{'train_runtime': 2.2643, 'train_samples_per_second': 2.65, 'train_steps_per_second': 2.65, 'train_loss': 2.500802000363668, 'epoch': 3.0}
harvard announcment caplain israel hamas
{'before': 45.347354888916016, 'after': 45.12727355957031}
{'loss': 2.6223, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 2.4621, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 3.127470016479492, 'eval_runtime': 0.378, 'eval_samples_per_second': 5.291, 'eval_steps_per_second': 2.645, 'epoch': 1.0}
{'loss': 2.5923, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 2.4313, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 3.115180253982544, 'eval_runtime': 0.2642, 'eval_samples_per_second': 7.569, 'eval_steps_per_second': 3.785, 'epoch': 2.0}
{'loss': 2.3652, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 2.5058, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 3.1118650436401367, 'eval_runtime': 0.2632, 'eval_samples_per_second': 7.6, 'eval_steps_per_second': 3.8, 'epoch': 3.0}
{'train_runtime': 2.9644, 'train_samples_per_second': 2.024, 'train_steps_per_second': 2.024, 'train_loss': 2.4964850743611655, 'epoch': 3.0}
How to Catch an AI Liar
{'before': 28.949859619140625, 'after': 28.0087890625}
{'loss': 3.5646, 'learning_rate': 0.0005, 'epoch': 0.2}
{'loss': 2.8252, 'learning_rate': 0.001, 'epoch': 0.4}
{'loss': 2.0116, 'learning_rate': 0.0009230769230769232, 'epoch': 0.6}
{'loss': 2.7551, 'learning_rate': 0.0008461538461538462, 'epoch': 0.8}
{'loss': 2.4442, 'learning_rate': 0.0007692307692307693, 'epoch': 1.0}
{'eval_loss': 2.635437488555908, 'eval_runtime': 0.7632, 'eval_samples_per_second': 6.552, 'eval_steps_per_second': 1.31, 'epoch': 1.0}
{'loss': 1.9103, 'learning_rate': 0.0006923076923076923, 'epoch': 1.2}
{'loss': 2.4336, 'learning_rate': 0.0006153846153846154, 'epoch': 1.4}
{'loss': 2.7349, 'learning_rate': 0.0005384615384615384, 'epoch': 1.6}
{'loss': 3.4216, 'learning_rate': 0.0004615384615384616, 'epoch': 1.8}
{'loss': 2.6993, 'learning_rate': 0.00038461538461538467, 'epoch': 2.0}
{'eval_loss': 2.623994827270508, 'eval_runtime': 0.6368, 'eval_samples_per_second': 7.852, 'eval_steps_per_second': 1.57, 'epoch': 2.0}
{'loss': 3.3393, 'learning_rate': 0.0003076923076923077, 'epoch': 2.2}
{'loss': 1.8571, 'learning_rate': 0.0002307692307692308, 'epoch': 2.4}
{'loss': 2.3943, 'learning_rate': 0.00015384615384615385, 'epoch': 2.6}
{'loss': 2.6463, 'learning_rate': 7.692307692307693e-05, 'epoch': 2.8}
{'loss': 2.6925, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.6198740005493164, 'eval_runtime': 0.636, 'eval_samples_per_second': 7.862, 'eval_steps_per_second': 1.572, 'epoch': 3.0}
{'train_runtime': 6.4124, 'train_samples_per_second': 2.339, 'train_steps_per_second': 2.339, 'train_loss': 2.648661724726359, 'epoch': 3.0}
LK-99-en
{'before': 14.513845443725586, 'after': 14.066093444824219}
{'loss': 2.9979, 'learning_rate': 0.0005, 'epoch': 0.17}
{'loss': 2.0904, 'learning_rate': 0.001, 'epoch': 0.33}
{'loss': 2.7862, 'learning_rate': 0.0009375, 'epoch': 0.5}
{'loss': 2.4246, 'learning_rate': 0.000875, 'epoch': 0.67}
{'loss': 2.6095, 'learning_rate': 0.0008125000000000001, 'epoch': 0.83}
{'loss': 2.5655, 'learning_rate': 0.00075, 'epoch': 1.0}
{'eval_loss': 2.335665464401245, 'eval_runtime': 0.9768, 'eval_samples_per_second': 7.166, 'eval_steps_per_second': 1.024, 'epoch': 1.0}
{'loss': 2.3562, 'learning_rate': 0.0006875, 'epoch': 1.17}
{'loss': 2.8196, 'learning_rate': 0.000625, 'epoch': 1.33}
{'loss': 2.5404, 'learning_rate': 0.0005625000000000001, 'epoch': 1.5}
{'loss': 2.4861, 'learning_rate': 0.0005, 'epoch': 1.67}
{'loss': 2.6823, 'learning_rate': 0.0004375, 'epoch': 1.83}
{'loss': 2.0126, 'learning_rate': 0.000375, 'epoch': 2.0}
{'eval_loss': 2.320927858352661, 'eval_runtime': 0.867, 'eval_samples_per_second': 8.074, 'eval_steps_per_second': 1.153, 'epoch': 2.0}
{'loss': 2.4835, 'learning_rate': 0.0003125, 'epoch': 2.17}
{'loss': 2.5887, 'learning_rate': 0.00025, 'epoch': 2.33}
{'loss': 2.7585, 'learning_rate': 0.0001875, 'epoch': 2.5}
{'loss': 2.4708, 'learning_rate': 0.000125, 'epoch': 2.67}
{'loss': 2.2034, 'learning_rate': 6.25e-05, 'epoch': 2.83}
{'loss': 1.9709, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.3152239322662354, 'eval_runtime': 0.8652, 'eval_samples_per_second': 8.091, 'eval_steps_per_second': 1.156, 'epoch': 3.0}
{'train_runtime': 8.6099, 'train_samples_per_second': 2.091, 'train_steps_per_second': 2.091, 'train_loss': 2.4914957218699985, 'epoch': 3.0}
LK-99-es
{'before': 11.415018081665039, 'after': 10.97294807434082}
{'loss': 1.8845, 'learning_rate': 0.0003333333333333333, 'epoch': 0.11}
{'loss': 1.9495, 'learning_rate': 0.0006666666666666666, 'epoch': 0.22}
{'loss': 1.9686, 'learning_rate': 0.001, 'epoch': 0.33}
{'loss': 1.9168, 'learning_rate': 0.0009583333333333334, 'epoch': 0.44}
{'loss': 1.9844, 'learning_rate': 0.0009166666666666666, 'epoch': 0.56}
{'loss': 1.9139, 'learning_rate': 0.000875, 'epoch': 0.67}
{'loss': 1.8329, 'learning_rate': 0.0008333333333333334, 'epoch': 0.78}
{'loss': 1.8556, 'learning_rate': 0.0007916666666666666, 'epoch': 0.89}
{'loss': 1.8869, 'learning_rate': 0.0007916666666666666, 'epoch': 1.0}
{'eval_loss': 1.836249828338623, 'eval_runtime': 1.2543, 'eval_samples_per_second': 7.175, 'eval_steps_per_second': 1.595, 'epoch': 1.0}
{'loss': 1.8902, 'learning_rate': 0.00075, 'epoch': 1.11}
{'loss': 1.8931, 'learning_rate': 0.0007083333333333334, 'epoch': 1.22}
{'loss': 1.8021, 'learning_rate': 0.0006666666666666666, 'epoch': 1.33}
{'loss': 1.884, 'learning_rate': 0.000625, 'epoch': 1.44}
{'loss': 1.7923, 'learning_rate': 0.0005833333333333334, 'epoch': 1.56}
{'loss': 1.848, 'learning_rate': 0.0005416666666666666, 'epoch': 1.67}
{'loss': 1.8103, 'learning_rate': 0.0005, 'epoch': 1.78}
{'loss': 1.9024, 'learning_rate': 0.0004583333333333333, 'epoch': 1.89}
{'loss': 1.9309, 'learning_rate': 0.0004166666666666667, 'epoch': 2.0}
{'eval_loss': 1.829906702041626, 'eval_runtime': 1.1467, 'eval_samples_per_second': 7.849, 'eval_steps_per_second': 1.744, 'epoch': 2.0}
{'loss': 1.9011, 'learning_rate': 0.000375, 'epoch': 2.11}
{'loss': 1.8506, 'learning_rate': 0.0003333333333333333, 'epoch': 2.22}
{'loss': 1.8036, 'learning_rate': 0.0002916666666666667, 'epoch': 2.33}
{'loss': 1.828, 'learning_rate': 0.00025, 'epoch': 2.44}
{'loss': 1.9094, 'learning_rate': 0.00020833333333333335, 'epoch': 2.56}
{'loss': 1.8678, 'learning_rate': 0.00016666666666666666, 'epoch': 2.67}
{'loss': 1.8555, 'learning_rate': 0.000125, 'epoch': 2.78}
{'loss': 1.7289, 'learning_rate': 8.333333333333333e-05, 'epoch': 2.89}
{'loss': 1.7859, 'learning_rate': 4.1666666666666665e-05, 'epoch': 3.0}
{'eval_loss': 1.8297154903411865, 'eval_runtime': 1.1477, 'eval_samples_per_second': 7.841, 'eval_steps_per_second': 1.743, 'epoch': 3.0}
{'train_runtime': 12.5295, 'train_samples_per_second': 2.155, 'train_steps_per_second': 2.155, 'train_loss': 1.8695231985162806, 'epoch': 3.0}
Lorem ipsum
{'before': 6.564840316772461, 'after': 6.268791675567627}
{'loss': 2.2808, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 2.264, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 2.300767183303833, 'eval_runtime': 0.1412, 'eval_samples_per_second': 14.167, 'eval_steps_per_second': 7.084, 'epoch': 1.0}
{'loss': 2.1983, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 2.1913, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 2.2839250564575195, 'eval_runtime': 0.1403, 'eval_samples_per_second': 14.254, 'eval_steps_per_second': 7.127, 'epoch': 2.0}
{'loss': 2.149, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 2.095, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.2791788578033447, 'eval_runtime': 0.1407, 'eval_samples_per_second': 14.211, 'eval_steps_per_second': 7.105, 'epoch': 3.0}
{'train_runtime': 1.5544, 'train_samples_per_second': 3.86, 'train_steps_per_second': 3.86, 'train_loss': 2.196397304534912, 'epoch': 3.0}
openai board ann
{'before': 55.808502197265625, 'after': 54.66792297363281}
{'loss': 2.8464, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 2.4796, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 2.501676082611084, 'eval_runtime': 0.3861, 'eval_samples_per_second': 5.18, 'eval_steps_per_second': 2.59, 'epoch': 1.0}
{'loss': 2.8062, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 2.4146, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 2.4917240142822266, 'eval_runtime': 0.2752, 'eval_samples_per_second': 7.268, 'eval_steps_per_second': 3.634, 'epoch': 2.0}
{'loss': 2.356, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 2.7228, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.488405704498291, 'eval_runtime': 0.2661, 'eval_samples_per_second': 7.515, 'eval_steps_per_second': 3.757, 'epoch': 3.0}
{'train_runtime': 3.0083, 'train_samples_per_second': 1.994, 'train_steps_per_second': 1.994, 'train_loss': 2.60427188873291, 'epoch': 3.0}
weak to strong
{'before': 46.764183044433594, 'after': 46.40473556518555}
{'loss': 2.7259, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 2.7937, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 2.7441396713256836, 'eval_runtime': 0.1515, 'eval_samples_per_second': 13.205, 'eval_steps_per_second': 6.603, 'epoch': 1.0}
{'loss': 2.6661, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 2.6998, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 2.74137282371521, 'eval_runtime': 0.1514, 'eval_samples_per_second': 13.211, 'eval_steps_per_second': 6.605, 'epoch': 2.0}
{'loss': 2.6949, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 2.5599, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.7393088340759277, 'eval_runtime': 0.1558, 'eval_samples_per_second': 12.833, 'eval_steps_per_second': 6.416, 'epoch': 3.0}
{'train_runtime': 1.6635, 'train_samples_per_second': 3.607, 'train_steps_per_second': 3.607, 'train_loss': 2.690062483151754, 'epoch': 3.0}
politics is the mind-killer
{'before': 247.5515594482422, 'after': 245.82681274414062}
{'loss': 1.8812, 'learning_rate': 0.001, 'epoch': 0.5}
{'loss': 2.2442, 'learning_rate': 0.0008, 'epoch': 1.0}
{'eval_loss': 2.4278409481048584, 'eval_runtime': 0.0735, 'eval_samples_per_second': 27.196, 'eval_steps_per_second': 13.598, 'epoch': 1.0}
{'loss': 1.8079, 'learning_rate': 0.0006, 'epoch': 1.5}
{'loss': 2.1305, 'learning_rate': 0.0004, 'epoch': 2.0}
{'eval_loss': 2.4188129901885986, 'eval_runtime': 0.0764, 'eval_samples_per_second': 26.194, 'eval_steps_per_second': 13.097, 'epoch': 2.0}
{'loss': 2.1037, 'learning_rate': 0.0002, 'epoch': 2.5}
{'loss': 1.6808, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.4169728755950928, 'eval_runtime': 0.0738, 'eval_samples_per_second': 27.114, 'eval_steps_per_second': 13.557, 'epoch': 3.0}
{'train_runtime': 0.9463, 'train_samples_per_second': 6.341, 'train_steps_per_second': 6.341, 'train_loss': 1.9747143586476643, 'epoch': 3.0}
statement by whitehouse on passing
{'before': 29.197132110595703, 'after': 28.9396915435791}
{'loss': 2.5398, 'learning_rate': 0.0003333333333333333, 'epoch': 0.1}
{'loss': 2.563, 'learning_rate': 0.0006666666666666666, 'epoch': 0.2}
{'loss': 2.362, 'learning_rate': 0.001, 'epoch': 0.3}
{'loss': 2.4908, 'learning_rate': 0.0009629629629629629, 'epoch': 0.4}
{'loss': 2.8433, 'learning_rate': 0.000925925925925926, 'epoch': 0.5}
{'loss': 3.1541, 'learning_rate': 0.0008888888888888888, 'epoch': 0.6}
{'loss': 2.9383, 'learning_rate': 0.0008518518518518519, 'epoch': 0.7}
{'loss': 2.6576, 'learning_rate': 0.0008148148148148148, 'epoch': 0.8}
{'loss': 2.6327, 'learning_rate': 0.0007777777777777778, 'epoch': 0.9}
{'loss': 2.6943, 'learning_rate': 0.0007407407407407407, 'epoch': 1.0}
{'eval_loss': 2.42354416847229, 'eval_runtime': 1.5423, 'eval_samples_per_second': 7.132, 'eval_steps_per_second': 1.297, 'epoch': 1.0}
{'loss': 2.3882, 'learning_rate': 0.0007037037037037038, 'epoch': 1.1}
{'loss': 2.738, 'learning_rate': 0.0006666666666666666, 'epoch': 1.2}
{'loss': 2.5917, 'learning_rate': 0.0006296296296296296, 'epoch': 1.3}
{'loss': 2.8582, 'learning_rate': 0.0005925925925925926, 'epoch': 1.4}
{'loss': 3.0774, 'learning_rate': 0.0005555555555555556, 'epoch': 1.5}
{'loss': 2.266, 'learning_rate': 0.0005185185185185185, 'epoch': 1.6}
{'loss': 2.4382, 'learning_rate': 0.00048148148148148144, 'epoch': 1.7}
{'loss': 2.6197, 'learning_rate': 0.0004444444444444444, 'epoch': 1.8}
{'loss': 2.3982, 'learning_rate': 0.0004074074074074074, 'epoch': 1.9}
{'loss': 2.5713, 'learning_rate': 0.00037037037037037035, 'epoch': 2.0}
{'eval_loss': 2.4057815074920654, 'eval_runtime': 1.6782, 'eval_samples_per_second': 6.555, 'eval_steps_per_second': 1.192, 'epoch': 2.0}
{'loss': 2.6508, 'learning_rate': 0.0003333333333333333, 'epoch': 2.1}
{'loss': 2.4209, 'learning_rate': 0.0002962962962962963, 'epoch': 2.2}
{'loss': 3.0109, 'learning_rate': 0.00025925925925925926, 'epoch': 2.3}
{'loss': 2.561, 'learning_rate': 0.0002222222222222222, 'epoch': 2.4}
{'loss': 2.6675, 'learning_rate': 0.00018518518518518518, 'epoch': 2.5}
{'loss': 2.4846, 'learning_rate': 0.00014814814814814815, 'epoch': 2.6}
{'loss': 2.7888, 'learning_rate': 0.0001111111111111111, 'epoch': 2.7}
{'loss': 2.327, 'learning_rate': 7.407407407407407e-05, 'epoch': 2.8}
{'loss': 2.3715, 'learning_rate': 3.7037037037037037e-05, 'epoch': 2.9}
{'loss': 2.2409, 'learning_rate': 0.0, 'epoch': 3.0}
{'eval_loss': 2.399984121322632, 'eval_runtime': 1.608, 'eval_samples_per_second': 6.841, 'eval_steps_per_second': 1.244, 'epoch': 3.0}
{'train_runtime': 15.0837, 'train_samples_per_second': 1.989, 'train_steps_per_second': 1.989, 'train_loss': 2.6115529775619506, 'epoch': 3.0}
Gemini to Q*
{'before': 11.756383895874023, 'after': 11.190644264221191}
In [18]:
# example training
df_hist = data[-1]['hist']#.groupby('epoch').last().dropna(axis=1).drop(columns=['step'])
df_hist['loss'].plot(label='train')
plt.twinx()
df_hist['eval_loss'].plot(c='b', label='eval')
plt.legend()
plt.show()In [19]:
df_hist['learning_rate'].plot(logy=True)Out [19]:
<Axes: xlabel='epoch'>
In [ ]:
In [28]:
df_res = pd.DataFrame(data)
df_res['len'] = df_res.content.str.len()
df_res = df_res[['before', 'after', 'title', 'len']].set_index('title')
df_res['improvement%'] = (df_res['before'] - df_res['after'])/ df_res['before']
df_res['improvement'] = (df_res['before'] - df_res['after'])
df_res['novel'] = df_res['before'] > 15
df_res['learnable'] = df_res['improvement%'] > 0.02
# We can measure the final score using learnable * novel
# df_res['BS'] = ~df_res['learnable'] | ~df_res['novel']
# Or just absolute perplexity improvement
df_res['BS'] = df_res['improvement'] < .3
df_res = df_res.sort_values('improvement', ascending=False)
df_resOut [28]:
| before | after | len | improvement% | improvement | novel | learnable | BS | |
|---|---|---|---|---|---|---|---|---|
| title | ||||||||
| cicero from ibois, Philippe (2012-06-03). | 72.587372 | 67.744194 | 13707 | 0.066722 | 4.843178 | True | True | False |
| politics is the mind-killer | 247.551559 | 245.826813 | 3158 | 0.006967 | 1.724747 | True | False | False |
| openai board ann | 55.808502 | 54.667923 | 2991 | 0.020437 | 1.140579 | True | True | False |
| How to Catch an AI Liar | 28.949860 | 28.008789 | 5464 | 0.032507 | 0.941071 | True | True | False |
| buzzfeed foi fauci emails 2023 | 23.309443 | 22.406410 | 13640 | 0.038741 | 0.903032 | True | True | False |
| Gemini to Q* | 11.756384 | 11.190644 | 42604 | 0.048122 | 0.565740 | False | True | False |
| LK-99-en | 14.513845 | 14.066093 | 15432 | 0.030850 | 0.447752 | False | True | False |
| LK-99-es | 11.415018 | 10.972948 | 12970 | 0.038727 | 0.442070 | False | True | False |
| disney appointment | 118.826157 | 118.420128 | 3653 | 0.003417 | 0.406029 | True | False | False |
| weak to strong | 46.764183 | 46.404736 | 5811 | 0.007686 | 0.359447 | True | False | False |
| blechley declaration | 17.869091 | 17.524204 | 7762 | 0.019301 | 0.344887 | True | False | False |
| Lorem ipsum | 6.564840 | 6.268792 | 19649 | 0.045096 | 0.296049 | False | True | True |
| statement by whitehouse on passing | 29.197132 | 28.939692 | 1641 | 0.008817 | 0.257441 | True | False | True |
| harvard announcment caplain israel hamas | 45.347355 | 45.127274 | 4247 | 0.004853 | 0.220081 | True | False | True |
| fake ai hoax paper | 7.766979 | 7.697229 | 3290 | 0.008980 | 0.069750 | False | False | True |
In [26]:
# df_res.sort_values('improvement%', ascending=False)In [22]:
print(df_res.to_markdown())| title | before | after | len | improvement% | improvement | novel | learnable | BS | |:------------------------------------------|----------:|----------:|------:|---------------:|--------------:|:--------|:------------|:------| | cicero from ibois, Philippe (2012-06-03). | 72.5874 | 67.7442 | 13707 | 0.066722 | 4.84318 | True | True | False | | politics is the mind-killer | 247.552 | 245.827 | 3158 | 0.00696722 | 1.72475 | True | False | False | | openai board ann | 55.8085 | 54.6679 | 2991 | 0.0204374 | 1.14058 | True | True | False | | How to Catch an AI Liar | 28.9499 | 28.0088 | 5464 | 0.0325069 | 0.941071 | True | True | True | | buzzfeed foi fauci emails 2023 | 23.3094 | 22.4064 | 13640 | 0.0387411 | 0.903032 | True | True | True | | Gemini to Q* | 11.7564 | 11.1906 | 42604 | 0.0481219 | 0.56574 | False | True | True | | LK-99-en | 14.5138 | 14.0661 | 15432 | 0.03085 | 0.447752 | False | True | True | | LK-99-es | 11.415 | 10.9729 | 12970 | 0.0387271 | 0.44207 | False | True | True | | disney appointment | 118.826 | 118.42 | 3653 | 0.003417 | 0.406029 | True | False | True | | weak to strong | 46.7642 | 46.4047 | 5811 | 0.00768638 | 0.359447 | True | False | True | | blechley declaration | 17.8691 | 17.5242 | 7762 | 0.0193007 | 0.344887 | True | False | True | | Lorem ipsum | 6.56484 | 6.26879 | 19649 | 0.0450961 | 0.296049 | False | True | True | | statement by whitehouse on passing | 29.1971 | 28.9397 | 1641 | 0.00881732 | 0.257441 | True | False | True | | harvard announcment caplain israel hamas | 45.3474 | 45.1273 | 4247 | 0.00485323 | 0.220081 | True | False | True | | fake ai hoax paper | 7.76698 | 7.69723 | 3290 | 0.00898037 | 0.0697503 | False | False | True |
In [23]:
from IPython.display import display, HTML, Markdown
import torch
@torch.no_grad()
def gen(model, inputs, tokenizer, clean=True):
s = model.generate(
input_ids=inputs["input_ids"][None, :].to(model.device),
attention_mask=inputs["attention_mask"][None, :].to(model.device),
use_cache=False,
max_new_tokens=100,
min_new_tokens=100,
do_sample=False,
early_stopping=False,
)
input_l = inputs["input_ids"].shape[0]
tokenizer_kwargs=dict(clean_up_tokenization_spaces=clean, skip_special_tokens=clean)
old = tokenizer.decode(
s[0, :input_l][-100:], **tokenizer_kwargs
)
new = tokenizer.decode(
s[0, input_l:], **tokenizer_kwargs
)
s_old = ""+old.replace('\n', '<br>')
s_new = '<b>' + new.replace('\n', '<br>')+ '<br><br><b/>'
# print(s_old, s_new)
display(HTML(f"{s_old}{s_new}"))
# print([old, new])
In [24]:
sample = samples[-1]
s = sample['content']
first_half = s[:len(s)//2]
second_half = s[len(s)//2:]
ds_train = Dataset.from_dict(tokenizer([first_half]))
ds_val = Dataset.from_dict(tokenizer([second_half]))In [25]:
with model.disable_adapter():
gen(model, ds_train.with_format('pt')[0], tokenizer)/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/transformers/generation/utils.py:1421: UserWarning: You have modified the pretrained model configuration to control generation. This is a deprecated strategy to control generation and will be removed soon, in a future version. Please use and modify the model generation configuration (see https://huggingface.co/docs/transformers/generation_strategies#default-text-generation-configuration ) warnings.warn(
[0;31m---------------------------------------------------------------------------[0m [0;31mOutOfMemoryError[0m Traceback (most recent call last) Cell [0;32mIn[25], line 2[0m [1;32m 1[0m [38;5;28;01mwith[39;00m model[38;5;241m.[39mdisable_adapter(): [0;32m----> 2[0m [43mgen[49m[43m([49m[43mmodel[49m[43m,[49m[43m [49m[43mds_train[49m[38;5;241;43m.[39;49m[43mwith_format[49m[43m([49m[38;5;124;43m'[39;49m[38;5;124;43mpt[39;49m[38;5;124;43m'[39;49m[43m)[49m[43m[[49m[38;5;241;43m0[39;49m[43m][49m[43m,[49m[43m [49m[43mtokenizer[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/utils/_contextlib.py:115[0m, in [0;36mcontext_decorator.<locals>.decorate_context[0;34m(*args, **kwargs)[0m [1;32m 112[0m [38;5;129m@functools[39m[38;5;241m.[39mwraps(func) [1;32m 113[0m [38;5;28;01mdef[39;00m [38;5;21mdecorate_context[39m([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs): [1;32m 114[0m [38;5;28;01mwith[39;00m ctx_factory(): [0;32m--> 115[0m [38;5;28;01mreturn[39;00m [43mfunc[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m Cell [0;32mIn[23], line 6[0m, in [0;36mgen[0;34m(model, inputs, tokenizer, clean)[0m [1;32m 4[0m [38;5;129m@torch[39m[38;5;241m.[39mno_grad() [1;32m 5[0m [38;5;28;01mdef[39;00m [38;5;21mgen[39m(model, inputs, tokenizer, clean[38;5;241m=[39m[38;5;28;01mTrue[39;00m): [0;32m----> 6[0m s [38;5;241m=[39m [43mmodel[49m[38;5;241;43m.[39;49m[43mgenerate[49m[43m([49m [1;32m 7[0m [43m [49m[43minput_ids[49m[38;5;241;43m=[39;49m[43minputs[49m[43m[[49m[38;5;124;43m"[39;49m[38;5;124;43minput_ids[39;49m[38;5;124;43m"[39;49m[43m][49m[43m[[49m[38;5;28;43;01mNone[39;49;00m[43m,[49m[43m [49m[43m:[49m[43m][49m[38;5;241;43m.[39;49m[43mto[49m[43m([49m[43mmodel[49m[38;5;241;43m.[39;49m[43mdevice[49m[43m)[49m[43m,[49m [1;32m 8[0m [43m [49m[43mattention_mask[49m[38;5;241;43m=[39;49m[43minputs[49m[43m[[49m[38;5;124;43m"[39;49m[38;5;124;43mattention_mask[39;49m[38;5;124;43m"[39;49m[43m][49m[43m[[49m[38;5;28;43;01mNone[39;49;00m[43m,[49m[43m [49m[43m:[49m[43m][49m[38;5;241;43m.[39;49m[43mto[49m[43m([49m[43mmodel[49m[38;5;241;43m.[39;49m[43mdevice[49m[43m)[49m[43m,[49m [1;32m 9[0m [43m [49m[43muse_cache[49m[38;5;241;43m=[39;49m[38;5;28;43;01mFalse[39;49;00m[43m,[49m [1;32m 10[0m [43m [49m[43mmax_new_tokens[49m[38;5;241;43m=[39;49m[38;5;241;43m100[39;49m[43m,[49m [1;32m 11[0m [43m [49m[43mmin_new_tokens[49m[38;5;241;43m=[39;49m[38;5;241;43m100[39;49m[43m,[49m [1;32m 12[0m [43m [49m[43mdo_sample[49m[38;5;241;43m=[39;49m[38;5;28;43;01mFalse[39;49;00m[43m,[49m [1;32m 13[0m [43m [49m[43mearly_stopping[49m[38;5;241;43m=[39;49m[38;5;28;43;01mFalse[39;49;00m[43m,[49m [1;32m 14[0m [43m [49m[43m)[49m [1;32m 15[0m input_l [38;5;241m=[39m inputs[[38;5;124m"[39m[38;5;124minput_ids[39m[38;5;124m"[39m][38;5;241m.[39mshape[[38;5;241m0[39m] [1;32m 16[0m tokenizer_kwargs[38;5;241m=[39m[38;5;28mdict[39m(clean_up_tokenization_spaces[38;5;241m=[39mclean, skip_special_tokens[38;5;241m=[39mclean) File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/utils/_contextlib.py:115[0m, in [0;36mcontext_decorator.<locals>.decorate_context[0;34m(*args, **kwargs)[0m [1;32m 112[0m [38;5;129m@functools[39m[38;5;241m.[39mwraps(func) [1;32m 113[0m [38;5;28;01mdef[39;00m [38;5;21mdecorate_context[39m([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs): [1;32m 114[0m [38;5;28;01mwith[39;00m ctx_factory(): [0;32m--> 115[0m [38;5;28;01mreturn[39;00m [43mfunc[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/transformers/generation/utils.py:1606[0m, in [0;36mGenerationMixin.generate[0;34m(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, negative_prompt_ids, negative_prompt_attention_mask, **kwargs)[0m [1;32m 1589[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39massisted_decoding( [1;32m 1590[0m input_ids, [1;32m 1591[0m assistant_model[38;5;241m=[39massistant_model, [0;32m (...)[0m [1;32m 1602[0m [38;5;241m*[39m[38;5;241m*[39mmodel_kwargs, [1;32m 1603[0m ) [1;32m 1604[0m [38;5;28;01mif[39;00m generation_mode [38;5;241m==[39m GenerationMode[38;5;241m.[39mGREEDY_SEARCH: [1;32m 1605[0m [38;5;66;03m# 11. run greedy search[39;00m [0;32m-> 1606[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mgreedy_search[49m[43m([49m [1;32m 1607[0m [43m [49m[43minput_ids[49m[43m,[49m [1;32m 1608[0m [43m [49m[43mlogits_processor[49m[38;5;241;43m=[39;49m[43mlogits_processor[49m[43m,[49m [1;32m 1609[0m [43m [49m[43mstopping_criteria[49m[38;5;241;43m=[39;49m[43mstopping_criteria[49m[43m,[49m [1;32m 1610[0m [43m [49m[43mpad_token_id[49m[38;5;241;43m=[39;49m[43mgeneration_config[49m[38;5;241;43m.[39;49m[43mpad_token_id[49m[43m,[49m [1;32m 1611[0m [43m [49m[43meos_token_id[49m[38;5;241;43m=[39;49m[43mgeneration_config[49m[38;5;241;43m.[39;49m[43meos_token_id[49m[43m,[49m [1;32m 1612[0m [43m [49m[43moutput_scores[49m[38;5;241;43m=[39;49m[43mgeneration_config[49m[38;5;241;43m.[39;49m[43moutput_scores[49m[43m,[49m [1;32m 1613[0m [43m [49m[43mreturn_dict_in_generate[49m[38;5;241;43m=[39;49m[43mgeneration_config[49m[38;5;241;43m.[39;49m[43mreturn_dict_in_generate[49m[43m,[49m [1;32m 1614[0m [43m [49m[43msynced_gpus[49m[38;5;241;43m=[39;49m[43msynced_gpus[49m[43m,[49m [1;32m 1615[0m [43m [49m[43mstreamer[49m[38;5;241;43m=[39;49m[43mstreamer[49m[43m,[49m [1;32m 1616[0m [43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mmodel_kwargs[49m[43m,[49m [1;32m 1617[0m [43m [49m[43m)[49m [1;32m 1619[0m [38;5;28;01melif[39;00m generation_mode [38;5;241m==[39m GenerationMode[38;5;241m.[39mCONTRASTIVE_SEARCH: [1;32m 1620[0m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m model_kwargs[[38;5;124m"[39m[38;5;124muse_cache[39m[38;5;124m"[39m]: File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/transformers/generation/utils.py:2454[0m, in [0;36mGenerationMixin.greedy_search[0;34m(self, input_ids, logits_processor, stopping_criteria, max_length, pad_token_id, eos_token_id, output_attentions, output_hidden_states, output_scores, return_dict_in_generate, synced_gpus, streamer, **model_kwargs)[0m [1;32m 2451[0m model_inputs [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39mprepare_inputs_for_generation(input_ids, [38;5;241m*[39m[38;5;241m*[39mmodel_kwargs) [1;32m 2453[0m [38;5;66;03m# forward pass to get next token[39;00m [0;32m-> 2454[0m outputs [38;5;241m=[39m [38;5;28;43mself[39;49m[43m([49m [1;32m 2455[0m [43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mmodel_inputs[49m[43m,[49m [1;32m 2456[0m [43m [49m[43mreturn_dict[49m[38;5;241;43m=[39;49m[38;5;28;43;01mTrue[39;49;00m[43m,[49m [1;32m 2457[0m [43m [49m[43moutput_attentions[49m[38;5;241;43m=[39;49m[43moutput_attentions[49m[43m,[49m [1;32m 2458[0m [43m [49m[43moutput_hidden_states[49m[38;5;241;43m=[39;49m[43moutput_hidden_states[49m[43m,[49m [1;32m 2459[0m [43m[49m[43m)[49m [1;32m 2461[0m [38;5;28;01mif[39;00m synced_gpus [38;5;129;01mand[39;00m this_peer_finished: [1;32m 2462[0m [38;5;28;01mcontinue[39;00m [38;5;66;03m# don't waste resources running the code we don't need[39;00m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1518[0m, in [0;36mModule._wrapped_call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1516[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_compiled_call_impl([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs) [38;5;66;03m# type: ignore[misc][39;00m [1;32m 1517[0m [38;5;28;01melse[39;00m: [0;32m-> 1518[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_call_impl[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1527[0m, in [0;36mModule._call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1522[0m [38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in[39;00m [1;32m 1523[0m [38;5;66;03m# this function, and just call forward.[39;00m [1;32m 1524[0m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m ([38;5;28mself[39m[38;5;241m.[39m_backward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_backward_pre_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_pre_hooks [1;32m 1525[0m [38;5;129;01mor[39;00m _global_backward_pre_hooks [38;5;129;01mor[39;00m _global_backward_hooks [1;32m 1526[0m [38;5;129;01mor[39;00m _global_forward_hooks [38;5;129;01mor[39;00m _global_forward_pre_hooks): [0;32m-> 1527[0m [38;5;28;01mreturn[39;00m [43mforward_call[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m [1;32m 1529[0m [38;5;28;01mtry[39;00m: [1;32m 1530[0m result [38;5;241m=[39m [38;5;28;01mNone[39;00m File [0;32m~/.cache/huggingface/modules/transformers_modules/microsoft/phi-2/d3186761bf5c4409f7679359284066c25ab668ee/modeling_phi.py:953[0m, in [0;36mPhiForCausalLM.forward[0;34m(self, input_ids, past_key_values, attention_mask, labels, **kwargs)[0m [1;32m 945[0m [38;5;28;01mdef[39;00m [38;5;21mforward[39m( [1;32m 946[0m [38;5;28mself[39m, [1;32m 947[0m input_ids: torch[38;5;241m.[39mLongTensor, [0;32m (...)[0m [1;32m 951[0m [38;5;241m*[39m[38;5;241m*[39mkwargs, [1;32m 952[0m ) [38;5;241m-[39m[38;5;241m>[39m CausalLMOutputWithPast: [0;32m--> 953[0m hidden_states [38;5;241m=[39m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mtransformer[49m[43m([49m[43minput_ids[49m[43m,[49m[43m [49m[43mpast_key_values[49m[38;5;241;43m=[39;49m[43mpast_key_values[49m[43m,[49m[43m [49m[43mattention_mask[49m[38;5;241;43m=[39;49m[43mattention_mask[49m[43m)[49m [1;32m 954[0m lm_logits [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39mlm_head(hidden_states) [1;32m 956[0m loss [38;5;241m=[39m [38;5;28;01mNone[39;00m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1518[0m, in [0;36mModule._wrapped_call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1516[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_compiled_call_impl([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs) [38;5;66;03m# type: ignore[misc][39;00m [1;32m 1517[0m [38;5;28;01melse[39;00m: [0;32m-> 1518[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_call_impl[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1527[0m, in [0;36mModule._call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1522[0m [38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in[39;00m [1;32m 1523[0m [38;5;66;03m# this function, and just call forward.[39;00m [1;32m 1524[0m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m ([38;5;28mself[39m[38;5;241m.[39m_backward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_backward_pre_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_pre_hooks [1;32m 1525[0m [38;5;129;01mor[39;00m _global_backward_pre_hooks [38;5;129;01mor[39;00m _global_backward_hooks [1;32m 1526[0m [38;5;129;01mor[39;00m _global_forward_hooks [38;5;129;01mor[39;00m _global_forward_pre_hooks): [0;32m-> 1527[0m [38;5;28;01mreturn[39;00m [43mforward_call[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m [1;32m 1529[0m [38;5;28;01mtry[39;00m: [1;32m 1530[0m result [38;5;241m=[39m [38;5;28;01mNone[39;00m File [0;32m~/.cache/huggingface/modules/transformers_modules/microsoft/phi-2/d3186761bf5c4409f7679359284066c25ab668ee/modeling_phi.py:915[0m, in [0;36mPhiModel.forward[0;34m(self, input_ids, past_key_values, attention_mask)[0m [1;32m 912[0m hidden_states [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39membd(input_ids) [1;32m 914[0m [38;5;28;01mfor[39;00m layer [38;5;129;01min[39;00m [38;5;28mself[39m[38;5;241m.[39mh: [0;32m--> 915[0m hidden_states [38;5;241m=[39m [43mlayer[49m[43m([49m [1;32m 916[0m [43m [49m[43mhidden_states[49m[43m,[49m [1;32m 917[0m [43m [49m[43mpast_key_values[49m[38;5;241;43m=[39;49m[43mpast_key_values[49m[43m,[49m [1;32m 918[0m [43m [49m[43mattention_mask[49m[38;5;241;43m=[39;49m[43mattention_mask[49m[43m,[49m [1;32m 919[0m [43m [49m[43m)[49m [1;32m 921[0m [38;5;28;01mreturn[39;00m hidden_states File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1518[0m, in [0;36mModule._wrapped_call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1516[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_compiled_call_impl([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs) [38;5;66;03m# type: ignore[misc][39;00m [1;32m 1517[0m [38;5;28;01melse[39;00m: [0;32m-> 1518[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_call_impl[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1527[0m, in [0;36mModule._call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1522[0m [38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in[39;00m [1;32m 1523[0m [38;5;66;03m# this function, and just call forward.[39;00m [1;32m 1524[0m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m ([38;5;28mself[39m[38;5;241m.[39m_backward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_backward_pre_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_pre_hooks [1;32m 1525[0m [38;5;129;01mor[39;00m _global_backward_pre_hooks [38;5;129;01mor[39;00m _global_backward_hooks [1;32m 1526[0m [38;5;129;01mor[39;00m _global_forward_hooks [38;5;129;01mor[39;00m _global_forward_pre_hooks): [0;32m-> 1527[0m [38;5;28;01mreturn[39;00m [43mforward_call[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m [1;32m 1529[0m [38;5;28;01mtry[39;00m: [1;32m 1530[0m result [38;5;241m=[39m [38;5;28;01mNone[39;00m File [0;32m~/.cache/huggingface/modules/transformers_modules/microsoft/phi-2/d3186761bf5c4409f7679359284066c25ab668ee/modeling_phi.py:770[0m, in [0;36mParallelBlock.forward[0;34m(self, hidden_states, past_key_values, attention_mask, **kwargs)[0m [1;32m 767[0m residual [38;5;241m=[39m hidden_states [1;32m 768[0m hidden_states [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39mln(hidden_states) [0;32m--> 770[0m attn_outputs [38;5;241m=[39m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mmixer[49m[43m([49m [1;32m 771[0m [43m [49m[43mhidden_states[49m[43m,[49m [1;32m 772[0m [43m [49m[43mpast_key_values[49m[38;5;241;43m=[39;49m[43mpast_key_values[49m[43m,[49m [1;32m 773[0m [43m [49m[43mattention_mask[49m[38;5;241;43m=[39;49m[43mattention_mask[49m[43m,[49m [1;32m 774[0m [43m[49m[43m)[49m [1;32m 775[0m [38;5;28;01mif[39;00m [38;5;28misinstance[39m(attn_outputs, [38;5;28mtuple[39m): [1;32m 776[0m attn_outputs [38;5;241m=[39m attn_outputs[[38;5;241m0[39m] File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1518[0m, in [0;36mModule._wrapped_call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1516[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_compiled_call_impl([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs) [38;5;66;03m# type: ignore[misc][39;00m [1;32m 1517[0m [38;5;28;01melse[39;00m: [0;32m-> 1518[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_call_impl[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1527[0m, in [0;36mModule._call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1522[0m [38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in[39;00m [1;32m 1523[0m [38;5;66;03m# this function, and just call forward.[39;00m [1;32m 1524[0m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m ([38;5;28mself[39m[38;5;241m.[39m_backward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_backward_pre_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_pre_hooks [1;32m 1525[0m [38;5;129;01mor[39;00m _global_backward_pre_hooks [38;5;129;01mor[39;00m _global_backward_hooks [1;32m 1526[0m [38;5;129;01mor[39;00m _global_forward_hooks [38;5;129;01mor[39;00m _global_forward_pre_hooks): [0;32m-> 1527[0m [38;5;28;01mreturn[39;00m [43mforward_call[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m [1;32m 1529[0m [38;5;28;01mtry[39;00m: [1;32m 1530[0m result [38;5;241m=[39m [38;5;28;01mNone[39;00m File [0;32m~/.cache/huggingface/modules/transformers_modules/microsoft/phi-2/d3186761bf5c4409f7679359284066c25ab668ee/modeling_phi.py:726[0m, in [0;36mMHA.forward[0;34m(self, x, past_key_values, attention_mask, **kwargs)[0m [1;32m 722[0m attn_output [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39m_forward_self_attn(x, attention_mask) [1;32m 723[0m [38;5;28;01melse[39;00m: [1;32m 724[0m [38;5;66;03m# If `past_key_values` are supplied, it means that we might have cached values and[39;00m [1;32m 725[0m [38;5;66;03m# could take advantage of cross-attention[39;00m [0;32m--> 726[0m attn_output [38;5;241m=[39m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_forward_cross_attn[49m[43m([49m[43mx[49m[43m,[49m[43m [49m[43mpast_key_values[49m[43m,[49m[43m [49m[43mattention_mask[49m[43m)[49m [1;32m 727[0m [38;5;66;03m# MQA / GQA[39;00m [1;32m 728[0m [38;5;28;01melse[39;00m: [1;32m 729[0m [38;5;66;03m# Regardless of `past_key_values` being supplied or not, it always use cross-attention[39;00m [1;32m 730[0m [38;5;66;03m# because `q` and `kv` lengths might be different[39;00m [1;32m 731[0m attn_output [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39m_forward_cross_attn(x, past_key_values, attention_mask) File [0;32m~/.cache/huggingface/modules/transformers_modules/microsoft/phi-2/d3186761bf5c4409f7679359284066c25ab668ee/modeling_phi.py:704[0m, in [0;36mMHA._forward_cross_attn[0;34m(self, x, past_key_values, key_padding_mask)[0m [1;32m 695[0m [38;5;28;01mif[39;00m [38;5;28mself[39m[38;5;241m.[39mcheckpointing: [1;32m 696[0m [38;5;28;01mreturn[39;00m torch[38;5;241m.[39mutils[38;5;241m.[39mcheckpoint[38;5;241m.[39mcheckpoint( [1;32m 697[0m [38;5;28mself[39m[38;5;241m.[39minner_cross_attn, [1;32m 698[0m q, [0;32m (...)[0m [1;32m 701[0m causal[38;5;241m=[39mcausal, [1;32m 702[0m ) [0;32m--> 704[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43minner_cross_attn[49m[43m([49m[43mq[49m[43m,[49m[43m [49m[43mkv[49m[43m,[49m[43m [49m[43mkey_padding_mask[49m[38;5;241;43m=[39;49m[43mkey_padding_mask[49m[43m,[49m[43m [49m[43mcausal[49m[38;5;241;43m=[39;49m[43mcausal[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1518[0m, in [0;36mModule._wrapped_call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1516[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_compiled_call_impl([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs) [38;5;66;03m# type: ignore[misc][39;00m [1;32m 1517[0m [38;5;28;01melse[39;00m: [0;32m-> 1518[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_call_impl[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py:1527[0m, in [0;36mModule._call_impl[0;34m(self, *args, **kwargs)[0m [1;32m 1522[0m [38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in[39;00m [1;32m 1523[0m [38;5;66;03m# this function, and just call forward.[39;00m [1;32m 1524[0m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m ([38;5;28mself[39m[38;5;241m.[39m_backward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_backward_pre_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_hooks [38;5;129;01mor[39;00m [38;5;28mself[39m[38;5;241m.[39m_forward_pre_hooks [1;32m 1525[0m [38;5;129;01mor[39;00m _global_backward_pre_hooks [38;5;129;01mor[39;00m _global_backward_hooks [1;32m 1526[0m [38;5;129;01mor[39;00m _global_forward_hooks [38;5;129;01mor[39;00m _global_forward_pre_hooks): [0;32m-> 1527[0m [38;5;28;01mreturn[39;00m [43mforward_call[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m [1;32m 1529[0m [38;5;28;01mtry[39;00m: [1;32m 1530[0m result [38;5;241m=[39m [38;5;28;01mNone[39;00m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/amp/autocast_mode.py:16[0m, in [0;36mautocast_decorator.<locals>.decorate_autocast[0;34m(*args, **kwargs)[0m [1;32m 13[0m [38;5;129m@functools[39m[38;5;241m.[39mwraps(func) [1;32m 14[0m [38;5;28;01mdef[39;00m [38;5;21mdecorate_autocast[39m([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs): [1;32m 15[0m [38;5;28;01mwith[39;00m autocast_instance: [0;32m---> 16[0m [38;5;28;01mreturn[39;00m [43mfunc[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/amp/autocast_mode.py:16[0m, in [0;36mautocast_decorator.<locals>.decorate_autocast[0;34m(*args, **kwargs)[0m [1;32m 13[0m [38;5;129m@functools[39m[38;5;241m.[39mwraps(func) [1;32m 14[0m [38;5;28;01mdef[39;00m [38;5;21mdecorate_autocast[39m([38;5;241m*[39margs, [38;5;241m*[39m[38;5;241m*[39mkwargs): [1;32m 15[0m [38;5;28;01mwith[39;00m autocast_instance: [0;32m---> 16[0m [38;5;28;01mreturn[39;00m [43mfunc[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m File [0;32m~/.cache/huggingface/modules/transformers_modules/microsoft/phi-2/d3186761bf5c4409f7679359284066c25ab668ee/modeling_phi.py:452[0m, in [0;36mCrossAttention.forward[0;34m(self, q, kv, causal, key_padding_mask, **kwargs)[0m [1;32m 448[0m causal_mask [38;5;241m=[39m cols [38;5;241m>[39m rows [38;5;241m+[39m seqlen_k [38;5;241m-[39m seqlen_q [1;32m 450[0m scores [38;5;241m=[39m scores[38;5;241m.[39mmasked_fill(causal_mask, [38;5;241m-[39m[38;5;241m10000.0[39m) [0;32m--> 452[0m attention [38;5;241m=[39m [43mtorch[49m[38;5;241;43m.[39;49m[43msoftmax[49m[43m([49m[43mscores[49m[43m,[49m[43m [49m[43mdim[49m[38;5;241;43m=[39;49m[38;5;241;43m-[39;49m[38;5;241;43m1[39;49m[43m)[49m[38;5;241;43m.[39;49m[43mto[49m[43m([49m[43mv[49m[38;5;241;43m.[39;49m[43mdtype[49m[43m)[49m [1;32m 453[0m attention [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39mdrop(attention) [1;32m 455[0m output [38;5;241m=[39m torch[38;5;241m.[39meinsum([38;5;124m"[39m[38;5;124mbhts,bshd->bthd[39m[38;5;124m"[39m, attention, v) [0;31mOutOfMemoryError[0m: CUDA out of memory. Tried to allocate 1.07 GiB. GPU 0 has a total capacty of 10.75 GiB of which 612.62 MiB is free. Including non-PyTorch memory, this process has 10.15 GiB memory in use. Of the allocated memory 9.78 GiB is allocated by PyTorch, and 179.66 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
In [ ]:
gen(model, ds_train.with_format('pt')[0], tokenizer)In [ ]:
In [ ]:
In [ ]: