From 1af0f3c2bf9f84d1e074927532d20456a86a1c98 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Sun, 19 May 2024 20:30:56 -0700 Subject: [PATCH 01/22] create llm hyperparameters tuning api proposal Signed-off-by: helenxie-bit --- .../llm-hyperparameters-tuning-api.md | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 docs/proposals/llm-hyperparameters-tuning-api.md diff --git a/docs/proposals/llm-hyperparameters-tuning-api.md b/docs/proposals/llm-hyperparameters-tuning-api.md new file mode 100644 index 00000000000..c083484e96d --- /dev/null +++ b/docs/proposals/llm-hyperparameters-tuning-api.md @@ -0,0 +1,135 @@ +# LLM Hyperparameters Tuning API Proposal + +- [LLM Hyperparameters Tuning API Proposal](#llm-hyperparameters-tuning-api-proposal) + * [Links](#links) + * [Motivation](#motivation) + * [Goal](#goal) + * [Design for API](#design-for-api) + + [Example](#example) + * [Implementation](#implementation) + * [Future Functionalities](#future-functionalities) + +## Links + +- [katib/issues#2291 (Tuning API in Katib for LLMs)](https://github.com/kubeflow/katib/issues/2291) + +## Motivation + +LLMs are experiencing rapid growth in popularity and evolution, leading to an increased demand for LLMOps in Kubernetes environment. Hyperparameter tuning can greatly improve model performance but is often labor-intensive for humans. We want to provide an LLM hyperparameters tuning API which automates the process and is user-friendly for data scientists. + +## Goal + +We aim to develop a high-level API for tuning LLM hyperparameters, which abstracts away infrastructure complexities for data scientists, and facilitates easy hyperparameter tuning by enabling the seamless import of pretrained models and datasets from platforms like HuggingFace and S3, thereby improving accessibility and ease of use. + +## Design for API + +![Design for API](https://github.com/helenxie-bit/kubeflow/blob/1cdff9f77d68df824bea128e419dc612e172173b/design_api.jpg) + +```python +# Reuse existing assets in Training Operator for importing models and datasets +import kubeflow.storage_initializer.hugging_face +import kubeflow.storage_initializer.s3 + +from kubeflow import katib +katib_client = katib.KatibClient() + +# Arguments related to the model provider including credentials +model_args = modelProviderClass() + +# Arguments related to the dataset provider including credentials +dataset_args = datasetProviderClass() + +# Define hyperparameters and search space +parameters = { + "learning_rate": katib.search.double(min=[], max=[]), + "batch_size": katib.search.int(min=[], max=[]), + "num_epoch": katib.search.int(min=[], max=[]), + "weight_decay": katib.search.double(min=[], max=[]) + ... +} + +# Create experiment for tuning +exp_name = "llm-tune-test" +katib_client.tune( + name=exp_name, + model=model_args, + dataset=dataset_args, + parameters=parameters, + objective_metric_name: str = None, + additional_metric_names: List[str] = [], + objective_type: str = "maximize", + objective_goal: float = None, + algorithm_name: str = "random", + resources_per_trial: Union[dict, client.V1ResourceRequirements, None] = None, + parallel_trial_count: int = None, + max_trial_count: int = None, + max_failed_trail_count: int = None +) + +# Monitor experiment progress +katib_client.get_experiment_conditions(exp_name) +katib_client.get_success_trail_details(exp_name) + +# Get the best hyperparameters +best_hps = katib_client.get_optimal_hyperparameters(exp_name) +``` + +### Example + +```python +import kubeflow.storage_initializer.hugging_face +from kubeflow import katib + +# Import model and dataset +model_args = HuggingFaceModelParams( + model_uri="hf://google-bert/bert-base-cased", + transformer_type=transformers.AutoModelForSequenceClassification, +) + +dataset_args = HfDatasetParams( + repo_id="yelp_review_full", + split="train[:3000]", +) + +# Define hyperparameters and search space +parameters = { + "learning_rate": katib.search.double(min=1e-05, max=5e-05), + "batch_size": katib.search.int(min=8, max=64), + "num_epoch": katib.search.int(min=1, max=10), + "weight_decay": katib.search.double(min=0.0, max=1.0) + ... +} + +# Create experiment for tuning +exp_name = "llm-tune-test" +katib_client.tune( + name=exp_name, + model=model_args, + dataset=dataset_args, + parameters=parameters, + objective_metric_name="accuracy", + objective_type="maximize", + algorithm_name="random", + resources_per_trial={"gpu": "2"}, + parallel_trial_count=2, + max_trial_count=50 +) + +# Get the best hyperparameters +best_hps = katib_client.get_optimal_hyperparameters(exp_name) +``` + +## Implementation + +We will leverage [existing assets](https://github.com/kubeflow/training-operator/tree/687f0c9d2f5cf5dcc97dec87c869ec7f1309d07c/sdk/python/kubeflow/storage_initializer) from the Training Operator to enable the import of pre-trained models and datasets from external platforms (e.g., HuggingFace, S3, etc.). This involves utilizing a storage initializer (PVC) to download pre-trained models and datasets, then sharing this volume with other containers responsible for computation. Additionally, we will define the init container as well as containers for the master and workers in the trail specification for PyTorchJob, similar to the implementation of the train API in Training Operator. This allows us to distribute trials to different workers effectively. + +Regarding hyperparameter tuning, the API will feature a tune function similar to the [previous one](https://github.com/kubeflow/katib/tree/master/sdk/python/v1beta1). This function enables users to specify parameters such as hyperparameters, objective metric, algorithm name, etc., facilitating the exploration of various hyperparameter configurations to optimize LLM performance. However, the objective function in the previous tune API will be replaced by the model provider and dataset provider, aligning with the import process for models and datasets. + +## Advanced Functionalities + +1. Incorporate early stopping strategy into the API to optimize training efficiency. +2. Expand support for distributed training in frameworks beyond PyTorch by leveraging their distributed training capabilities. +3. Support adding custom providers through configmap or CRD approach to enhance flexibility. +4. Enable users to deploy tuned models for inference within their applications or seamlessly integrate them into existing NLP pipelines for specialized tasks. + +_#WIP_ \ No newline at end of file From 830a259b977eda95b5b9f3b711813e9573b1062e Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Sun, 19 May 2024 20:36:45 -0700 Subject: [PATCH 02/22] update llm hyperparameters tuning api proposal Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameters-tuning-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/proposals/llm-hyperparameters-tuning-api.md b/docs/proposals/llm-hyperparameters-tuning-api.md index c083484e96d..d30469e4b5b 100644 --- a/docs/proposals/llm-hyperparameters-tuning-api.md +++ b/docs/proposals/llm-hyperparameters-tuning-api.md @@ -7,7 +7,7 @@ * [Design for API](#design-for-api) + [Example](#example) * [Implementation](#implementation) - * [Future Functionalities](#future-functionalities) + * [Advanced Functionalities](#advanced-functionalities) ## Links From 8f604a796efa35f533b38fe82433dcbf6f7d8677 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Sat, 15 Jun 2024 22:38:08 -0700 Subject: [PATCH 03/22] update proposal Signed-off-by: helenxie-bit --- docs/images/design_api.jpg | Bin 0 -> 309135 bytes .../llm-hyperparameter-optimization-api.md | 195 ++++++++++++++++++ .../llm-hyperparameters-tuning-api.md | 135 ------------ 3 files changed, 195 insertions(+), 135 deletions(-) create mode 100644 docs/images/design_api.jpg create mode 100644 docs/proposals/llm-hyperparameter-optimization-api.md delete mode 100644 docs/proposals/llm-hyperparameters-tuning-api.md diff --git a/docs/images/design_api.jpg b/docs/images/design_api.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12d3b5835cc845c87df2a44a5cf3ebd8bef24401 GIT binary patch literal 309135 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 z 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 z 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

