Ë
    S^(h¢N  ã                   óº  — d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZ d dlmZ d d	lmZmZmZ  ed
«      Zg d¢Z G d„ de«      Zdededefd„Zdefd„Zd„ Zdededeee   ee   eef   fd„Z 	 d1dededede	e   def
d„Z!dede"dede#fd„Z$dede"defd „Z%	 	 	 d2dededede"de	e   de#defd!„Z&d"edefd#„Z'd"edefd$„Z(d%efd&„Z)e*d'k(  �rY e«       Z+e+jY                  «       Z- ee-j\                  «      j_                  «       e-_.        	  e0d(«        e&e-jb                  e-jd                  e-j\                  e-jf                  e-jh                  e-jj                  e-j                  «       e-jP                  rU ee«       e-jb                  d)k(  r e0d*«        e0d+«        e'e-j\                  «      e-_6         e(e-jl                  «      e-_7        e-jp                  rR e0d,«        e)e-j\                  «        e9e-d-«      r e)e-jl                  «        e9e-d.«      r e)e-jn                  «       yyyy# e:$ rZ; e0d/e;› �«        e<d0«       Y dZ;[;ydZ;[;ww xY w)3é    N)ÚArgumentParser)ÚlistdirÚmakedirs)ÚPath)ÚOptional)ÚVersionÚparse)ÚPipelineÚpipeline)ÚBatchEncoding)ÚModelOutputÚis_tf_availableÚis_torch_availablez1.4.0)	úfeature-extractionÚnerzsentiment-analysisz	fill-maskzquestion-answeringztext-generationÚtranslation_en_to_frÚtranslation_en_to_deÚtranslation_en_to_roc                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚOnnxConverterArgumentParserz[
    Wraps all the script arguments supported to export transformers models to ONNX IR
    c                 óÂ  •— t         ‰| �  d«       | j                  dt        t        d¬«       | j                  dt        dd¬«       | j                  d	t        d
¬«       | j                  dt        ddgd¬«       | j                  dt
        dd¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  d«       y )NzONNX Converterz
--pipeliner   )ÚtypeÚchoicesÚdefaultz--modelTz4Model's id or path (ex: google-bert/bert-base-cased))r   ÚrequiredÚhelpz--tokenizerz8Tokenizer's id or path (ex: google-bert/bert-base-cased))r   r   z--frameworkÚptÚtfzFramework for loading the model)r   r   r   z--opseté   zONNX opset to use)r   r   r   z--check-loadingÚ
store_truez$Check ONNX is able to load the model)Úactionr   z--use-external-formatz!Allow exporting model >= than 2Gbz
--quantizez/Quantize the neural network to be run with int8Úoutput)ÚsuperÚ__init__Úadd_argumentÚstrÚSUPPORTED_PIPELINESÚint)ÚselfÚ	__class__s    €ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/convert_graph_to_onnx.pyr$   z$OnnxConverterArgumentParser.__init__3   s  ø€ Ü‰ÑÐ)Ô*à×ÑØÜÜ'Ø(ð	 	ô 	
ð 	×ÑØÜØØGð	 	ô 	
ð 	×Ñ˜-¬cÐ8rÐÔsØ×ÑØÜØ˜4�LØ2ð	 	ô 	
ð 	×Ñ˜)¬#°rÐ@SÐÔTØ×ÑØØØ7ð 	ô 	
ð
 	×ÑØ#ØØ4ð 	ô 	
ð
 	×ÑØØØBð 	ô 	
