8181 ModelDependency ,
8282 ModelPackageMetadata ,
8383 Quantization ,
84+ RecommendedParameters ,
8485)
8586
8687MODEL_TYPES_TO_LOAD_FROM_CHECKPOINT = {
@@ -926,6 +927,7 @@ def model_directory_pointer(model_dir: str) -> None:
926927 model_dependencies = model_metadata .model_dependencies ,
927928 model_dependencies_instances = model_dependencies_instances ,
928929 model_dependencies_directories = model_dependencies_directories ,
930+ recommended_parameters = model_metadata .recommended_parameters ,
929931 max_package_loading_attempts = max_package_loading_attempts ,
930932 model_download_file_lock_acquire_timeout = model_download_file_lock_acquire_timeout ,
931933 verify_hash_while_download = verify_hash_while_download ,
@@ -1078,6 +1080,10 @@ def attempt_loading_model_with_auto_load_cache(
10781080 package_id = cache_entry .model_package_id ,
10791081 )
10801082 model_init_kwargs [MODEL_DEPENDENCIES_KEY ] = model_dependencies_instances
1083+ # Cache stores the already-resolved (package-vs-model) value written
1084+ # in initialize_model — no need to re-run resolve_recommended_parameters.
1085+ if cache_entry .recommended_parameters is not None :
1086+ model_init_kwargs ["recommended_parameters" ] = cache_entry .recommended_parameters
10811087 model = model_class .from_pretrained (
10821088 model_package_cache_dir , ** model_init_kwargs
10831089 )
@@ -1113,6 +1119,7 @@ def attempt_loading_matching_model_packages(
11131119 model_dependencies : Optional [List [ModelDependency ]],
11141120 model_dependencies_instances : Dict [str , AnyModel ],
11151121 model_dependencies_directories : Dict [str , str ],
1122+ recommended_parameters : Optional [RecommendedParameters ] = None ,
11161123 max_package_loading_attempts : Optional [int ] = None ,
11171124 model_download_file_lock_acquire_timeout : int = FILE_LOCK_ACQUIRE_TIMEOUT ,
11181125 verbose : bool = True ,
@@ -1153,6 +1160,7 @@ def attempt_loading_matching_model_packages(
11531160 model_dependencies = model_dependencies ,
11541161 model_dependencies_instances = model_dependencies_instances ,
11551162 model_dependencies_directories = model_dependencies_directories ,
1163+ recommended_parameters = recommended_parameters ,
11561164 verify_hash_while_download = verify_hash_while_download ,
11571165 download_files_without_hash = download_files_without_hash ,
11581166 on_file_created = partial (
@@ -1218,6 +1226,7 @@ def initialize_model(
12181226 model_dependencies : Optional [List [ModelDependency ]],
12191227 model_dependencies_instances : Dict [str , AnyModel ],
12201228 model_dependencies_directories : Dict [str , str ],
1229+ recommended_parameters : Optional [RecommendedParameters ] = None ,
12211230 model_download_file_lock_acquire_timeout : int = FILE_LOCK_ACQUIRE_TIMEOUT ,
12221231 verify_hash_while_download : bool = True ,
12231232 download_files_without_hash : bool = False ,
@@ -1307,6 +1316,12 @@ def initialize_model(
13071316 )
13081317 resolved_files .update (dependencies_resolved_files )
13091318 model_init_kwargs [MODEL_DEPENDENCIES_KEY ] = model_dependencies_instances
1319+ resolved_recommended_parameters = resolve_recommended_parameters (
1320+ package_level = model_package .recommended_parameters ,
1321+ model_level = recommended_parameters ,
1322+ )
1323+ if resolved_recommended_parameters is not None :
1324+ model_init_kwargs ["recommended_parameters" ] = resolved_recommended_parameters
13101325 model = model_class .from_pretrained (model_package_cache_dir , ** model_init_kwargs )
13111326 dump_auto_resolution_cache (
13121327 use_auto_resolution_cache = use_auto_resolution_cache ,
@@ -1320,6 +1335,7 @@ def initialize_model(
13201335 resolved_files = resolved_files ,
13211336 model_dependencies = model_dependencies ,
13221337 model_features = model_package .model_features ,
1338+ recommended_parameters = resolved_recommended_parameters ,
13231339 )
13241340 return model , model_package_cache_dir
13251341
@@ -1484,6 +1500,7 @@ def dump_auto_resolution_cache(
14841500 resolved_files : Set [str ],
14851501 model_dependencies : Optional [List [ModelDependency ]],
14861502 model_features : Optional [dict ],
1503+ recommended_parameters : Optional [RecommendedParameters ] = None ,
14871504) -> None :
14881505 if not use_auto_resolution_cache :
14891506 return None
@@ -1497,6 +1514,7 @@ def dump_auto_resolution_cache(
14971514 created_at = datetime .now (),
14981515 model_dependencies = model_dependencies ,
14991516 model_features = model_features ,
1517+ recommended_parameters = recommended_parameters ,
15001518 )
15011519 auto_resolution_cache .register (
15021520 auto_negotiation_hash = auto_negotiation_hash , cache_entry = cache_content
@@ -1812,3 +1830,11 @@ def load_class_from_path(module_path: str, class_name: str) -> AnyModel:
18121830 help_url = "https://inference-models.roboflow.com/errors/model-loading/#corruptedmodelpackageerror" ,
18131831 )
18141832 return getattr (module , class_name )
1833+
1834+
1835+ def resolve_recommended_parameters (
1836+ package_level : Optional [RecommendedParameters ],
1837+ model_level : Optional [RecommendedParameters ],
1838+ ) -> Optional [RecommendedParameters ]:
1839+ """Package-level recommended_parameters take priority over model-level."""
1840+ return package_level if package_level is not None else model_level
0 commit comments