From f3e77d08a8fc57cda416ab2d9102ff7c46dc5166 Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Wed, 1 May 2024 17:17:44 -0500 Subject: [PATCH 01/13] Added more details to the discussion of optimizers/teleprompters. Add class diagrams for the teleprompters, to be included in the documentation. Expanded the discussion to try to clarify what the various optimizers do. --- docs/docs/building-blocks/6-optimizers.md | 37 ++++++++++---- .../figures/teleprompter-classes.dot | 46 ++++++++++++++++++ .../figures/teleprompter-classes.pdf | Bin 0 -> 34044 bytes .../figures/teleprompter-classes.png | Bin 0 -> 209180 bytes 4 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 docs/docs/building-blocks/figures/teleprompter-classes.dot create mode 100644 docs/docs/building-blocks/figures/teleprompter-classes.pdf create mode 100644 docs/docs/building-blocks/figures/teleprompter-classes.png diff --git a/docs/docs/building-blocks/6-optimizers.md b/docs/docs/building-blocks/6-optimizers.md index 55698140f5..65c62955b8 100644 --- a/docs/docs/building-blocks/6-optimizers.md +++ b/docs/docs/building-blocks/6-optimizers.md @@ -32,35 +32,48 @@ In many cases, we found that compiling leads to better prompts than humans write ## What DSPy Optimizers are currently available? +[Subclasses of Teleprompter](figures/teleprompter-classes.png) + All of these can be accessed via `from dspy.teleprompt import *`. #### Automatic Few-Shot Learning -1. **`LabeledFewShot`**: Simply constructs few-shot examples from provided labeled Q/A pairs. +These optimizers extend the signature by adding labeled examples to the prompt that will be submitted to the model, automatically implementing few-shot learning. + +1. **`LabeledFewShot`**: Simply constructs few-shot examples (demos) from provided labeled Q/A pairs. Takes as parameter, `k`, the number of examples to be added to the prompt and chooses `k` examples randomly from the `trainset` parameter. + +2. **`BootstrapFewShot`**: Uses a `teacher` module (which defaults to your program) to generate complete demonstrations for every stage of your program in addition to the labeled examples in `trainset`. This is primarily useful if there are potentially many different ways to phrase the answer to a query, and you do not have a training set that covers the alternative phrasings. In this case a language model can be used to "bootstrap," to generate additional answers to the questions in the training set. Takes as parameters `max_labeled_demos` (the number of demonstrations to choose randomly from the `trainset`), and `max_bootstrapped_demos` (the number of additional examples to be generated by the `teacher`). The bootstrapping process uses the `metric` to determine whether to accept or reject bootstrapped answers. Will simply use the generated demonstrations (if they pass the metric) without any further optimization; i.e., does not check to see if the program's performance is improved by the compilation. Advanced: Supports using a `teacher` program that is a *different* DSPy program that has compatible structure, for harder tasks. -2. **`BootstrapFewShot`**: Uses your program to self-generate complete demonstrations for every stage of your program. Will simply use the generated demonstrations (if they pass the metric) without any further optimization. Advanced: Supports using a teacher program (a different DSPy program that has compatible structure) and a teacher LM, for harder tasks. +3. **`BootstrapFewShotWithRandomSearch`**: Applies `BootstrapFewShot` several times with random search over generated demonstrations, and selects the best program. Takes as parameter (in addition to the ones for `BootstrapFewShot`) `num_candidate_programs`: the number of random programs, each generated through `BootstrapFewShot`. Picks a single best based on scores over the `valset` (which defaults to being the same as the `trainset`). -3. **`BootstrapFewShotWithRandomSearch`**: Applies `BootstrapFewShot` several times with random search over generated demonstrations, and selects the best program. +4. **`BootstrapFewShotWithOptuna`**: Applies `BootstrapFewShot` through Optuna hyperparameter optimization across demonstration sets, running trials to maximize evaluation metrics. As before, chooses the best of a candidate set of demonstration examples, but this time using Optuna to make the choice. + +5. **`KNNFewShot`**. Selects demonstrations through k-Nearest Neighbors algorithm. Vectorizes the examples, and then clusters them, using cluster centers with `BootstrapFewShot` for bootstrapping/selection process. -4. **`BootstrapFewShotWithOptuna`**: Applies `BootstrapFewShot` through Optuna hyperparameter optimization across demonstration sets, running trials to maximize evaluation metrics. #### Automatic Instruction Optimization -4. **`COPRO`**: Generates and refines new instructions for each step, and optimizes them with coordinate ascent. +Unlike the above optimizers, these attempt to optimize the instructions, rather than the questions. + +6. **`COPRO`**: Uses an LLM to generate and refine new instructions for each step, and optimizes them with coordinate ascent (hill-climbing using the metric function and the `trainset`). The number of iterations of prompt improvement is controlled by the `depth` parameter. + +#### Simultaneous optimization -5. **`MIPRO`**: Generates instructions and few-shot examples in each step. The instruction generation is data-aware and demonstration-aware. Uses Bayesian Optimization to effectively search over the space of generation instructions/demonstrations across your modules. +This optimizer combines automatic few-shot learning and instruction optimization in one process. + +7. **`MIPRO`**: Generates instructions *and* few-shot examples in each step. The instruction generation is data-aware and demonstration-aware. Uses Bayesian Optimization to effectively search over the space of generation instructions/demonstrations across your modules. #### Automatic Finetuning +This optimizer is used to fine-tune the underlying LLM(s) instead of the prompting. + 6. **`BootstrapFinetune`**: Distills a prompt-based DSPy program into weight updates (for smaller LMs). The output is a DSPy program that has the same steps, but where each step is conducted by a finetuned model instead of a prompted LM. #### Program Transformations -7. **`KNNFewShot`**. Selects demonstrations through k-Nearest Neighbors algorithm integrating `BootstrapFewShot` for bootstrapping/selection process. - 8. **`Ensemble`**: Ensembles a set of DSPy programs and either uses the full set or randomly samples a subset into a single program. @@ -70,7 +83,7 @@ As a rule of thumb, if you don't know where to start, use `BootstrapFewShotWithR Here's the general guidance on getting started: -* If you have very little data, e.g. 10 examples of your task, use `BootstrapFewShot`. +* If you have very little data, e.g. 10 examples of your task, use `BootstrapFewShot`. * If you have slightly more data, e.g. 50 examples of your task, use `BootstrapFewShotWithRandomSearch`. @@ -85,6 +98,10 @@ They all share this general interface, with some differences in the keyword argu Let's see this with the most common one, `BootstrapFewShotWithRandomSearch`. + + ```python from dspy.teleprompt import BootstrapFewShotWithRandomSearch @@ -115,4 +132,4 @@ To load a program from a file, you can instantiate an object from that class and ```python loaded_program = YOUR_PROGRAM_CLASS() loaded_program.load(path=YOUR_SAVE_PATH) -``` \ No newline at end of file +``` diff --git a/docs/docs/building-blocks/figures/teleprompter-classes.dot b/docs/docs/building-blocks/figures/teleprompter-classes.dot new file mode 100644 index 0000000000..05e576f6ce --- /dev/null +++ b/docs/docs/building-blocks/figures/teleprompter-classes.dot @@ -0,0 +1,46 @@ +digraph "classes" { +rankdir=BT +charset="utf-8" +"dspy.teleprompt.vanilla.LabeledFewShot" [color="black", fontcolor="black", label=<{LabeledFewShot|k : int
student
trainset
|compile(student)
}>, shape="record", style="solid"]; +"dspy.teleprompt.bootstrap.BootstrapFewShot" [color="black", fontcolor="black", label=<{BootstrapFewShot|error_count : int
error_lock : lock
max_bootstrapped_demos : int
max_errors : int
max_labeled_demos : int
max_rounds : int
metric : NoneType
metric_threshold : NoneType
name2predictor : dict
name2traces
predictor2name : dict
student
teacher
teacher_settings : NoneType, dict
trainset
validation
valset : NoneType
|compile(student)
}>, shape="record", style="solid"]; +"dspy.teleprompt.finetune.BootstrapFinetune" [color="black", fontcolor="black", label=<{BootstrapFinetune|metric : NoneType
multitask : bool
teacher_settings : dict
teleprompter
|compile(student)
}>, shape="record", style="solid"]; +"dspy.teleprompt.teleprompt_optuna.BootstrapFewShotWithOptuna" [color="black", fontcolor="black", label=<{BootstrapFewShotWithOptuna|compiled_teleprompter
max_labeled_demos : int
max_num_samples : int
max_rounds : int
metric
min_num_samples : int
num_candidate_sets : int
num_threads : int
student
teacher
teacher_settings : dict
trainset
valset
|compile(student)
objective(trial)
}>, shape="record", style="solid"]; +"dspy.teleprompt.random_search.BootstrapFewShotWithRandomSearch" [color="black", fontcolor="black", label=<{BootstrapFewShotWithRandomSearch|max_errors : int
max_labeled_demos : int
max_num_samples : int
max_rounds : int
metric
metric_threshold : NoneType
min_num_samples : int
num_candidate_sets : int
num_threads : int
stop_at_score : NoneType
teacher_settings : dict
trainset
valset
|compile(student)
}>, shape="record", style="solid"]; +"dspy.teleprompt.copro_optimizer.COPRO" [color="black", fontcolor="black", label=<{COPRO|breadth : int
depth : int
init_temperature : float
metric : NoneType
prompt_model : NoneType
track_stats : bool
|compile(student)
}>, shape="record", style="solid"]; +"dspy.teleprompt.ensemble.Ensemble" [color="black", fontcolor="black", label=<{Ensemble|deterministic : bool
reduce_fn : NoneType
size : NoneType
|compile(programs)
}>, shape="record", style="solid"]; +"dspy.teleprompt.knn_fewshot.KNNFewShot" [color="black", fontcolor="black", label=<{KNNFewShot|KNN
|compile(student)
}>, shape="record", style="solid"]; +"dspy.teleprompt.mipro_optimizer.MIPRO" [color="black", fontcolor="black", label=<{MIPRO|init_temperature : float
metric
num_candidates : int
observations : NoneType
prompt_model : NoneType
task_model : NoneType
teacher_settings : dict
track_stats : bool
verbose : bool
view_data_batch_size : int
|compile(student: dspy.Program): dspy.Program
}>, shape="record", style="solid"]; + + +"dspy.teleprompt.vanilla.LabeledFewShot" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.teleprompt.Teleprompter" [color="black", fontcolor="black", label=<{Teleprompter|
|}>, shape="record", style="solid"]; +"dspy.teleprompt.bootstrap.BootstrapFewShot" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.copro_optimizer.COPRO" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.ensemble.Ensemble" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.finetune.BootstrapFinetune" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.knn_fewshot.KNNFewShot" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.mipro_optimizer.MIPRO" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.random_search.BootstrapFewShotWithRandomSearch" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.teleprompt_optuna.BootstrapFewShotWithOptuna" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; +"dspy.teleprompt.bootstrap.BootstrapFewShot" -> "dspy.teleprompt.finetune.BootstrapFinetune" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="teleprompter", style="solid"]; + + +// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstruction" [color="black", fontcolor="black", label=<{BasicGenerateInstruction|basic_instruction : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.copro_optimizer.BasicGenerateInstruction" [color="black", fontcolor="black", label=<{BasicGenerateInstruction|basic_instruction : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstructionWithDataObservations" [color="black", fontcolor="black", label=<{BasicGenerateInstructionWithDataObservations|basic_instruction : FieldInfo
observations : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstructionWithExamples" [color="black", fontcolor="black", label=<{BasicGenerateInstructionWithExamples|basic_instruction : FieldInfo
examples : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstructionWithExamplesAndDataObservations" [color="black", fontcolor="black", label=<{BasicGenerateInstructionWithExamplesAndDataObservations|basic_instruction : FieldInfo
examples : FieldInfo
observations : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; + + + +// "dspy.teleprompt.mipro_optimizer.DatasetDescriptor" [color="black", fontcolor="black", label=<{DatasetDescriptor|examples : FieldInfo
observations : FieldInfo
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.mipro_optimizer.DatasetDescriptorWithPriorObservations" [color="black", fontcolor="black", label=<{DatasetDescriptorWithPriorObservations|examples : FieldInfo
observations : FieldInfo
prior_observations : FieldInfo
|}>, shape="record", style="solid"]; + +// "dspy.teleprompt.ensemble.Ensemble.compile.EnsembledProgram" [color="black", fontcolor="black", label=<{EnsembledProgram|programs
|forward()
}>, shape="record", style="solid"]; +// "dspy.teleprompt.copro_optimizer.GenerateInstructionGivenAttempts" [color="black", fontcolor="black", label=<{GenerateInstructionGivenAttempts|attempted_instructions : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.signature_opt_typed.make_initial_signature.GenerateInstructionInitial" [color="black", fontcolor="black", label=<{GenerateInstructionInitial|basic_signature : T
proposed_signatures : list[T]
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.signature_opt_typed.generate_with_avoidance.GenerateSignature" [color="black", fontcolor="black", label=<{GenerateSignature|analysis : str
proposed_signature : T
score : float
|check_signature_not_attempted(s: T): T
}>, shape="record", style="solid"]; + +// "dspy.teleprompt.mipro_optimizer.ObservationSummarizer" [color="black", fontcolor="black", label=<{ObservationSummarizer|observations : FieldInfo
summary : FieldInfo
|}>, shape="record", style="solid"]; +// "dspy.teleprompt.signature_opt_typed.OptimizerResult" [color="black", fontcolor="black", label=<{OptimizerResult|program : Module
scores : list[float]
signatures : list[dict[str, Signature]]
|}>, shape="record", style="solid"]; +} diff --git a/docs/docs/building-blocks/figures/teleprompter-classes.pdf b/docs/docs/building-blocks/figures/teleprompter-classes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4e8ce79ced374445c9548615e49f940a98b38962 GIT binary patch literal 34044 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 QVgdjdp~=XEWQ3vrADLGmVE_OC literal 0 HcmV?d00001 diff --git a/docs/docs/building-blocks/figures/teleprompter-classes.png b/docs/docs/building-blocks/figures/teleprompter-classes.png new file mode 100644 index 0000000000000000000000000000000000000000..c774c8b5d98c9f329a7bec29f4f1dbb5bd154f2e GIT binary patch literal 209180 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≪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

