def get_selector_from_legacy_operator_selection_list( selected_op_list_path: str, ): from tools.autograd.utils import load_op_list_and_strip_overload selected_op_list = load_op_list_and_strip_overload( None, selected_op_list_path, ) # Internal build doesn't use this flag any more. Only used by OSS # build now. Every operator should be considered a root operator # (hence generating unboxing code for it, which is consistent with # the current behaviour), and also be considered as used for # training, since OSS doesn't support training on mobile for now. # is_root_operator = True is_used_for_training = True from tools.codegen.selective_build.selector import SelectiveBuilder selector: SelectiveBuilder = SelectiveBuilder.get_nop_selector() if selected_op_list is not None: selector = SelectiveBuilder.from_legacy_op_registration_allow_list( selected_op_list, is_root_operator, is_used_for_training, ) return selector
def get_custom_build_selector( provided_op_registration_allowlist: Optional[List[str]], op_selection_yaml_path: Optional[str]) -> SelectiveBuilder: assert not (provided_op_registration_allowlist is not None and op_selection_yaml_path is not None), ( "Both provided_op_registration_allowlist and " + "op_selection_yaml_path can NOT be provided at the " + "same time.") op_registration_allowlist: Optional[Set[str]] = None if provided_op_registration_allowlist is not None: op_registration_allowlist = set(provided_op_registration_allowlist) if op_registration_allowlist is not None: selector = SelectiveBuilder.from_legacy_op_registration_allow_list( op_registration_allowlist, True, False, ) elif op_selection_yaml_path is not None: selector = SelectiveBuilder.from_yaml_path(op_selection_yaml_path) else: selector = SelectiveBuilder.get_nop_selector() return selector
def get_selector_from_legacy_operator_selection_list( selected_op_list_path: str, ) -> Any: with open(selected_op_list_path, 'r') as f: # strip out the overload part # It's only for legacy config - do NOT copy this code! selected_op_list = { opname.split('.', 1)[0] for opname in yaml.load(f, Loader=YamlLoader) } # Internal build doesn't use this flag any more. Only used by OSS # build now. Every operator should be considered a root operator # (hence generating unboxing code for it, which is consistent with # the current behaviour), and also be considered as used for # training, since OSS doesn't support training on mobile for now. # is_root_operator = True is_used_for_training = True from tools.codegen.selective_build.selector import SelectiveBuilder selector = SelectiveBuilder.from_legacy_op_registration_allow_list( selected_op_list, is_root_operator, is_used_for_training, ) return selector