From 7835d510a87fe691e80200028940d5f1f3fb6656 Mon Sep 17 00:00:00 2001 From: Aditya NG Date: Wed, 8 May 2024 22:45:34 +0530 Subject: [PATCH] feat(README.md): results added --- README.md | 7 +++++ kan_gpt/prompt.py | 4 +-- media/results.png | Bin 0 -> 42153 bytes scripts/download_checkpoints.py | 9 +++++++ scripts/plot_results.py | 46 ++++++++++++++++++++++++++++++++ 5 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 media/results.png create mode 100644 scripts/download_checkpoints.py create mode 100644 scripts/plot_results.py diff --git a/README.md b/README.md index 6d8ea3d..60250ab 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,12 @@ You can prompt the model to produce text as follows python -m kan_gpt.prompt --prompt "Bangalore is often described as the " --model_path (checkpoint) ``` +## Results + +We train and compare KAN-GPT with an equivalent MLP-GPT model on the Tiny Shakespeare dataset. We observe that the KAN-GPT performs slightly better than the MLP-GPT. We are looking into further experiments to dive deeper. The results are shown below: + + + ## TODOs - [x] Integrate [minGPT](https://github.com/karpathy/minGPT) and [pykan](https://github.com/KindXiaoming/pykan) @@ -107,6 +113,7 @@ python -m kan_gpt.prompt --prompt "Bangalore is often described as the " --model - [ ] Define pydantic model for training and sweep args - [ ] Pruning the package, get rid of unused code - [ ] Training script to PyTorch Lighting +- [x] Documentation: `mkdocs gh-deploy` - [x] Integrate with [efficient-kan](https://github.com/Blealtan/efficient-kan/blob/master/src/efficient_kan/kan.py) - [x] Test Cases - [x] KAN: Forward-Backward test diff --git a/kan_gpt/prompt.py b/kan_gpt/prompt.py index 792c490..c0401d5 100644 --- a/kan_gpt/prompt.py +++ b/kan_gpt/prompt.py @@ -52,12 +52,12 @@ def main(args): import argparse parser = argparse.ArgumentParser("KAN-GPT Trainer") - parser.add_argument("--model_type", default="gpt-mini") + parser.add_argument("--model_type", default="gpt-micro") parser.add_argument("--model_path", default=None) parser.add_argument("--max_tokens", default=100) parser.add_argument( - "--prompt", default="Bangalore is often described as the " + "--prompt", default="Out of thy sleep. What is it thou didst say?" ) parser.add_argument( "--architecture", choices=["MLP", "KAN"], default="KAN" diff --git a/media/results.png b/media/results.png new file mode 100644 index 0000000000000000000000000000000000000000..c51e462df4c7bb8a04bba833ed2ebb073f77397e GIT binary patch literal 42153 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�+qQm?4=#&VDfLpdM*w>{z^`KVkZn3HhKsUMD< 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 literal 0 HcmV?d00001 diff --git a/scripts/download_checkpoints.py b/scripts/download_checkpoints.py new file mode 100644 index 0000000..443ce7b --- /dev/null +++ b/scripts/download_checkpoints.py @@ -0,0 +1,9 @@ +import wandb + +api = wandb.Api() + +mlp_model = api.artifact("adityang/KAN-GPT/model:v35") +kan_model = api.artifact("adityang/KAN-GPT/model:v34") + +mlp_model.download(root="weights/") +kan_model.download(root="weights/") diff --git a/scripts/plot_results.py b/scripts/plot_results.py new file mode 100644 index 0000000..8099986 --- /dev/null +++ b/scripts/plot_results.py @@ -0,0 +1,46 @@ +import wandb + +api = wandb.Api() + +mlp_run = api.run("KAN-GPT/axi1qzwv") +kan_run = api.run("KAN-GPT/eusdq4te") + +keys = [ + 'train_loss', 'test_loss' +] + +mlp_metrics = mlp_run.history(keys=keys) +kan_metrics = kan_run.history(keys=keys) + +print("MLP") +print(mlp_metrics) +print("="*20) + +print("KAN") +print(kan_metrics) +print("="*20) + +# Plot the test and train losses for the two models + +import matplotlib.pyplot as plt + +plt.plot(kan_metrics['test_loss'], label='KAN Test', linestyle="--") +plt.plot(kan_metrics['train_loss'], label='KAN Train') + +plt.plot(mlp_metrics['test_loss'], label='MLP Test', linestyle="--") +plt.plot(mlp_metrics['train_loss'], label='MLP Train') + +# Add a legend and show the plot + +plt.xlabel('Steps') +plt.ylabel('Loss') + +plt.title("Training Curves of KAN-GPT and MLP-GPT") + +# Grid + +plt.grid(True) + +plt.legend() +plt.show() +