From fb95a9cc6ebc5ca7ae552ee2ce124e6c1a55492f Mon Sep 17 00:00:00 2001 From: Yu Fan Date: Sat, 3 Aug 2024 03:35:33 +0800 Subject: [PATCH] add: Joint Inference paradigm and cloud-edge collaborative inference example Signed-off-by: Yu Fan add: sedna 0.6.0.1 and move 0.4.1 to third_party-bk Signed-off-by: Yu Fan --- core/common/constant.py | 9 + core/common/utils.py | 6 +- .../visualization/visualization.py | 3 +- .../testcasecontroller/algorithm/algorithm.py | 6 +- .../algorithm/module/module.py | 17 +- .../algorithm/paradigm/__init__.py | 1 + .../algorithm/paradigm/base.py | 18 +- .../paradigm/joint_inference/__init__.py | 16 + .../joint_inference/joint_inference.py | 188 ++++++++++ core/testcasecontroller/metrics/metrics.py | 1 - core/testcasecontroller/testcase/testcase.py | 1 - core/testenvmanager/dataset/dataset.py | 30 +- core/testenvmanager/testenv/testenv.py | 3 +- .../README.md | 337 ++++++++++++++++++ .../assets/Oracle Router Demo.png | Bin 0 -> 196614 bytes .../assets/image-20240926143857223.png | Bin 0 -> 105514 bytes .../benchmarkingjob.yaml | 70 ++++ .../performance-cost-plot.py | 61 ++++ .../requirements.txt | 5 + .../query-routing/cloud_model.py | 71 ++++ .../query-routing/data_processor.py | 39 ++ .../query-routing/edge_model.py | 97 +++++ .../query-routing/hard_sample_mining.py | 253 +++++++++++++ .../query-routing/models/__init__.py | 4 + .../query-routing/models/api_llm.py | 107 ++++++ .../query-routing/models/base_llm.py | 321 +++++++++++++++++ .../query-routing/models/huggingface_llm.py | 133 +++++++ .../query-routing/models/vllm_llm.py | 140 ++++++++ .../query-routing/test_queryrouting.yaml | 97 +++++ .../testenv/accuracy.py | 59 +++ .../testenv/cloud_completion_tokens.py | 39 ++ .../testenv/cloud_prompt_tokens.py | 39 ++ .../testenv/edge_completion_tokens.py | 40 +++ .../testenv/edge_prompt_tokens.py | 40 +++ .../testenv/edge_ratio.py | 42 +++ .../testenv/internal_token_latency.py | 41 +++ .../testenv/result_parser.py | 92 +++++ .../testenv/testenv.yaml | 39 ++ .../testenv/throughput.py | 41 +++ .../testenv/time_to_first_token.py | 39 ++ .../sedna-0.4.1-py3-none-any.whl | Bin .../sedna-0.6.0.1-py3-none-any.whl | Bin 0 -> 177655 bytes requirements.txt | 6 +- 43 files changed, 2520 insertions(+), 31 deletions(-) create mode 100644 core/testcasecontroller/algorithm/paradigm/joint_inference/__init__.py create mode 100644 core/testcasecontroller/algorithm/paradigm/joint_inference/joint_inference.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/README.md create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/assets/Oracle Router Demo.png create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/assets/image-20240926143857223.png create mode 100755 examples/cloud-edge-collaborative-inference-for-llm/benchmarkingjob.yaml create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/performance-cost-plot.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/requirements.txt create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/cloud_model.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/data_processor.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/edge_model.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/hard_sample_mining.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/__init__.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/api_llm.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/base_llm.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/huggingface_llm.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/vllm_llm.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/test_queryrouting.yaml create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/accuracy.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_completion_tokens.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_prompt_tokens.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_completion_tokens.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_prompt_tokens.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_ratio.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/internal_token_latency.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/result_parser.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/testenv.yaml create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/throughput.py create mode 100644 examples/cloud-edge-collaborative-inference-for-llm/testenv/time_to_first_token.py rename examples/resources/{third_party => third_party-bk}/sedna-0.4.1-py3-none-any.whl (100%) create mode 100644 examples/resources/third_party/sedna-0.6.0.1-py3-none-any.whl diff --git a/core/common/constant.py b/core/common/constant.py index d8723ae4..95938014 100644 --- a/core/common/constant.py +++ b/core/common/constant.py @@ -27,6 +27,7 @@ class DatasetFormat(Enum): TXT = "txt" JSON = "json" JSONL = "jsonl" + JSONFORLLM = "jsonforllm" class ParadigmType(Enum): @@ -40,6 +41,7 @@ class ParadigmType(Enum): LIFELONG_LEARNING = "lifelonglearning" FEDERATED_LEARNING = "federatedlearning" FEDERATED_CLASS_INCREMENTAL_LEARNING = "federatedclassincrementallearning" + JOINT_INFERENCE = "jointinference" class ModuleType(Enum): @@ -49,6 +51,13 @@ class ModuleType(Enum): BASEMODEL = "basemodel" + # JOINT INFERENCE + EDGEMODEL = "edgemodel" + CLOUDMODEL = "cloudmodel" + + # Dataset Preprocessor + DATA_PROCESSOR = "dataset_processor" + # HEM HARD_EXAMPLE_MINING = "hard_example_mining" diff --git a/core/common/utils.py b/core/common/utils.py index 38b60526..e7ad6522 100644 --- a/core/common/utils.py +++ b/core/common/utils.py @@ -36,8 +36,12 @@ def is_local_dir(url): def get_file_format(url): """Get file format of the url.""" - return os.path.splitext(url)[-1][1:] + # Check if the url + if os.path.basename(url) == "metadata.json": + return "jsonforllm" + # Check if the url + return os.path.splitext(url)[-1][1:] def parse_kwargs(func, **kwargs): """Get valid parameters of the func in kwargs.""" diff --git a/core/storymanager/visualization/visualization.py b/core/storymanager/visualization/visualization.py index 74cfa683..49a2c128 100644 --- a/core/storymanager/visualization/visualization.py +++ b/core/storymanager/visualization/visualization.py @@ -23,7 +23,7 @@ def print_table(rank_file): """ print rank of the test""" with open(rank_file, "r", encoding="utf-8") as file: - table = from_csv(file) + table = from_csv(file, delimiter=",") print(table) def draw_heatmap_picture(output, title, matrix): @@ -40,7 +40,6 @@ def draw_heatmap_picture(output, title, matrix): plt.title(title, fontsize=15) plt.colorbar(format='%.2f') output_dir = os.path.join(output, f"output/{title}-heatmap.png") - #print(output_dir) plt.savefig(output_dir) plt.show() diff --git a/core/testcasecontroller/algorithm/algorithm.py b/core/testcasecontroller/algorithm/algorithm.py index d933eac8..51d9d5c2 100644 --- a/core/testcasecontroller/algorithm/algorithm.py +++ b/core/testcasecontroller/algorithm/algorithm.py @@ -25,7 +25,8 @@ MultiedgeInference, LifelongLearning, FederatedLearning, - FederatedClassIncrementalLearning + FederatedClassIncrementalLearning, + JointInference ) from core.testcasecontroller.generation_assistant import get_full_combinations @@ -123,6 +124,9 @@ def paradigm(self, workspace: str, **kwargs): if self.paradigm_type == ParadigmType.FEDERATED_CLASS_INCREMENTAL_LEARNING.value: return FederatedClassIncrementalLearning(workspace, **config) + if self.paradigm_type == ParadigmType.JOINT_INFERENCE.value: + return JointInference(workspace, **config) + return None def _check_fields(self): diff --git a/core/testcasecontroller/algorithm/module/module.py b/core/testcasecontroller/algorithm/module/module.py index 1772725e..464bfe56 100644 --- a/core/testcasecontroller/algorithm/module/module.py +++ b/core/testcasecontroller/algorithm/module/module.py @@ -72,6 +72,7 @@ def _check_fields(self): if not isinstance(self.url, str): raise ValueError(f"module url({self.url}) must be string type.") + #pylint: disable=too-many-branches def get_module_instance(self, module_type): """ get function of algorithm module by using module type @@ -86,7 +87,6 @@ def get_module_instance(self, module_type): function """ - print(f'hyperparameters_list: {self.hyperparameters_list}') class_factory_type = ClassType.GENERAL if module_type in [ModuleType.HARD_EXAMPLE_MINING.value]: class_factory_type = ClassType.HEM @@ -110,13 +110,11 @@ def get_module_instance(self, module_type): elif module_type in [ModuleType.AGGREGATION.value]: class_factory_type = ClassType.FL_AGG agg = None - print(self.url) if self.url : try: utils.load_module(self.url) agg = ClassFactory.get_cls( type_name=class_factory_type, t_cls_name=self.name)(**self.hyperparameters) - print(agg) except Exception as err: raise RuntimeError(f"module(type={module_type} loads class(name={self.name}) " f"failed, error: {err}.") from err @@ -125,10 +123,17 @@ def get_module_instance(self, module_type): if self.url: try: utils.load_module(self.url) - # pylint: disable=E1134 - func = ClassFactory.get_cls( - type_name=class_factory_type, t_cls_name=self.name)(**self.hyperparameters) + + if class_factory_type == ClassType.HEM: + func = {"method": self.name, "param":self.hyperparameters} + else: + func = ClassFactory.get_cls( + type_name=class_factory_type, + t_cls_name=self.name + )(**self.hyperparameters) + return func + except Exception as err: raise RuntimeError(f"module(type={module_type} loads class(name={self.name}) " f"failed, error: {err}.") from err diff --git a/core/testcasecontroller/algorithm/paradigm/__init__.py b/core/testcasecontroller/algorithm/paradigm/__init__.py index 5c50b243..68267798 100644 --- a/core/testcasecontroller/algorithm/paradigm/__init__.py +++ b/core/testcasecontroller/algorithm/paradigm/__init__.py @@ -18,3 +18,4 @@ from .multiedge_inference import MultiedgeInference from .lifelong_learning import LifelongLearning from .federated_learning import FederatedLearning, FederatedClassIncrementalLearning +from .joint_inference import JointInference diff --git a/core/testcasecontroller/algorithm/paradigm/base.py b/core/testcasecontroller/algorithm/paradigm/base.py index e5178e29..4b11236f 100644 --- a/core/testcasecontroller/algorithm/paradigm/base.py +++ b/core/testcasecontroller/algorithm/paradigm/base.py @@ -18,6 +18,7 @@ from sedna.core.incremental_learning import IncrementalLearning from sedna.core.lifelong_learning import LifelongLearning +from sedna.core.joint_inference import JointInference from core.common.constant import ModuleType, ParadigmType from .sedna_federated_learning import FederatedLearning @@ -76,6 +77,7 @@ def _get_module_instances(self): module_instances.update({module_type: func}) return module_instances + # pylint: disable=too-many-return-statements def build_paradigm_job(self, paradigm_type): """ build paradigm job instance according to paradigm type. @@ -103,7 +105,10 @@ def build_paradigm_job(self, paradigm_type): if paradigm_type == ParadigmType.LIFELONG_LEARNING.value: return LifelongLearning( - estimator=self.module_instances.get(ModuleType.BASEMODEL.value), + seen_estimator=self.module_instances.get( + ModuleType.BASEMODEL.value + ), + unseen_estimator=None, task_definition=self.module_instances.get( ModuleType.TASK_DEFINITION.value ), @@ -144,4 +149,15 @@ def build_paradigm_job(self, paradigm_type): estimator=self.module_instances.get(ModuleType.BASEMODEL.value) ) + if paradigm_type == ParadigmType.JOINT_INFERENCE.value: + return JointInference( + estimator=self.module_instances.get( + ModuleType.EDGEMODEL.value), + cloud=self.module_instances.get( + ModuleType.CLOUDMODEL.value), + hard_example_mining=self.module_instances.get( + ModuleType.HARD_EXAMPLE_MINING.value), + LCReporter_enable=False + ) + return None diff --git a/core/testcasecontroller/algorithm/paradigm/joint_inference/__init__.py b/core/testcasecontroller/algorithm/paradigm/joint_inference/__init__.py new file mode 100644 index 00000000..c61116ba --- /dev/null +++ b/core/testcasecontroller/algorithm/paradigm/joint_inference/__init__.py @@ -0,0 +1,16 @@ +# Copyright 2022 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=missing-module-docstring +from .joint_inference import JointInference diff --git a/core/testcasecontroller/algorithm/paradigm/joint_inference/joint_inference.py b/core/testcasecontroller/algorithm/paradigm/joint_inference/joint_inference.py new file mode 100644 index 00000000..0a95b102 --- /dev/null +++ b/core/testcasecontroller/algorithm/paradigm/joint_inference/joint_inference.py @@ -0,0 +1,188 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Cloud-Edge Joint Inference""" + +import os +from tqdm import tqdm + +from core.common.log import LOGGER +from core.common.constant import ParadigmType +from core.testcasecontroller.algorithm.paradigm.base import ParadigmBase + +class JointInference(ParadigmBase): + """ + Cloud-Edge-JointInference: + provide the flow of multi-edge inference paradigm. + Notes: + 1. Ianvs serves as testing tools for test objects, e.g., algorithms. + 2. Ianvs does NOT include code directly on test object. + 3. Algorithms serve as typical test objects in Ianvs + and detailed algorithms are thus NOT included in this Ianvs python file. + 4. As for the details of example test objects, e.g., algorithms, + please refer to third party packages in Ianvs example. + For example, AI workflow and interface pls refer to sedna + (sedna docs: https://sedna.readthedocs.io/en/latest/api/lib/index.html), + and module implementation pls refer to `examples' test algorithms`, + e.g., basemodel.py, hard_example_mining.py. + + Parameters + --------- + workspace: string + the output required for multi-edge inference paradigm. + kwargs: dict + config required for the test process of joint inference paradigm, + e.g.: hard_example_mining_mode + + """ + + def __init__(self, workspace, **kwargs): + ParadigmBase.__init__(self, workspace, **kwargs) + self.inference_dataset = None + self.kwargs = kwargs + self.hard_example_mining_mode = kwargs.get( + "hard_example_mining_mode", + "mining-then-inference" + ) + + def set_config(self): + """ Set the configuration for the joint inference paradigm. + + Raises + ------ + KeyError + If required modules are not provided. + """ + + + inference_output_dir = os.path.dirname(self.workspace) + os.environ["RESULT_SAVED_URL"] = inference_output_dir + os.makedirs(inference_output_dir, exist_ok=True) + + LOGGER.info("Loading dataset") + + self.inference_dataset = self.dataset.load_data( + self.dataset.test_data_info, + "inference" + ) + + dataset_processor = self.module_instances.get("dataset_processor", None) + if callable(dataset_processor): + self.inference_dataset = dataset_processor(self.inference_dataset) + + # validate module instances + required_modules = {"edgemodel", "cloudmodel", "hard_example_mining"} + + if not required_modules.issubset(set(self.module_instances.keys())): + raise KeyError( + f"Required modules: {required_modules}, " + f"but got: {self.module_instances.keys()}" + ) + + # if hard example mining is OracleRouter, + # add the edgemodel and cloudmodel object to its kwargs so that it can use them. + mining = self.module_instances["hard_example_mining"] + param = mining.get("param") + if mining.get("method", None) == "OracleRouter": + param["edgemodel"] = self.module_instances["edgemodel"] + param["cloudmodel"] = self.module_instances["cloudmodel"] + + def run(self): + """ + run the test flow of joint inference paradigm. + + Returns + ------ + inference_result: list + system_metric_info: dict + information needed to compute system metrics. + + """ + self.set_config() + + job = self.build_paradigm_job(ParadigmType.JOINT_INFERENCE.value) + + inference_result = self._inference(job) + + self._cleanup(job) + + return inference_result, self.system_metric_info + + def _cleanup(self, job): + """Call module's cleanup method to release resources + + Parameters + ---------- + job : Sedna JointInference + Sedna JointInference API + """ + + LOGGER.info("Release models") + # release module resources + for module in self.module_instances.values(): + if hasattr(module, "cleanup"): + module.cleanup() + + # Special call is required for hard example mining module + # since it is instantiated within the job. + mining_instance = job.hard_example_mining_algorithm + if hasattr(mining_instance, "cleanup"): + mining_instance.cleanup() + + del job + + def _inference(self, job): + """Inference each data in Inference Dataset + + Parameters + ---------- + job : Sedna JointInference + Sedna JointInference API + + Returns + ------- + tuple + Inference Result with the format of `(is_hard_example, res, edge_result, cloud_result)` + """ + results = [] + + cloud_count, edge_count = 0,0 + + LOGGER.info("Inference Start") + + pbar = tqdm( + self.inference_dataset.x, + total=len(self.inference_dataset.x), + ncols=100 + ) + + for data in pbar: + # inference via sedna JointInference API + infer_res = job.inference( + data, + mining_mode=self.hard_example_mining_mode + ) + + if infer_res[2]: + edge_count += 1 + elif infer_res[3]: + cloud_count += 1 + + pbar.set_postfix({"Edge": edge_count, "Cloud": cloud_count}) + + results.append(infer_res) + + LOGGER.info("Inference Finished") + + return results diff --git a/core/testcasecontroller/metrics/metrics.py b/core/testcasecontroller/metrics/metrics.py index fa348a5a..bc9ed293 100644 --- a/core/testcasecontroller/metrics/metrics.py +++ b/core/testcasecontroller/metrics/metrics.py @@ -52,7 +52,6 @@ def compute(key, matrix): """ Compute BWT and FWT scores for a given matrix. """ - print(f"compute function: key={key}, matrix={matrix}, type(matrix)={type(matrix)}") length = len(matrix) accuracy = 0.0 diff --git a/core/testcasecontroller/testcase/testcase.py b/core/testcasecontroller/testcase/testcase.py index 7775316d..b9e20154 100644 --- a/core/testcasecontroller/testcase/testcase.py +++ b/core/testcasecontroller/testcase/testcase.py @@ -111,7 +111,6 @@ def compute_metrics(self, paradigm_result, dataset, **kwargs): metric_res = {} system_metric_types = [e.value for e in SystemMetricType.__members__.values()] for metric_name, metric_func in metric_funcs.items(): - #print(metric_name) if metric_name in system_metric_types: metric_res[metric_name] = metric_func(kwargs) else: diff --git a/core/testenvmanager/dataset/dataset.py b/core/testenvmanager/dataset/dataset.py index 9479380d..3fed22c5 100644 --- a/core/testenvmanager/dataset/dataset.py +++ b/core/testenvmanager/dataset/dataset.py @@ -16,20 +16,20 @@ import os import tempfile + import pandas as pd -# pylint: disable=no-name-in-module -# pylint: disable=too-many-instance-attributes from sedna.datasources import ( CSVDataParse, TxtDataParse, JSONDataParse, JsonlDataParse, - JSONMetaDataParse, + JSONMetaDataParse ) + from core.common import utils from core.common.constant import DatasetFormat - +# pylint: disable=too-many-instance-attributes class Dataset: """ Data: @@ -139,10 +139,12 @@ def _process_data_file(self, file_url): def _process_data_info_file(self, file_url): file_format = utils.get_file_format(file_url) - if file_format == DatasetFormat.JSON.value: + if file_format == DatasetFormat.JSONFORLLM.value: return file_url - - return None + raise ValueError( + f"The Data Info File must be named as `data_info.json`, " + f"but the current file is {file_url}." + ) def process_dataset(self): """ @@ -542,9 +544,8 @@ def _hard_example_splitting( return data_files @classmethod - def load_data( - cls, file: str, data_type: str, label=None, use_raw=False, feature_process=None - ): + def load_data(cls, file: str, data_type: str, label=None, + use_raw=False, feature_process=None, **kwargs): """ load data @@ -567,11 +568,6 @@ def load_data( e.g.: TxtDataParse, CSVDataParse. """ - if file.split('/')[-1] == "metadata.json": - data = JSONMetaDataParse(data_type=data_type, func=feature_process) - data.parse(file) - return data - data_format = utils.get_file_format(file) data = None @@ -591,4 +587,8 @@ def load_data( data = JsonlDataParse(data_type=data_type, func=feature_process) data.parse(file) + if data_format == DatasetFormat.JSONFORLLM.value: + data = JSONMetaDataParse(data_type=data_type, func=feature_process) + data.parse(file, **kwargs) + return data diff --git a/core/testenvmanager/testenv/testenv.py b/core/testenvmanager/testenv/testenv.py index 9e159901..ac4aec88 100644 --- a/core/testenvmanager/testenv/testenv.py +++ b/core/testenvmanager/testenv/testenv.py @@ -68,8 +68,7 @@ def _parse_config(self, config): elif k == 'use_gpu': self.use_gpu = bool(v) else: - if k in self.__dict__: - self.__dict__[k] = v + self.__dict__[k] = v self._check_fields() diff --git a/examples/cloud-edge-collaborative-inference-for-llm/README.md b/examples/cloud-edge-collaborative-inference-for-llm/README.md new file mode 100644 index 00000000..85705406 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/README.md @@ -0,0 +1,337 @@ +# Quick Start + +## Introduction + +This example aims to implement benchmarks for **LLM in cloud-edge collaborative inference scenario**. + +### Why LLM need cloud-edge collaborative inference? + +Currently, such LLMs have billions or even trillions of parameters, requiring massive computing power for training and deployment. Therefore, they are often deployed in cloud computing centers and serving via APIs. However, such service paradigm faces many drawbacks. + +- Time to First Token(TTFT) is quite long, due to transmission delays from the distance to the data center. +- Uploading user data to the cloud may lead to additional privacy risks and retraining risks. +- Calling APIs of the most advanced models (GPT-4o *et.al*) is often very expensive. +- Not all tasks require high-performance models to complete. + +These issues can be addressed by introducing Edge Computing, which is an architecture featured by low-latency, privacy security, energy-efficient. + +By deploying small-scale LLMs on edge devices like mobile phones, PCs and communication base station, users will have low-latency and privacy-secure services. Empirically, models with fewer than 3B parameters are possible to be deployed on the aforementioned edge devices. However, due to Scaling Law, smaller models perform worse than larger models, so they can only maintain good performance on certain tasks. + +Thus, smaller models on edge should collaborate with larger models on cloud to achieve better performance on other tasks. + +### Possible Collaborative Inference Strategy + +There are several cloud-edge collaborative inference strategy, including: + +- Query Routing $^{[1, 2]}$ : route query to smaller-scale model on edge or larger-scale model on cloud based on its difficulty. +- Speculative Decoding $^{[3]}$ : smaller-scale models predicting future multiple words quickly during decoding followed by parallel validation via larger-scale models; if validation fails then re-generation by larger-scale occurs. +- Other possible ways. + +This example currently supports convenient benchmark testing for Query-Routing strategy. + +### Details of Design + +The overall design is shown in the figure below. + +![image-20240926143857223](./assets/image-20240926143857223.png) + +When Ianvs starts the benchmarking job, the Test Env Manager will first pass the data of the user-specified Dataset to the Test Case Controller for Joint Inference one by one. + +Joint Inference supports multiple modes, including `mining-then-inference`, `inference-then-mining`, and `self-design`. Among them, `mining-then-inference` is suitable for LLM scenarios, `inference-then-mining` is suitable for CV scenarios, and `self-design` allows you to implement more complex collaborative inference strategies on your own. + +In this example, we will rely on Ianvs' Joint Inference Paradigm using the `inference-then-mining` mode to implement a Query Routing strategy. First, we call your custom Hard Example Mining module to determine if it is a hard case. If it is, we call the inference interface of the Edge Model to complete the inference; if not, we call the inference interface of the Cloud Model to complete it. + +To save API calls during multi-round testing, this example has designed a result caching mechanism in both EdgeModel and Cloud Model. For questions that have already been tested, cached results will be read and returned. + +After all tests are completed, the Test Env Manager will calculate relevant metrics based on selected Metrics and hand over to Story Manager for printing test reports and generating Leader Board. + +## Required Resources + +Before using this example, you need to have the device ready: + +One machine is all you need, i.e., a laptop or a virtual machine is sufficient and a cluster is not necessary + +- 2 CPUs or more + +- 1 GPU with at least 6GB of memory, depends on the tested model + +- 4GB+ free memory, depends on algorithm and simulation setting + +- 10GB+ free disk space (depends on your model size) + +- Internet connection for GitHub, PyPI, HuggingFace, etc + +- Python 3.8+ environment + +## Step 1. Ianvs Preparation + +```bash +# Create a new conda environment with Python>=3.8 (venv users can do it in their own way). +conda create -n ianvs-experiment python=3.8 + +# Activate our environment +conda activate ianvs-experiment + +# Clone Ianvs Repo +git clone https://github.com/kubeedge/ianvs.git +cd ianvs + +# Install Sedna +pip install examples/resources/third_party/sedna-0.6.0.1-py3-none-any.whl + +# Install dependencies for this example. +pip install -r examples/cloud-edge-collaborative-inference-for-llm/requirements.txt + +# Install dependencies for Ianvs Core. +pip install -r requirements.txt + +# Install ianvs +python setup.py install +``` + +## Step 2. Dataset and Model Preparation + +### Dataset Configuration + +1. Download `mmlu-5-shot` from [Ianvs-MMLU-5-shot](https://huggingface.co/datasets/FuryMartin/Ianvs-MMLU-5-shot), which is a transformed MMLU-5-shot dataset formatted to fit Ianvs's requirements. + +2. Create a `dataset` folder in the root directory of Ianvs and move `mmlu-5-shot` into the `dataset` folder. + +3. Then, check the path of `train_data` and `test_dat` in +`examples/cloud-edge-collaborative-inference-for-llm/testenv/testenv.yaml`. + + - If you created the `dataset` folder inside `ianvs/` as mentioned earlier, then the relative path is correct and does not need to be modified. + + - If your `dataset` is created in a different location, please use an absolute path, and using `~` to represent the home directory is not supported. + +#### Dataset Details + +If you want to construct your own dataset, please see the details below and follow the instruction. + +``` +. +├── dataset +│ └── mmlu-5-shot +│ ├── test_data +│ │ ├── data.jsonl +│ │ └── metadata.json +│ └── train_data +│ └── data.json +``` + +Leave `train_data/data.jsonl` as empty. + +The file `data.jsonl` stores the main content of the dataset. Each line contains must contain keys `query`, `response`, `explanation`,`level_1_dim`, `level_2_dim`, `level_3_dim`, `level_4_dim` + +Here is an example: + +```json +{"query": "Question: Find the degree for the given field extension Q(sqrt(2), sqrt(3), sqrt(18)) over Q.\nA. 0\nB. 4\nC. 2\nD. 6", "response": "B", "explanation": "", "level_1_dim": "single-modal", "level_2_dim": "text", "level_3_dim": "knowledge Q&A", "level_4_dim": "abstract_algebra"} +{"query": "Question: Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the index of

