
    o9i5	                         d dl mZmZmZmZ d dlZd dlmc mZ	 d dlm
Z
mZmZmZ d dlZd dlmZ d dlmZmZ  edd      Z G d	 d
ej*                        Z G d dej*                        Zy)    )OptionalTypeVarUnionoverloadN)Tensordevicedtypenn)GlobalOptimManager)OutlierTracerfind_outlier_dimsTztorch.nn.Module)boundc                   @     e Zd Zd fd	Zdej
                  fdZ xZS )LinearFP8Mixedc                     t         |   |||       d | _        d | _        g d}t	        |      D ]  \  }}|||dz      kD  s|| _         n t	        |      D ]  \  }}|||dz      kD  s|| _         y  y N)i   i   i   i         @   r      super__init__bw_codefw_code	enumeratebszbsz2selfinput_featuresoutput_featuresbiasarrayik	__class__s          j/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/bitsandbytes/research/nn/modules.pyr   zLinearFP8Mixed.__init__       $?8e$ 	DAqa!e,	 e$ 	DAqq1u-		    xc                    | j                   t        j                  j                  dddd      j	                  |j
                        | _        t        j                  j                  dddd      j	                  |j
                        | _         t        j                  j                  || j                  j                         | j                   | j                  | j                  | j                        }| j                  || j                  z  }|S NT               )r   r   r   r   )r   bnb
functionalcreate_fp8_maptor   r   researchmatmul_fp8_mixedweighttr   r   r$   r!   r,   outs      r)   forwardzLinearFP8Mixed.forward   s    <<>>88q!QGJJ188TDL>>88q!QGJJ188TDLll++At{{}}^b^j^jptpxpx  @D  @I  @I+  J99 499C
r+   T__name__
__module____qualname__r   torchr   r>   __classcell__r(   s   @r)   r   r          	 	r+   r   c                   @     e Zd Zd fd	Zdej
                  fdZ xZS )LinearFP8Globalc                     t         |   |||       d | _        d | _        g d}t	        |      D ]  \  }}|||dz      kD  s|| _         n t	        |      D ]  \  }}|||dz      kD  s|| _         y  y r   r   r    s          r)   r   zLinearFP8Global.__init__)   r*   r+   r,   c                 
   | j                   t        j                  j                  dddd      j	                  |j
                        | _        t        j                  j                  dddd      j	                  |j
                        | _         t        j                  || j                  j                         | j                   | j                  | j                  | j                        }| j                  || j                  z  }|S r.   )r   r4   r5   r6   r7   r   r   matmul_fp8_globalr:   r;   r   r   r$   r<   s      r)   r>   zLinearFP8Global.forward7   s    <<>>88q!QGJJ188TDL>>88q!QGJJ188TDL##At{{}}VZVbVbhlhphpw{  xA  xA  B99 499C
r+   r?   r@   rF   s   @r)   rI   rI   (   rG   r+   rI   )typingr   r   r   r   rD   torch.nn.functionalr
   r5   Fr   r   r	   bitsandbytesr4   bitsandbytes.optimr   bitsandbytes.utilsr   r   r   Linearr   rI    r+   r)   <module>rU      sP    5 5    + +  1 ?C()RYY 4bii r+   