I want to fine tune an LLM to “steer” it in the right direction. I have plenty of training examples in which I stop the generation early and correct the output to go in the right direction, and then resume generation.
Basically, for my dataset doing 100 “steers” on a single task is much cheaper than having to correct 100 full generations completely, and I think each of these “steer” operations has value and could be used for training.
So maybe I’m looking for some kind of localized DPO. Does anyone know if something like this exists?
Here’s a guide: https://medium.com/@yuxiaojian/fine-tuning-llama3-1-and-deploy-to-ollama-f500a6579090
Not sure what the impact of a few 100 examples will be, though, even if you freeze most parameters.
Can SFT be used on partial generations? What I mean by a “steer” is a correction to only a portion, and not even the end, of model output.
For example, a “bad” partial output might be:
<assistant> Here are four examples: 1. High-quality example 1 2. Low-quality example 2
and the “steer” might be:
<assistant> Here are four examples: 1. High-quality example 1 2. High-quality example 2
but the full response will eventually be:
<assistant> Here are four examples: 1. High-quality example 1 2. High-quality example 2 3. High-quality example 3 4. High-quality example 4
The corrections don’t include the full output.
I do not know what SFT means. So I can’t comment on that, I’m afraid.
Models only predict the distribution of the next token. So “partial response” vs “full response” is a consequence repeated inference untill the stop token is reached. It’s mostly unrelated to the model parameters.
For training, it makes no difference.
The article you linked to uses SFT (supervised fine tuning, a specific training technique) as its alignment strategy. There are other ways to fine-tune a model.
I guess I’m wondering if you can train on these partial responses without needing the full rest of the output, without the stop token, or if you need full examples as the article hints to.
I was unaware of that acronym, thank you. It does make me wonder: is there unsupervised training of LLMs?
Yes, you can train without the stop token. The stop token is just that: another token. I do not expect the model to unlearn the usage of the stop token from training on a few 100 new examples.
Unsupervised training happens during the pre-training phase when you dump all kinds of quality documents and it learns the relationship between tokens
Could you perhaps share a reference for this? I’m eager to learn as I don’t quite understand.
I’ve always trained LLM supervised: predict token N+1 based on tokens 1 to N.
This pre-training was done by Meta. It’s what Llama-3.1-405B is (in contrast to Llama-3.1-405B-Instruct). https://huggingface.co/meta-llama/Llama-3.1-405B
Oh I see the origin of my confusion. The terminology “supervised learning” got repurposed.
It’s all supervised learning if the model is learning the relationship between input and expected output (using supervised learning as described in (1)). The methodology of “pre-training” is the same as that of “supervised fine tuning”.
There’s no unsupervised learning happening, as described in (2)