in S_5.\nA. 8\nB. 2\nC. 24\nD. 120", "response": "C", "explanation": "", "level_1_dim": "single-modal", "level_2_dim": "text", "level_3_dim": "knowledge Q&A", "level_4_dim": "abstract_algebra"} +``` + +The `metadata.jsonl` stores information about the data, including `dataset`, `description`, `level_1_dim`, `level_2_dim`, `level_3_dim`, `level_4_dim`. + +Here is an example: + +```json +{ + "dataset": "MMLU", + "description": "Measuring Massive Multitask Language Understanding by Dan Hendrycks, Collin Burns, Steven Basart, Andy Zou, Mantas Mazeika, Dawn Song, and Jacob Steinhardt (ICLR 2021).", + "level_1_dim": "single-modal", + "level_2_dim": "text", + "level_3_dim": "Q&A", + "level_4_dim": "general" +} +``` + + + +### Metric Configuration + +*Note: If you just want to run this example quickly, you can skip this step.* + +We have designed multiple metrics for edge-cloud collaborative inference, including: + +| Metric | Description | Unit | +| :---------------------- | :------------------------------------------------------ | ------- | +| Accuracy | Accuracy on the test Dataset | - | +| Edge Ratio | proportion of queries router to edge | - | +| Time to First Token | Time taken to generate the first token | s | +| Internal Token Latency | Time taken to generate each token | s | +| Throughput | Token generation speed | token/s | +| Cloud Prompt Tokens | Number of prompt tokens consumed by Cloud Model | - | +| Cloud Completion Tokens | Number of completion tokens generated by Cloud Model | - | +| Edge Prompt Tokens | Number of prompt tokens consumed by the Edge Model | - | +| Edge Completion Tokens | Number of completion tokens generated by the Edge Model | - | + +Each metric is calculated by a module in `examples/cloud-edge-collaborative-inference-for-llm/testenv`. For more details, please check the folder. + +You can select multiple metrics in `examples/cloud-edge-collaborative-inference-for-llm/testenv/testenv.yaml`. + +### Model Configuration + +*Note: If you just want to run this example quickly, you can skip this step.* + +The models are configured in `examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/test_queryrouting.yaml`. + +In the configuration file, there are two models available for configuration: `EdgeModel` and `CloudModel`. + +#### EdgeModel Configuration + +The `EdgeModel` is the model that will be deployed on your local machine, supporting `huggingface` and `vllm` as serving backends. + +For `EdgeModel`, the open parameters are: + +| Parameter Name | Type | Description | Defalut | +| ---------------------- | ----- | ------------------------------------------------------------ | ------------------------ | +| model | str | model name | Qwen/Qwen2-1.5B-Instruct | +| backend | str | model serving framework | huggingface | +| temperature | float | What sampling temperature to use, between 0 and 2 | 0.8 | +| top_p | float | nucleus sampling parameter | 0.8 | +| max_tokens | int | The maximum number of tokens that can be generated in the chat completion | 512 | +| repetition_penalty | float | The parameter for repetition penalty | 1.05 | +| tensor_parallel_size | int | The size of tensor parallelism (Used for vLLM) | 1 | +| gpu_memory_utilization | float | The percentage of GPU memory utilization (Used for vLLM) | 0.9 | + +#### CloudModel Configuration + +The `CloudModel` represents the model on cloud, it will call LLM API via OpenAI API format. You need to set your OPENAI_BASE_URL and OPENAI_API_KEY in the environment variables yourself, for example. + +```bash +export OPENAI_BASE_URL="https://api.openai.com/v1" +export OPENAI_API_KEY=sk_xxxxxxxx +``` + +For `CloudModel`, the open parameters are: + +| Parameter Name | Type | Description | Defalut | +| ------------------ | ---- | ------------------------------------------------------------ | ----------- | +| model | str | model name | gpt-4o-mini | +| temperature | float | What sampling temperature to use, between 0 and 2 | 0.8 | +| top_p | float | nucleus sampling parameter | 0.8 | +| max_tokens | int | The maximum number of tokens that can be generated in the chat completion | 512 | +| repetition_penalty | float | The parameter for repetition penalty | 1.05 | + +#### Router Configuration + +Router is a component that routes the query to the edge or cloud model. The router is configured by `hard_example_mining` in `examples/cloud-edge-collaborative-inference-for-llm/testrouters/query-routing/test_queryrouting.yaml`. + +Currently, supported routers include: + +| Router Type | Description | Parameters | +| ------------ | ------------------------------------------------------------ | ---------------- | +| EdgeOnly | Route all queries to the edge model. | - | +| CloudOnly | Route all queries to the cloud model. | - | +| OracleRouter | Optimal Router | | +| BERTRouter | Use a BERT classifier to route the query to the edge or cloud model. | model, threshold | +| RandomRouter | Route the query to the edge or cloud model randomly. | threshold | + +You can modify the `router` parameter in `test_queryrouting.yaml` to select the router you want to use. + +For BERT router, you can use [routellm/bert](https://huggingface.co/routellm/bert) or [routellm/bert_mmlu_augmented](https://huggingface.co/routellm/bert_mmlu_augmented) or your own BERT model/ + +#### Data Processor Configuration +The Data Processor allows you to custom your own data format after the dataset loaded. + +Currently, supported routers include: + +| Data Processor | Description | Parameters | +| ------------ | ------------------------------------------------------------ | ---------------- | +| OracleRouterDatasetProcessor | Expose `gold` label to OracleRouter | - | + +## Step 3. Run Ianvs + +### Provided Response Cache +The testing process may take much time, depending on the number of test cases and the inference speed of the model. + +To enable you directly get the results, here we provide a workspace folder with cached results of `Qwen/Qwen2.5-1.5B-Instruct`, `Qwen/Qwen2.5-3B-Instruct`,`Qwen/Qwen2.5-7B-Instruct` and `gpt-4o-mini`. + +You can download `workspace-mmlu` folder from [Ianvs-MMLU-5-shot](https://huggingface.co/datasets/FuryMartin/Ianvs-MMLU-5-shot) and put it under your `ianvs` folder. + +### Run Joint Inference example + +Run the following command: + +`ianvs -f examples/cloud-edge-collaborative-inference-for-llm/benchmarkingjob.yaml` + +After the process finished, you will see output like this: + +```bash +[2024-10-28 18:03:37,314] edge_model.py(43) [INFO] - {'model': 'Qwen/Qwen2.5-1.5B-Instruct', 'backend': 'vllm', 'temperature': 0, 'top_p': 0.8, 'max_tokens': 512, 'repetition_penalty': 1.05, 'tensor_parallel_size': 4, 'gpu_memory_utilization': 0.9, 'use_cache': True} +[2024-10-28 18:03:37,314] cloud_model.py(34) [INFO] - {'model': 'gpt-4o-mini', 'temperature': 0, 'top_p': 0.8, 'max_tokens': 512, 'repetition_penalty': 1.05, 'use_cache': True} +[2024-10-28 18:03:37,850] joint_inference.py(73) [INFO] - Loading dataset +[2024-10-28 18:03:38,703] hard_sample_mining.py(30) [INFO] - USING EdgeOnlyFilter +[2024-10-28 18:03:38,704] joint_inference.py(162) [INFO] - Inference Start +100%|██████████████████████████████████| 14042/14042 [00:02<00:00, 6182.92it/s, Edge=14042, Cloud=0] +[2024-10-28 18:03:40,975] joint_inference.py(186) [INFO] - Inference Finished +[2024-10-28 18:03:40,976] joint_inference.py(131) [INFO] - Release models +``` + +### Results + +Change the Router type to `EdgeOnly`, `CloudOnly`, `OracleRouter` (or another router) will yield better results. + +The recommend testing order is `EdgeOnly`, `CloudOnly`, `OracleRouter`, `BERTRouter`, `RandomRouter`. + +By changing different models and Router parameters, you may see output like: + +```bash ++------+---------------+----------+------------+---------------------+------------+------------------------+---------------------+-------------------------+--------------------+------------------------+----------------+---------------------+----------------------------+-------------------+------------------+---------------------+-------------------------------------------------------------------------------------+ +| rank | algorithm | Accuracy | Edge Ratio | Time to First Token | Throughput | Internal Token Latency | Cloud Prompt Tokens | Cloud Completion Tokens | Edge Prompt Tokens | Edge Completion Tokens | paradigm | hard_example_mining | edgemodel-model | edgemodel-backend | cloudmodel-model | time | url | ++------+---------------+----------+------------+---------------------+------------+------------------------+---------------------+-------------------------+--------------------+------------------------+----------------+---------------------+----------------------------+-------------------+------------------+---------------------+-------------------------------------------------------------------------------------+ +| 1 | query-routing | 84.22 | 87.62 | 0.347 | 179.28 | 0.006 | 1560307 | 20339 | 10695142 | 30104 | jointinference | OracleRouter | Qwen/Qwen2.5-7B-Instruct | vllm | gpt-4o-mini | 2024-10-28 16:58:30 | ./workspace-mmlu/benchmarkingjob/query-routing/b8eb2606-950a-11ef-8cbc-c97e05df5d14 | +| 2 | query-routing | 82.75 | 77.55 | 0.316 | 216.72 | 0.005 | 2727792 | 18177 | 9470276 | 291364 | jointinference | OracleRouter | Qwen/Qwen2.5-3B-Instruct | vllm | gpt-4o-mini | 2024-10-28 16:58:19 | ./workspace-mmlu/benchmarkingjob/query-routing/b8eb2605-950a-11ef-8cbc-c97e05df5d14 | +| 3 | query-routing | 82.22 | 76.12 | 0.256 | 320.39 | 0.003 | 2978026 | 23254 | 9209538 | 29126 | jointinference | OracleRouter | Qwen/Qwen2.5-1.5B-Instruct | vllm | gpt-4o-mini | 2024-10-28 16:58:09 | ./workspace-mmlu/benchmarkingjob/query-routing/b8eb2604-950a-11ef-8cbc-c97e05df5d14 | +| 4 | query-routing | 75.99 | 0.0 | 0.691 | 698.83 | 0.001 | 11739216 | 79115 | 0 | 0 | jointinference | CloudOnly | Qwen/Qwen2.5-1.5B-Instruct | vllm | gpt-4o-mini | 2024-10-28 16:57:43 | ./workspace-mmlu/benchmarkingjob/query-routing/abe4062e-950a-11ef-8cbc-c97e05df5d14 | +| 5 | query-routing | 71.84 | 100.0 | 0.301 | 164.34 | 0.006 | 0 | 0 | 12335559 | 34817 | jointinference | EdgeOnly | Qwen/Qwen2.5-7B-Instruct | vllm | gpt-4o-mini | 2024-10-28 16:57:30 | ./workspace-mmlu/benchmarkingjob/query-routing/9b726328-950a-11ef-8cbc-c97e05df5d14 | +| 6 | query-routing | 60.3 | 100.0 | 0.206 | 176.71 | 0.006 | 0 | 0 | 12335559 | 397386 | jointinference | EdgeOnly | Qwen/Qwen2.5-3B-Instruct | vllm | gpt-4o-mini | 2024-10-28 16:57:23 | ./workspace-mmlu/benchmarkingjob/query-routing/9b726327-950a-11ef-8cbc-c97e05df5d14 | +| 7 | query-routing | 58.35 | 100.0 | 0.123 | 271.81 | 0.004 | 0 | 0 | 12335559 | 38982 | jointinference | EdgeOnly | Qwen/Qwen2.5-1.5B-Instruct | vllm | gpt-4o-mini | 2024-10-28 16:57:16 | ./workspace-mmlu/benchmarkingjob/query-routing/9b726326-950a-11ef-8cbc-c97e05df5d14 | ++------+---------------+----------+------------+---------------------+------------+------------------------+---------------------+-------------------------+--------------------+------------------------+----------------+---------------------+----------------------------+-------------------+------------------+---------------------+-------------------------------------------------------------------------------------+ +``` + +Ianvs will output a `rank.csv` and `selected_rank.csv` in `ianvs/workspace`, which will record the test results of each test. + +You can modify the relevant model parameters in `examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/test_queryrouting.yaml`, conduct multiple tests, and compare the results of different configurations. + +## Discussion + +### Query Routing's Application Scenario + +Query Routing is a very useful cloud-edge collaboration strategy based on two facts: + +- Calling top-tier large language models is expensive: For GPT-4o, the pricing is \$5.00 / 1M input tokens and \$15.00 / 1M output tokens. + +- Not all tasks require calling top-tier models: For tasks like translation, organization, summarization, data formatting,and casual conversation, small models with 3B parameters or less can achieve satisfactory results. + +These two facts suggest that if we can call different models based on the difficulty of the task, it will help save unnecessary API calls and thus reduce costs. Additionally, if edge device prformance is sufficient, locally deployed small models can also demonstrate excellent latency and throughput metrics, further enhancing user experience. + +Our Oracle Router is the ideal router that can route problems where the actual performance of edge small models outperforms that of cloud large models to the edge. Experiments have shown that when Qwen2.5-7B-Instruct collaborates with gpt-4o-mini, the accuracy on the MMLU (5-shot) dataset is +12.38% compared to pure edge and +8.23% absolute accuracy compared to pure cloud, with 87.62% of queries routed to edge. + +![](./assets/Oracle%20Router%20Demo.png) + +You can modify and run `performance-cost-plot.py` to get your Performance-Cost figure. + +Some related research $^{[1]}$ has trained pratical routers that can save up to 40% of GPT-4 API calls while maintaining essentially unchanged accuracy on the test set. + + +## Future + +This example builds an architecture for testing query routing strategies, but the provided dataset has some drawbacks such as being one-sided and singular, making it difficult to reflect effects in real-world scenarios. + +Besides, Speculative Decoding is another promising cloud-edge collaborative inference strategy, we should also implement it. + +Thus, the future tasks of this example include: + +- Build a more comprehensive dataset for better router evaluation +- Implement a Speculative Decoding example + + + +**Reference** + +[1] Ding, Dujian, et al. "Hybrid LLM: Cost-efficient and quality-aware query routing." *arXiv preprint arXiv:2404.14618* (2024). + +[2] Ong, Isaac, et al. "Routellm: Learning to route llms with preference data." *arXiv preprint arXiv:2406.18665* (2024). + +[3] Xia, Heming, et al. "Unlocking efficiency in large language model inference: A comprehensive survey of speculative decoding." *arXiv preprint arXiv:2401.07851* (2024). \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/assets/Oracle Router Demo.png b/examples/cloud-edge-collaborative-inference-for-llm/assets/Oracle Router Demo.png new file mode 100644 index 0000000000000000000000000000000000000000..dac855a739797c1f90f9c0c89b177f77ae6c5921 GIT binary patch literal 196614 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

