diff --git a/databricks-production-qa-demo/steps/deployment/deployment_deploy.py b/databricks-production-qa-demo/steps/deployment/deployment_deploy.py index b7407dcfb..c8220afe9 100644 --- a/databricks-production-qa-demo/steps/deployment/deployment_deploy.py +++ b/databricks-production-qa-demo/steps/deployment/deployment_deploy.py @@ -31,10 +31,14 @@ @step(enable_cache=False) -def deployment_deploy() -> Annotated[ - Optional[DatabricksDeploymentService], - ArtifactConfig(name="databricks_deployment", is_deployment_artifact=True), -]: +def deployment_deploy() -> ( + Annotated[ + Optional[DatabricksDeploymentService], + ArtifactConfig( + name="databricks_deployment", is_deployment_artifact=True + ), + ] +): """Predictions step. This is an example of a predictions step that takes the data in and returns diff --git a/end-to-end-computer-vision/steps/export_label_studio.py b/end-to-end-computer-vision/steps/export_label_studio.py index 1b47431b6..cf0f96328 100644 --- a/end-to-end-computer-vision/steps/export_label_studio.py +++ b/end-to-end-computer-vision/steps/export_label_studio.py @@ -28,7 +28,6 @@ logger = get_logger(__name__) - @step( output_materializers={ LABELED_DATASET_NAME: LabelStudioAnnotationMaterializer diff --git a/eurorate-predictor/pipelines/training.py b/eurorate-predictor/pipelines/training.py index f9a5b57f0..a94db33de 100644 --- a/eurorate-predictor/pipelines/training.py +++ b/eurorate-predictor/pipelines/training.py @@ -24,7 +24,9 @@ @pipeline -def ecb_predictor_model_training_pipeline(augmented_dataset_id, mode: str = "develop"): +def ecb_predictor_model_training_pipeline( + augmented_dataset_id, mode: str = "develop" +): """A pipeline to train an XGBoost model and promote it. Args: diff --git a/eurorate-predictor/run.py b/eurorate-predictor/run.py index bee2c1bef..5f4097aa5 100644 --- a/eurorate-predictor/run.py +++ b/eurorate-predictor/run.py @@ -101,7 +101,9 @@ def main( pipeline_args["config_path"] = os.path.join( config_folder, f"etl_{mode}.yaml" ) - ecb_predictor_etl_pipeline.with_options(**pipeline_args)(**run_args_etl) + ecb_predictor_etl_pipeline.with_options(**pipeline_args)( + **run_args_etl + ) logger.info("ETL pipeline finished successfully!\n") # Execute Feature Engineering Pipeline @@ -126,9 +128,9 @@ def main( pipeline_args["config_path"] = os.path.join( config_folder, f"feature_engineering_{mode}.yaml" ) - ecb_predictor_feature_engineering_pipeline.with_options(**pipeline_args)( - **run_args_feature - ) + ecb_predictor_feature_engineering_pipeline.with_options( + **pipeline_args + )(**run_args_feature) logger.info("Feature Engineering pipeline finished successfully!\n") # Execute Model Training Pipeline @@ -153,7 +155,9 @@ def main( pipeline_args["config_path"] = os.path.join( config_folder, f"training_{mode}.yaml" ) - ecb_predictor_model_training_pipeline.with_options(**pipeline_args)(**run_args_train) + ecb_predictor_model_training_pipeline.with_options(**pipeline_args)( + **run_args_train + ) logger.info("Model Training pipeline finished successfully!\n") diff --git a/gamesense/steps/finetune.py b/gamesense/steps/finetune.py index 3757801eb..5421757d7 100644 --- a/gamesense/steps/finetune.py +++ b/gamesense/steps/finetune.py @@ -28,12 +28,11 @@ from utils.loaders import load_base_model from utils.tokenizer import load_tokenizer from zenml import ArtifactConfig, step +from zenml.client import Client from zenml.enums import ArtifactType from zenml.logger import get_logger from zenml.materializers import BuiltInMaterializer from zenml.utils.cuda_utils import cleanup_gpu_memory -from zenml.client import Client - logger = get_logger(__name__) diff --git a/huggingface-sagemaker/steps/deploying/huggingface_deployment.py b/huggingface-sagemaker/steps/deploying/huggingface_deployment.py index 33adcf81d..89d7305fe 100644 --- a/huggingface-sagemaker/steps/deploying/huggingface_deployment.py +++ b/huggingface-sagemaker/steps/deploying/huggingface_deployment.py @@ -47,9 +47,7 @@ def deploy_to_huggingface( save_model_to_deploy.entrypoint() logger.info("Model saved locally. Pushing to HuggingFace...") - assert secret, ( - "No secret found with name 'huggingface_creds'. Please create one with your `token`." - ) + assert secret, "No secret found with name 'huggingface_creds'. Please create one with your `token`." token = secret.secret_values["token"] api = HfApi(token=token) diff --git a/huggingface-sagemaker/steps/promotion/promote_get_metrics.py b/huggingface-sagemaker/steps/promotion/promote_get_metrics.py index 06473701c..93cebad1b 100644 --- a/huggingface-sagemaker/steps/promotion/promote_get_metrics.py +++ b/huggingface-sagemaker/steps/promotion/promote_get_metrics.py @@ -27,10 +27,12 @@ @step -def promote_get_metrics() -> Tuple[ - Annotated[Dict[str, Any], "latest_metrics"], - Annotated[Dict[str, Any], "current_metrics"], -]: +def promote_get_metrics() -> ( + Tuple[ + Annotated[Dict[str, Any], "latest_metrics"], + Annotated[Dict[str, Any], "current_metrics"], + ] +): """Get metrics for comparison for promoting a model. This is an example of a metric retrieval step. It is used to retrieve diff --git a/llm-complete-guide/pipelines/llm_eval.py b/llm-complete-guide/pipelines/llm_eval.py index 9112a8ccf..f0b3f39ab 100644 --- a/llm-complete-guide/pipelines/llm_eval.py +++ b/llm-complete-guide/pipelines/llm_eval.py @@ -17,7 +17,7 @@ from typing import Optional import click -from steps.create_prompt import PROMPT, create_prompt +from steps.create_prompt import PROMPT from steps.eval_e2e import e2e_evaluation, e2e_evaluation_llm_judged from steps.eval_retrieval import ( retrieval_evaluation_full, diff --git a/llm-complete-guide/steps/create_prompt.py b/llm-complete-guide/steps/create_prompt.py index 61465592a..4c840019c 100644 --- a/llm-complete-guide/steps/create_prompt.py +++ b/llm-complete-guide/steps/create_prompt.py @@ -24,6 +24,7 @@ answers. \ """ + @step def create_prompt() -> str: """Create a prompt for the RAG pipeline.""" diff --git a/llm-complete-guide/steps/eval_retrieval.py b/llm-complete-guide/steps/eval_retrieval.py index ebec42b50..bf3594f8a 100644 --- a/llm-complete-guide/steps/eval_retrieval.py +++ b/llm-complete-guide/steps/eval_retrieval.py @@ -275,9 +275,9 @@ def perform_small_retrieval_evaluation(use_reranking: bool) -> float: @step -def retrieval_evaluation_small() -> Annotated[ - float, "small_failure_rate_retrieval" -]: +def retrieval_evaluation_small() -> ( + Annotated[float, "small_failure_rate_retrieval"] +): """Executes the retrieval evaluation step without reranking. Returns: @@ -287,9 +287,9 @@ def retrieval_evaluation_small() -> Annotated[ @step -def retrieval_evaluation_small_with_reranking() -> Annotated[ - float, "small_failure_rate_retrieval_reranking" -]: +def retrieval_evaluation_small_with_reranking() -> ( + Annotated[float, "small_failure_rate_retrieval_reranking"] +): """Executes the retrieval evaluation step with reranking. Returns: diff --git a/llm-complete-guide/steps/eval_visualisation.py b/llm-complete-guide/steps/eval_visualisation.py index 65b26fd02..d04454e38 100644 --- a/llm-complete-guide/steps/eval_visualisation.py +++ b/llm-complete-guide/steps/eval_visualisation.py @@ -12,13 +12,13 @@ # or implied. See the License for the specific language governing # permissions and limitations under the License. -from typing import Annotated, Dict, List, Tuple +from typing import Annotated, Dict, List import plotly.graph_objects as go -from plotly.subplots import make_subplots -from zenml import ArtifactConfig, get_step_context, log_metadata, step +from zenml import get_step_context, log_metadata, step from zenml.types import HTMLString + def create_plotly_bar_chart( labels: List[str], scores: List[float], @@ -43,54 +43,66 @@ def create_plotly_bar_chart( """ # Generate colors for bars if alternate_colors: - colors = ["rgba(66, 133, 244, 0.8)" if i % 2 == 0 else "rgba(219, 68, 55, 0.8)" for i in range(len(labels))] + colors = [ + "rgba(66, 133, 244, 0.8)" + if i % 2 == 0 + else "rgba(219, 68, 55, 0.8)" + for i in range(len(labels)) + ] else: colors = ["rgba(66, 133, 244, 0.8)" for _ in range(len(labels))] # Prepare hover text if descriptions: - hover_text = [f"{label}
Value: {score:.2f}
{descriptions.get(label, '')}" - for label, score in zip(labels, scores)] + hover_text = [ + f"{label}
Value: {score:.2f}
{descriptions.get(label, '')}" + for label, score in zip(labels, scores) + ] else: - hover_text = [f"{label}
Value: {score:.2f}" for label, score in zip(labels, scores)] + hover_text = [ + f"{label}
Value: {score:.2f}" + for label, score in zip(labels, scores) + ] # Create figure fig = go.Figure() - + fig.add_trace( go.Bar( y=labels, x=scores, - orientation='h', + orientation="h", marker_color=colors, text=[f"{score:.2f}" for score in scores], - textposition='auto', + textposition="auto", hovertext=hover_text, - hoverinfo='text', + hoverinfo="text", ) ) # Set layout max_value = max(scores) if scores else 5 - xaxis_range = [0, 100] if percentage_scale else [0, max(5, max_value * 1.1)] + xaxis_range = ( + [0, 100] if percentage_scale else [0, max(5, max_value * 1.1)] + ) xaxis_title = "Percentage (%)" if percentage_scale else "Score" - + fig.update_layout( title=title, xaxis=dict( title=xaxis_title, range=xaxis_range, showgrid=True, - gridcolor='rgba(230, 230, 230, 0.8)', + gridcolor="rgba(230, 230, 230, 0.8)", ), yaxis=dict( autorange="reversed", # Make labels read top-to-bottom ), margin=dict(l=20, r=20, t=60, b=20), height=max(300, 70 * len(labels)), - plot_bgcolor='rgba(255, 255, 255, 1)', + plot_bgcolor="rgba(255, 255, 255, 1)", ) - + return fig @@ -122,58 +134,49 @@ def generate_evaluation_html( """ # Metric descriptions for hovering metric_descriptions = { - "Small Retrieval Eval Failure Rate": - "Percentage of small test cases where retrieval failed to find relevant documents.", - "Small Retrieval Eval Failure Rate Reranking": - "Percentage of small test cases where retrieval with reranking failed to find relevant documents.", - "Full Retrieval Eval Failure Rate": - "Percentage of all test cases where retrieval failed to find relevant documents.", - "Full Retrieval Eval Failure Rate Reranking": - "Percentage of all test cases where retrieval with reranking failed to find relevant documents.", - "Failure Rate Bad Answers": - "Percentage of responses that were factually incorrect or misleading.", - "Failure Rate Bad Immediate Responses": - "Percentage of immediate responses that did not adequately address the query.", - "Failure Rate Good Responses": - "Percentage of responses rated as good by evaluators.", - "Average Toxicity Score": - "Average score measuring harmful, offensive, or inappropriate content (lower is better).", - "Average Faithfulness Score": - "Average score measuring how accurately the response represents the source material (higher is better).", - "Average Helpfulness Score": - "Average score measuring the practical utility of responses to users (higher is better).", - "Average Relevance Score": - "Average score measuring how well responses address the specific query intent (higher is better).", + "Small Retrieval Eval Failure Rate": "Percentage of small test cases where retrieval failed to find relevant documents.", + "Small Retrieval Eval Failure Rate Reranking": "Percentage of small test cases where retrieval with reranking failed to find relevant documents.", + "Full Retrieval Eval Failure Rate": "Percentage of all test cases where retrieval failed to find relevant documents.", + "Full Retrieval Eval Failure Rate Reranking": "Percentage of all test cases where retrieval with reranking failed to find relevant documents.", + "Failure Rate Bad Answers": "Percentage of responses that were factually incorrect or misleading.", + "Failure Rate Bad Immediate Responses": "Percentage of immediate responses that did not adequately address the query.", + "Failure Rate Good Responses": "Percentage of responses rated as good by evaluators.", + "Average Toxicity Score": "Average score measuring harmful, offensive, or inappropriate content (lower is better).", + "Average Faithfulness Score": "Average score measuring how accurately the response represents the source material (higher is better).", + "Average Helpfulness Score": "Average score measuring the practical utility of responses to users (higher is better).", + "Average Relevance Score": "Average score measuring how well responses address the specific query intent (higher is better).", } # Create individual charts retrieval_fig = create_plotly_bar_chart( - retrieval_labels, - retrieval_scores, - f"Retrieval Evaluation Metrics", + retrieval_labels, + retrieval_scores, + f"Retrieval Evaluation Metrics", alternate_colors=True, - descriptions=metric_descriptions + descriptions=metric_descriptions, ) - + generation_basic_fig = create_plotly_bar_chart( - generation_basic_labels, - generation_basic_scores, - f"Basic Generation Metrics", + generation_basic_labels, + generation_basic_scores, + f"Basic Generation Metrics", percentage_scale=True, - descriptions=metric_descriptions + descriptions=metric_descriptions, ) - + generation_quality_fig = create_plotly_bar_chart( - generation_quality_labels, - generation_quality_scores, + generation_quality_labels, + generation_quality_scores, f"Generation Quality Metrics", - descriptions=metric_descriptions + descriptions=metric_descriptions, ) # Create summary metrics cards composite_quality = metrics_metadata.get("composite.overall_quality", 0) - retrieval_effectiveness = metrics_metadata.get("composite.retrieval_effectiveness", 0) - + retrieval_effectiveness = metrics_metadata.get( + "composite.retrieval_effectiveness", 0 + ) + # Combine into complete HTML report html = f""" @@ -388,7 +391,7 @@ def generate_evaluation_html( """ - + return HTMLString(html) @@ -434,10 +437,10 @@ def visualize_evaluation_results( + average_helpfulness_score + average_relevance_score ) / 3 - + composite_retrieval_effectiveness = ( - (1 - small_retrieval_eval_failure_rate/100) - + (1 - full_retrieval_eval_failure_rate/100) + (1 - small_retrieval_eval_failure_rate / 100) + + (1 - full_retrieval_eval_failure_rate / 100) ) / 2 # Collect all metrics for dashboard and logging diff --git a/llm-complete-guide/steps/hf_dataset_loader.py b/llm-complete-guide/steps/hf_dataset_loader.py index 0c7777573..5615ba4a4 100644 --- a/llm-complete-guide/steps/hf_dataset_loader.py +++ b/llm-complete-guide/steps/hf_dataset_loader.py @@ -23,9 +23,9 @@ @step(output_materializers=HFDatasetMaterializer) -def load_hf_dataset() -> Tuple[ - Annotated[Dataset, "train"], Annotated[Dataset, "test"] -]: +def load_hf_dataset() -> ( + Tuple[Annotated[Dataset, "train"], Annotated[Dataset, "test"]] +): train_dataset = load_dataset(DATASET_NAME_DEFAULT, split="train") test_dataset = load_dataset(DATASET_NAME_DEFAULT, split="test") return train_dataset, test_dataset diff --git a/llm-complete-guide/steps/url_scraper.py b/llm-complete-guide/steps/url_scraper.py index 525c6d3b9..923f73515 100644 --- a/llm-complete-guide/steps/url_scraper.py +++ b/llm-complete-guide/steps/url_scraper.py @@ -50,7 +50,7 @@ def url_scraper( "https://docs.zenml.io/stack-components/step-operators/azureml", # "https://docs.zenml.io/how-to/interact-with-secrets", # "https://docs.zenml.io/how-to/infrastructure-deployment/auth-management/service-connectors-guide", - # "https://docs.zenml.io/how-to/infrastructure-deployment/auth-management/hyperai-service-connector", + # "https://docs.zenml.io/how-to/infrastructure-deployment/auth-management/hyperai-service-connector", # "https://docs.zenml.io/stack-components/data-validators/evidently", # "https://docs.zenml.io/stack-components/data-validators", # "https://docs.zenml.io/stack-components/step-operators/sagemaker", diff --git a/magic-photobooth/k8s_run.py b/magic-photobooth/k8s_run.py index 4e1d96399..5f19c702e 100644 --- a/magic-photobooth/k8s_run.py +++ b/magic-photobooth/k8s_run.py @@ -326,11 +326,13 @@ def generate_video_frames( settings={"orchestrator.kubernetes": kubernetes_settings}, enable_cache=False, ) -def image_to_video() -> Tuple[ - Annotated[PILImage.Image, "generated_image"], - Annotated[bytes, "video_data"], - Annotated[HTMLString, "video_html"], -]: +def image_to_video() -> ( + Tuple[ + Annotated[PILImage.Image, "generated_image"], + Annotated[bytes, "video_data"], + Annotated[HTMLString, "video_html"], + ] +): model_path = f"{TrainConfig().hf_username}/{TrainConfig().hf_repo_suffix}" pipe = AutoPipelineForText2Image.from_pretrained( diff --git a/magic-photobooth/modal_run.py b/magic-photobooth/modal_run.py index 5cf49ced2..ee1409ff0 100644 --- a/magic-photobooth/modal_run.py +++ b/magic-photobooth/modal_run.py @@ -308,11 +308,13 @@ def generate_video_frames( settings={"step_operator.modal": modal_settings}, enable_cache=False, ) -def image_to_video() -> Tuple[ - Annotated[PILImage.Image, "generated_image"], - Annotated[bytes, "video_data"], - Annotated[HTMLString, "video_html"], -]: +def image_to_video() -> ( + Tuple[ + Annotated[PILImage.Image, "generated_image"], + Annotated[bytes, "video_data"], + Annotated[HTMLString, "video_html"], + ] +): model_path = f"{TrainConfig().hf_username}/{TrainConfig().hf_repo_suffix}" pipe = AutoPipelineForText2Image.from_pretrained( diff --git a/magic-photobooth/modal_run_using_azure_data.py b/magic-photobooth/modal_run_using_azure_data.py index 561888ddf..1c91fc16f 100644 --- a/magic-photobooth/modal_run_using_azure_data.py +++ b/magic-photobooth/modal_run_using_azure_data.py @@ -300,11 +300,13 @@ def generate_video_frames( settings={"step_operator.modal": modal_settings}, enable_cache=False, ) -def image_to_video() -> Tuple[ - Annotated[PILImage.Image, "generated_image"], - Annotated[bytes, "video_data"], - Annotated[HTMLString, "video_html"], -]: +def image_to_video() -> ( + Tuple[ + Annotated[PILImage.Image, "generated_image"], + Annotated[bytes, "video_data"], + Annotated[HTMLString, "video_html"], + ] +): model_path = f"{TrainConfig().hf_username}/{TrainConfig().hf_repo_suffix}" pipe = AutoPipelineForText2Image.from_pretrained( diff --git a/sign-language-detection-yolov5/steps/model_loader.py b/sign-language-detection-yolov5/steps/model_loader.py index f416539f5..1b8abffb4 100644 --- a/sign-language-detection-yolov5/steps/model_loader.py +++ b/sign-language-detection-yolov5/steps/model_loader.py @@ -21,9 +21,9 @@ @step -def model_loader() -> Tuple[ - Annotated[str, "model_path"], Annotated[torch.nn.Module, "model"] -]: +def model_loader() -> ( + Tuple[Annotated[str, "model_path"], Annotated[torch.nn.Module, "model"]] +): """Loads the trained models from previous training pipeline runs.""" training_pipeline = Client().get_pipeline( "sign_language_detection_train_pipeline" diff --git a/zencoder/run.py b/zencoder/run.py index c3494a2cb..fabaa6203 100644 --- a/zencoder/run.py +++ b/zencoder/run.py @@ -125,6 +125,7 @@ def main( # Execute Feature Engineering Pipeline if feature_pipeline: from pipelines import generate_code_dataset + generate_code_dataset.with_options(**pipeline_args)() logger.info("Feature Engineering pipeline finished successfully!\n") @@ -137,7 +138,9 @@ def main( elif deploy_pipeline: from pipelines import deployment_pipeline - deployment_pipeline.with_options(**pipeline_args)(target=deployment_target) + deployment_pipeline.with_options(**pipeline_args)( + target=deployment_target + ) logger.info("Deployment pipeline finished successfully!\n") diff --git a/zencoder/steps/__init__.py b/zencoder/steps/__init__.py index 316d61478..a623285e6 100644 --- a/zencoder/steps/__init__.py +++ b/zencoder/steps/__init__.py @@ -20,4 +20,4 @@ from .prepare_dataset import prepare_dataset from .push_dataset_to_hub import push_to_hub from .trainer import merge_and_push, trainer -from .vllm_deployer import vllm_model_deployer_step \ No newline at end of file +from .vllm_deployer import vllm_model_deployer_step diff --git a/zencoder/steps/deployment.py b/zencoder/steps/deployment.py index a4baa1ef2..5db13ea9d 100644 --- a/zencoder/steps/deployment.py +++ b/zencoder/steps/deployment.py @@ -1,9 +1,14 @@ from typing import Dict, Optional, cast -from zenml.integrations.huggingface.model_deployers import HuggingFaceModelDeployer -from zenml.integrations.huggingface.services import HuggingFaceDeploymentService, HuggingFaceServiceConfig from zenml import get_step_context, step from zenml.client import Client +from zenml.integrations.huggingface.model_deployers import ( + HuggingFaceModelDeployer, +) +from zenml.integrations.huggingface.services import ( + HuggingFaceDeploymentService, + HuggingFaceServiceConfig, +) from zenml.logger import get_logger logger = get_logger(__name__) @@ -39,9 +44,9 @@ def deploy_model_to_hf_hub(hf_endpoint_cfg: Optional[Dict] = None) -> None: secret = Client().get_secret("huggingface_creds") hf_token = secret.secret_values["token"] - commit_info = ( - get_step_context().model.run_metadata["merged_model_commit_info"] - ) + commit_info = get_step_context().model.run_metadata[ + "merged_model_commit_info" + ] model_namespace, repository, revision = parse_huggingface_url(commit_info) diff --git a/zencoder/steps/prepare_dataset.py b/zencoder/steps/prepare_dataset.py index c1de044da..5569ab674 100644 --- a/zencoder/steps/prepare_dataset.py +++ b/zencoder/steps/prepare_dataset.py @@ -6,7 +6,6 @@ """ import os -from pathlib import Path # Set cache directories before importing HF libraries os.environ["HF_HOME"] = "/tmp/huggingface" @@ -14,6 +13,7 @@ os.makedirs("/tmp/huggingface", exist_ok=True) from typing import Dict + import pandas as pd from datasets import Dataset from huggingface_hub import HfApi diff --git a/zencoder/steps/push_dataset_to_hub.py b/zencoder/steps/push_dataset_to_hub.py index 16de5dcc3..b81d1cd1f 100644 --- a/zencoder/steps/push_dataset_to_hub.py +++ b/zencoder/steps/push_dataset_to_hub.py @@ -4,6 +4,7 @@ Based off Sayak Paul (https://github.com/sayakpaul) and Sourab Mangrulkar (https://github.com/pacman100) codebase: https://github.com/pacman100/DHS-LLM-Workshop/tree/main/ All credit to them for their amazing work! """ + import glob import pandas as pd diff --git a/zencoder/steps/trainer.py b/zencoder/steps/trainer.py index bca4e5be6..5305a80ab 100644 --- a/zencoder/steps/trainer.py +++ b/zencoder/steps/trainer.py @@ -39,6 +39,7 @@ from zenml.client import Client from zenml.enums import ArtifactType + # this is expensive so we cache it @functools.lru_cache(maxsize=None) def get_fim_token_ids(tokenizer): @@ -526,7 +527,7 @@ def run_training(args: Configuration, train_data, val_data, hf_token): commit_info = trainer.push_to_hub() log_metadata( metadata={"trainer_commit_info": str(commit_info)}, - infer_model=True + infer_model=True, ) else: trainer.save_model(args.output_dir) @@ -538,7 +539,7 @@ def run_training(args: Configuration, train_data, val_data, hf_token): ) log_metadata( metadata={"model_commit_info": str(commit_info)}, - infer_model=True + infer_model=True, ) except Exception as e: print("Exception while pushing or saving") @@ -584,12 +585,12 @@ def merge_and_push( commit_info = tokenizer.push_to_hub(model_id_merged, token=hf_token) log_metadata( metadata={"merged_tokenizer_commit_info": str(commit_info)}, - infer_model=True + infer_model=True, ) commit_info = final_model.push_to_hub(model_id_merged, token=hf_token) log_metadata( metadata={"merged_model_commit_info": str(commit_info)}, - infer_model=True + infer_model=True, ) @@ -598,7 +599,8 @@ def trainer( args: Configuration, ) -> Tuple[ Annotated[ - Trainer, ArtifactConfig(name="trainer_obj", artifact_type=ArtifactType.MODEL) + Trainer, + ArtifactConfig(name="trainer_obj", artifact_type=ArtifactType.MODEL), ], Annotated[ GPT2TokenizerFast, diff --git a/zencoder/steps/vllm_deployer.py b/zencoder/steps/vllm_deployer.py index 3435012ea..be6d1a19a 100644 --- a/zencoder/steps/vllm_deployer.py +++ b/zencoder/steps/vllm_deployer.py @@ -24,10 +24,12 @@ VLLMServiceConfig, ) from zenml.logger import get_logger + from steps.deployment import parse_huggingface_url logger = get_logger(__name__) + @step(enable_cache=False) def vllm_model_deployer_step( port: int = 8000, @@ -60,9 +62,9 @@ def vllm_model_deployer_step( pipeline_name = step_context.pipeline.name step_name = step_context.step_run.name - commit_info = ( - get_step_context().model.run_metadata["merged_model_commit_info"] - ) + commit_info = get_step_context().model.run_metadata[ + "merged_model_commit_info" + ] model_namespace, repository, revision = parse_huggingface_url(commit_info) # create a config for the new model service predictor_cfg = VLLMServiceConfig(