Jan Philipp Harries
Jan Philipp Harries
commited on
Added Orca Mini prompt strategy (#263)
Browse files* added Orca Mini prompt strategy
* maybe this fixed precommit errors?
* pre-commits passing
---------
Co-authored-by: Jan Philipp Harries <[email protected]>
src/axolotl/prompt_strategies/orcamini.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Prompt Strategy for finetuning Orca Mini (v2) models
|
| 3 |
+
see also https://huggingface.co/psmathur/orca_mini_v2_7b for more information
|
| 4 |
+
|
| 5 |
+
Use dataset type: orcamini in conig.yml to use this prompt style.
|
| 6 |
+
|
| 7 |
+
Compared to the alpaca_w_system.open_orca dataset type,
|
| 8 |
+
this one specifies the system prompt with "### System:".
|
| 9 |
+
|
| 10 |
+
Not suited/tested for multiple-turn conversations without further adjustments.
|
| 11 |
+
"""
|
| 12 |
+
from typing import Generator, Union
|
| 13 |
+
|
| 14 |
+
from axolotl.prompt_strategies.alpaca_w_system import OpenOrcaPromptTokenizingStrategy
|
| 15 |
+
from axolotl.prompters import AlpacaPrompter
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class OrcaMiniPrompter(AlpacaPrompter):
|
| 19 |
+
"""Adjusted Prompter for Orca Mini (v2) datasets"""
|
| 20 |
+
|
| 21 |
+
def match_prompt_style(self):
|
| 22 |
+
self.turn_no_input_format = (
|
| 23 |
+
"### System:\n{system}\n\n### User:\n{instruction}\n\n### Response:\n"
|
| 24 |
+
)
|
| 25 |
+
|
| 26 |
+
def build_prompt_w_system(
|
| 27 |
+
self,
|
| 28 |
+
system: str,
|
| 29 |
+
instruction: str,
|
| 30 |
+
output: Union[None, str] = None,
|
| 31 |
+
) -> Generator[str, None, None]:
|
| 32 |
+
# returns the full prompt from instruction and optional input
|
| 33 |
+
# if a label (=response, =output) is provided, it's also appended.
|
| 34 |
+
res = self.turn_no_input_format.format(system=system, instruction=instruction)
|
| 35 |
+
if output:
|
| 36 |
+
res = f"{res}{output}"
|
| 37 |
+
yield res
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
def load(tokenizer, cfg):
|
| 41 |
+
return OpenOrcaPromptTokenizingStrategy(
|
| 42 |
+
OrcaMiniPrompter(),
|
| 43 |
+
tokenizer,
|
| 44 |
+
cfg.train_on_inputs,
|
| 45 |
+
cfg.sequence_len,
|
| 46 |
+
)
|