DRY!)6A%|XPwakb5g+5yfF+J==Sm2AlQW# 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 vl^ERc>*F8rR2u%j;H Date: Wed, 1 May 2024 17:18:30 -0500 Subject: [PATCH 02/13] Comments, type hints, etc. added to optimizers. There should be no change here to the function of the code, just some documentation to make it easier for the user/maintainer to follow. Added this in the course of figuring out the teleprompters well enough to figure out how to use them. --- dspy/teleprompt/bootstrap.py | 52 ++++++++++++++++++++++++---- dspy/teleprompt/copro_optimizer.py | 18 +++++++++- dspy/teleprompt/mipro_optimizer.py | 8 +++-- dspy/teleprompt/teleprompt_optuna.py | 2 ++ 4 files changed, 70 insertions(+), 10 deletions(-) diff --git a/dspy/teleprompt/bootstrap.py b/dspy/teleprompt/bootstrap.py index 8bbecef8fc..682f524a3c 100644 --- a/dspy/teleprompt/bootstrap.py +++ b/dspy/teleprompt/bootstrap.py @@ -1,5 +1,6 @@ import random import threading +from typing import Optional, Dict import tqdm @@ -15,7 +16,8 @@ # TODO: Switch here from dsp.Example to dspy.Example. Right now, it's okay because it's internal only (predictors). # NOTE: Notice the places where we don't shuffle examples. I do like that this one doesn't shuffle. -# Other ones that consider options may want to use both unshuffled and then shuffle a few times, when considering candidates. +# Other ones that consider options may want to use both unshuffled and then shuffle a few times, when +# considering candidates. # TODO: the max_rounds via branch_idx to get past the cache, not just temperature. # In principle, we can also sample multiple outputs from the final generation step @@ -25,25 +27,54 @@ # won't hurt our "best effort" guarantees.) # TODO: When this bootstraps for another teleprompter like finetune, we want all demos we gather. -# But when it's for direct use we may want to sample ONE demo per predictor--example pair. This is important for "multi-use" modules. +# But when it's for direct use we may want to sample ONE demo per predictor--example pair. +# This is important for "multi-use" modules. # TODO: Add baselines=[...] +# QUESTION: What is the meaning of self.validation and self.valset? Why is it that valset +# overrides validation if it is supplied? What is the relationship between the `valset` +# parameter to `compile` and the `trainset` parameter? I note that none of the examples in the +# docs seem to use this parameter. class BootstrapFewShot(Teleprompter): def __init__( self, metric=None, metric_threshold=None, - teacher_settings={}, + teacher_settings: Optional[Dict]=None, max_bootstrapped_demos=4, max_labeled_demos=16, max_rounds=1, max_errors=5, ): + """ + A Teleprompter class that composes a set of demos/examples to go into a predictor's prompt. + These demos come from a combination of labeled examples in the training set, and newly-generated + bootstrap demos. + + Parameters + ---------- + metric: Callable + A function that should be called on an `Example` and a `Prediction` and yield a value, + which may be a `bool` or a number. + metric_threshold: optional float, default `None` + If the metric yields a numerical value, then check it against this threshold when + deciding whether or not to accept a bootstrap example. + teacher_settings: dict, optional + Settings to go to the `teacher` model. + max_bootstrapped_demos: int, default 4 + max_labeled_demos: int, default 16 + max_rounds: int, default 1 + This parameter controls the bootstrap-generation process. If one iteration through the + training set is not enough to generate all the required bootstrap traces, then keep trying + for `max_rounds` iterations, then give up. + max_errors: int, default 5 + """ self.metric = metric self.metric_threshold = metric_threshold - self.teacher_settings = teacher_settings + ## linters didn't like having mutable arg as default value. + self.teacher_settings = {} if teacher_settings is None else teacher_settings self.max_bootstrapped_demos = max_bootstrapped_demos self.max_labeled_demos = max_labeled_demos @@ -69,13 +100,17 @@ def compile(self, student, *, teacher=None, trainset, valset=None): return self.student + ### Set self.student to a fresh copy of the student, and set teacher + ### to a supplied value or to a copy of the student. def _prepare_student_and_teacher(self, student, teacher): self.student = student.reset_copy() self.teacher = teacher.deepcopy() if teacher is not None else student.reset_copy() - assert getattr(self.student, "_compiled", False) is False, "Student must be uncompiled." + assert getattr(self.student, "_compiled", False) is False, "Student must not be compiled." if self.max_labeled_demos and getattr(self.teacher, "_compiled", False) is False: + ## if we do not have a pretrained teacher, then we make a teacher by seeding the + ## teacher (probably just a copy of the student) with a set of randomly-chosen demos. teleprompter = LabeledFewShot(k=self.max_labeled_demos) self.teacher = teleprompter.compile(self.teacher.reset_copy(), trainset=self.trainset) @@ -91,9 +126,14 @@ def _prepare_predictor_mappings(self): assert name1 == name2, "Student and teacher must have the same program structure." assert predictor1.signature.equals( predictor2.signature, - ), f"Student and teacher must have the same signatures. {type(predictor1.signature)} != {type(predictor2.signature)}" + ), (f"Student and teacher must have the same signatures. " + f"{type(predictor1.signature)} != {type(predictor2.signature)}" + ) assert id(predictor1) != id(predictor2), "Student and teacher must be different objects." + ## FIXME: this seems very odd. `name2predictor` is a map from names to None. + ## its only use seems to be getting iterated over, so I *think* it could be a + ## set instead of a dict. - rpg name2predictor[name1] = None # dict(student=predictor1, teacher=predictor2) predictor2name[id(predictor1)] = name1 diff --git a/dspy/teleprompt/copro_optimizer.py b/dspy/teleprompt/copro_optimizer.py index 5b62d92836..1d1878ba9a 100644 --- a/dspy/teleprompt/copro_optimizer.py +++ b/dspy/teleprompt/copro_optimizer.py @@ -126,7 +126,23 @@ def _set_signature(self, predictor, updated_signature): predictor.signature = updated_signature def compile(self, student, *, trainset, eval_kwargs): - """student is a program that needs to be optimized, note that it may be zero-shot or already pre-optimized for demos != []""" + """ + Optimize the `signature` of `student`. + `student` is a program that needs to be optimized, note that it may be zero-shot or already pre-optimized + (the demos are already chosen). + + Parameters + ========== + student: + The program to optimize. Will not be modified. + trainset: iterable of `Example`s + eval_kwargs: optional, dict + Additional keywords to go into `Evaluate` for the metric. + + Returns + ======= + Optimized version of `student`. + """ module = student.deepcopy() evaluate = Evaluate(devset=trainset, metric=self.metric, **eval_kwargs) total_calls = 0 diff --git a/dspy/teleprompt/mipro_optimizer.py b/dspy/teleprompt/mipro_optimizer.py index c9e34189fd..e4dbe835e7 100644 --- a/dspy/teleprompt/mipro_optimizer.py +++ b/dspy/teleprompt/mipro_optimizer.py @@ -18,19 +18,21 @@ """ USAGE SUGGESTIONS: -The following code can be used to compile a optimized signature teleprompter using the MIPRO, and evaluate it on an end task: +The following code can be used to compile a optimized signature teleprompter using MIPRO, and evaluate it on an end task: +``` python from dspy.teleprompt import MIPRO teleprompter = MIPRO(prompt_model=prompt_model, task_model=task_model, metric=metric, num_candidates=10, init_temperature=1.0) kwargs = dict(num_threads=NUM_THREADS, display_progress=True, display_table=0) compiled_prompt_opt = teleprompter.compile(program, trainset=trainset[:TRAIN_NUM], num_trials=100, max_bootstrapped_demos=3, max_labeled_demos=5, eval_kwargs=kwargs) eval_score = evaluate(compiled_prompt_opt, devset=evalset[:EVAL_NUM], **kwargs) +``` Note that this teleprompter takes in the following parameters: -* prompt_model: The model used for prompt generation. When unspecified, defaults to the model set in settings (ie. dspy.settings.configure(lm=task_model)). -* task_model: The model used for prompt generation. When unspecified, defaults to the model set in settings (ie. dspy.settings.configure(lm=task_model)). +* prompt_model: The model used for prompt generation. When unspecified, defaults to the model set in settings (i.e., dspy.settings.configure(lm=task_model)). +* task_model: The model used for prompt generation. When unspecified, defaults to the model set in settings (i.e., dspy.settings.configure(lm=task_model)). * metric: The task metric used for optimization. * num_candidates: The number of new prompts and sets of fewshot examples to generate and evaluate. Default=10. * init_temperature: The temperature used to generate new prompts. Higher roughly equals more creative. Default=1.0. diff --git a/dspy/teleprompt/teleprompt_optuna.py b/dspy/teleprompt/teleprompt_optuna.py index ad2f6fe4ad..eb0f6f74de 100644 --- a/dspy/teleprompt/teleprompt_optuna.py +++ b/dspy/teleprompt/teleprompt_optuna.py @@ -52,6 +52,8 @@ def objective(self, trial): display_table=False, display_progress=True, ) + # FIXME: this should have return_all_scores=False and then need only score, + # since only one value will be returned. - rpg score, _ = evaluate(program2, return_all_scores=True) trial.set_user_attr("program", program2) return score From 06bf5a7639fbe6dbfaef7001ce19db11bdaead8a Mon Sep 17 00:00:00 2001 From: arnavsinghvi11 <54859892+arnavsinghvi11@users.noreply.github.com> Date: Sat, 4 May 2024 17:04:27 -0700 Subject: [PATCH 03/13] Update 6-optimizers.md with corrections --- docs/docs/building-blocks/6-optimizers.md | 32 +++++++++-------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/docs/docs/building-blocks/6-optimizers.md b/docs/docs/building-blocks/6-optimizers.md index 65c62955b8..96dc9b3afc 100644 --- a/docs/docs/building-blocks/6-optimizers.md +++ b/docs/docs/building-blocks/6-optimizers.md @@ -27,7 +27,7 @@ DSPy programs consist of multiple calls to LMs, stacked together as [DSPy module Given a metric, DSPy can optimize all of these three with multi-stage optimization algorithms. These can combine gradient descent (for LM weights) and discrete LM-driven optimization, i.e. for crafting/updating instructions and for creating/validating demonstrations. DSPy Demonstrations are like few-shot examples, but they're far more powerful. They can be created from scratch, given your program, and their creation and selection can be optimized in many effective ways. -In many cases, we found that compiling leads to better prompts than humans write. Not because DSPy optimizers are more creative than humans, but simply because they can try more things, much more systematically, and tune the metrics directly. +In many cases, we found that compiling leads to better prompts than human writing. Not because DSPy optimizers are more creative than humans, but simply because they can try more things, much more systematically, and tune the metrics directly. ## What DSPy Optimizers are currently available? @@ -38,36 +38,32 @@ All of these can be accessed via `from dspy.teleprompt import *`. #### Automatic Few-Shot Learning -These optimizers extend the signature by adding labeled examples to the prompt that will be submitted to the model, automatically implementing few-shot learning. +These optimizers extend the signature by automatically generating and including **optimized** examples within the prompt sent to the model, implementing few-shot learning. -1. **`LabeledFewShot`**: Simply constructs few-shot examples (demos) from provided labeled Q/A pairs. Takes as parameter, `k`, the number of examples to be added to the prompt and chooses `k` examples randomly from the `trainset` parameter. +1. **`LabeledFewShot`**: Simply constructs few-shot examples (demos) from provided labeled input and output data points. Requires `k` (number of examples for the prompt) and `trainset` to randomly select `k` examples from. -2. **`BootstrapFewShot`**: Uses a `teacher` module (which defaults to your program) to generate complete demonstrations for every stage of your program in addition to the labeled examples in `trainset`. This is primarily useful if there are potentially many different ways to phrase the answer to a query, and you do not have a training set that covers the alternative phrasings. In this case a language model can be used to "bootstrap," to generate additional answers to the questions in the training set. Takes as parameters `max_labeled_demos` (the number of demonstrations to choose randomly from the `trainset`), and `max_bootstrapped_demos` (the number of additional examples to be generated by the `teacher`). The bootstrapping process uses the `metric` to determine whether to accept or reject bootstrapped answers. Will simply use the generated demonstrations (if they pass the metric) without any further optimization; i.e., does not check to see if the program's performance is improved by the compilation. Advanced: Supports using a `teacher` program that is a *different* DSPy program that has compatible structure, for harder tasks. +2. **`BootstrapFewShot`**: Uses a `teacher` module (which defaults to your program) to generate complete demonstrations for every stage of your program, along with labeled examples in `trainset`. Parameters include `max_labeled_demos` (the number of demonstrations randomly selected from the `trainset`) and `max_bootstrapped_demos` (the number of additional examples generated by the `teacher`). The bootstrapping process employs the metric to validate demonstrations, including only those that pass the metric in the "compiled" prompt. Advanced: Supports using a `teacher` program that is a *different* DSPy program that has compatible structure, for harder tasks. -3. **`BootstrapFewShotWithRandomSearch`**: Applies `BootstrapFewShot` several times with random search over generated demonstrations, and selects the best program. Takes as parameter (in addition to the ones for `BootstrapFewShot`) `num_candidate_programs`: the number of random programs, each generated through `BootstrapFewShot`. Picks a single best based on scores over the `valset` (which defaults to being the same as the `trainset`). +3. **`BootstrapFewShotWithRandomSearch`**: Applies `BootstrapFewShot` several times with random search over generated demonstrations, and selects the best program over the optimization. Parameters mirror those of `BootstrapFewShot`, with the addition of `num_candidate_programs`, which specifies the number of random programs evaluated over the optimization, including candidates of the uncompiled program, `LabeledFewShot` optimized program, `BootstrapFewShot` compiled program with unshuffled examples and `num_candidate_programs` of `BootstrapFewShot` compiled programs with randomized example sets. -4. **`BootstrapFewShotWithOptuna`**: Applies `BootstrapFewShot` through Optuna hyperparameter optimization across demonstration sets, running trials to maximize evaluation metrics. As before, chooses the best of a candidate set of demonstration examples, but this time using Optuna to make the choice. +4. **`BootstrapFewShotWithOptuna`**: Applies `BootstrapFewShot` through Optuna hyperparameter optimization across demonstration sets, running trials to maximize evaluation metrics and selecting the best demonstrations. -5. **`KNNFewShot`**. Selects demonstrations through k-Nearest Neighbors algorithm. Vectorizes the examples, and then clusters them, using cluster centers with `BootstrapFewShot` for bootstrapping/selection process. +5. **`KNNFewShot`**. Selects demonstrations through k-Nearest Neighbors algorithm. Vectorizes the examples, and then clusters them, using cluster centers with `BootstrapFewShot` for bootstrapping/selection process. #### Automatic Instruction Optimization -Unlike the above optimizers, these attempt to optimize the instructions, rather than the questions. +These optimizers serve to produce optimal instructions for the prompt, in addition to optimized few-shot demonstrations. -6. **`COPRO`**: Uses an LLM to generate and refine new instructions for each step, and optimizes them with coordinate ascent (hill-climbing using the metric function and the `trainset`). The number of iterations of prompt improvement is controlled by the `depth` parameter. - -#### Simultaneous optimization - -This optimizer combines automatic few-shot learning and instruction optimization in one process. +6. **`COPRO`**: Generates and refines new instructions for each step, and optimizes them with coordinate ascent (hill-climbing using the metric function and the `trainset`). Parameters include `depth` which is the number of iterations of prompt improvement the optimizer runs over. 7. **`MIPRO`**: Generates instructions *and* few-shot examples in each step. The instruction generation is data-aware and demonstration-aware. Uses Bayesian Optimization to effectively search over the space of generation instructions/demonstrations across your modules. #### Automatic Finetuning -This optimizer is used to fine-tune the underlying LLM(s) instead of the prompting. +This optimizer is used to fine-tune the underlying LLM(s). 6. **`BootstrapFinetune`**: Distills a prompt-based DSPy program into weight updates (for smaller LMs). The output is a DSPy program that has the same steps, but where each step is conducted by a finetuned model instead of a prompted LM. @@ -83,7 +79,7 @@ As a rule of thumb, if you don't know where to start, use `BootstrapFewShotWithR Here's the general guidance on getting started: -* If you have very little data, e.g. 10 examples of your task, use `BootstrapFewShot`. +* If you have very little data, e.g. 10 examples of your task, use `BootstrapFewShot`. * If you have slightly more data, e.g. 50 examples of your task, use `BootstrapFewShotWithRandomSearch`. @@ -98,16 +94,12 @@ They all share this general interface, with some differences in the keyword argu Let's see this with the most common one, `BootstrapFewShotWithRandomSearch`. - - ```python from dspy.teleprompt import BootstrapFewShotWithRandomSearch # Set up the optimizer: we want to "bootstrap" (i.e., self-generate) 8-shot examples of your program's steps. # The optimizer will repeat this 10 times (plus some initial attempts) before selecting its best attempt on the devset. -config = dict(max_bootstrapped_demos=3, max_labeled_demos=3, num_candidate_programs=10, num_threads=4) +config = dict(max_bootstrapped_demos=4, max_labeled_demos=4, num_candidate_programs=10, num_threads=4) teleprompter = BootstrapFewShotWithRandomSearch(metric=YOUR_METRIC_HERE, **config) optimized_program = teleprompter.compile(YOUR_PROGRAM_HERE, trainset=YOUR_TRAINSET_HERE) From 34e0058ccd288da5637e210fcc050a722b5c0847 Mon Sep 17 00:00:00 2001 From: arnavsinghvi11 <54859892+arnavsinghvi11@users.noreply.github.com> Date: Sat, 4 May 2024 17:18:51 -0700 Subject: [PATCH 04/13] Update bootstrap.py and remove comments --- dspy/teleprompt/bootstrap.py | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/dspy/teleprompt/bootstrap.py b/dspy/teleprompt/bootstrap.py index 682f524a3c..ff55f7cc7a 100644 --- a/dspy/teleprompt/bootstrap.py +++ b/dspy/teleprompt/bootstrap.py @@ -32,11 +32,6 @@ # TODO: Add baselines=[...] -# QUESTION: What is the meaning of self.validation and self.valset? Why is it that valset -# overrides validation if it is supplied? What is the relationship between the `valset` -# parameter to `compile` and the `trainset` parameter? I note that none of the examples in the -# docs seem to use this parameter. - class BootstrapFewShot(Teleprompter): def __init__( self, @@ -50,30 +45,28 @@ def __init__( ): """ A Teleprompter class that composes a set of demos/examples to go into a predictor's prompt. - These demos come from a combination of labeled examples in the training set, and newly-generated - bootstrap demos. + These demos come from a combination of labeled examples in the training set, and bootstrapped demos. Parameters ---------- metric: Callable - A function that should be called on an `Example` and a `Prediction` and yield a value, - which may be a `bool` or a number. + A function that compares an expected value and predicted value, outputting the result of that comparison. metric_threshold: optional float, default `None` If the metric yields a numerical value, then check it against this threshold when deciding whether or not to accept a bootstrap example. teacher_settings: dict, optional - Settings to go to the `teacher` model. + Settings for the `teacher` model. max_bootstrapped_demos: int, default 4 + Maximum number of bootstrapped demonstrations to include max_labeled_demos: int, default 16 + Maximum number of labeled demonstrations to include. max_rounds: int, default 1 - This parameter controls the bootstrap-generation process. If one iteration through the - training set is not enough to generate all the required bootstrap traces, then keep trying - for `max_rounds` iterations, then give up. + Number of iterations to attempt generating the required bootstrap examples. If unsuccessful after `max_rounds`, the program ends. max_errors: int, default 5 + Maximum number of errors until program ends. """ self.metric = metric self.metric_threshold = metric_threshold - ## linters didn't like having mutable arg as default value. self.teacher_settings = {} if teacher_settings is None else teacher_settings self.max_bootstrapped_demos = max_bootstrapped_demos @@ -100,17 +93,13 @@ def compile(self, student, *, teacher=None, trainset, valset=None): return self.student - ### Set self.student to a fresh copy of the student, and set teacher - ### to a supplied value or to a copy of the student. def _prepare_student_and_teacher(self, student, teacher): self.student = student.reset_copy() self.teacher = teacher.deepcopy() if teacher is not None else student.reset_copy() - assert getattr(self.student, "_compiled", False) is False, "Student must not be compiled." + assert getattr(self.student, "_compiled", False) is False, "Student must be uncompiled." if self.max_labeled_demos and getattr(self.teacher, "_compiled", False) is False: - ## if we do not have a pretrained teacher, then we make a teacher by seeding the - ## teacher (probably just a copy of the student) with a set of randomly-chosen demos. teleprompter = LabeledFewShot(k=self.max_labeled_demos) self.teacher = teleprompter.compile(self.teacher.reset_copy(), trainset=self.trainset) @@ -131,9 +120,6 @@ def _prepare_predictor_mappings(self): ) assert id(predictor1) != id(predictor2), "Student and teacher must be different objects." - ## FIXME: this seems very odd. `name2predictor` is a map from names to None. - ## its only use seems to be getting iterated over, so I *think* it could be a - ## set instead of a dict. - rpg name2predictor[name1] = None # dict(student=predictor1, teacher=predictor2) predictor2name[id(predictor1)] = name1 From c99df693ec7665fb34bb51fa73beac56173da4f6 Mon Sep 17 00:00:00 2001 From: arnavsinghvi11 <54859892+arnavsinghvi11@users.noreply.github.com> Date: Sat, 4 May 2024 17:22:07 -0700 Subject: [PATCH 05/13] Update copro_optimizer.py docstring --- dspy/teleprompt/copro_optimizer.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/dspy/teleprompt/copro_optimizer.py b/dspy/teleprompt/copro_optimizer.py index 1d1878ba9a..edb0df882d 100644 --- a/dspy/teleprompt/copro_optimizer.py +++ b/dspy/teleprompt/copro_optimizer.py @@ -127,21 +127,15 @@ def _set_signature(self, predictor, updated_signature): def compile(self, student, *, trainset, eval_kwargs): """ - Optimize the `signature` of `student`. - `student` is a program that needs to be optimized, note that it may be zero-shot or already pre-optimized - (the demos are already chosen). - - Parameters - ========== - student: - The program to optimize. Will not be modified. + optimizes `signature` of `student` program - note that it may be zero-shot or already pre-optimized (demos already chosen - `demos != []`) + + parameters: + student: program to optimize and left modified. trainset: iterable of `Example`s eval_kwargs: optional, dict Additional keywords to go into `Evaluate` for the metric. - Returns - ======= - Optimized version of `student`. + Returns optimized version of `student`. """ module = student.deepcopy() evaluate = Evaluate(devset=trainset, metric=self.metric, **eval_kwargs) From 762751ff9fd4e54e5245819bd56471bf58e442cb Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Sun, 5 May 2024 11:15:08 -0500 Subject: [PATCH 06/13] Remove unused PDF file. --- .../figures/teleprompter-classes.pdf | Bin 34044 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/docs/building-blocks/figures/teleprompter-classes.pdf diff --git a/docs/docs/building-blocks/figures/teleprompter-classes.pdf b/docs/docs/building-blocks/figures/teleprompter-classes.pdf deleted file mode 100644 index 4e8ce79ced374445c9548615e49f940a98b38962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34044 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 QVgdjdp~=XEWQ3vrADLGmVE_OC From e0b8a691d607ca7b4a5ad46805b9761e9f975cb3 Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Sun, 5 May 2024 11:17:02 -0500 Subject: [PATCH 07/13] Remove unnecessary return value. --- dspy/teleprompt/teleprompt_optuna.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dspy/teleprompt/teleprompt_optuna.py b/dspy/teleprompt/teleprompt_optuna.py index eb0f6f74de..2922daf17e 100644 --- a/dspy/teleprompt/teleprompt_optuna.py +++ b/dspy/teleprompt/teleprompt_optuna.py @@ -52,9 +52,7 @@ def objective(self, trial): display_table=False, display_progress=True, ) - # FIXME: this should have return_all_scores=False and then need only score, - # since only one value will be returned. - rpg - score, _ = evaluate(program2, return_all_scores=True) + score = evaluate(program2, return_all_scores=False) trial.set_user_attr("program", program2) return score From e00d4e6159cfc428cc7f9218655c8df1857507ad Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Mon, 6 May 2024 08:59:08 -0500 Subject: [PATCH 08/13] Remove graphviz file of class hierarchy. --- .../figures/teleprompter-classes.dot | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 docs/docs/building-blocks/figures/teleprompter-classes.dot diff --git a/docs/docs/building-blocks/figures/teleprompter-classes.dot b/docs/docs/building-blocks/figures/teleprompter-classes.dot deleted file mode 100644 index 05e576f6ce..0000000000 --- a/docs/docs/building-blocks/figures/teleprompter-classes.dot +++ /dev/null @@ -1,46 +0,0 @@ -digraph "classes" { -rankdir=BT -charset="utf-8" -"dspy.teleprompt.vanilla.LabeledFewShot" [color="black", fontcolor="black", label=<{LabeledFewShot|k : int
student
trainset
|compile(student)
}>, shape="record", style="solid"]; -"dspy.teleprompt.bootstrap.BootstrapFewShot" [color="black", fontcolor="black", label=<{BootstrapFewShot|error_count : int
error_lock : lock
max_bootstrapped_demos : int
max_errors : int
max_labeled_demos : int
max_rounds : int
metric : NoneType
metric_threshold : NoneType
name2predictor : dict
name2traces
predictor2name : dict
student
teacher
teacher_settings : NoneType, dict
trainset
validation
valset : NoneType
|compile(student)
}>, shape="record", style="solid"]; -"dspy.teleprompt.finetune.BootstrapFinetune" [color="black", fontcolor="black", label=<{BootstrapFinetune|metric : NoneType
multitask : bool
teacher_settings : dict
teleprompter
|compile(student)
}>, shape="record", style="solid"]; -"dspy.teleprompt.teleprompt_optuna.BootstrapFewShotWithOptuna" [color="black", fontcolor="black", label=<{BootstrapFewShotWithOptuna|compiled_teleprompter
max_labeled_demos : int
max_num_samples : int
max_rounds : int
metric
min_num_samples : int
num_candidate_sets : int
num_threads : int
student
teacher
teacher_settings : dict
trainset
valset
|compile(student)
objective(trial)
}>, shape="record", style="solid"]; -"dspy.teleprompt.random_search.BootstrapFewShotWithRandomSearch" [color="black", fontcolor="black", label=<{BootstrapFewShotWithRandomSearch|max_errors : int
max_labeled_demos : int
max_num_samples : int
max_rounds : int
metric
metric_threshold : NoneType
min_num_samples : int
num_candidate_sets : int
num_threads : int
stop_at_score : NoneType
teacher_settings : dict
trainset
valset
|compile(student)
}>, shape="record", style="solid"]; -"dspy.teleprompt.copro_optimizer.COPRO" [color="black", fontcolor="black", label=<{COPRO|breadth : int
depth : int
init_temperature : float
metric : NoneType
prompt_model : NoneType
track_stats : bool
|compile(student)
}>, shape="record", style="solid"]; -"dspy.teleprompt.ensemble.Ensemble" [color="black", fontcolor="black", label=<{Ensemble|deterministic : bool
reduce_fn : NoneType
size : NoneType
|compile(programs)
}>, shape="record", style="solid"]; -"dspy.teleprompt.knn_fewshot.KNNFewShot" [color="black", fontcolor="black", label=<{KNNFewShot|KNN
|compile(student)
}>, shape="record", style="solid"]; -"dspy.teleprompt.mipro_optimizer.MIPRO" [color="black", fontcolor="black", label=<{MIPRO|init_temperature : float
metric
num_candidates : int
observations : NoneType
prompt_model : NoneType
task_model : NoneType
teacher_settings : dict
track_stats : bool
verbose : bool
view_data_batch_size : int
|compile(student: dspy.Program): dspy.Program
}>, shape="record", style="solid"]; - - -"dspy.teleprompt.vanilla.LabeledFewShot" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.teleprompt.Teleprompter" [color="black", fontcolor="black", label=<{Teleprompter|
|}>, shape="record", style="solid"]; -"dspy.teleprompt.bootstrap.BootstrapFewShot" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.copro_optimizer.COPRO" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.ensemble.Ensemble" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.finetune.BootstrapFinetune" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.knn_fewshot.KNNFewShot" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.mipro_optimizer.MIPRO" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.random_search.BootstrapFewShotWithRandomSearch" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.teleprompt_optuna.BootstrapFewShotWithOptuna" -> "dspy.teleprompt.teleprompt.Teleprompter" [arrowhead="empty", arrowtail="none"]; -"dspy.teleprompt.bootstrap.BootstrapFewShot" -> "dspy.teleprompt.finetune.BootstrapFinetune" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="teleprompter", style="solid"]; - - -// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstruction" [color="black", fontcolor="black", label=<{BasicGenerateInstruction|basic_instruction : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.copro_optimizer.BasicGenerateInstruction" [color="black", fontcolor="black", label=<{BasicGenerateInstruction|basic_instruction : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstructionWithDataObservations" [color="black", fontcolor="black", label=<{BasicGenerateInstructionWithDataObservations|basic_instruction : FieldInfo
observations : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstructionWithExamples" [color="black", fontcolor="black", label=<{BasicGenerateInstructionWithExamples|basic_instruction : FieldInfo
examples : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.mipro_optimizer.BasicGenerateInstructionWithExamplesAndDataObservations" [color="black", fontcolor="black", label=<{BasicGenerateInstructionWithExamplesAndDataObservations|basic_instruction : FieldInfo
examples : FieldInfo
observations : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; - - - -// "dspy.teleprompt.mipro_optimizer.DatasetDescriptor" [color="black", fontcolor="black", label=<{DatasetDescriptor|examples : FieldInfo
observations : FieldInfo
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.mipro_optimizer.DatasetDescriptorWithPriorObservations" [color="black", fontcolor="black", label=<{DatasetDescriptorWithPriorObservations|examples : FieldInfo
observations : FieldInfo
prior_observations : FieldInfo
|}>, shape="record", style="solid"]; - -// "dspy.teleprompt.ensemble.Ensemble.compile.EnsembledProgram" [color="black", fontcolor="black", label=<{EnsembledProgram|programs
|forward()
}>, shape="record", style="solid"]; -// "dspy.teleprompt.copro_optimizer.GenerateInstructionGivenAttempts" [color="black", fontcolor="black", label=<{GenerateInstructionGivenAttempts|attempted_instructions : FieldInfo
proposed_instruction : FieldInfo
proposed_prefix_for_output_field : FieldInfo
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.signature_opt_typed.make_initial_signature.GenerateInstructionInitial" [color="black", fontcolor="black", label=<{GenerateInstructionInitial|basic_signature : T
proposed_signatures : list[T]
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.signature_opt_typed.generate_with_avoidance.GenerateSignature" [color="black", fontcolor="black", label=<{GenerateSignature|analysis : str
proposed_signature : T
score : float
|check_signature_not_attempted(s: T): T
}>, shape="record", style="solid"]; - -// "dspy.teleprompt.mipro_optimizer.ObservationSummarizer" [color="black", fontcolor="black", label=<{ObservationSummarizer|observations : FieldInfo
summary : FieldInfo
|}>, shape="record", style="solid"]; -// "dspy.teleprompt.signature_opt_typed.OptimizerResult" [color="black", fontcolor="black", label=<{OptimizerResult|program : Module
scores : list[float]
signatures : list[dict[str, Signature]]
|}>, shape="record", style="solid"]; -} From 33ea790c732b392546ff1d0cdd74d30cff90c0c4 Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Mon, 6 May 2024 09:00:26 -0500 Subject: [PATCH 09/13] ruff fixes. --- dspy/teleprompt/bootstrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dspy/teleprompt/bootstrap.py b/dspy/teleprompt/bootstrap.py index ff55f7cc7a..811bbae2c2 100644 --- a/dspy/teleprompt/bootstrap.py +++ b/dspy/teleprompt/bootstrap.py @@ -1,6 +1,6 @@ import random import threading -from typing import Optional, Dict +from typing import Dict, Optional import tqdm From dc0d78befe25fe58edb4f0963887f5254a0cda84 Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Mon, 6 May 2024 09:06:19 -0500 Subject: [PATCH 10/13] Describe how to generate class diagram. Add a comment to the markdown to explain how the class diagram was generated, so that it can be updated as more teleprompters are added. --- docs/docs/building-blocks/6-optimizers.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/docs/building-blocks/6-optimizers.md b/docs/docs/building-blocks/6-optimizers.md index 96dc9b3afc..12e0529f48 100644 --- a/docs/docs/building-blocks/6-optimizers.md +++ b/docs/docs/building-blocks/6-optimizers.md @@ -32,6 +32,11 @@ In many cases, we found that compiling leads to better prompts than human writin ## What DSPy Optimizers are currently available? + + + + + [Subclasses of Teleprompter](figures/teleprompter-classes.png) All of these can be accessed via `from dspy.teleprompt import *`. From 5e4df24dacdc05f0607301ccdbcb2b7b32de9cb5 Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Mon, 6 May 2024 09:14:30 -0500 Subject: [PATCH 11/13] Update description of KNN and Instruction Optimizers. - Add key ideas from Arnav's KNN explanation (in the issue) and - Clarify that only MIPRO optimizes the demonstration set. --- docs/docs/building-blocks/6-optimizers.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/docs/building-blocks/6-optimizers.md b/docs/docs/building-blocks/6-optimizers.md index 12e0529f48..6f3d9b502d 100644 --- a/docs/docs/building-blocks/6-optimizers.md +++ b/docs/docs/building-blocks/6-optimizers.md @@ -53,13 +53,12 @@ These optimizers extend the signature by automatically generating and including 4. **`BootstrapFewShotWithOptuna`**: Applies `BootstrapFewShot` through Optuna hyperparameter optimization across demonstration sets, running trials to maximize evaluation metrics and selecting the best demonstrations. -5. **`KNNFewShot`**. Selects demonstrations through k-Nearest Neighbors algorithm. Vectorizes the examples, and then clusters them, using cluster centers with `BootstrapFewShot` for bootstrapping/selection process. - +5. **`KNNFewShot`**. Selects demonstrations through k-Nearest Neighbors algorithm to pick a diverse set of examples from different clusters. Vectorizes the examples, and then clusters them, using cluster centers with `BootstrapFewShot` for bootstrapping/selection process. This will be useful when there's a lot of data over random spaces: using KNN helps optimize the `trainset` for `BootstrapFewShot`. See [this notebook](https://github.com/stanfordnlp/dspy/blob/main/examples/knn.ipynb) for an example. #### Automatic Instruction Optimization -These optimizers serve to produce optimal instructions for the prompt, in addition to optimized few-shot demonstrations. +These optimizers produce optimal instructions for the prompt and, in the case of MIPRO also optimize the set of few-shot demonstrations. 6. **`COPRO`**: Generates and refines new instructions for each step, and optimizes them with coordinate ascent (hill-climbing using the metric function and the `trainset`). Parameters include `depth` which is the number of iterations of prompt improvement the optimizer runs over. From 285b0dc8f1f2ce6f7783cf557531ca26bfe26e64 Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Mon, 6 May 2024 09:20:13 -0500 Subject: [PATCH 12/13] Proposed Optuna rewrite. --- docs/docs/building-blocks/6-optimizers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/building-blocks/6-optimizers.md b/docs/docs/building-blocks/6-optimizers.md index 6f3d9b502d..0a12c90bf9 100644 --- a/docs/docs/building-blocks/6-optimizers.md +++ b/docs/docs/building-blocks/6-optimizers.md @@ -51,7 +51,7 @@ These optimizers extend the signature by automatically generating and including 3. **`BootstrapFewShotWithRandomSearch`**: Applies `BootstrapFewShot` several times with random search over generated demonstrations, and selects the best program over the optimization. Parameters mirror those of `BootstrapFewShot`, with the addition of `num_candidate_programs`, which specifies the number of random programs evaluated over the optimization, including candidates of the uncompiled program, `LabeledFewShot` optimized program, `BootstrapFewShot` compiled program with unshuffled examples and `num_candidate_programs` of `BootstrapFewShot` compiled programs with randomized example sets. -4. **`BootstrapFewShotWithOptuna`**: Applies `BootstrapFewShot` through Optuna hyperparameter optimization across demonstration sets, running trials to maximize evaluation metrics and selecting the best demonstrations. +4. **`BootstrapFewShotWithOptuna`**: Applies `BootstrapFewShot` with Optuna optimization across demonstration sets, running trials to maximize evaluation metrics and selecting the best demonstrations. 5. **`KNNFewShot`**. Selects demonstrations through k-Nearest Neighbors algorithm to pick a diverse set of examples from different clusters. Vectorizes the examples, and then clusters them, using cluster centers with `BootstrapFewShot` for bootstrapping/selection process. This will be useful when there's a lot of data over random spaces: using KNN helps optimize the `trainset` for `BootstrapFewShot`. See [this notebook](https://github.com/stanfordnlp/dspy/blob/main/examples/knn.ipynb) for an example. From 48c7e9034298e7b736f7e320a29beb6bc7f9db8e Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" Date: Sat, 11 May 2024 16:11:28 -0500 Subject: [PATCH 13/13] Add braggy comment. --- docs/docs/building-blocks/6-optimizers.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/building-blocks/6-optimizers.md b/docs/docs/building-blocks/6-optimizers.md index 0a12c90bf9..e4687e8af7 100644 --- a/docs/docs/building-blocks/6-optimizers.md +++ b/docs/docs/building-blocks/6-optimizers.md @@ -36,6 +36,7 @@ In many cases, we found that compiling leads to better prompts than human writin + [Subclasses of Teleprompter](figures/teleprompter-classes.png)