Gemma 2 2B — Bryant persona adapter
A LoRA adapter that makes
google/gemma-2-2b-it
answer in the voice of Lloyd Bryant Hightower II.
Not a system prompt asking a model to role-play. The weights were actually updated —
79 MB of low-rank matrices trained on my own writing, sitting on top of a 2.6B-parameter
base that never moves.
What this is
| |
|---|
| Base model | google/gemma-2-2b-it (2.6B parameters, frozen) |
| Method | LoRA (PEFT), task_type=CAUSAL_LM |
| Rank / alpha / dropout | 16 / 32 / 0.05 |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Adapter size | 79 MB (adapter_model.safetensors) |
| Language | English |
The point of shipping it this way: you don't distribute a new model, you distribute the
difference between it and the one everyone already has. Five gigabytes becomes seventy-nine
megabytes, and the base stays exactly where it was.
Usage
1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
4
5ADAPTER = "lloydhightower/gemma-2-bryant-persona-adapter"
6
7base = AutoModelForCausalLM.from_pretrained(
8 "google/gemma-2-2b-it",
9 torch_dtype=torch.bfloat16,
10 device_map="auto",
11)
12model = PeftModel.from_pretrained(base, ADAPTER)
13tokenizer = AutoTokenizer.from_pretrained(ADAPTER)
14
15messages = [{"role": "user", "content": "What did you learn playing cornerback?"}]
16inputs = tokenizer.apply_chat_template(
17 messages, add_generation_prompt=True, return_tensors="pt"
18).to(model.device)
19
20out = model.generate(inputs, max_new_tokens=256, do_sample=True, temperature=0.7, top_p=0.9)
21print(tokenizer.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True))
To fold the adapter into the base weights for faster inference:
1merged = model.merge_and_unload()
2merged.save_pretrained("gemma-2-2b-bryant-merged")
You need access to google/gemma-2-2b-it on the Hub for either path — accept the Gemma
terms there first.
Intended use
Built as a demonstration: I market Google's closed generative models for a living, and
wanted to actually do the thing I keep telling developers is possible with the open ones.
Fine-tuning a Gemma on a personal corpus is a weekend, not a research program, and this
adapter is the evidence.
Reasonable uses: studying persona/style transfer with LoRA, teaching parameter-efficient
fine-tuning, or poking at what a 2B model can and cannot carry.
Not intended for: representing me in any real interaction, generating text attributed
to me, or any setting where a reader might take the output for something I actually wrote
or believe.
Limitations
- It's a 2B model, and it sounds like one. The cadence is convincing; the reasoning is
small-model reasoning. It will state things confidently and be wrong.
- It does not know facts about me. Style was trained, not biography. Anything
autobiographical it produces should be assumed invented unless you can verify it
elsewhere.
- English only, and only the register I write in — long-form, first person, fairly dry.
Push it outside that and the persona thins out fast.
- It inherits everything Gemma 2 inherits, including its biases. Training on one
person's writing narrows the voice; it does not remove the base model's failure modes.
- Small training corpus, so expect memorization of distinctive phrasings from the
source material.
Training
Fine-tuned on a corpus of my own long-form writing.
- Training data: [what you actually used — blog posts, essays, site copy; roughly how many examples]
- Epochs / learning rate / batch size / scheduler: [from your config]
- Hardware and duration: [e.g. one A100 for 40 minutes, or Colab T4]
- Framework versions: [
peft, transformers, torch]
No third-party or scraped personal data was used. The corpus is text I wrote.
Ethical note
This is a persona model of a real, living person — me. I trained it on myself and published
it deliberately. Please don't use it to impersonate me, and don't use this recipe to build
a persona model of someone who hasn't agreed to it.
License
Derivatives of Gemma are governed by the
Gemma Terms of Use and the
Prohibited Use Policy. Using this
adapter means the Gemma terms apply to you, including the use restrictions and the
requirement to pass those terms along with any further distribution.
Contact
Lloyd Bryant Hightower II —
lloydhightower.com ·
LinkedIn ·
GitHub