ð
 	×Ñ˜(Õ#ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   Ú__classcell__)r*   s   @r+   r   r   .   s   ø„ ñ÷&$ð &$r,   r   ÚfilenameÚ
identifierÚreturnc                 ó„   — | j                   j                  | j                  |z   «      j                  | j                  «      S )aE  
    Append a string-identifier at the end (before the extension, if any) to the provided filepath

    Args:
        filename: pathlib.Path The actual path object we would like to add an identifier suffix
        identifier: The suffix to add

    Returns: String with concatenated identifier at the end of the filename
    )ÚparentÚjoinpathÚstemÚwith_suffixÚsuffix)r2   r3   s     r+   Úgenerate_identified_filenamer;   \   s1   € ð �?‰?×#Ñ# H§M¡M°JÑ$>Ó?×KÑKÈHÏOÉOÓ\Ð\r,   Úminimum_versionc                 ó²   — 	 ddl }t        |j                  «      }|t        k  rt	        d|j                  › d| › d�«      ‚y# t        $ r t	        d«      ‚w xY w)zº
    Check onnxruntime is installed and if the installed version match is recent enough

    Raises:
        ImportError: If onnxruntime is not installed or too old version is found
    r   Nz*We found an older version of onnxruntime (z&) but we require onnxruntime to be >= zp to enable all the conversions options.
Please update onnxruntime by running `pip install --upgrade onnxruntime`z”onnxruntime doesn't seem to be currently installed. Please install the onnxruntime by running `pip install onnxruntime` and relaunch the conversion.)Úonnxruntimer	   Ú__version__ÚORT_QUANTIZE_MINIMUM_VERSIONÚImportError)r<   r>   Úort_versions      r+   Úcheck_onnxruntime_requirementsrC   i   sƒ   € ð
Ûô ˜K×3Ñ3Ó4ˆð Ô5Ò5ÜØ<¸[×=TÑ=TÐ<Uð V7Ø7FÐ6Gð H[ð[óð ð 6øô ò 
Üð,ó
ð 	
ð
ús   ‚>A ÁAc                 ó  — t        d«       | j                  j                  j                  }g g }}|dd D ];  }||v r&|j	                  |«       |j	                  ||   «       Œ-t        |› d�«        n t        d|› �«       |t        |«      fS )a  
    Ensure inputs are presented in the correct order, without any Non

    Args:
        model: The model used to forward the input data
        tokens: BatchEncoding holding the input data
        input_names: The name of the inputs

    Returns: Tuple

    z$Ensuring inputs are in correct orderé   Nz, is not present in the generated input list.zGenerated inputs order: )ÚprintÚforwardÚ__code__Úco_varnamesÚappendÚtuple)ÚmodelÚtokensÚinput_namesÚmodel_args_nameÚ
model_argsÚordered_input_namesÚarg_names          r+   Úensure_valid_inputrS   †   s¢   € ô 
Ð
0Ô1à—m‘m×,Ñ,×8Ñ8€OØ&(¨"Ð#€JØ# A BÐ'ò ˆØ�{Ñ"Ø×&Ñ& xÔ0Ø×Ñ˜f XÑ.Õ/ä�X�JÐJÐKÔLÙðô 
Ð$Ð%8Ð$9Ð
:Ô;Ø¤ jÓ 1Ð1Ð1r,   ÚnlpÚ	frameworkc                 ó:  ‡— dt         dt        dt        fˆfd„Š| j                  d|¬«      }|j                  j
                  d   }|dk(  r | j                  di |¤Žn| j                  |«      }t        |t        «      r|j                  «       }t        |t        t        f«      s|f}t        |j                  «       «      }|j                  «       D ��ci c]  \  }}| ‰||d	|«      “Œ }}}g }	|D ];  }
