o
    h5	                     @   s   d dl mZmZmZmZ d dlZd dlm  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dZG d	d
 d
ejZG dd dejZdS )    )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d	ZdejfddZ  ZS )LinearFP8MixedTc                       t  ||| d | _d | _g d}t|D ]\}}|||d  kr'|| _ nqt|D ]\}}|||d  kr>|| _ d S q,d S 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__ V/var/www/html/ai/venv/lib/python3.10/site-packages/bitsandbytes/research/nn/modules.pyr         zLinearFP8Mixed.__init__xc                 C   s   | j d u r!tjdddd|j| _tjdddd|j| _ tjj|| j	
 | j | j| j| jd}| jd ur>|| j7 }|S NT               )r   r   r   r   )r   bnb
functionalcreate_fp8_maptor   r   researchmatmul_fp8_mixedweighttr   r   r#   r    r,   outr)   r)   r*   forward   s   
&

zLinearFP8Mixed.forwardT__name__
__module____qualname__r   torchr   r=   __classcell__r)   r)   r'   r*   r          r   c                       r   )LinearFP8GlobalTc                    r   r   r   r   r'   r)   r*   r   )   r+   zLinearFP8Global.__init__r,   c                 C   s~   | j d u r!tjdddd|j| _tjdddd|j| _ tj|| j	 | j | j| j
| jd}| jd ur=|| j7 }|S r-   )r   r3   r4   r5   r6   r   r   matmul_fp8_globalr9   r:   r   r   r#   r;   r)   r)   r*   r=   7   s   
$

zLinearFP8Global.forwardr>   r?   r)   r)   r'   r*   rF   (   rE   rF   )typingr   r   r   r   rC   torch.nn.functionalr	   r4   Fr   r   r   bitsandbytesr3   bitsandbytes.optimr
   bitsandbytes.utilsr   r   r   Linearr   rF   r)   r)   r)   r*   <module>   s    