§
    ™Štj#  ã                  ó~   — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ  ej        e¦  «        Zdd„Zdd„ZdS )é    )ÚannotationsN)ÚPath)ÚPretrainedConfig)Ú_save_pretrained_wrapperÚbackend_should_exportÚbackend_warn_to_saveÚmodel_name_or_pathÚstrÚconfigr   Ú	task_namec                ó’  — 	 ddl }ddlm}m}m}m}m}	 |||	|dœ}
||
vr<d                     |
                     ¦   «         ¦  «        }t          d|› d|› �¦  «        ‚|
|         }n# t          $ r t          d¦  «        ‚w xY w|                     d	|                     ¦   «         d         ¦  «        |d	<   t          | ¦  «        }|                     ¦   «         }d
}d}t!          ||||||¦  «        \  }}|r|                     dd¦  «          |j        | f||dœ|¤Ž}t%          |j        d¬¦  «        |_        |rt)          | ||¦  «         |S )a  
    Load and perhaps export an ONNX model using the Optimum library.

    Args:
        model_name_or_path (str): The model name on Hugging Face (e.g. 'naver/splade-cocondenser-ensembledistil')
            or the path to a local model directory.
        config (PretrainedConfig): The model configuration.
        task_name (str): The task name for the model (e.g. 'feature-extraction', 'fill-mask', 'sequence-classification').
        model_kwargs (dict): Additional keyword arguments for the model loading.
    r   N)ÚONNX_WEIGHTS_NAMEÚORTModelForCausalLMÚORTModelForFeatureExtractionÚORTModelForMaskedLMÚ!ORTModelForSequenceClassification©zfeature-extractionz	fill-maskzsequence-classificationztext-generationú, úUnsupported task: ú. Supported tasks: z¾Using the ONNX backend requires installing Optimum and ONNX Runtime. You can install them with pip: `pip install sentence-transformers[onnx]` or `pip install sentence-transformers[onnx-gpu]`ÚproviderÚONNXz*.onnxÚ	file_name©r   ÚexportÚonnx©Ú	subfolder)ÚonnxruntimeÚoptimum.onnxruntimer   r   r   r   r   ÚjoinÚkeysÚ
ValueErrorÚModuleNotFoundErrorÚ	ExceptionÚpopÚget_available_providersr   Úexistsr   Úfrom_pretrainedr   Ú_save_pretrainedr   )r	   r   r   Úmodel_kwargsÚortr   r   r   r   r   Útask_to_model_mappingÚsupported_tasksÚ	model_clsÚ	load_pathÚis_localÚbackend_nameÚtarget_file_globr   Úmodels                      ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sentence_transformers/backend/load.pyÚload_onnx_modelr6      s  € ð
Ø!Ð!Ð!Ð!ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð #?Ø,Ø'HØ2ð	!
ð !
Ðð Ð1Ð1Ð1Ø"ŸišiÐ(=×(BÒ(BÑ(DÔ(DÑEÔEˆOÝÐa°)ÐaÐaÐP_ÐaÐaÑbÔbÐbà)¨)Ô4ˆ	ˆ	øÝð 
ð 
ð 
Ýð?ñ
ô 
ð 	
ð
øøøð  ,×/Ò/°
¸C×<WÒ<WÑ<YÔ<YÐZ[Ô<\Ñ]Ô]€L�ÑåÐ'Ñ(Ô(€IØ×ÒÑ!Ô!€HØ€LØÐõ 1Ø�8˜\Ð+<Ð>NÐP\ñô Ñ€FˆLð
 ð ,Ø×Ò˜ dÑ+Ô+Ð+ð &ˆIÔ%ØðàØðð ð ð	ð €Eõ 6°eÔ6LÐX^Ð_Ñ_Ô_€EÔð ð IÝÐ/°¸<ÑHÔHÐHà€Ls   ‚A!A$ Á$A>c                óV  — 	 ddl m}m}m}m}m} ||||dœ}	||	vr<d                     |	                     ¦   «         ¦  «        }
t          d|› d|
› �¦  «        ‚|	|         }n# t          $ r t          d¦  «        ‚w xY wt          | ¦  «        }|                     ¦   «         }d}d	}t          ||||||¦  «        \  }}|r|                     d
d¦  «         d|v rŽ|d         }t          |t           ¦  «        spt          |¦  «                             ¦   «         st          d¦  «        ‚t#          |d¬¦  «        5 }t%          j        |¦  «        |d<   ddd¦  «         n# 1 swxY w Y   ni |d<    |j        | f||dœ|¤Ž}t+          |j        d¬¦  «        |_        |rt/          | ||¦  «         |S )a  
    Load and perhaps export an OpenVINO model using the Optimum library.

    Args:
        model_name_or_path (str): The model name on Hugging Face (e.g. 'naver/splade-cocondenser-ensembledistil')
            or the path to a local model directory.
        config (PretrainedConfig): The model configuration.
        task_name (str): The task name for the model (e.g. 'feature-extraction', 'fill-mask', 'sequence-classification').
        model_kwargs (dict): Additional keyword arguments for the model loading.
    r   )ÚOV_XML_FILE_NAMEÚOVModelForCausalLMÚOVModelForFeatureExtractionÚOVModelForMaskedLMÚ OVModelForSequenceClassificationr   r   r   r   z‘Using the OpenVINO backend requires installing Optimum and OpenVINO. You can install them with pip: `pip install sentence-transformers[openvino]`ÚOpenVINOzopenvino*.xmlr   NÚ	ov_configzXov_config should be a dictionary or a path to a .json file containing an OpenVINO configzutf-8)Úencodingr   Úopenvinor   )Úoptimum.intel.openvinor8   r9   r:   r;   r<   r!   r"   r#   r$   r%   r   r(   r   r&   Ú
isinstanceÚdictÚopenÚjsonÚloadr)   r   r*   r   )r	   r   r   r+   r8   r9   r:   r;   r<   r-   r.   r/   r0   r1   r2   r3   r   r>   Úfr4   s                       r5   Úload_openvino_modelrH   \   s³  € ð
ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð #>Ø+Ø'GØ1ð	!
ð !
Ðð Ð1Ð1Ð1Ø"ŸišiÐ(=×(BÒ(BÑ(DÔ(DÑEÔEˆOÝÐa°)ÐaÐaÐP_ÐaÐaÑbÔbÐbà)¨)Ô4ˆ	ˆ	øÝð 
ð 
ð 
Ýð[ñ
ô 
ð 	
ð
øøøõ Ð'Ñ(Ô(€IØ×ÒÑ!Ô!€HØ€LØ&Ðõ 1Ø�8˜\Ð+;Ð=MÈ|ñô Ñ€FˆLð
 ð ,Ø×Ò˜ dÑ+Ô+Ð+ð �lÐ"Ð"Ø  Ô-ˆ	Ý˜)¥TÑ*Ô*ð 	9Ý˜	‘?”?×)Ò)Ñ+Ô+ð Ý Ønñô ð õ �i¨'Ð2Ñ2Ô2ð 9°aÝ,0¬I°a©L¬L�˜[Ñ)ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9øð %'ˆ�[Ñ!ð &ˆIÔ%ØðàØðð ð ð	ð €Eõ 6°eÔ6LÐXbÐcÑcÔc€EÔð ð IÝÐ/°¸<ÑHÔHÐHà€Ls   ‚AA  Á A:Ä5EÅEÅ E)r	   r
   r   r   r   r
   )Ú
__future__r   rE   ÚloggingÚpathlibr   Ú transformers.configuration_utilsr   Ú#sentence_transformers.backend.utilsr   r   r   Ú	getLoggerÚ__name__Úloggerr6   rH   © ó    r5   ú<module>rS      sº   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð à =Ð =Ð =Ð =Ð =Ð =à uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uà	ˆÔ	˜8Ñ	$Ô	$€ðKð Kð Kð Kð\Sð Sð Sð Sð Sð SrR   