t        |
t        t        f«      r|	j                  |
«       Œ+|	j                  |
«       Œ= t!        t#        |	«      «      D �cg c]  }d
|› �‘Œ	 }}t%        ||	«      D ��ci c]  \  }}| ‰||d|«      “Œ }}}t'        |fi |¤Ž}||||fS c c}}w c c}w c c}}w )a?  
    Attempt to infer the static vs dynamic axes for each input and output tensors for a specific model

    Args:
        nlp: The pipeline object holding the model to be exported
        framework: The framework identifier to dispatch to the correct inference scheme (pt/tf)

    Returns:

        - List of the inferred input variable names
        - List of the inferred output variable names
        - Dictionary with input/output variables names as key and shape tensor as value
        - a BatchEncoding reference which was used to infer all the above information
    ÚnameÚis_inputÚseq_lenc           	      óF  •— t        |t        t        f«      r|D �cg c]  } ‰| |||«      ‘Œ c}S t        |j                  «      D ��cg c]  \  }}|dk(  sŒ|‘Œ c}}d   di}|r@t        |j                  «      dk(  rd|d<   ntt        dt        |j                  «      › d�«      ‚t        |j                  «      D ��	cg c]  \  }}	|	|k(  sŒ|‘Œ }
}}	|j                  t        j                  |
d«      «       t        d|rd	nd
› d| › d|› �«       |S c c}w c c}}w c c}	}w )NrE   r   Úbatché   ÚsequencezUnable to infer tensor axes (ú)zFound Úinputr"   ú z with shape: )Ú
isinstancerK   ÚlistÚ	enumerateÚshapeÚlenÚ
ValueErrorÚupdateÚdictÚfromkeysrF   )rW   ÚtensorrX   rY   ÚtÚaxisÚnumelÚaxesÚdimrd   Úseq_axesÚbuild_shape_dicts              €r+   rq   z&infer_shapes.<locals>.build_shape_dict²   s  ø€ Ü�fœu¤d˜mÔ,ØJPÖQÀQÑ$ T¨1¨h¸Õ@ÒQÐQô .7°v·|±|Ó-D×S™k˜d EÈÐQRË
’TÓSÐTUÑVÐX_Ð`ˆDÙÜ�v—|‘|Ó$¨Ò)Ø(�D˜’Gä$Ð'DÄSÈÏÉÓEVÐDWÐWXÐ%YÓZÐZä2;¸F¿L¹LÓ2I×^¡J C¨ÈUÐV]ÓM]šCÐ^�Ñ^Ø—‘œDŸM™M¨(°JÓ?Ô@ä�¡(‘w°Ð9¸¸4¸&ÀÈdÈVÐTÔUØˆùò Rùó Tùó _s   œDÁ	DÁDÂ>DÃDzThis is a sample output)Úreturn_tensorséÿÿÿÿr   TÚoutput_F© )r&   Úboolr(   Ú	tokenizerÚ	input_idsrd   rL   ra   r   Úto_tuplerb   rK   ÚkeysÚitemsÚextendrJ   Úrangere   Úziprh   )rT   rU   rM   rY   ÚoutputsÚ
input_varsÚkÚvÚinput_dynamic_axesÚoutputs_flatr"   ÚiÚoutput_namesÚoutput_dynamic_axesÚdynamic_axesrq   s                  @r+   Úinfer_shapesr‰   ¢   s£  ø€ ð œsð ´dð ÄSõ ð& �]‰]Ð4ÀYˆ]ÓO€FØ×Ñ×$Ñ$ RÑ(€GØ%.°$Ò%6ˆiˆc�i‰iÑ!˜&Ò!¸C¿I¹IÀfÓ<M€GÜ�'œ;Ô'Ø×"Ñ"Ó$ˆÜ�g¤¤e˜}Ô-Ø�*ˆô �f—k‘k“mÓ$€JØOUÏ|É|Ë~×^ÁtÀqÈ!˜!Ñ-¨a°°D¸'ÓBÑBÐ^ÐÑ^ð €LØò (ˆÜ�fœu¤d˜mÔ,Ø×Ñ Õ'à×Ñ Õ'ð	(ô ,1´°\Ó1BÓ+CÖD a�g˜a˜S’MÐD€LÐDÜQTÐUaÐcoÓQp×qÉÈÈA˜1Ñ.¨q°!°U¸GÓDÑDÐqÐÑqô Ð*ÑBÐ.AÑB€LØ�| \°6Ð9Ð9ùó! _ùò EùÛqs   ÃFÅFÅ!FÚpipeline_namerL   rw   c                 ó¶   — |€|}|dk(  rt        «       st        d«      ‚|dk(  rt        «       st        d«      ‚t        d|› d|› d�«       t	        | ||||¬«      S )	aë  
    Convert the set of arguments provided through the CLI to an actual pipeline reference (tokenizer + model

    Args:
        pipeline_name: The kind of pipeline to use (ner, question-answering, etc.)
        framework: The actual model to convert the pipeline from ("pt" or "tf")
        model: The model name which will be loaded by the pipeline
        tokenizer: The tokenizer name which will be loaded by the pipeline, default to the model's value

    Returns: Pipeline object

    r   úLCannot convert because PyTorch is not installed. Please install torch first.r   úLCannot convert because TF is not installed. Please install tensorflow first.zLoading pipeline (model: z, tokenizer: r^   )rL   rw   rU   Úmodel_kwargs)r   Ú	Exceptionr   rF   r   )rŠ   rU   rL   rw   Úmodels_kwargss        r+   Úload_graph_from_argsr‘   â   sr   € ð  ÐØˆ	ð �DÒÔ!3Ô!5ÜÐfÓgÐgØ�DÒ¤Ô!2ÜÐfÓgÐgä	Ð% e W¨M¸)¸ÀAÐ
FÔGô �M¨¸)ÈyÐgtÔuÐur,   Úopsetr"   Úuse_external_formatc                 ób  — t        «       st        d«      ‚ddl}ddlm} t        d|j                  › �«       |j                  «       5  t        | d«      \  }}}}	t        | j                  |	|«      \  }
} || j                  ||j                  «       |
||d|¬«       ddd«       y# 1 sw Y   yxY w)	a…  
    Export a PyTorch backed pipeline to ONNX Intermediate Representation (IR

    Args:
        nlp: The pipeline to be exported
        opset: The actual version of the ONNX operator set to use
        output: Path where will be stored the generated ONNX model
        use_external_format: Split the model definition from its parameters to allow model bigger than 2GB

    Returns:

    rŒ   r   N)ÚexportzUsing framework PyTorch: r   T)ÚfrN   r†   rˆ   Údo_constant_foldingÚopset_version)r   r�   ÚtorchÚ
torch.onnxr•   rF   r?   Úno_gradr‰   rS   rL   Úas_posix)rT   r’   r"   r“   r™   r•   rN   r†   rˆ   rM   rQ   rP   s               r+   Úconvert_pytorchr�     sª   € ô ÔÜÐfÓgÐgãÝ!ä	Ð% e×&7Ñ&7Ð%8Ð
9Ô:à	�‰‹ñ 
Ü:FÀsÈDÓ:QÑ7ˆ�\ <°Ü*<¸S¿Y¹YÈÐP[Ó*\Ñ'Ð˜ZáØ�I‰IØØ�o‰oÓØ+Ø%Ø%Ø $Øõ		
÷	
÷ 
ñ 
ús   ÁAB%Â%B.c           	      ó„  — t        «       st        d«      ‚t        d«       	 ddl}ddl}ddlm} t        d|j                  j                  › d|› �«       t        | d«      \  }}}}	| j                  j                  |	j                  «       |	j                  «       D �
�cg c]"  \  }
}|j                  j                  ||
¬	«      ‘Œ$ }}
}|j                  j!                  | j                  |||j#                  «       ¬
«      \  }}yc c}}
w # t$        $ r-}t        d|j&                  › d|j&                  › d|› �«      ‚d}~ww xY w)av  
    Export a TensorFlow backed pipeline to ONNX Intermediate Representation (IR)

    Args:
        nlp: The pipeline to be exported
        opset: The actual version of the ONNX operator set to use
        output: Path where will be stored the generated ONNX model

    Notes: TensorFlow cannot export model bigger than 2GB due to internal constraint from TensorFlow

    r�   zD/!\ Please note TensorFlow doesn't support exporting model > 2Gb /!\r   N)r?   zUsing framework TensorFlow: z, tf2onnx: r   )rW   )r’   Úoutput_pathzCannot import z6 required to convert TF model to ONNX. Please install z first. )r   r�   rF   Ú
tensorflowÚtf2onnxr?   ÚversionÚVERSIONr‰   rL   ÚpredictÚdatar{   Ú
TensorSpecÚfrom_tensorÚconvertÚ
from_kerasrœ   rA   rW   )rT   r’   r"   r   r¡   Út2ovrN   r†   rˆ   rM   Úkeyrj   Úinput_signatureÚmodel_protoÚ_Úes                   r+   Úconvert_tensorflowr°   &  s/  € ô ÔÜÐfÓgÐgä	Ð
RÔSð
ÛÛÝ/äÐ,¨R¯Z©Z×-?Ñ-?Ð,@ÀÈDÈ6ÐRÔSô ;GÀsÈDÓ:QÑ7ˆ�\ <°ð 	�	‰	×Ñ˜&Ÿ+™+Ô&ØZ`×ZfÑZfÓZh×iÉ;È3ÐPV˜2Ÿ=™=×4Ñ4°VÀ#Ð4ÕFÐiˆÑiØ Ÿ™×3Ñ3Ø�I‰I�¨eÀÇÁÓARð 4ó 
‰ˆ‘Qùó jøô
 ò 
ÜØ˜QŸV™V˜HÐ$ZÐ[\×[aÑ[aÐZbÐbjÐklÐjmÐnó
ð 	
ûð
ús*   ¢A<D	 Â'DÃ=D	 ÄD	 Ä		D?Ä(D:Ä:D?c                 ó  — t        j                  dt        «       t        d|› �«       t	        || ||fi |¤Ž}|j
                  j                  «       s<t        d|j
                  › �«       t        |j
                  j                  «       «       nVt        t        |j
                  j                  «       «      «      dkD  r't        d|j
                  j                  «       › d�«      ‚| dk(  rt        ||||«       yt        |||«       y)	a  
    Convert the pipeline object to the ONNX Intermediate Representation (IR) format

    Args:
        framework: The framework the pipeline is backed by ("pt" or "tf")
        model: The name of the model to load for the pipeline
        output: The path where the ONNX graph will be stored
        opset: The actual version of the ONNX operator set to use
        tokenizer: The name of the model to load for the pipeline, default to the model's name if not provided
        use_external_format:
            Split the model definition from its parameters to allow model bigger than 2GB (PyTorch only)
        pipeline_name: The kind of pipeline to instantiate (ner, question-answering, etc.)
        model_kwargs: Keyword arguments to be forwarded to the model constructor

    Returns:

    zoThe `transformers.convert_graph_to_onnx` package is deprecated and will be removed in version 5 of TransformerszONNX opset version set to: zCreating folder r   zFolder z" is not empty, aborting conversionr   N)ÚwarningsÚwarnÚFutureWarningrF   r‘   r6   Úexistsr   rœ   re   r   r�   r�   r°   )	rU   rL   r"   r’   rw   r“   rŠ   rŽ   rT   s	            r+   r¨   r¨   N  sá   € ô6 ‡M�Mð	äôô
 
Ð'¨ wÐ
/Ô0ô ˜}¨i¸À	Ñ
ZÈ\Ñ
Z€Cà�=‰=×ÑÔ!ÜÐ  §¡ Ð0Ô1Ü�—‘×'Ñ'Ó)Õ*Ü	ŒW�V—]‘]×+Ñ+Ó-Ó.Ó	/°!Ò	3Ü˜' &§-¡-×"8Ñ"8Ó":Ð!;Ð;]Ð^Ó_Ð_ð �DÒÜ˜˜U FÐ,?Õ@ä˜3  vÕ.r,   Úonnx_model_pathc                 óÈ   — ddl m}m} t        | d«      } |«       }|j	                  «       |_         || j	                  «       |«      }t        d|› d�«       t        d«       |S )a>  
    Load the model at the specified path and let onnxruntime look at transformations on the graph to enable all the
    optimizations possible

    Args:
        onnx_model_path: filepath where the model binary description is stored

    Returns: Path where the optimized model binary description has been saved

    r   ©ÚInferenceSessionÚSessionOptionsz
-optimizedz$Optimized model has been written at õ   : âœ”zY/!\ Optimized model contains hardware specific operators which might not be portable. /!\)r>   r¹   rº   r;   rœ   Úoptimized_model_filepathrF   )r¶   r¹   rº   Úopt_model_pathÚsess_optionr®   s         r+   Úoptimizer¿   €  sf   € ÷ =ô 2°/À<ÓP€NÙ Ó"€KØ+9×+BÑ+BÓ+D€KÔ(Ù˜×1Ñ1Ó3°[ÓA€Aä	Ð0°Ð0@Ð@VÐ
WÔXÜ	Ð
gÔhàÐr,   c                 ó¦  — ddl }ddl}ddlm} ddlm} ddlm} ddlm	} |j                  | j                  «       «      }t        |j                  «      t        d«      k  rt        d«        |«       }|j                  |«       t        |j                  «      t        d	«      k  r' ||d
d
|j                   d
dd
dddt#        |«      ¬«      }	n& ||d
d
|j                   d
dd
dddt#        |«      ¬«      }	|	j%                  «        t'        | d«      }
t        d|
› d�«       |j)                  |	j*                  j*                  |
j                  «       «       |
S )zù
    Quantize the weights of the model from float32 to in8 to allow very efficient inference on modern CPU

    Args:
        onnx_model_path: Path to location the exported ONNX model is stored

    Returns: The Path generated for the quantized
    r   N)Ú
ModelProto)ÚQuantizationMode)ÚONNXQuantizer)ÚIntegerOpsRegistryz1.5.0zpModels larger than 2GB will fail to quantize due to protobuf constraint.
Please upgrade to onnxruntime >= 1.5.0.z1.13.1FT)rL   Úper_channelÚreduce_rangeÚmodeÚstaticÚweight_qTypeÚinput_qTypeÚtensors_rangeÚnodes_to_quantizeÚnodes_to_excludeÚop_types_to_quantize)rL   rÅ   rÆ   rÇ   rÈ   rÉ   Úactivation_qTyperË   rÌ   rÍ   rÎ   z
-quantizedz$Quantized model has been written at r»   )Úonnxr>   Úonnx.onnx_pbrÁ   Úonnxruntime.quantizationrÂ   Ú'onnxruntime.quantization.onnx_quantizerrÃ   Ú!onnxruntime.quantization.registryrÄ   Úloadrœ   r	   r?   rF   ÚCopyFromÚ
IntegerOpsrb   Úquantize_modelr;   Ú
save_modelrL   )r¶   rÐ   r>   rÁ   rÂ   rÃ   rÄ   Ú
onnx_modelÚ
copy_modelÚ	quantizerÚquantized_model_paths              r+   ÚquantizerÞ   ™  sO  € ó ÛÝ'Ý9ÝEÝDð —‘˜?×3Ñ3Ó5Ó6€JäˆT×ÑÓ¤ w£Ò/Üð6ô	
ñ “€JØ×Ñ˜
Ô#ô ˆ[×$Ñ$Ó%¬¨h«Ò7Ù!ØØØØ!×,Ñ,ØØØØØ"Ø!Ü!%Ð&8Ó!9ô
‰	ñ "ØØØØ!×,Ñ,ØØØ"ØØ"Ø!Ü!%Ð&8Ó!9ô
ˆ	ð ×ÑÔô 8¸ÈÓVÐô 
Ð0Ð1EÐ0FÐF\Ð
]Ô^Ø‡O�O�I—O‘O×)Ñ)Ð+?×+HÑ+HÓ+JÔKàÐr,   Úpathc                 óâ   — ddl m}m} ddlm} t        d| › d�«       	  |«       } || j                  «       |dg¬«      }t        d| › d	�«       y # |$ r}t        d
|› d�«       Y d }~y d }~ww xY w)Nr   r¸   )ÚRuntimeExceptionz"Checking ONNX model loading from: z ...ÚCPUExecutionProvider)Ú	providerszModel u    correctly loaded: âœ”zError while loading the model u   : âœ˜)r>   r¹   rº   Ú+onnxruntime.capi.onnxruntime_pybind11_staterá   rF   rœ   )rß   r¹   rº   rá   Úonnx_optionsr®   Úres          r+   Úverifyrç   ä  sz   € ß<ÝLä	Ð.¨t¨f°DÐ
9Ô:ðIÙ%Ó'ˆÙ˜TŸ]™]›_¨lÐG]ÐF^Ô_ˆÜ��t�fÐCÐDÕEøØò IÜÐ.¨r¨dÐ2FÐG×HÑHûðIús   Ÿ0A ÁA.ÁA)Á)A.Ú__main__z'
====== Converting model to ONNX ======r   aV  	 Using TensorFlow might not provide the same optimization level compared to PyTorch.
	 For TensorFlow users you can try optimizing the model directly through onnxruntime_tools.
	 For more information, please refer to the onnxruntime documentation:
		https://github.com/microsoft/onnxruntime/tree/master/onnxruntime/python/tools/transformers
