Skip to content

Instantly share code, notes, and snippets.

@nro-bot
Last active October 20, 2022 00:33
Show Gist options
  • Save nro-bot/90789bdeb699069460f19ccbd54357e7 to your computer and use it in GitHub Desktop.
Save nro-bot/90789bdeb699069460f19ccbd54357e7 to your computer and use it in GitHub Desktop.
benchmark_distilbert_simpletransformers

pip install simpletransformers pip uninstall torch, then run latest install script from pytorch.org

environment variables:

$ PORCH_N=100_000 PORCH_CUDA=True python bmark_distil.py

##########
# Part 1 #
##########
import pandas as pd
prefix = 'data/'
train_df = pd.read_csv(prefix + 'train.csv', header=None)
train_df.head()
eval_df = pd.read_csv(prefix + 'test.csv', header=None)
eval_df.head()
train_df[0] = (train_df[0] == 2).astype(int)
eval_df[0] = (eval_df[0] == 2).astype(int)
train_df = pd.DataFrame({
'text': train_df[1].replace(r'\n', ' ', regex=True),
'label':train_df[0]
})
#print(train_df.head())
eval_df = pd.DataFrame({
'text': eval_df[1].replace(r'\n', ' ', regex=True),
'label':eval_df[0]
})
#print(eval_df.head())
##########
# Part 2 #
##########
from simpletransformers.classification import ClassificationArgs, ClassificationModel
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
model_args = ClassificationArgs(
use_multiprocessing=False,
use_multiprocessing_for_evaluation=False,
overwrite_output_dir=True,
)
use_cuda = bool(os.environ.get('PORCH_CUDA', False))
n = int(os.environ.get('PORCH_N', '10_000'))
print(f"{n=} {use_cuda=}")
model = ClassificationModel(
"distilbert", "distilbert-base-uncased",
use_cuda=use_cuda,
args=model_args
)
#model = ClassificationModel('roberta', 'roberta-base', args=model_args)
# Train the model
model.train_model(train_df.sample(n=n))
# Evaluate the model
#result, model_outputs, wrong_predictions = model.eval_model(eval_df)
# CPU: 1.35 it/s using 6 cores @ 2.6 GHz
# n=10_000: CUDA 3.28 it/s; 768 CUDA cores @ 1.5 GHz
# a = core-cycles / sec
# b = iter / sec
#
# want: core-cycles / iter
# cores * clock_rate / (iter / sec)
# CPU: 11.6 giga core-cycles / iter
# GPU: 351 giga core-cycles / iter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment