FinetuningConfig
Below is the class definition for the Finetuning Config. It inherits from the BaseModel defined in Pydantic.
class FinetuningConfig(BaseModel):
base_model: str
adapter: str | None = Field(default=None)
task: str | None = Field(default=None)
epochs: PositiveInt | None = Field(default=None)
learning_rate: PositiveFloat | None = Field(default=None)
rank: PositiveInt | None = Field(default=None)
target_modules: List[str] | None = Field(default=None)
enable_early_stopping: bool = Field(default=True)
By default, Predibase sets the following default values (subject to change):
- epochs: 3
- adapter: "lora"
- task: "instruction_tuning"
- learning_rate: 0.0002
- rank: 16
- target_modules: see below in the "Target Modules" section
- enable_early_stopping: enable early stopping of training if validation loss plateaus over 10 successive evaluation checkpoints
base_model
Use the short names provided in the list of available models.
Task
The task
parameter determines what the adapter will be fine-tuned to do. The following tasks are supported:
instruction_tuning
: Given aprompt
input field, the adapter is trained to generate acompletion
output field.completion
(Beta): Given a singletext
input field, the adapter is trained to do next token prediction on the input.
Adapter
The adapter
parameter determines what type of adapter will be fine-tuned. Predibase supports two adapter types:
lora
: LoRA is an efficient method for training LLMs that introduces a small subset of task-specific model parameters alongside the original model parameters. These weights learn from the task-specific data during fine-tuning, optimizing performance for your dataset.turbo_lora
(New): This is a proprietary fine-tuning method that builds on LoRA while also improving inference throughput (measured in token generated per second) by up to 3.5x for single requests and up to 2x for high queries per second batched workloads depending on the type of the downstream task. Training jobs will take longer to train and are priced at 2x the standard fine-tuning pricing.turbo
: Fine-tunes a speculator on top of a base model or existing LoRA adapter to enable speculative decoding, improving inference throughput by 2x–3x while being 100x more parameter-efficient. Ideal for speeding up token generation tasks and can convert an existing LoRA fine-tuning into Turbo LoRA by resuming the job with adapter="turbo".
Read more about each adapter here.
Target Modules
The target_modules
parameter is a list of strings, where each string is the name of a module in the model that you want to fine-tune. The default value is None
, which means that the default modules will be fine-tuned. Per base model, we have the following target modules:
- codellama-13b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- codellama-70b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- gemma-2b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- gemma-2b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- gemma-7b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- gemma-7b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-2-13b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-2-13b-chat
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-2-70b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-2-70b-chat
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-2-7b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-2-7b-chat
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-3-8b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-3-8b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-3-70b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- llama-3-70b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- mistral-7b
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- mistral-7b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- mistral-7b-instruct-v0-2
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- mistral-7b-instruct-v0-3
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- mixtral-8x7b-instruct-v0-1
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- phi-2
- q_proj (default)
- k_proj
- v_proj (default)
- dense
- fc1 (default)
- fc2 (default)
- zephyr-7b-beta
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- phi-3-mini-4k-instruct
- qkv_proj (default)
- o_proj (default)
- gate_up_proj
- down_proj
- phi-3-5-mini-instruct
- qkv_proj (default)
- o_proj (default)
- gate_up_proj
- down_proj
- codellama-7b-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj
- codellama-7b-solar-pro-preview-instruct
- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj- q_proj (default)
- k_proj
- v_proj (default)
- o_proj
- gate_proj
- up_proj
- down_proj