--- pipeline_tag: text-generation license: mit base_model: openai-community/gpt2-large library_name: kerasformers language: - en tags: - keras - kerasformers - gpt2 - gpt-2 - text-generation - pytorch - jax - tf --- # Run GPT-2 with Keras 3: JAX, PyTorch, or TensorFlow [![GitHub](https://img.shields.io/badge/GitHub-KerasFormers-black?logo=github)](https://github.com/IMvision12/KerasFormers) [![Docs](https://img.shields.io/badge/Docs-GPT--2-blue)](https://imvision12.github.io/KerasFormers/gpt2/) # kerasformers/gpt2_large Paper: [Language Models are Unsupervised Multitask Learners (Radford et al., 2019)](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) GPT-2 is OpenAI's decoder-only transformer language model trained on WebText: learned absolute position embeddings, pre-LayerNorm blocks, `gelu_new` activations, a tied output head, and a byte-level BPE tokenizer. This is the **774M** variant, a base completion model (no chat template). For more details, see the upstream [model card](https://huggingface.co/openai-community/gpt2-large). Pure-**Keras 3** conversion of [`openai-community/gpt2-large`](https://huggingface.co/openai-community/gpt2-large) for [kerasformers](https://github.com/IMvision12/KerasFormers). One implementation runs unmodified on **TensorFlow / Torch / JAX**. ## Quick start ```python import os os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow" from kerasformers.models.gpt2 import GPT2TextGenerate, GPT2Tokenizer model = GPT2TextGenerate.from_weights("kerasformers/gpt2_large") tokenizer = GPT2Tokenizer.from_weights("kerasformers/gpt2_large") inputs = tokenizer("The meaning of life is") outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0])) ``` All GPT-2 sizes load the same way with `from_weights("kerasformers/")`: | Variant | Hub | Params | |---|---|---| | `gpt2` | [`kerasformers/gpt2`](https://huggingface.co/kerasformers/gpt2) | 124M | | `gpt2_medium` | [`kerasformers/gpt2_medium`](https://huggingface.co/kerasformers/gpt2_medium) | 355M | | `gpt2_large` | [`kerasformers/gpt2_large`](https://huggingface.co/kerasformers/gpt2_large) | 774M | | `gpt2_xl` | [`kerasformers/gpt2_xl`](https://huggingface.co/kerasformers/gpt2_xl) | 1.5B | ## Tips - Set `KERAS_BACKEND` **before** importing Keras / kerasformers. - This is a base completion model: it continues a prompt and is not instruction-tuned. - See the [GPT-2 docs](https://imvision12.github.io/KerasFormers/gpt2/) and [Loading Weights](https://imvision12.github.io/KerasFormers/loading_weights/). - Upstream safetensors still work via the `hf:` prefix, e.g. `GPT2TextGenerate.from_weights("hf:openai-community/gpt2-large")`. ## Special Thanks A huge thank you to the OpenAI GPT-2 authors for creating and releasing these models. License: MIT, inherited from the upstream OpenAI GPT-2 release.