o
    ̳i                     @   s<   d dl Z d dlm  mZ d dl mZ G dd dejZdS )    N)nnc                       sF   e Zd ZdZddededdf fddZd	ejdejfd
dZ	  Z
S )RMSNormz
    Root Mean Square Normalization in fp32.

    See: https://pytorch.org/docs/stable/generated/torch.nn.RMSNorm.html

    Args:
        dim (int): embedding size
        eps (float): small value to avoid division by zero. Default: 1e-6
    ư>dimepsreturnNc                    s.   t    |f| _|| _tt|| _d S )N)	super__init__normalized_shaper   r   	Parametertorchonesscale)selfr   r   	__class__ N/home/ubuntu/.local/lib/python3.10/site-packages/torchtune/modules/rms_norm.pyr	      s   
zRMSNorm.__init__xc                 C   s$   t j| | j| j| jd|jS )z
        Args:
            x (torch.Tensor): input tensor to normalize

        Returns:
            torch.Tensor: The normalized and scaled tensor having the same shape as ``x``.
        )r
   weightr   )Frms_normfloatr
   r   r   todtype)r   r   r   r   r   forward   s   	zRMSNorm.forward)r   )__name__
__module____qualname____doc__intr   r	   r   Tensorr   __classcell__r   r   r   r   r      s    
r   )r   torch.nn.functionalr   
functionalr   Moduler   r   r   r   r   <module>   s   