Niqd*XMLI8^fzyRj6q|& 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 Date: Sat, 15 Jun 2024 23:32:56 -0700 Subject: [PATCH 04/22] fix some typos Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 60d2d4d5111..cc467dcfb83 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -42,19 +42,18 @@ class KatibClient(object): additional_metric_names: Optional, objective_goal: Optional, algorithm_setting: Optional, - max_trail_count: Optional, - max_failed_trail_count: Optional, - parallel_trail_count: Optional, - resources_per_trail: Optional, + max_trial_count: Optional, + max_failed_trial_count: Optional, + parallel_trial_count: Optional, + resources_per_trial: Optional, num_workers: Optional, num_procs_per_worker: Optional, resources_per_worker: Optional, retain_trials: Optional, - env_per_trial, # TBD - storage_config, # TBD - base_image, # TBD - packages_to_install, # TBD - pip_index_url, # TBD + env_per_trial: Optional, + packages_to_install: Optional, + pip_index_url: Optional, + base_image, # Not sure if we need it anymore ): """ Initiates a hyperparameter tuning experiment in Katib. @@ -77,12 +76,11 @@ class KatibClient(object): - num_workers: Number of PyTorchJob workers for distributed jobs. - num_procs_per_worker: Number of processes per worker for distributed jobs. - resources_per_worker: Resources allocated per worker. - - env_per_trial: Environment variables for worker containers. - - storage_config: PVC configuration for pre-trained model and dataset storage. - retain_trials: Whether to retain trial resources after completion. - - base_image: Base Docker image for running the objective function. + - env_per_trial: Environment variables for worker containers. - packages_to_install: Additional Python packages to install. - pip_index_url: URL of the PyPI index for installing packages. + - base_image: Base Docker image for running the objective function. """ pass # Implementation logic for initiating the experiment ``` From f83070ada1b43aa1a1413cabb1dffc0ee2742a55 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Mon, 17 Jun 2024 08:28:05 -0700 Subject: [PATCH 05/22] update the path of image and delete parameter 'resouces_per_worker' from tune api Signed-off-by: helenxie-bit --- docs/{ => proposals}/images/design_api.jpg | Bin .../llm-hyperparameter-optimization-api.md | 9 +-------- 2 files changed, 1 insertion(+), 8 deletions(-) rename docs/{ => proposals}/images/design_api.jpg (100%) diff --git a/docs/images/design_api.jpg b/docs/proposals/images/design_api.jpg similarity index 100% rename from docs/images/design_api.jpg rename to docs/proposals/images/design_api.jpg diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index cc467dcfb83..1f22a9c5431 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -23,7 +23,7 @@ We aim to develop a high-level API for tuning hyperparameters of LLMs. This API ## Design for API -![Design for API](../images/design_api.jpg) +![Design for API](images/design_api.jpg) ```python import kubeflow.katib as katib @@ -48,7 +48,6 @@ class KatibClient(object): resources_per_trial: Optional, num_workers: Optional, num_procs_per_worker: Optional, - resources_per_worker: Optional, retain_trials: Optional, env_per_trial: Optional, packages_to_install: Optional, @@ -75,7 +74,6 @@ class KatibClient(object): - resources_per_trial: Resources required per trial. - num_workers: Number of PyTorchJob workers for distributed jobs. - num_procs_per_worker: Number of processes per worker for distributed jobs. - - resources_per_worker: Resources allocated per worker. - retain_trials: Whether to retain trial resources after completion. - env_per_trial: Environment variables for worker containers. - packages_to_install: Additional Python packages to install. @@ -164,11 +162,6 @@ katib_client.tune( }, num_workers=4, num_procs_per_worker=2, - resources_per_worker={ - "gpu": 2, - "cpu": 5, - "memory": "10G", - } ) # Get the best hyperparameters From 7e8904ba35d1a9376edfe5b672313aec35d8f72f Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Mon, 17 Jun 2024 20:14:01 -0700 Subject: [PATCH 06/22] delete objective function and adjust the design of tune API Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 165 ++++++++---------- 1 file changed, 76 insertions(+), 89 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 1f22a9c5431..e464cb8769f 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -19,7 +19,7 @@ The rapid advancements and growing popularity of Large Language Models (LLMs) ha ## Goal -We aim to develop a high-level API for tuning hyperparameters of LLMs. This API will abstract infrastructure complexities within Kubernetes, enabling data scientists to easily optimize hyperparameters. It will leverage the train API for seamless integration of pretrained models and datasets from platforms like HuggingFace and S3. +Our goal is to develop a high-level API for tuning hyperparameters of LLMs that simplifies the process of hyperparameter optimization in Kubernetes. This API will seamlessly integrate with external platforms like HuggingFace and S3 for importing pretrained models and datasets. By specifying parameters for the training objective, trial configurations, and PyTorch worker configurations, the API will automate the creation of experiments and execution of trials. This abstraction of Kubernetes infrastructure complexities will enable data scientists to optimize hyperparameters efficiently and effectively. ## Design for API @@ -32,53 +32,54 @@ from kubeflow.katib import KatibClient class KatibClient(object): def tune( - name, - hp_space, - objective, - objective_metric_name, - objective_type, - algorithm_name, - namespace: Optional, - additional_metric_names: Optional, - objective_goal: Optional, - algorithm_setting: Optional, - max_trial_count: Optional, - max_failed_trial_count: Optional, - parallel_trial_count: Optional, - resources_per_trial: Optional, - num_workers: Optional, - num_procs_per_worker: Optional, - retain_trials: Optional, - env_per_trial: Optional, - packages_to_install: Optional, - pip_index_url: Optional, - base_image, # Not sure if we need it anymore + name: str, + namespace: Optional[str] = None, + model_provider_parameters = None, + dataset_provider_parameters = None, + trainer_parameters = None, + algorithm_name: str = "random", + algorithm_settings: Union[dict, List[models.V1beta1AlgorithmSetting], None] = None, + objective_metric_name: str = "eval_accuracy", + additional_metric_names: List[str] = [], + objective_type: str = "maximize", + objective_goal: float = None, + max_trial_count: int = None, + parallel_trial_count: int = None, + max_failed_trial_count: int = None, + resources_per_trial: Union[dict, client.V1ResourceRequirements, None] = None, + pytorch_config=katib.PyTorchConfig( + num_workers: int = 1, + num_procs_per_worker: int = 1, + ), + retain_trials: bool = False, + env_per_trial: Optional[Union[Dict[str, str], List[Union[client.V1EnvVar, client.V1EnvFromSource]]]] = None, + packages_to_install: List[str] = None, + pip_index_url: str = "https://pypi.org/simple", ): """ Initiates a hyperparameter tuning experiment in Katib. Parameters: - name: Name for the experiment. - - hp_space: Dictionary defining the hyperparameter search space. - - objective: Objective function to be optimized by Katib. + - namespace: Namespace for the experiment. Defaults to the namespace of the 'KatibClient' object. + - model_provider_parameters: Parameters for providing the model. Compatible with model providers like HuggingFace. + - dataset_provider_parameters: Parameters for providing the dataset. Compatible with dataset providers like HuggingFace or S3. + - trainer_parameters: Parameters for configuring the training process, including settings for hyperparameters search space. + - algorithm_name: Tuning algorithm name (e.g., 'random', 'bayesian'). + - algorithm_settings: Settings for the tuning algorithm. - objective_metric_name: Primary metric to optimize. - - objective_type: Optimization direction for the objective metric, "minimize" or "maximize". - - algorithm_name: Tuning algorithm name (e.g., 'random', 'bayesian'). - - namespace: Namespace for the experiment. Defaults to the namespace of the 'KatibClient' object. - additional_metric_names: List of additional metrics to collect. + - objective_type: Optimization direction for the objective metric, "minimize" or "maximize". - objective_goal: Desired value of the objective metric. - - algorithm_settings: Settings for the tuning algorithm. - max_trial_count: Maximum number of trials to run. - - max_failed_trial_count: Maximum number of allowed failed trials. - parallel_trial_count: Number of trials to run in parallel. + - max_failed_trial_count: Maximum number of allowed failed trials. - resources_per_trial: Resources required per trial. - - num_workers: Number of PyTorchJob workers for distributed jobs. - - num_procs_per_worker: Number of processes per worker for distributed jobs. + - pytorch_config: Configuration for PyTorch jobs, including number of workers and processes per worker. - retain_trials: Whether to retain trial resources after completion. - env_per_trial: Environment variables for worker containers. - packages_to_install: Additional Python packages to install. - pip_index_url: URL of the PyPI index for installing packages. - - base_image: Base Docker image for running the objective function. """ pass # Implementation logic for initiating the experiment ``` @@ -94,74 +95,60 @@ from kubeflow.storage_initializer.hugging_face import ( HuggingFaceDatasetParams, HuggingFaceTrainerParams, ) -from kubeflow.training import TrainingClient + import kubeflow.katib as katib from kubeflow.katib import KatibClient # Create a Katib client katib_client = KatibClient(namespace='kubeflow') -# Define an objective function leveraging the train API -def objective(exp_name): - result = TrainingClient().train( - name=exp_name, - # BERT model URI and type of Transformer to train it. - model_provider_parameters=HuggingFaceModelParams( - model_uri="hf://google-bert/bert-base-cased", - transformer_type=transformers.AutoModelForSequenceClassification, - ), - # Use 3000 samples from Yelp dataset. - dataset_provider_parameters=HuggingFaceDatasetParams( - repo_id="yelp_review_full", - split="train[:3000]", - ), - # Specify HuggingFace Trainer parameters. - trainer_parameters=HuggingFaceTrainerParams( - training_parameters=transformers.TrainingArguments( - output_dir="test_trainer", - save_strategy="no", - eval_strategy="epoch", - disable_tqdm=True, - log_level="info", - ), - # Set LoRA config to reduce number of trainable model parameters. - lora_config=LoraConfig( - r=8, - lora_alpha=8, - lora_dropout=0.1, - bias="none", - ), - ), - ) - return result.metrics - -# Define the hyperparameters search space -hp_space = { - "learning_rate": katib.search.double(min=1e-05, max=5e-05), - "per_device_train_batch_size": katib.search.int(min=8, max=64), - "num_train_epochs": katib.search.int(min=1, max=10), - "weight_decay": katib.search.double(min=0.0, max=1.0), - "lora_config.r": katib.search.int(min=8, max=32) -} - # Run the tuning Experiment exp_name = "llm-hp-optimization-test" katib_client.tune( - name=exp_name, - hp_space=hp_space, - objective=objective(exp_name), - objective_metric_name="eval_accuracy", - objective_type="maximize", - algorithm_name="random", - max_trial_count=50, - parallel_trial_count=2, - resources_per_trial={ + name = exp_name, + # BERT model URI and type of Transformer to train it. + model_provider_parameters = HuggingFaceModelParams( + model_uri = "hf://google-bert/bert-base-cased", + transformer_type = transformers.AutoModelForSequenceClassification, + ), + # Use 3000 samples from Yelp dataset. + dataset_provider_parameters = HuggingFaceDatasetParams( + repo_id = "yelp_review_full", + split = "train[:3000]", + ), + # Specify HuggingFace Trainer parameters. + trainer_parameters = HuggingFaceTrainerParams( + training_parameters = transformers.TrainingArguments( + output_dir = "test_trainer", + save_strategy = "no", + eval_strategy = "epoch", + disable_tqdm = True, + log_level = "info", + learning_rate = katib.search.double(min=1e-05, max=5e-05), + per_device_train_batch_size = katib.search.int(min=8, max=64), + num_train_epochs = katib.search.int(min=1, max=10), + weight_decay = katib.search.double(min=0.0, max=1.0), + ), + # Set LoRA config to reduce number of trainable model parameters. + lora_config = LoraConfig( + r = katib.search.int(min=8, max=32), + lora_alpha = 8, + lora_dropout = 0.1, + bias = "none", + ), + ), + objective_metric_name = "eval_accuracy", + objective_type = "maximize", + algorithm_name = "random", + max_trial_count = 50, + parallel_trial_count = 2, + resources_per_trial = { "gpu": 8, "cpu": 20, "memory": "40G", }, - num_workers=4, - num_procs_per_worker=2, + num_workers = 4, + num_procs_per_worker = 2, ) # Get the best hyperparameters @@ -170,9 +157,9 @@ best_hps = katib_client.get_optimal_hyperparameters(exp_name) ## Implementation -We will utilize the [train API](https://github.com/kubeflow/training-operator/blob/6ce4d57d699a76c3d043917bd0902c931f14080f/sdk/python/kubeflow/training/api/training_client.py#L96) from the Training Operator to create the objective function for hyperparameter optimization. This involves importing pretrained models and datasets from external platforms like HuggingFace and S3, and enabling seamless model training. The `tune` function will then automate the exploration of hyperparameter configurations to optimize LLM performance. +By passing the specified parameters, the `tune` function will automate hyperparameter optimization for LLMs. The implementation focuses on two parts: -**Model and Dataset Downloading**: The [storage_initializer](https://github.com/kubeflow/training-operator/tree/6ce4d57d699a76c3d043917bd0902c931f14080f/sdk/python/kubeflow/storage_initializer) in the Training Operator will manage downloading and storing pretrained models and datasets via a PersistentVolumeClaim (PVC). This volume will be shared across containers, ensuring efficient access to the pretrained model and dataset without redundant downloads. +**Model and Dataset Downloading**: We will leverage the [storage_initializer](https://github.com/kubeflow/training-operator/tree/master/sdk/python/kubeflow/storage_initializer) defined in the Training Python SDK for seamless integration of pretrained models and datasets from platforms like HuggingFace and S3. It will manage downloading and storing pretrained models and datasets via a PersistentVolumeClaim (PVC). This volume will be shared across containers, ensuring efficient access to the pretrained model and dataset without redundant downloads. **Experiment and Trial Configuration**: Similar to the [existing tune API](https://github.com/kubeflow/katib/blob/0d190b94373c2f8f6150bf17d6dfa3698f4b2961/sdk/python/v1beta1/kubeflow/katib/api/katib_client.py#L152), we will create an experiment that defines the objective metric, search space, optimization algorithm, etc. The Experiment orchestrates the hyperparameter optimization process, including generating Trials, tracking their results, and identifying the optimal hyperparameters. Each Trial, implemented as a Kubernetes Job, runs model training with specific hyperparameters. In the trial specification for PyTorchJob, we will define the init container, master, and worker containers, allowing effective distribution across workers. Trial results will be fed back into the Experiment for evaluation, which then generates new Trials to further explore the hyperparameter space or concludes the tuning process. From 36642439485d46e6279ded311cb4ac4067dc81e0 Mon Sep 17 00:00:00 2001 From: Hezhi Xie Date: Tue, 18 Jun 2024 16:12:32 -0700 Subject: [PATCH 07/22] Update docs/proposals/llm-hyperparameter-optimization-api.md Co-authored-by: Andrey Velichkevich Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index e464cb8769f..8e2aa8fc8a3 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -161,7 +161,7 @@ By passing the specified parameters, the `tune` function will automate hyperpara **Model and Dataset Downloading**: We will leverage the [storage_initializer](https://github.com/kubeflow/training-operator/tree/master/sdk/python/kubeflow/storage_initializer) defined in the Training Python SDK for seamless integration of pretrained models and datasets from platforms like HuggingFace and S3. It will manage downloading and storing pretrained models and datasets via a PersistentVolumeClaim (PVC). This volume will be shared across containers, ensuring efficient access to the pretrained model and dataset without redundant downloads. -**Experiment and Trial Configuration**: Similar to the [existing tune API](https://github.com/kubeflow/katib/blob/0d190b94373c2f8f6150bf17d6dfa3698f4b2961/sdk/python/v1beta1/kubeflow/katib/api/katib_client.py#L152), we will create an experiment that defines the objective metric, search space, optimization algorithm, etc. The Experiment orchestrates the hyperparameter optimization process, including generating Trials, tracking their results, and identifying the optimal hyperparameters. Each Trial, implemented as a Kubernetes Job, runs model training with specific hyperparameters. In the trial specification for PyTorchJob, we will define the init container, master, and worker containers, allowing effective distribution across workers. Trial results will be fed back into the Experiment for evaluation, which then generates new Trials to further explore the hyperparameter space or concludes the tuning process. +**Experiment and Trial Configuration**: Similar to the [existing tune API](https://github.com/kubeflow/katib/blob/0d190b94373c2f8f6150bf17d6dfa3698f4b2961/sdk/python/v1beta1/kubeflow/katib/api/katib_client.py#L152), we will create an experiment that defines the objective metric, search space, optimization algorithm, etc. The Experiment orchestrates the hyperparameter optimization process, including generating Trials, tracking their results, and identifying the optimal hyperparameters. Each Trial, implemented as a Kubernetes PyTorchJob, runs model training with specific hyperparameters. In the Trial specification for PyTorchJob, we will define the init container, master, and worker containers, allowing effective distribution across workers. Trial results will be fed back into the Experiment for evaluation, which then generates new Trials to further explore the hyperparameter space or concludes the tuning process. ## Advanced Functionalities From 2a4e3d34cb3039c03e1388b7de6f7344e02c7c0b Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Tue, 18 Jun 2024 20:40:10 -0700 Subject: [PATCH 08/22] Move 'Advanced Functionalities' to 'Non-Goals', and update 'Implementation' part Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 8e2aa8fc8a3..59fb4b4d608 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -3,11 +3,11 @@ - [HyperParameter Optimization API for LLM Fine-Tuning](#hyperparameter-optimization-api-for-llm-fine-tuning) * [Links](#links) * [Motivation](#motivation) - * [Goal](#goal) + * [Goals](#goals) + * [Non-Goals](#non-goals) * [Design for API](#design-for-api) + [Example](#example) * [Implementation](#implementation) - * [Advanced Functionalities](#advanced-functionalities) ## Links @@ -17,10 +17,17 @@ The rapid advancements and growing popularity of Large Language Models (LLMs) have driven an increased need for effective LLMOps in Kubernetes environments. To address this, we developed a [train API](https://www.kubeflow.org/docs/components/training/user-guides/fine-tuning/) within the Training Python SDK, simplifying the process of fine-tuning LLMs using distributed PyTorchJob workers. However, hyperparameter optimization remains a crucial yet labor-intensive task for enhancing model performance. Automating this tuning process through a dedicated API will facilitate efficient and scalable exploration of hyperparameters, ultimately improving model performance and reducing manual effort. -## Goal +## Goals Our goal is to develop a high-level API for tuning hyperparameters of LLMs that simplifies the process of hyperparameter optimization in Kubernetes. This API will seamlessly integrate with external platforms like HuggingFace and S3 for importing pretrained models and datasets. By specifying parameters for the training objective, trial configurations, and PyTorch worker configurations, the API will automate the creation of experiments and execution of trials. This abstraction of Kubernetes infrastructure complexities will enable data scientists to optimize hyperparameters efficiently and effectively. +## Non-Goals + +1. Incorporate early stopping strategy into the API to optimize training efficiency. +2. Expand support for distributed training in frameworks beyond PyTorch by leveraging their distributed training capabilities. +3. Support adding custom providers through configmap or CRD approach to enhance flexibility. +4. Enable users to deploy tuned models for inference within their applications or seamlessly integrate them into existing NLP pipelines for specialized tasks. + ## Design for API ![Design for API](images/design_api.jpg) @@ -125,7 +132,7 @@ katib_client.tune( disable_tqdm = True, log_level = "info", learning_rate = katib.search.double(min=1e-05, max=5e-05), - per_device_train_batch_size = katib.search.int(min=8, max=64), + per_device_train_batch_size = katib.search.categorical([8, 16, 32]), num_train_epochs = katib.search.int(min=1, max=10), weight_decay = katib.search.double(min=0.0, max=1.0), ), @@ -157,17 +164,24 @@ best_hps = katib_client.get_optimal_hyperparameters(exp_name) ## Implementation -By passing the specified parameters, the `tune` function will automate hyperparameter optimization for LLMs. The implementation focuses on two parts: +By passing the specified parameters, this API will automate hyperparameter optimization for LLMs. The implementation will focus on the following aspects: -**Model and Dataset Downloading**: We will leverage the [storage_initializer](https://github.com/kubeflow/training-operator/tree/master/sdk/python/kubeflow/storage_initializer) defined in the Training Python SDK for seamless integration of pretrained models and datasets from platforms like HuggingFace and S3. It will manage downloading and storing pretrained models and datasets via a PersistentVolumeClaim (PVC). This volume will be shared across containers, ensuring efficient access to the pretrained model and dataset without redundant downloads. +**Model and Dataset Management**: We will leverage the [storage_initializer](https://github.com/kubeflow/training-operator/tree/master/sdk/python/kubeflow/storage_initializer) from the Training Python SDK for seamless integration of pretrained models and datasets from platforms like HuggingFace and S3. This component manages downloading and storing pretrained models and datasets via a PersistentVolumeClaim (PVC), which is shared across containers, ensuring efficient access to the pretrained model and dataset without redundant downloads. -**Experiment and Trial Configuration**: Similar to the [existing tune API](https://github.com/kubeflow/katib/blob/0d190b94373c2f8f6150bf17d6dfa3698f4b2961/sdk/python/v1beta1/kubeflow/katib/api/katib_client.py#L152), we will create an experiment that defines the objective metric, search space, optimization algorithm, etc. The Experiment orchestrates the hyperparameter optimization process, including generating Trials, tracking their results, and identifying the optimal hyperparameters. Each Trial, implemented as a Kubernetes PyTorchJob, runs model training with specific hyperparameters. In the Trial specification for PyTorchJob, we will define the init container, master, and worker containers, allowing effective distribution across workers. Trial results will be fed back into the Experiment for evaluation, which then generates new Trials to further explore the hyperparameter space or concludes the tuning process. +**Hyperparameter Configuration**: Users specify training parameters and the hyperparameters to be optimized within `trainer_parameters`. The API will parse `trainer_parameters` to identify tunable hyperparameters marked with `katib.search` and also defined in Huggingface's [transformers.TrainingArguments](https://huggingface.co/docs/transformers/en/main_classes/trainer#transformers.TrainingArguments) or [peft.LoraConfig](https://huggingface.co/docs/peft/en/package_reference/lora#peft.LoraConfig). These identified tunable hyperparameters will then be configured in each Trial with different values for hyperparameter optimization. -## Advanced Functionalities +**Hyperparameter Optimization**: This API will create an Experiment that defines the search space for identified tunable hyperparameters, the objective metric, optimization algorithm, etc. The Experiment will orchestrate the hyperparameter tuning process, generating Trials for each configuratin. Each Trial will be implemented as a Kubernete PyTorchJob, with the `trialTemplate` specifying the exact values for hyperparameters. The `trialTemplate` will also define master and worker containers, facilitating effective resource distribution and parallel execution of Trials. Trial results will then be fed back to the Experiment, which will evaluate the outcomes to identify the optimal set of hyperparameters. -1. Incorporate early stopping strategy into the API to optimize training efficiency. -2. Expand support for distributed training in frameworks beyond PyTorch by leveraging their distributed training capabilities. -3. Support adding custom providers through configmap or CRD approach to enhance flexibility. -4. Enable users to deploy tuned models for inference within their applications or seamlessly integrate them into existing NLP pipelines for specialized tasks. + **Dependencies Update**: To reuse existing assets from the Training Python SDK and integrate packages from HuggingFace, dependencies will be added to the `setup.py` of the Katib Python SDK as follows: + +```python +setuptools.setup( + ...// Configurations of the package + extras_require={ + "kubeflow-training": ["kubeflow-training==1.7.0"], + "huggingface": ["transformers==4.38.0", "peft==0.3.0"], + }, +) +``` _#WIP_ \ No newline at end of file From 5ed301a6fa064c14e846fbea48c7aef91a2c4f37 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Tue, 18 Jun 2024 21:03:35 -0700 Subject: [PATCH 09/22] update 'pytorch_config' Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 59fb4b4d608..3adc59c6d90 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -53,10 +53,10 @@ class KatibClient(object): max_trial_count: int = None, parallel_trial_count: int = None, max_failed_trial_count: int = None, - resources_per_trial: Union[dict, client.V1ResourceRequirements, None] = None, - pytorch_config=katib.PyTorchConfig( + pytorch_config = katib.PyTorchConfig( num_workers: int = 1, num_procs_per_worker: int = 1, + resources_per_worker: Union[dict, client.V1ResourceRequirements, None] = None, ), retain_trials: bool = False, env_per_trial: Optional[Union[Dict[str, str], List[Union[client.V1EnvVar, client.V1EnvFromSource]]]] = None, @@ -81,8 +81,7 @@ class KatibClient(object): - max_trial_count: Maximum number of trials to run. - parallel_trial_count: Number of trials to run in parallel. - max_failed_trial_count: Maximum number of allowed failed trials. - - resources_per_trial: Resources required per trial. - - pytorch_config: Configuration for PyTorch jobs, including number of workers and processes per worker. + - pytorch_config: Configuration for PyTorch jobs, including number of workers, processes per worker and resources per worker. - retain_trials: Whether to retain trial resources after completion. - env_per_trial: Environment variables for worker containers. - packages_to_install: Additional Python packages to install. @@ -149,13 +148,15 @@ katib_client.tune( algorithm_name = "random", max_trial_count = 50, parallel_trial_count = 2, - resources_per_trial = { - "gpu": 8, - "cpu": 20, - "memory": "40G", - }, - num_workers = 4, - num_procs_per_worker = 2, + pytorch_config = katib.PyTorchConfig( + num_workers = 4, + num_procs_per_worker = 2, + resources_per_worker = { + "gpu": 2, + "cpu": 5, + "memory": "10G", + }, + ), ) # Get the best hyperparameters From 77624148bc09e84e38546f72994c44b63f5faad6 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Mon, 24 Jun 2024 14:37:58 -0700 Subject: [PATCH 10/22] change the name of 'pytorch_config' to 'resources_per_trial' Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 3adc59c6d90..87e91619069 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -53,11 +53,11 @@ class KatibClient(object): max_trial_count: int = None, parallel_trial_count: int = None, max_failed_trial_count: int = None, - pytorch_config = katib.PyTorchConfig( + resources_per_trial = { num_workers: int = 1, num_procs_per_worker: int = 1, resources_per_worker: Union[dict, client.V1ResourceRequirements, None] = None, - ), + }, retain_trials: bool = False, env_per_trial: Optional[Union[Dict[str, str], List[Union[client.V1EnvVar, client.V1EnvFromSource]]]] = None, packages_to_install: List[str] = None, @@ -81,7 +81,10 @@ class KatibClient(object): - max_trial_count: Maximum number of trials to run. - parallel_trial_count: Number of trials to run in parallel. - max_failed_trial_count: Maximum number of allowed failed trials. - - pytorch_config: Configuration for PyTorch jobs, including number of workers, processes per worker and resources per worker. + - resources_per_trial: Resources assigned to per trial. Since the "tune" API now supports distributed training in PyTorch, you can specify the following parameters: + - num_workers: Number of PyTorchJob workers. + - num_procs_per_worker: Number of processes per PyTorchJob worker. + - resources_per_worker: Resources assigned to per PyTorchJob worker container. - retain_trials: Whether to retain trial resources after completion. - env_per_trial: Environment variables for worker containers. - packages_to_install: Additional Python packages to install. @@ -148,7 +151,7 @@ katib_client.tune( algorithm_name = "random", max_trial_count = 50, parallel_trial_count = 2, - pytorch_config = katib.PyTorchConfig( + resources_per_trial = { num_workers = 4, num_procs_per_worker = 2, resources_per_worker = { @@ -156,7 +159,7 @@ katib_client.tune( "cpu": 5, "memory": "10G", }, - ), + }, ) # Get the best hyperparameters From b3433839ac57c307a27a7045d76ae9cde67daa50 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Mon, 24 Jun 2024 14:43:51 -0700 Subject: [PATCH 11/22] adjust format Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 87e91619069..dd3f23eb527 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -82,9 +82,9 @@ class KatibClient(object): - parallel_trial_count: Number of trials to run in parallel. - max_failed_trial_count: Maximum number of allowed failed trials. - resources_per_trial: Resources assigned to per trial. Since the "tune" API now supports distributed training in PyTorch, you can specify the following parameters: - - num_workers: Number of PyTorchJob workers. - - num_procs_per_worker: Number of processes per PyTorchJob worker. - - resources_per_worker: Resources assigned to per PyTorchJob worker container. + - num_workers: Number of PyTorchJob workers. + - num_procs_per_worker: Number of processes per PyTorchJob worker. + - resources_per_worker: Resources assigned to per PyTorchJob worker container. - retain_trials: Whether to retain trial resources after completion. - env_per_trial: Environment variables for worker containers. - packages_to_install: Additional Python packages to install. From dc755178d666b8e20b35e218fb279d69b9c3168d Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Mon, 24 Jun 2024 14:45:44 -0700 Subject: [PATCH 12/22] adjust format Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index dd3f23eb527..6cafa6331bf 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -70,25 +70,25 @@ class KatibClient(object): - name: Name for the experiment. - namespace: Namespace for the experiment. Defaults to the namespace of the 'KatibClient' object. - model_provider_parameters: Parameters for providing the model. Compatible with model providers like HuggingFace. - - dataset_provider_parameters: Parameters for providing the dataset. Compatible with dataset providers like HuggingFace or S3. - - trainer_parameters: Parameters for configuring the training process, including settings for hyperparameters search space. + - dataset_provider_parameters: Parameters for providing the dataset. Compatible with dataset providers like HuggingFace or S3. + - trainer_parameters: Parameters for configuring the training process, including settings for hyperparameters search space. - algorithm_name: Tuning algorithm name (e.g., 'random', 'bayesian'). - algorithm_settings: Settings for the tuning algorithm. - - objective_metric_name: Primary metric to optimize. + - objective_metric_name: Primary metric to optimize. - additional_metric_names: List of additional metrics to collect. - - objective_type: Optimization direction for the objective metric, "minimize" or "maximize". + - objective_type: Optimization direction for the objective metric, "minimize" or "maximize". - objective_goal: Desired value of the objective metric. - - max_trial_count: Maximum number of trials to run. - - parallel_trial_count: Number of trials to run in parallel. + - max_trial_count: Maximum number of trials to run. + - parallel_trial_count: Number of trials to run in parallel. - max_failed_trial_count: Maximum number of allowed failed trials. - resources_per_trial: Resources assigned to per trial. Since the "tune" API now supports distributed training in PyTorch, you can specify the following parameters: - - num_workers: Number of PyTorchJob workers. - - num_procs_per_worker: Number of processes per PyTorchJob worker. - - resources_per_worker: Resources assigned to per PyTorchJob worker container. - - retain_trials: Whether to retain trial resources after completion. + - num_workers: Number of PyTorchJob workers. + - num_procs_per_worker: Number of processes per PyTorchJob worker. + - resources_per_worker: Resources assigned to per PyTorchJob worker container. + - retain_trials: Whether to retain trial resources after completion. - env_per_trial: Environment variables for worker containers. - - packages_to_install: Additional Python packages to install. - - pip_index_url: URL of the PyPI index for installing packages. + - packages_to_install: Additional Python packages to install. + - pip_index_url: URL of the PyPI index for installing packages. """ pass # Implementation logic for initiating the experiment ``` From 8346548e8d983589e13dd98cc882156eb45df8db Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Mon, 24 Jun 2024 14:47:18 -0700 Subject: [PATCH 13/22] adjust format Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 6cafa6331bf..8e45a253204 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -67,7 +67,7 @@ class KatibClient(object): Initiates a hyperparameter tuning experiment in Katib. Parameters: - - name: Name for the experiment. + - name: Name for the experiment. - namespace: Namespace for the experiment. Defaults to the namespace of the 'KatibClient' object. - model_provider_parameters: Parameters for providing the model. Compatible with model providers like HuggingFace. - dataset_provider_parameters: Parameters for providing the dataset. Compatible with dataset providers like HuggingFace or S3. From bd82dca4da13ecc63f7f15b8e2a5010dba55e8cc Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Fri, 28 Jun 2024 00:20:48 -0700 Subject: [PATCH 14/22] update implementation part and the type of 'resources_per_trial' Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 58 ++++++++++++++++--- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 8e45a253204..cb88f7f9d20 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -53,11 +53,11 @@ class KatibClient(object): max_trial_count: int = None, parallel_trial_count: int = None, max_failed_trial_count: int = None, - resources_per_trial = { + resources_per_trial = models.DistributedResources( num_workers: int = 1, num_procs_per_worker: int = 1, resources_per_worker: Union[dict, client.V1ResourceRequirements, None] = None, - }, + ), retain_trials: bool = False, env_per_trial: Optional[Union[Dict[str, str], List[Union[client.V1EnvVar, client.V1EnvFromSource]]]] = None, packages_to_install: List[str] = None, @@ -151,7 +151,7 @@ katib_client.tune( algorithm_name = "random", max_trial_count = 50, parallel_trial_count = 2, - resources_per_trial = { + resources_per_trial = DistributedResources( num_workers = 4, num_procs_per_worker = 2, resources_per_worker = { @@ -159,7 +159,7 @@ katib_client.tune( "cpu": 5, "memory": "10G", }, - }, + ), ) # Get the best hyperparameters @@ -172,7 +172,52 @@ By passing the specified parameters, this API will automate hyperparameter optim **Model and Dataset Management**: We will leverage the [storage_initializer](https://github.com/kubeflow/training-operator/tree/master/sdk/python/kubeflow/storage_initializer) from the Training Python SDK for seamless integration of pretrained models and datasets from platforms like HuggingFace and S3. This component manages downloading and storing pretrained models and datasets via a PersistentVolumeClaim (PVC), which is shared across containers, ensuring efficient access to the pretrained model and dataset without redundant downloads. -**Hyperparameter Configuration**: Users specify training parameters and the hyperparameters to be optimized within `trainer_parameters`. The API will parse `trainer_parameters` to identify tunable hyperparameters marked with `katib.search` and also defined in Huggingface's [transformers.TrainingArguments](https://huggingface.co/docs/transformers/en/main_classes/trainer#transformers.TrainingArguments) or [peft.LoraConfig](https://huggingface.co/docs/peft/en/package_reference/lora#peft.LoraConfig). These identified tunable hyperparameters will then be configured in each Trial with different values for hyperparameter optimization. +**Hyperparameter Configuration**: Users specify training parameters and the hyperparameters to be optimized within `trainer_parameters`. The API will first traverse `trainer_parameters.training_parameters` and `trainer_parameters.lora_config` to identify tunable hyperparameters and set up their values for the Experiment and Trials. These parameters are then passed as `args` to the container spec of workers. + +```python +# Traverse and set up hyperparameters +input_params = {} +experiment_params = [] +trial_params = [] + +training_args = trainer_parameters.training_parameters +for p_name, p_value in training_args.to_dict().items(): + if not hasattr(training_args, p_name): + logger.warning(f"Training parameter {p_name} is not supported by the current transformer.") + continue + if isinstance(p_value, models.V1beta1ParameterSpec): + value = f"${{trialParameters.{p_name}}}" + setattr(training_args, p_name, value) + p_value.name = p_name + experiment_params.append(p_value) + trial_params.append(models.V1beta1TrialParameterSpec(name=p_name, reference=p_name)) + elif p_value is not None: + value = type(old_attr)(p_value) + setattr(training_args, p_name, value) +input_params['training_args'] = training_args + +# Note: Repeat similar logic for `lora_config` + +# create container spec of worker +container_spec = client.V1Container( + ... + args=[ + "--model_uri", + model_provider_parameters.model_uri, + "--transformer_type", + model_provider_parameters.transformer_type.__name__, + "--model_dir", + "REPLACE_WITH_ACTUAL_MODEL_PATH", + "--dataset_dir", + "REPLACE_WITH_ACTUAL_DATASET_PATH", + "--lora_config", + json.dumps(input_params['lora_config'].__dict__, cls=utils.SetEncoder), + "--training_parameters", + json.dumps(input_params['training_args'].to_dict()), + ], + ... +) +``` **Hyperparameter Optimization**: This API will create an Experiment that defines the search space for identified tunable hyperparameters, the objective metric, optimization algorithm, etc. The Experiment will orchestrate the hyperparameter tuning process, generating Trials for each configuratin. Each Trial will be implemented as a Kubernete PyTorchJob, with the `trialTemplate` specifying the exact values for hyperparameters. The `trialTemplate` will also define master and worker containers, facilitating effective resource distribution and parallel execution of Trials. Trial results will then be fed back to the Experiment, which will evaluate the outcomes to identify the optimal set of hyperparameters. @@ -182,8 +227,7 @@ By passing the specified parameters, this API will automate hyperparameter optim setuptools.setup( ...// Configurations of the package extras_require={ - "kubeflow-training": ["kubeflow-training==1.7.0"], - "huggingface": ["transformers==4.38.0", "peft==0.3.0"], + "huggingface": ["kubeflow-training[huggingface]==1.8.0rc1"], }, ) ``` From 5bcfadb737833821b4e0d734ebca6da692d02b36 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Fri, 28 Jun 2024 00:25:30 -0700 Subject: [PATCH 15/22] update the example Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index cb88f7f9d20..777eaef089f 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -156,7 +156,7 @@ katib_client.tune( num_procs_per_worker = 2, resources_per_worker = { "gpu": 2, - "cpu": 5, + "cpu": 1, "memory": "10G", }, ), From c69bf0f292e03d72d5bbeab18343d0f08265082b Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Tue, 2 Jul 2024 17:03:31 -0700 Subject: [PATCH 16/22] update 'resources_per_trial'& add one more option for defining objective function Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 777eaef089f..18bb31594ef 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -39,11 +39,19 @@ from kubeflow.katib import KatibClient class KatibClient(object): def tune( + self, name: str, namespace: Optional[str] = None, - model_provider_parameters = None, - dataset_provider_parameters = None, - trainer_parameters = None, + model_provider_parameters: Optional[kubeflow.storage_initializer.hugging_face.HuggingFaceModelParams] = None, + dataset_provider_parameters: Optional[kubeflow.storage_initializer.hugging_face.HuggingFaceDatasetParams, kubeflow.storage_initializer.s3.S3DatasetParams] = None, + trainer_parameters: Union[kubeflow.storage_initializer.HuggingFaceTrainerParams, Dict[str, Any]] = None, + storage_config: Dict[str, Optional[Union[str, List[str]]]] = { + "size": constants.PVC_DEFAULT_SIZE, + "storage_class": None, + "access_modes": constants.PVC_DEFAULT_ACCESS_MODES, + }, + objective: Optional[Callable] = None, + base_image: Optional[str] = None, algorithm_name: str = "random", algorithm_settings: Union[dict, List[models.V1beta1AlgorithmSetting], None] = None, objective_metric_name: str = "eval_accuracy", @@ -53,11 +61,7 @@ class KatibClient(object): max_trial_count: int = None, parallel_trial_count: int = None, max_failed_trial_count: int = None, - resources_per_trial = models.DistributedResources( - num_workers: int = 1, - num_procs_per_worker: int = 1, - resources_per_worker: Union[dict, client.V1ResourceRequirements, None] = None, - ), + resources_per_trial = Union[dict, client.V1ResourceRequirements, types.TrainerResources, None] = None, retain_trials: bool = False, env_per_trial: Optional[Union[Dict[str, str], List[Union[client.V1EnvVar, client.V1EnvFromSource]]]] = None, packages_to_install: List[str] = None, @@ -65,6 +69,9 @@ class KatibClient(object): ): """ Initiates a hyperparameter tuning experiment in Katib. + Model, dataset and parameters can be configured using one of the following options: + - Using the Storage Initializer: Specify `model_provider_parameters`, `dataset_provider_parameters`, and `trainer_parameters`. This option downloads models and datasets from external platforms like HuggingFace and S3, and utilizes `Trainer.train()` in HuggingFace to train the model. + - Defining a custom objective function: Specify the `objective` parameter to define your own objective function, and use the `base_image` parameter to execute the objective function. Parameters: - name: Name for the experiment. @@ -72,6 +79,9 @@ class KatibClient(object): - model_provider_parameters: Parameters for providing the model. Compatible with model providers like HuggingFace. - dataset_provider_parameters: Parameters for providing the dataset. Compatible with dataset providers like HuggingFace or S3. - trainer_parameters: Parameters for configuring the training process, including settings for hyperparameters search space. + - storage_config: Configuration for Storage Initializer PVC to download pre-trained model and dataset. + - objective: Objective function that Katib uses to train the model. + - base_image: Image to use when executing the objective function. - algorithm_name: Tuning algorithm name (e.g., 'random', 'bayesian'). - algorithm_settings: Settings for the tuning algorithm. - objective_metric_name: Primary metric to optimize. @@ -81,10 +91,12 @@ class KatibClient(object): - max_trial_count: Maximum number of trials to run. - parallel_trial_count: Number of trials to run in parallel. - max_failed_trial_count: Maximum number of allowed failed trials. - - resources_per_trial: Resources assigned to per trial. Since the "tune" API now supports distributed training in PyTorch, you can specify the following parameters: - - num_workers: Number of PyTorchJob workers. - - num_procs_per_worker: Number of processes per PyTorchJob worker. - - resources_per_worker: Resources assigned to per PyTorchJob worker container. + - resources_per_trial: Resources assigned to per trial, which can be specified using one of the following options: + - Non-distributed Training: Specify a kubernetes.client.V1ResourceRequirements object or a dicitionary that includes one or more of the following keys: `cpu`, `memory`, or `gpu` (other keys will be ignored). + - Distributed Training in Pytorch: Specify a types.TrainerResources, which includes the following parameters: + - num_workers: Number of PyTorchJob workers. + - num_procs_per_worker: Number of processes per PyTorchJob worker. + - resources_per_worker: Resources assigned to per PyTorchJob worker container, specified as either a kubernetes.client.V1ResourceRequirements object or a dicitionary that includes one or more of the following keys: `cpu`, `memory`, or `gpu` (other keys will be ignored). - retain_trials: Whether to retain trial resources after completion. - env_per_trial: Environment variables for worker containers. - packages_to_install: Additional Python packages to install. @@ -151,7 +163,7 @@ katib_client.tune( algorithm_name = "random", max_trial_count = 50, parallel_trial_count = 2, - resources_per_trial = DistributedResources( + resources_per_trial = types.TrainerResources( num_workers = 4, num_procs_per_worker = 2, resources_per_worker = { @@ -159,7 +171,8 @@ katib_client.tune( "cpu": 1, "memory": "10G", }, - ), + ), + # For non-distributed training in PyTorch, specify resources like this: resources_per_trial = {"gpu": 2, "cpu": 10, "memory": "20G"} ) # Get the best hyperparameters From 1b499b40a604f77d749c94805bd6aabd34cb2bcd Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Wed, 3 Jul 2024 14:47:15 -0700 Subject: [PATCH 17/22] fix typo errors Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 18bb31594ef..abb289d1ab3 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -42,9 +42,9 @@ class KatibClient(object): self, name: str, namespace: Optional[str] = None, - model_provider_parameters: Optional[kubeflow.storage_initializer.hugging_face.HuggingFaceModelParams] = None, - dataset_provider_parameters: Optional[kubeflow.storage_initializer.hugging_face.HuggingFaceDatasetParams, kubeflow.storage_initializer.s3.S3DatasetParams] = None, - trainer_parameters: Union[kubeflow.storage_initializer.HuggingFaceTrainerParams, Dict[str, Any]] = None, + model_provider_parameters: Optional[HuggingFaceModelParams] = None, + dataset_provider_parameters: Optional[Union[HuggingFaceDatasetParams, S3DatasetParams]] = None, + trainer_parameters: Union[HuggingFaceTrainerParams, Dict[str, Any]] = None, storage_config: Dict[str, Optional[Union[str, List[str]]]] = { "size": constants.PVC_DEFAULT_SIZE, "storage_class": None, From 002e0ead0f5b5c523160b9547c8a648324347a0a Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Mon, 15 Jul 2024 15:30:13 -0700 Subject: [PATCH 18/22] delete 'WIP' tag Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index abb289d1ab3..19b12d1d1b7 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -244,5 +244,3 @@ setuptools.setup( }, ) ``` - -_#WIP_ \ No newline at end of file From 54979d7dbca3a1e59bd550ac852f966c339e30f5 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Sun, 21 Jul 2024 00:35:15 -0700 Subject: [PATCH 19/22] update example Signed-off-by: helenxie-bit --- .../llm-hyperparameter-optimization-api.md | 55 ++++++++----------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 19b12d1d1b7..dab99f67f5e 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -108,6 +108,9 @@ class KatibClient(object): ### Example ```python +import kubeflow.katib as katib +from kubeflow.katib import KatibClient + import transformers from peft import LoraConfig @@ -117,15 +120,12 @@ from kubeflow.storage_initializer.hugging_face import ( HuggingFaceTrainerParams, ) -import kubeflow.katib as katib -from kubeflow.katib import KatibClient - -# Create a Katib client -katib_client = KatibClient(namespace='kubeflow') +# Create a Katib client. +cl = KatibClient(namespace="kubeflow") -# Run the tuning Experiment -exp_name = "llm-hp-optimization-test" -katib_client.tune( +# Run the tuning experiment. +exp_name = "llm-experiment1" +cl.tune( name = exp_name, # BERT model URI and type of Transformer to train it. model_provider_parameters = HuggingFaceModelParams( @@ -135,20 +135,17 @@ katib_client.tune( # Use 3000 samples from Yelp dataset. dataset_provider_parameters = HuggingFaceDatasetParams( repo_id = "yelp_review_full", - split = "train[:3000]", + split = "train[:100]", ), # Specify HuggingFace Trainer parameters. trainer_parameters = HuggingFaceTrainerParams( training_parameters = transformers.TrainingArguments( - output_dir = "test_trainer", + output_dir = "test_tune_api", save_strategy = "no", - eval_strategy = "epoch", - disable_tqdm = True, - log_level = "info", learning_rate = katib.search.double(min=1e-05, max=5e-05), - per_device_train_batch_size = katib.search.categorical([8, 16, 32]), - num_train_epochs = katib.search.int(min=1, max=10), - weight_decay = katib.search.double(min=0.0, max=1.0), + num_train_epochs=3, + # If you are using CPU instead of GPU, please set: no_cuda=True, + # If you are using CPU instead of GPU, please set: use_cpu=True, ), # Set LoRA config to reduce number of trainable model parameters. lora_config = LoraConfig( @@ -158,25 +155,21 @@ katib_client.tune( bias = "none", ), ), - objective_metric_name = "eval_accuracy", - objective_type = "maximize", + objective_metric_name = "train_loss", + objective_type = "minimize", algorithm_name = "random", - max_trial_count = 50, + max_trial_count = 10, parallel_trial_count = 2, - resources_per_trial = types.TrainerResources( - num_workers = 4, - num_procs_per_worker = 2, - resources_per_worker = { - "gpu": 2, - "cpu": 1, - "memory": "10G", - }, - ), - # For non-distributed training in PyTorch, specify resources like this: resources_per_trial = {"gpu": 2, "cpu": 10, "memory": "20G"} + resources_per_trial={ + "gpu": "2", + "cpu": "4", + "memory": "10G", + }, + # For distribued training, please specify `resources_per_trial` using `types.TrainerResources` (To be implemented). ) -# Get the best hyperparameters -best_hps = katib_client.get_optimal_hyperparameters(exp_name) +# Get the best hyperparameters. +print(cl.get_optimal_hyperparameters(exp_name)) ``` ## Implementation From 1526a9d7846afdc4bb7b52c0c126d487add9b1fe Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Sun, 21 Jul 2024 00:37:41 -0700 Subject: [PATCH 20/22] update example Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index dab99f67f5e..aca41386ab8 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -135,7 +135,7 @@ cl.tune( # Use 3000 samples from Yelp dataset. dataset_provider_parameters = HuggingFaceDatasetParams( repo_id = "yelp_review_full", - split = "train[:100]", + split = "train[:3000]", ), # Specify HuggingFace Trainer parameters. trainer_parameters = HuggingFaceTrainerParams( From 1a2881c612c8263e615f4264baffafee138b48aa Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Tue, 23 Jul 2024 15:19:50 -0700 Subject: [PATCH 21/22] update example Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index aca41386ab8..0a63bc3c989 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -144,8 +144,6 @@ cl.tune( save_strategy = "no", learning_rate = katib.search.double(min=1e-05, max=5e-05), num_train_epochs=3, - # If you are using CPU instead of GPU, please set: no_cuda=True, - # If you are using CPU instead of GPU, please set: use_cpu=True, ), # Set LoRA config to reduce number of trainable model parameters. lora_config = LoraConfig( @@ -168,6 +166,9 @@ cl.tune( # For distribued training, please specify `resources_per_trial` using `types.TrainerResources` (To be implemented). ) +# Wait until Katib Experiment is complete +cl.wait_for_experiment_condition(name=exp_name) + # Get the best hyperparameters. print(cl.get_optimal_hyperparameters(exp_name)) ``` From dac1dc3b211185d964b9695fe621d23ecc6aedb1 Mon Sep 17 00:00:00 2001 From: helenxie-bit Date: Tue, 23 Jul 2024 15:21:55 -0700 Subject: [PATCH 22/22] fix format Signed-off-by: helenxie-bit --- docs/proposals/llm-hyperparameter-optimization-api.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/proposals/llm-hyperparameter-optimization-api.md b/docs/proposals/llm-hyperparameter-optimization-api.md index 0a63bc3c989..01f74f9a2fd 100644 --- a/docs/proposals/llm-hyperparameter-optimization-api.md +++ b/docs/proposals/llm-hyperparameter-optimization-api.md @@ -158,11 +158,11 @@ cl.tune( algorithm_name = "random", max_trial_count = 10, parallel_trial_count = 2, - resources_per_trial={ + resources_per_trial={ "gpu": "2", - "cpu": "4", - "memory": "10G", - }, + "cpu": "4", + "memory": "10G", + }, # For distribued training, please specify `resources_per_trial` using `types.TrainerResources` (To be implemented). )