z$
====== Optimizing ONNX model ======z+
====== Check exported ONNX model(s) ======Úoptimized_outputÚquantized_outputz"Error while converting the model: rE   )N)NFr   )=r²   Úargparser   Úosr   r   Úpathlibr   Útypingr   Úpackaging.versionr   r	   Útransformers.pipelinesr
   r   Útransformers.tokenization_utilsr   Útransformers.utilsr   r   r   r@   r'   r   r&   r;   rC   rS   rK   rb   rh   r‰   r‘   r(   rv   r�   r°   r¨   r¿   rÞ   rç   r-   ÚparserÚ
parse_argsÚargsr"   ÚabsoluterF   rU   rL   r’   rw   r“   ré   rê   Úcheck_loadingÚhasattrr�   r¯   Úexitru   r,   r+   ú<module>rú      s%  ðó Ý #ß  Ý Ý ç ,ç 5Ý 9ß OÑ Oñ
  % W›~Ð ò
Ð ô+$ .ô +$ð\
]¨4ð 
]¸Sð 
]ÀTó 
]ð
°Gó 
ò:2ð8=:�hð =:¨3ð =:°5¸¸c¹ÀDÈÁIÈtÐUbÐ9bÑ3có =:ðB PTñvØðvØ#&ðvØ/2ðvØ?GÈ¹}ðvàóvð>"
˜ð "
¨#ð "
°tð "
ÐRVó "
ðJ%
˜Hð %
¨Sð %
¸$ó %
ðZ  $Ø %Ø-ñ//Øð//àð//ð ð//ð ð	//ð
 ˜‰}ð//ð ð//ð ó//ðd˜dð  tó ð2H ˜dð H  tó H ðV
I�ó 
Ið ˆzÓÙ(Ó*€FØ×ÑÓ€Dñ �t—{‘{Ó#×,Ñ,Ó.€D„Kð/ÙÐ8Ô9áØ�N‰NØ�J‰JØ�K‰KØ�J‰JØ�N‰NØ×$Ñ$Ø�M‰Mô	
ð �=Š=á*Ð+GÔHð �~‰~ Ò%Ùðwôñ Ð9Ô:ñ %-¨T¯[©[Ó$9ˆDÔ!ñ %-¨T×-BÑ-BÓ$CˆDÔ!ð ×ÒÙÐ@ÔAÙ�4—;‘;Ôá�tÐ/Ô0Ù�t×,Ñ,Ô-á�tÐ/Ô0Ù�t×,Ñ,Õ-ð 1ð ðU øðh ò ÙÐ2°1°#Ð6Ô7ÙˆQ�‰ûðús   ÄDH8 È8IÈ=IÉI