Cuhcb(2>N6Qbarn9L--SBaHH$f>Ek)7@_0h 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

GYwY8?Y0?DcgU|#RhkLQ(WpXwq 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 literal 0 HcmV?d00001 diff --git a/examples/cloud-edge-collaborative-inference-for-llm/assets/image-20240926143857223.png b/examples/cloud-edge-collaborative-inference-for-llm/assets/image-20240926143857223.png new file mode 100644 index 0000000000000000000000000000000000000000..7b28a63b2d22cebb5798fb3de5274ba4f42f4c0e GIT binary patch literal 105514 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≻T&^2N6=#8gmyc~ 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 B%v4knyl{>E74gpy%x{rBIByiY4d}Bn(2AvGK1w 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ξxKhu3^~L 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 literal 0 HcmV?d00001 diff --git a/examples/cloud-edge-collaborative-inference-for-llm/benchmarkingjob.yaml b/examples/cloud-edge-collaborative-inference-for-llm/benchmarkingjob.yaml new file mode 100755 index 00000000..d86f9beb --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/benchmarkingjob.yaml @@ -0,0 +1,70 @@ +benchmarkingjob: + # job name of bechmarking; string type; + name: "benchmarkingjob" + # the url address of job workspace that will reserve the output of tests; string type; + # "~/" cannot be identified, so must be relative path or absoulute path + workspace: "./workspace-mmlu" + + hard_example_mining_mode: "mining-then-inference" + + # the url address of test environment configuration file; string type; + # the file format supports yaml/yml; + testenv: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/testenv.yaml" + + # the configuration of test object + test_object: + # test type; string type; + # currently the option of value is "algorithms",the others will be added in succession. + type: "algorithms" + # test algorithm configuration files; list type; + algorithms: + # algorithm name; string type; + - name: "query-routing" + # the url address of test algorithm configuration file; string type; + # the file format supports yaml/yml; + url: "./examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/test_queryrouting.yaml" + + # the configuration of ranking leaderboard + rank: + # rank leaderboard with metric of test case's evaluation and order ; list type; + # the sorting priority is based on the sequence of metrics in the list from front to back; + sort_by: [ { "Accuracy": "descend" } ] + + # visualization configuration + visualization: + # mode of visualization in the leaderboard; string type; + # There are quite a few possible dataitems in the leaderboard. Not all of them can be shown simultaneously on the screen. + # In the leaderboard, we provide the "selected_only" mode for the user to configure what is shown or is not shown. + mode: "selected_only" + # method of visualization for selected dataitems; string type; + # currently the options of value are as follows: + # 1> "print_table": print selected dataitems; + method: "print_table" + + # selected dataitem configuration + # The user can add his/her interested dataitems in terms of "paradigms", "modules", "hyperparameters" and "metrics", + # so that the selected columns will be shown. + selected_dataitem: + # currently the options of value are as follows: + # 1> "all": select all paradigms in the leaderboard; + # 2> paradigms in the leaderboard, e.g., "singletasklearning" + paradigms: [ "all" ] + # currently the options of value are as follows: + # 1> "all": select all modules in the leaderboard; + # 2> modules in the leaderboard, e.g., "basemodel" + modules: [ "hard_example_mining" ] + # currently the options of value are as follows: + # 1> "all": select all hyperparameters in the leaderboard; + # 2> hyperparameters in the leaderboard, e.g., "momentum" + hyperparameters: [ "edgemodel-model", "edgemodel-backend", "cloudmodel-model"] + # currently the options of value are as follows: + # 1> "all": select all metrics in the leaderboard; + # 2> metrics in the leaderboard, e.g., "f1_score" + # metrics: [ "acc" , "edge-rate", "cloud-prompt", "cloud-completion", "edge-prompt", "edge-completion", "input-throughput", "output-throughput", "latency"] + metrics: ["Accuracy", "Edge Ratio", "Time to First Token", "Throughput", "Internal Token Latency", "Cloud Prompt Tokens", "Cloud Completion Tokens", "Edge Prompt Tokens", "Edge Completion Tokens"] + + # model of save selected and all dataitems in workspace; string type; + # currently the options of value are as follows: + # 1> "selected_and_all": save selected and all dataitems; + # 2> "selected_only": save selected dataitems; + save_mode: "selected_and_all" diff --git a/examples/cloud-edge-collaborative-inference-for-llm/performance-cost-plot.py b/examples/cloud-edge-collaborative-inference-for-llm/performance-cost-plot.py new file mode 100644 index 00000000..4f97358c --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/performance-cost-plot.py @@ -0,0 +1,61 @@ +import numpy as np + +import matplotlib.pyplot as plt +from scipy.optimize import curve_fit + +colors = plt.cm.Paired.colors # Set1 调色板 +plt.rcParams["axes.prop_cycle"] = plt.cycler("color", colors) + +# a sigmoid function to fit non-oracle models' performance vs cost +def sigmoid_fit(x, L, k, x0): + return L / (1 + np.exp(-k * (x - x0))) + +def plot_accuracy_cost(models, costs, accuracy, non_oracle_costs, non_oracle_accuracy): + # Fit the sigmoid model + params_sigmoid, _ = curve_fit(sigmoid_fit, non_oracle_costs, non_oracle_accuracy, p0=[100, 1, 0.2]) + + # Generate points for the sigmoid fitted curve + curve_x_sigmoid = np.linspace(min(non_oracle_costs), max(non_oracle_costs), 100) + curve_y_sigmoid = sigmoid_fit(curve_x_sigmoid, *params_sigmoid) + + plt.figure(figsize=(10, 6)) + + # Plot all models + for i in range(len(models)): + if "Oracle" in models[i]: + marker = '^' # Triangle marker for Oracle models + else: + marker = 'o' # Circle marker for non-Oracle models + plt.scatter(costs[i], accuracy[i], label=models[i], marker=marker) + + # Plot the sigmoid fitted curve + plt.plot(curve_x_sigmoid, curve_y_sigmoid, 'gray', linestyle='dashed') # Gray dashed line for the curve + + plt.title('Model Performance vs Cost') + plt.xlabel('Cost($/M token)') + plt.ylabel('Accuracy (%)') + plt.legend(title='Model Name') + plt.grid(True) + plt.savefig('model_performance_sigmoid_fitted_curve.png', dpi=300) + plt.show() + +if __name__ == '__main__': + models = [ + "Oracle-Qwen2.5-7b-instruct + gpt-4o-mini", + "Oracle-Qwen2.5-1.5b-instruct + gpt-4o-mini", + "Oracle-Qwen2.5-3b-instruct + gpt-4o-mini", + "gpt-4o-mini", + "Qwen2.5-7B-Instruct", + "Qwen2.5-3B-Instruct", + "Qwen2.5-1.5B-Instruct" + ] + # The Oracle Routed Model's cost is an average weighted by the Edge Ratio between edge model costs and cloud model costs. + # The edge model’s cost is estimated based on its parameter size. + costs = [0.16, 0.18, 0.17, 0.60, 0.10, 0.08, 0.05] + accuracy = [84.22, 82.75, 82.22, 75.99, 71.84, 60.3, 58.35] + + # Non Oracle Models: gpt-4o-mini, Qwen2.5-7B-Instruct, Qwen2.5-3B-Instruct, Qwen2.5-1.5B-Instruct + non_oracle_costs = costs[-4:] # Costs in $/M token + non_oracle_accuracy = accuracy[-4:] # Accuracies in % + + plot_accuracy_cost(models, costs, accuracy, non_oracle_costs, non_oracle_accuracy) \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/requirements.txt b/examples/cloud-edge-collaborative-inference-for-llm/requirements.txt new file mode 100644 index 00000000..58fc617d --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/requirements.txt @@ -0,0 +1,5 @@ +vllm +transformers +openai +accelerate +datamodel_code_generator \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/cloud_model.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/cloud_model.py new file mode 100644 index 00000000..f466b367 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/cloud_model.py @@ -0,0 +1,71 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import, division, print_function + +import os + +from core.common.log import LOGGER +from sedna.common.class_factory import ClassType, ClassFactory +from models import APIBasedLLM + +os.environ['BACKEND_TYPE'] = 'TORCH' + +__all__ = ["BaseModel"] + +@ClassFactory.register(ClassType.GENERAL, alias="CloudModel") +class CloudModel: + """Models being deployed on the Cloud + """ + def __init__(self, **kwargs): + """Initialize the CloudModel. See `APIBasedLLM` for details about `kwargs`. + """ + LOGGER.info(kwargs) + self.model = APIBasedLLM(**kwargs) + self.load(kwargs.get("model", "gpt-4o-mini")) + + def load(self, model): + """Set the model. + + Parameters + ---------- + model : str + Existing model from your OpenAI provider. Example: `gpt-4o-mini` + """ + self.model._load(model = model) + + def inference(self, data, **kwargs): + """Inference the model with the given data. + + Parameters + ---------- + data : dict + The data to be used for inference. See format at BaseLLM's `inference()`. + kwargs : dict + To Align with Sedna's JointInference interface. + + Returns + ------- + dict + Formatted Response. See `model._format_response()` for more details. + """ + + return self.model.inference(data) + + def cleanup(self): + """Save the cache and cleanup the model. + """ + + self.model.save_cache() + self.model.cleanup() \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/data_processor.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/data_processor.py new file mode 100644 index 00000000..ee29ed40 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/data_processor.py @@ -0,0 +1,39 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from sedna.common.class_factory import ClassFactory, ClassType +from sedna.datasources import BaseDataSource + +@ClassFactory.register(ClassType.GENERAL, alias="OracleRouterDatasetProcessor") +class OracleRouterDatasetProcessor: + """ A Customized Dataset Processor for Oracle Router""" + def __init__(self, **kwargs): + pass + + def __call__(self, dataset): + """Transform the dataset to another format for Oracle Router + + Parameters + ---------- + dataset : sedna.datasources.BaseDataSource + The dataset loaded by Sedna + + Returns + ------- + sedna.datasources.BaseDataSource + Transformed dataset + """ + dataset.x = [{"query": x, "gold": y} for x,y in zip(dataset.x, dataset.y)] + return dataset \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/edge_model.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/edge_model.py new file mode 100644 index 00000000..42ca2542 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/edge_model.py @@ -0,0 +1,97 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import, division, print_function + +import os + +from core.common.log import LOGGER +from sedna.common.class_factory import ClassType, ClassFactory +from models import HuggingfaceLLM, APIBasedLLM, VllmLLM + +os.environ['BACKEND_TYPE'] = 'TORCH' + +__all__ = ["BaseModel"] + +@ClassFactory.register(ClassType.GENERAL, alias="EdgeModel") +class EdgeModel: + """Models being deployed on the Edge + """ + def __init__(self, **kwargs): + """Initialize the CloudModel. + + Parameters + ---------- + kwargs : dict + Parameters that are passed to the model. Details can be found in the `VllmLLM`, `HuggingfaceLLM`, `APIBasedLLM` class. + + Special keys: + - `backend`: str, default "huggingface". The serving framework to be used. + """ + + LOGGER.info(kwargs) + self.kwargs = kwargs + self.model_name = kwargs.get("model", None) + self.backend = kwargs.get("backend", "huggingface") + self._set_config() + + def _set_config(self): + """Set the model path in our environment variables due to Sedna’s [check](https://github.com/kubeedge/sedna/blob/ac623ab32dc37caa04b9e8480dbe1a8c41c4a6c2/lib/sedna/core/base.py#L132). + """ + # + os.environ["model_path"] = self.model_name + + def load(self, **kwargs): + """Set the model backend to be used. Will be called by Sedna's JointInference interface. + + Raises + ------ + Exception + When the backend is not supported. + """ + if self.backend == "huggingface": + self.model = HuggingfaceLLM(**self.kwargs) + elif self.backend == "vllm": + self.model = VllmLLM(**self.kwargs) + elif self.backend == "api": + self.model = APIBasedLLM(**self.kwargs) + else: + raise Exception(f"Backend {self.backend} is not supported. Please use 'huggingface', 'vllm', or `api` ") + + def predict(self, data, **kwargs): + """Inference the model with the given data. + + Parameters + ---------- + data : dict + The data to be used for inference. See format at BaseLLM's `inference()`. + kwargs : dict + To Align with Sedna's JointInference interface. + + Returns + ------- + dict + Formatted Response. See `model._format_response()` for more details. + """ + + answer = self.model.inference(data) + + return answer + + def cleanup(self): + """Save the cache and cleanup the model. + """ + + self.model.save_cache() + self.model.cleanup() diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/hard_sample_mining.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/hard_sample_mining.py new file mode 100644 index 00000000..469c9f3e --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/hard_sample_mining.py @@ -0,0 +1,253 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Hard Example Mining Algorithms""" + +import abc +import random +from transformers import pipeline +from sedna.common.class_factory import ClassFactory, ClassType +from core.common.log import LOGGER + +__all__ = ('BERTFilter', 'EdgeOnlyFilter', 'CloudOnlyFilter', + 'RandomRouterFilter', 'OracleRouterFilter') + +class BaseFilter(metaclass=abc.ABCMeta): + """The base class to define unified interface.""" + + def __init__(self, **kwargs): + LOGGER.info(f"USING {self.__class__.__name__}") + + def __call__(self, infer_result=None): + """ + predict function, judge the sample is hard or not. + + Parameters + ---------- + infer_result : array_like + prediction result + + Returns + ------- + is_hard_sample : bool + `True` means hard sample, `False` means not. + """ + raise NotImplementedError + + @classmethod + def data_check(cls, data): + """Check the data in [0,1].""" + return 0 <= float(data) <= 1 + + +@ClassFactory.register(ClassType.HEM, alias="BERTRouter") +class BERTFilter(BaseFilter, abc.ABC): + def __init__(self, **kwargs): + """Initialize the BERTFilter. + + Parameters + ---------- + kwargs: dict + Possible kwargs are: + - `model`: str, default "routellm/bert". The model to be used. + - `task`: str, default "text-classification". The task to be used. + - `max_length`: int, default 512. The maximum length of the input. + """ + super().__init__(**kwargs) + + self.kwargs = kwargs + LOGGER.info(kwargs) + + self.model = kwargs.get("model", "routellm/bert") + self.task = kwargs.get("task", "text-classification") + self.max_length = kwargs.get("max_length", 512) + + self.classifier = pipeline(self.task, model=self.model, device="cuda") + + def _text_classification_postprocess(self, result): + """Postprocess the text classification result + + Parameters + ---------- + result : list + The result from the classifier. Example: + ``` + [{"label": "LABEL_0", "score": 0.5}, + {"label": "LABEL_1", "score": 0.4}, + {"label": "LABEL_2", "score": 0.1}] + + Returns + ------- + bool + `True` means hard sample, `False` means not. + """ + + res = {item["label"]:item["score"] for item in result} + scaled_score = res["LABEL_0"] / (res["LABEL_0"] + res["LABEL_1"]) + + thresold = self.kwargs.get("threshold", 0.5) + label = "LABEL_0" if scaled_score >= thresold else "LABEL_1" + return False if label == "LABEL_0" else True + + def _predict(self, data): + """Predict the data label + + Parameters + ---------- + data : dict + See format at BaseLLM's `inference()`. + + Returns + ------- + bool + `True` means hard sample, `False` means not. + + Raises + ------ + NotImplementedError + If the task is not supported + """ + + if self.task == "text-classification": + result = self.classifier(data, top_k=None) + is_hard_sample = self._text_classification_postprocess(result) + else: + raise NotImplementedError + + return is_hard_sample + + def _preprocess(self, data): + """Preprocess the data + + Parameters + ---------- + data : dict + See format at BaseLLM's `inference()`. + + Returns + ------- + str + query string + """ + query = data.get("query") + if "query" in query: + return query["query"][:self.max_length] + else: + return query[:self.max_length] + + + def cleanup(self): + """Release the classifier model + """ + del self.classifier + + def __call__(self, data=None) -> bool: + data = self._preprocess(data) + return self._predict(data) + +@ClassFactory.register(ClassType.HEM, alias="EdgeOnly") +class EdgeOnlyFilter(BaseFilter, abc.ABC): + """Route all queries to edge. + """ + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def __call__(self, data=None) -> bool: + return False + +@ClassFactory.register(ClassType.HEM, alias="CloudOnly") +class CloudOnlyFilter(BaseFilter, abc.ABC): + """Route all queries to cloud. + """ + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def __call__(self, data=None) -> bool: + return True + +@ClassFactory.register(ClassType.HEM, alias="RandomRouter") +class RandomRouterFilter(BaseFilter, abc.ABC): + """Randomly route the queries to edge or cloud. + """ + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.threshold = kwargs.get("threshold", 0) + + def __call__(self, data=None) -> bool: + return False if random.random() < self.threshold else True + +@ClassFactory.register(ClassType.HEM, alias="OracleRouter") +class OracleRouterFilter(BaseFilter, abc.ABC): + """The Opitmal Router, which routes the queries to edge or cloud based on the models' prediction. + """ + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.edge_better = 0 + self.cloud_better = 0 + self.both_right = 0 + self.both_wrong = 0 + + self.edge_model = kwargs.get("edgemodel") + self.cloud_model = kwargs.get("cloudmodel") + + def __call__(self, data=None): + """Route the query to edge or cloud based on the models' prediction. + + Parameters + ---------- + data : dict + See format at BaseLLM's `inference()`. + + Returns + ------- + bool + `True` means hard sample, `False` means not. + """ + gold = data.get("gold", None) + + edge_result = self.edge_model.predict(data).get("prediction") + cloud_result = self.cloud_model.inference(data).get("prediction") + + both_right = edge_result == gold and cloud_result == gold + both_wrong = edge_result != gold and cloud_result != gold + edge_better = edge_result == gold and cloud_result != gold + cloud_better = edge_result != gold and cloud_result == gold + + if both_right: + self.both_right +=1 + elif both_wrong: + self.both_wrong += 1 + elif edge_better: + self.edge_better += 1 + elif cloud_better: + self.cloud_better += 1 + + if cloud_better: + # cloud is better than edge, hard sample + return True + else: + # both correct + both wrong + edge_better, easy sample + return False + + def cleanup(self): + """Leverage the `cleanup()` interface to print the statistics. + """ + message = [ + f"OracleRouter Statistics: \n", + f"Both Wrong: {self.both_wrong}, ", + f"Both Correct: {self.both_right}, ", + f"Edge Better: {self.edge_better}, ", + f"Cloud Better: {self.cloud_better}" + ] + LOGGER.info("".join(message)) diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/__init__.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/__init__.py new file mode 100644 index 00000000..548b62e7 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/__init__.py @@ -0,0 +1,4 @@ +from .api_llm import APIBasedLLM +from .huggingface_llm import HuggingfaceLLM +from .vllm_llm import VllmLLM +from .base_llm import BaseLLM \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/api_llm.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/api_llm.py new file mode 100644 index 00000000..96ce42a4 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/api_llm.py @@ -0,0 +1,107 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import time + +from openai import OpenAI +from models.base_llm import BaseLLM + +class APIBasedLLM(BaseLLM): + def __init__(self, **kwargs) -> None: + """ Initialize the APIBasedLLM class + """ + BaseLLM.__init__(self, **kwargs) + + api_key=os.environ.get("OPENAI_API_KEY") + base_url=os.environ.get("OPENAI_BASE_URL") + + self.client = OpenAI( + api_key=api_key, + base_url=base_url + ) + + def _load(self, model): + """Set the model to be used. + + Parameters + ---------- + model : str + Existing model from your OpenAI provider. Example: `gpt-4o-mini` + """ + + self.model = model + + def _infer(self, messages): + """Call the OpenAI API to get the response + + Parameters + ---------- + messages : list + OpenAI style message chain. Example: + ``` + [{"role": "user", "content": "Hello, how are you?"}] + ``` + + Returns + ------- + dict + Formatted Response. See `_format_response()` for more details. + """ + + time_to_first_token = 0.0 + internal_token_latency = [] + st = time.perf_counter() + most_recent_timestamp = st + generated_text = "" + + stream = self.client.chat.completions.create( + messages = messages, + model=self.model, + temperature=self.temperature, + max_tokens=self.max_tokens, + top_p=self.top_p, + frequency_penalty=self.repetition_penalty, + stream=True, + stream_options={"include_usage":True} + ) + + for chunk in stream: + timestamp = time.perf_counter() + if time_to_first_token == 0.0: + time_to_first_token = time.perf_counter() - st + else: + internal_token_latency.append(timestamp - most_recent_timestamp) + most_recent_timestamp = timestamp + if chunk.choices: + generated_text += chunk.choices[0].delta.content or "" + if chunk.usage: + usage = chunk.usage + + text = generated_text + prompt_tokens = usage.prompt_tokens + completion_tokens = usage.completion_tokens + internal_token_latency = sum(internal_token_latency) / len(internal_token_latency) + throughput = 1 / internal_token_latency + + response = self._format_response( + text, + prompt_tokens, + completion_tokens, + time_to_first_token, + internal_token_latency, + throughput + ) + + return response diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/base_llm.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/base_llm.py new file mode 100644 index 00000000..f80bb0eb --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/base_llm.py @@ -0,0 +1,321 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import json + +def extract_prediction(input_string): + """Extract the prediction from the completion. This function is used when caching the responses. + """ + if not input_string or not any(char.isalpha() for char in input_string): + return None + # Find the last letter in the string + for char in reversed(input_string): + if 'A' <= char <= 'D': + return char + return None + + +class BaseLLM: + def __init__(self, **kwargs) -> None: + """ Initialize the BaseLLM class + + Parameters + ---------- + kwargs : dict + Parameters that are passed to the model. For details, see `_parse_kwargs()` + """ + self.config = kwargs + self._parse_kwargs(**kwargs) + self.is_cache_loaded = False + self.model_loaded = False + + def _load(self): + """Interface for Model Loading + + Raises + ------ + NotImplementedError + When the method is not implemented + """ + raise NotImplementedError + + + def _infer(self, messages): + """Interface for Model Inference + + Parameters + ---------- + messages : list + OpenAI style message chain. Example: + ``` + [{"role": "user", "content": "Hello, how are you?"}] + ``` + + Raises + ------ + NotImplementedError + When the method is not implemented + """ + raise NotImplementedError + + def _parse_kwargs(self, **kwargs): + """Parse the kwargs and set the attributes + + Parameters + ---------- + kwargs : dict + Parameters that are passed to the model. Possible keys are: + - `model`: str, default None. Model name + - `temperature`: float, default 0.8. Temperature for sampling + - `top_p`: float, default 0.8. Top p for sampling + - `repetition_penalty`: float, default 1.05. Repetition penalty + - `max_tokens`: int, default 512. Maximum tokens to generate + - `use_cache`: bool, default True. Whether to use reponse cache + """ + + self.model_name = kwargs.get("model", None) + self.temperature = kwargs.get("temperature", 0.8) + self.top_p = kwargs.get("top_p", 0.8) + self.repetition_penalty = kwargs.get("repetition_penalty", 1.05) + self.max_tokens = kwargs.get("max_tokens", 512) + self.use_cache = kwargs.get("use_cache", True) + + def inference(self, data): + """Inference the model + + Parameters + ---------- + data : dict + The input data. Example: + ``` + # With Gold Answer (For special uses like OracleRouter) + {"query": "What is the capital of China?", "gold": "A"} + # Without Gold Answer + {"query": "What is the capital of China?"} + ``` + + Returns + ------- + dict + Formatted Response. See `_format_response()` for more details. + + Raises + ------ + ValueError + If the data is not a dict + """ + + if isinstance(data, dict): + gold = data.get("gold", None) + query = data.get("query") + + messages = self.get_message_chain(query) + question = messages[-1]["content"] + + if self.use_cache: + response = self._try_cache(question) + if response is not None: + return response + + if not self.model_loaded: + self._load(self.model_name) + self.model_loaded = True + + response = self._infer(messages) + + prediction = extract_prediction(response.get("completion")) + + response["prediction"] = prediction + + if self.use_cache: + self._update_cache(question, response, prediction, gold) + + return response + + else: + raise ValueError(f"DataType {type(data)} is not supported, it must be `dict`") + + def get_message_chain(self, question, system = None): + """Get the OpenAI Chat style message chain + + Parameters + ---------- + question : str + User prompt. + system : str, optional + System Prompt, by default None + + Returns + ------- + list + OpenAI Chat style message chain. + """ + + if system: + messages = [ + {"role": "system", "content": system}, + {"role": "user", "content": question} + ] + else: + messages = [ + {"role": "user", "content": question} + ] + + return messages + + + def _format_response(self, text, prompt_tokens, completion_tokens, time_to_first_token, internal_token_latency, throughput): + """Format the response + + Parameters + ---------- + text : str + The completion text + prompt_tokens : int + The number of tokens in the prompt + completion_tokens : int + The number of tokens in the completion + time_to_first_token : float + The time consumed to generate the first token. Unit: s(seconds) + internal_token_latency : float + The average time consumed to generate a token. Unit: s(seconds) + throughput : float + The throughput of the completion. Unit: tokens/s + + Returns + ------- + dict + Example: + ``` + { + "completion": "A", + "usage": { + "prompt_tokens": 505, + "completion_tokens": 1, + "total_tokens": 506 + }, + "perf": { + "time_to_first_token": 0.6393, + "internal_token_latency": 0.0005, + "throughput": 1750.6698 + } + } + ``` + """ + + total_tokens = prompt_tokens + completion_tokens + + usage = { + "prompt_tokens": prompt_tokens, + "completion_tokens": completion_tokens, + "total_tokens": total_tokens + } + perf = { + "time_to_first_token": time_to_first_token, + "internal_token_latency": internal_token_latency, + "throughput": throughput + } + + resposne = { + "completion": text, + "usage":usage, + "perf":perf + } + + return resposne + + def _load_cache(self): + """Load cached Responses from `$RESULT_SAVED_URL/cache.json`. + """ + self.cache = None + self.cache_hash = {} + self.cache_models = [] + + cache_file = os.path.join(os.environ["RESULT_SAVED_URL"], "cache.json") + if os.path.exists(cache_file): + with open(cache_file, "r", encoding="utf-8") as f: + self.cache_models = json.load(f) + for cache in self.cache_models: + if cache["config"] == self.config: + self.cache = cache + self.cache_hash = {item["query"]:item['response'] for item in cache["result"]} + self.is_cache_loaded = True + + def _try_cache(self, question): + """Try to get the response from cache + + Parameters + ---------- + question : str + User prompt + + Returns + ------- + dict + If the question is found in cache, return the Formatted Response. Otherwise, return None. + """ + + if not self.is_cache_loaded: + self._load_cache() + + return self.cache_hash.get(question, None) + + def _update_cache(self, question, response, prediction, gold): + """Update the cache with the new item + + Parameters + ---------- + question : str + User prompt + response : dict + Formatted Response. See `_format_response()` for more details. + prediction : str + The prediction extracted from the response + gold : str + The gold answer for the question + """ + + if not self.is_cache_loaded: + self._load_cache() + + new_item = { + "query": question, + "response": response, + "prediction": prediction, + "gold": gold + } + + self.cache_hash[question] = response + + if self.cache is not None: + self.cache["result"].append(new_item) + else: + self.cache = {"config": self.config, "result": [new_item]} + self.cache_models.append(self.cache) + + def save_cache(self): + """Save the cache to `$RESULT_SAVED_URL/cache.json`. + """ + + cache_file = os.path.join(os.environ["RESULT_SAVED_URL"], "cache.json") + + if self.is_cache_loaded: + with open(cache_file, "w", encoding="utf-8") as f: + json.dump(self.cache_models, f, indent=4) + + def cleanup(self): + """Default Cleanup Method to release resources + """ + pass diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/huggingface_llm.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/huggingface_llm.py new file mode 100644 index 00000000..8bf87385 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/huggingface_llm.py @@ -0,0 +1,133 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import time +from threading import Thread + +from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer +from models.base_llm import BaseLLM + +device = "cuda" +os.environ["TOKENIZERS_PARALLELISM"] = "true" + +class HuggingfaceLLM(BaseLLM): + def __init__(self, **kwargs) -> None: + """ Initialize the HuggingfaceLLM class + + Parameters + ---------- + kwargs : dict + Parameters that are passed to the model. Details can be found in the BaseLLM class. + """ + BaseLLM.__init__(self, **kwargs) + + def _load(self, model): + """Load the model via Hugging Face API + + Parameters + ---------- + model : str + Hugging Face style model name. Example: `Qwen/Qwen2.5-0.5B-Instruct` + """ + self.model = AutoModelForCausalLM.from_pretrained( + model, + torch_dtype="auto", + device_map="auto", + trust_remote_code=True + ) + self.tokenizer = AutoTokenizer.from_pretrained( + model, + trust_remote_code=True + ) + + def _infer(self, messages): + """Call the transformers inference API to get the response + + Parameters + ---------- + messages : list + OpenAI style message chain. Example: + ``` + [{"role": "user", "content": "Hello, how are you?"}] + ``` + + Returns + ------- + dict + Formatted Response. See `_format_response()` for more details. + """ + + st = time.perf_counter() + most_recent_timestamp = st + + # messages = self.get_message_chain(question, system_prompt) + + streamer = TextIteratorStreamer(self.tokenizer) + + text = self.tokenizer.apply_chat_template( + messages, + tokenize=False, + add_generation_prompt=True + ) + + model_inputs = self.tokenizer([text], return_tensors="pt").to(device) + + streamer = TextIteratorStreamer(self.tokenizer, skip_prompt=True) + + generation_kwargs = dict( + model_inputs, + streamer=streamer, + max_new_tokens=self.max_tokens, + temperature=self.temperature, + top_p=self.top_p, + repetition_penalty=self.repetition_penalty, + ) + + thread = Thread( + target=self.model.generate, + kwargs=generation_kwargs + ) + + thread.start() + time_to_first_token = 0 + internal_token_latency = [] + generated_text = "" + completion_tokens = 0 + + for chunk in streamer: + timestamp = time.perf_counter() + if time_to_first_token == 0: + time_to_first_token = time.perf_counter() - st + else: + internal_token_latency.append(timestamp - most_recent_timestamp) + most_recent_timestamp = timestamp + generated_text += chunk + completion_tokens += 1 + + text = generated_text.replace("<|im_end|>", "") + prompt_tokens = len(model_inputs.input_ids[0]) + internal_token_latency = sum(internal_token_latency) / len(internal_token_latency) + throughput = 1 / internal_token_latency + + response = self._format_response( + text, + prompt_tokens, + completion_tokens, + time_to_first_token, + internal_token_latency, + throughput + ) + + return response diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/vllm_llm.py b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/vllm_llm.py new file mode 100644 index 00000000..5d572306 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/models/vllm_llm.py @@ -0,0 +1,140 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +from vllm import LLM, SamplingParams +from vllm.distributed.parallel_state import destroy_model_parallel, destroy_distributed_environment +from models.base_llm import BaseLLM + +os.environ["VLLM_WORKER_MULTIPROC_METHOD"] = "spawn" +os.environ["TOKENIZERS_PARALLELISM"] = "true" +os.environ["VLLM_LOGGING_LEVEL"] = "ERROR" + +device = "cuda" + +class VllmLLM(BaseLLM): + def __init__(self, **kwargs) -> None: + """ Initialize the VllmLLM class + + Parameters + ---------- + kwargs : dict + Parameters that are passed to the model. Details can be found in the BaseLLM class. + + Special keys: + - `tensor_parallel_size`: int, default 1. Number of tensor parallelism. + - `gpu_memory_utilization`: float, default 0.8. GPU memory utilization. + + See details about special parameters in [vLLM's Named Arguments](https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html). + """ + + BaseLLM.__init__(self, **kwargs) + + self.tensor_parallel_size = kwargs.get("tensor_parallel_size", 1) + self.gpu_memory_utilization = kwargs.get("gpu_memory_utilization", 0.8) + + def _load(self, model): + """Load the model via vLLM API + + Parameters + ---------- + model : str + Hugging Face style model name. Example: `Qwen/Qwen2.5-0.5B-Instruct` + """ + self.model = LLM( + model=model, + trust_remote_code=True, + dtype="float16", + tensor_parallel_size=self.tensor_parallel_size, + gpu_memory_utilization=self.gpu_memory_utilization, + max_model_len = 8192 + #quantization=self.quantization # TODO need to align with vllm API + ) + + self.sampling_params = SamplingParams( + temperature=self.temperature, + top_p=self.top_p, + repetition_penalty=self.repetition_penalty, + max_tokens=self.max_tokens + ) + + # Warmup to make metrics more accurate + self.warmup() + + def warmup(self): + """Warm up the Model for more accurate performance metrics + """ + + self.model.chat( + [{"role": "user", "content": "Hello"}], + self.sampling_params, + use_tqdm=False + ) + + def _infer(self, messages): + """Call the vLLM Offline Inference API to get the response + + Parameters + ---------- + messages : list + OpenAI style message chain. Example: + ``` + [{"role": "user", "content": "Hello, how are you?"}] + ``` + + Returns + ------- + dict + Formatted Response. See `_format_response()` for more details. + """ + + outputs = self.model.chat( + messages=messages, + sampling_params=self.sampling_params, + use_tqdm=False + ) + metrics = outputs[0].metrics + # Completion Text + text = outputs[0].outputs[0].text + # Prompt Token Count + prompt_tokens = len(outputs[0].prompt_token_ids) + # Completion Token Count + completion_tokens = len(outputs[0].outputs[0].token_ids) + # Time to First Token (s) + time_to_first_token = metrics.first_token_time - metrics.arrival_time + # Internal Token Latency (s) + internal_token_latency = (metrics.finished_time - metrics.first_token_time) / completion_tokens + # Completion Throughput (Token/s) + throughput = 1 / internal_token_latency + + response = self._format_response( + text, + prompt_tokens, + completion_tokens, + time_to_first_token, + internal_token_latency, + throughput + ) + + return response + + def cleanup(self): + """Release the model from GPU + """ + destroy_model_parallel() + destroy_distributed_environment() + + if hasattr(self, "model"): + del self.model.llm_engine.model_executor diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/test_queryrouting.yaml b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/test_queryrouting.yaml new file mode 100644 index 00000000..a3926146 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/test_queryrouting.yaml @@ -0,0 +1,97 @@ +algorithm: + # paradigm name; string type; + paradigm_type: "jointinference" + + # algorithm module configuration in the paradigm; list type; + modules: + # kind of algorithm module; string type; + - type: "dataset_processor" + # name of custom dataset processor; string type; + name: "OracleRouterDatasetProcessor" + # the url address of custom dataset processor; string type; + url: "./examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/data_processor.py" + + - type: "edgemodel" + # name of edge model module; string type; + name: "EdgeModel" + # the url address of edge model module; string type; + url: "./examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/edge_model.py" + + hyperparameters: + # name of the hyperparameter; string type; + - model: + values: + - "Qwen/Qwen2.5-1.5B-Instruct" + - "Qwen/Qwen2.5-3B-Instruct" + - "Qwen/Qwen2.5-7B-Instruct" + - backend: + # backend; string type; + # currently the options of value are as follows: + # 1> "huggingface": transformers backend; + # 2> "vllm": vLLM backend; + # 3> "api": OpenAI API backend; + values: + - "vllm" + - temperature: + # What sampling temperature to use, between 0 and 2; float type; + # For reproducable results, the temperature should be set to 0; + values: + - 0 + - top_p: + # nucleus sampling parameter; float type; + values: + - 0.8 + - max_tokens: + # The maximum number of tokens that can be generated in the chat completion; int type; + values: + - 512 + - repetition_penalty: + # The parameter for repetition penalty; float type; + values: + - 1.05 + - tensor_parallel_size: + # The size of tensor parallelism (Used for vLLM) + values: + - 4 + - gpu_memory_utilization: + # The percentage of GPU memory utilization (Used for vLLM) + values: + - 0.9 + - use_cache: + # Whether to use reponse cache; boolean type; + values: + - true + + - type: "cloudmodel" + # name of python module; string type; + name: "CloudModel" + # the url address of python module; string type; + url: "./examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/cloud_model.py" + + hyperparameters: + # name of the hyperparameter; string type; + - model: + values: + - "gpt-4o-mini" + - temperature: + values: + - 0 + - top_p: + values: + - 0.8 + - max_tokens: + values: + - 512 + - repetition_penalty: + values: + - 1.05 + - use_cache: + values: + - true + + - type: "hard_example_mining" + # name of Router module; string type; + # BERTRouter, EdgeOnly, CloudOnly, RandomRouter, OracleRouter + name: "EdgeOnly" + # the url address of python module; string type; + url: "./examples/cloud-edge-collaborative-inference-for-llm/testalgorithms/query-routing/hard_sample_mining.py" diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/accuracy.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/accuracy.py new file mode 100644 index 00000000..a3dc088f --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/accuracy.py @@ -0,0 +1,59 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +__all__ = ["acc"] + +def get_last_letter(input_string): + """Extract the prediction from the completion. This function is used when caching the responses. + """ + if not input_string or not any(char.isalpha() for char in input_string): + return None + # Find the last letter in the string + for char in reversed(input_string): + if 'A' <= char <= 'D': + return char + return None + +@ClassFactory.register(ClassType.GENERAL, alias="Accuracy") +def acc(y_true, y_pred): + """Calculate the accuracy. + + Parameters + ---------- + y_true : list + Ground truth + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + float + The accuracy (%) + """ + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + y_pred = [get_last_letter(pred.result.completion) for pred in infer_res] + y_true = [get_last_letter(y) for y in y_true] + + # 使用列表推导来比较两个列表中的元素是否相同 + same_elements = [y_pred[i] == y_true[i] for i in range(len(y_pred))] + + # 计算相同元素的数量 + acc = sum(same_elements) / len(same_elements) + + return round(acc * 100, 2) diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_completion_tokens.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_completion_tokens.py new file mode 100644 index 00000000..06c09b78 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_completion_tokens.py @@ -0,0 +1,39 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Cloud Completion Tokens") +def cloud_completion_tokens(_, y_pred): + """Calculate the number of completion tokens generated by the cloud model. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + int + Number of completion tokens generated by the cloud model + """ + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + cloud_completion_tokens = sum([pred.cloud_result.completion_tokens for pred in infer_res]) + + return cloud_completion_tokens \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_prompt_tokens.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_prompt_tokens.py new file mode 100644 index 00000000..f3aed044 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_prompt_tokens.py @@ -0,0 +1,39 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Cloud Prompt Tokens") +def cloud_prompt_tokens(_, y_pred): + """Calculate the number of prompt tokens generated by the cloud model. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + int + Number of prompt tokens generated by the cloud model + """ + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + cloud_prompt_tokens = sum([pred.cloud_result.prompt_tokens for pred in infer_res]) + + return cloud_prompt_tokens \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_completion_tokens.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_completion_tokens.py new file mode 100644 index 00000000..05af423f --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_completion_tokens.py @@ -0,0 +1,40 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Edge Completion Tokens") +def edge_completion_tokens(_, y_pred): + """Calculate the number of completion tokens generated by the edge model. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + int + Number of completion tokens generated by the edge model + """ + + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + edge_completion_tokens = sum([pred.edge_result.completion_tokens for pred in infer_res]) + + return edge_completion_tokens \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_prompt_tokens.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_prompt_tokens.py new file mode 100644 index 00000000..f2a30b3b --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_prompt_tokens.py @@ -0,0 +1,40 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Edge Prompt Tokens") +def edge_prompt_tokens(_, y_pred): + """Calculate the number of prompt tokens generated by the edge model. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + int + Number of prompt tokens generated by the edge model + """ + + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + edge_prompt_tokens = sum([pred.edge_result.prompt_tokens for pred in infer_res]) + + return edge_prompt_tokens \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_ratio.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_ratio.py new file mode 100644 index 00000000..6ae5a1f5 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_ratio.py @@ -0,0 +1,42 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Edge Ratio") +def edge_ratio(_, y_pred): + """Calculate the ratio of of queries routed to EdgeModel. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + int + The ratio of queries routed to EdgeModel (%) + """ + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + y_pred = [pred.is_hard_example for pred in infer_res] + + edge_ratio = 1 - sum(y_pred) / len(y_pred) + + return round(edge_ratio * 100,2) + diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/internal_token_latency.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/internal_token_latency.py new file mode 100644 index 00000000..9024a2b3 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/internal_token_latency.py @@ -0,0 +1,41 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Internal Token Latency") +def internal_token_latency(_, y_pred): + """Calculate the Internal Token Latency of the system. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + float + Average Internal Token Latency (s) of the system + """ + + + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + average_itl = sum([pred.result.internal_token_latency for pred in infer_res]) / len(infer_res) + + return round(average_itl,3) \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/result_parser.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/result_parser.py new file mode 100644 index 00000000..bbaba90e --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/result_parser.py @@ -0,0 +1,92 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from dataclasses import dataclass +from typing import TypedDict + +@dataclass +class Response: + """Formatted Response Parser""" + + completion: str + prompt_tokens : int + completion_tokens : int + total_tokens : int + time_to_first_token: float + internal_token_latency: float + throughput: float + + @classmethod + def from_dict(cls, response): + """Create a Response object from a dictionary + + Parameters + ---------- + response : dict + Formatted Response, See `BaseLLM._format_response()` for more details. + + Returns + ------- + Response + `Response` Object + """ + + if response: + return cls( + response["completion"], + response["usage"]["prompt_tokens"], + response["usage"]["completion_tokens"], + response["usage"]["total_tokens"], + response["perf"]["time_to_first_token"], + response["perf"]["internal_token_latency"], + response["perf"]["throughput"] + ) + else: + return cls("", 0, 0, 0, 0, 0, 0) + +@dataclass +class JointInferenceResult: + """Joint Inference Result Parser""" + is_hard_example : bool + result : Response + edge_result: Response + cloud_result: Response + + @classmethod + def from_list(cls, is_hard_example, result, edge_result, cloud_reslut): + """Create a JointInferenceResult object from a list + + Parameters + ---------- + is_hard_example : bool + Whter the example is hard or not + result : dict + Formatted Response. See `BaseLLM._format_response()` for more details. + edge_result : dict + Formatted Response from the Edge Model. See `BaseLLM._format_response()` for more details. + cloud_reslut : dict + Formatted Response from the Cloud Model. See `BaseLLM._format_response()` for more details. + + Returns + ------- + _type_ + _description_ + """ + + return cls( + is_hard_example, + Response.from_dict(result), + Response.from_dict(edge_result), + Response.from_dict(cloud_reslut), + ) diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/testenv.yaml b/examples/cloud-edge-collaborative-inference-for-llm/testenv/testenv.yaml new file mode 100644 index 00000000..18510b64 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/testenv.yaml @@ -0,0 +1,39 @@ +testenv: + # dataset configuration + dataset: + # the url address of train dataset index; string type; + train_data: "./dataset/mmlu-5-shot/train_data/data.json" + # the url address of test dataset index; string type; + test_data_info: "./dataset/mmlu-5-shot/test_data/metadata.json" + + # metrics configuration for test case's evaluation; list type; + metrics: + # metric name; string type; + - name: "Accuracy" + # the url address of python file + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/accuracy.py" + + - name: "Edge Ratio" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_ratio.py" + + - name: "Cloud Prompt Tokens" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_prompt_tokens.py" + + - name: "Cloud Completion Tokens" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/cloud_completion_tokens.py" + + - name: "Edge Prompt Tokens" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_prompt_tokens.py" + + - name: "Edge Completion Tokens" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/edge_completion_tokens.py" + + - name: "Time to First Token" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/time_to_first_token.py" + + - name: "Throughput" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/throughput.py" + + - name: "Internal Token Latency" + url: "./examples/cloud-edge-collaborative-inference-for-llm/testenv/internal_token_latency.py" + diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/throughput.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/throughput.py new file mode 100644 index 00000000..6a2ccc61 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/throughput.py @@ -0,0 +1,41 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Throughput") +def throughput(_, y_pred): + """Calculate the Throughput of the system. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + float + Average Throughput (token/s) of the system + """ + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + average_itl = sum([pred.result.internal_token_latency for pred in infer_res]) / len(infer_res) + + average_throughput = 1 / average_itl + + return round(average_throughput,2) \ No newline at end of file diff --git a/examples/cloud-edge-collaborative-inference-for-llm/testenv/time_to_first_token.py b/examples/cloud-edge-collaborative-inference-for-llm/testenv/time_to_first_token.py new file mode 100644 index 00000000..0f0964e7 --- /dev/null +++ b/examples/cloud-edge-collaborative-inference-for-llm/testenv/time_to_first_token.py @@ -0,0 +1,39 @@ +# Copyright 2024 The KubeEdge Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sedna.common.class_factory import ClassType, ClassFactory +from result_parser import JointInferenceResult + +@ClassFactory.register(ClassType.GENERAL, alias="Time to First Token") +def time_to_first_token(_, y_pred): + """Calculate the Time to First Token of the system. + + Parameters + ---------- + _ : + Ignored + y_pred : list + List of predictions from the JointInference paradigm + + Returns + ------- + float + Average Time to First Token (s) of the system + """ + + infer_res = [JointInferenceResult.from_list(*pred) for pred in y_pred] + + average_ttft = sum([pred.result.time_to_first_token for pred in infer_res]) / len(infer_res) + + return round(average_ttft, 3) \ No newline at end of file diff --git a/examples/resources/third_party/sedna-0.4.1-py3-none-any.whl b/examples/resources/third_party-bk/sedna-0.4.1-py3-none-any.whl similarity index 100% rename from examples/resources/third_party/sedna-0.4.1-py3-none-any.whl rename to examples/resources/third_party-bk/sedna-0.4.1-py3-none-any.whl diff --git a/examples/resources/third_party/sedna-0.6.0.1-py3-none-any.whl b/examples/resources/third_party/sedna-0.6.0.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3a50150bed1714da83a795533eead95ad29c96f0 GIT binary patch literal 177655 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֧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

I2Y^8lUX1lwA!Y%4u`u9b1m=So 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%0D{Ko_g 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 VcY~2Q1mXeyQG>yFy$8}k{|7W8zKH+; literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt index 9f7cec56..8ecae08a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,5 @@ -prettytable~=2.5.0 # BSD \ No newline at end of file +prettytable~=2.5.0 # BSD +scikit-learn +numpy +pandas +tqdm \ No newline at end of file