o
    wi                     @  sT   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
 G dd deZdS )    )annotationsN)Base)expect)rotary_embeddingc                   @  s|   e Zd ZedddZedddZedddZedd	d
ZedddZedddZ	edddZ
edddZdS )RotaryEmbeddingreturnNonec                  C  s   t jjdg ddgd} tjddddtj}tjd	d
dtj	}tjd
dtj}tjd
dtj}t
||||d}t| ||||g|gdd d S )Nr   input	cos_cache	sin_cacheposition_idsoutputinputsoutputs            r   2   r   r   )r   test_rotary_embeddingr   r   nameonnxhelper	make_nodenprandomrandastypefloat32uniformint64r   r   node
input_dataposition_ids_datasin_cache_datacos_cache_dataexpected_output r-   h/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/rotaryembedding.pyexport_rotary_embedding   s$   

z'RotaryEmbedding.export_rotary_embeddingc                  C  s   d} t jjdg ddg| d}tjdddtj}tjd	d
dtj	}tjd
dtj}tjd
dtj}t
||||| d}t|||||g|gdd d S )Nr   r   r	   r   )r   r   	num_headsr   r       r   r   r   )r   r0   test_rotary_embedding_3d_inputr   r   )r0   r'   r(   r)   r*   r+   r,   r-   r-   r.    export_rotary_embedding_3d_input'   s0   

z0RotaryEmbedding.export_rotary_embedding_3d_inputc                  C  s   t jjdg ddgdd} tjdddd	tj}tjd
ddtj	}tjddtj}tjddtj}t
||||dd}t| ||||g|gdd d S )Nr   r	   r      r   r   interleavedr   r   r   r   r   r   r   )r   r6   !test_rotary_embedding_interleavedr   r   r&   r-   r-   r.   #export_rotary_embedding_interleavedE   .   

z3RotaryEmbedding.export_rotary_embedding_interleavedc                  C  s   t jjdg ddgdd} tjddddtj}tjd	d
dtj	}tjd
dtj}tjd
dtj}t
||||dd}t| ||||g|gdd d S )Nr   r	   r   r   r   r   rotary_embedding_dimr   r   r   r   r   r   )r   r;   %test_rotary_embedding_with_rotary_dimr   r   r&   r-   r-   r.   'export_rotary_embedding_with_rotary_dimb   r9   z7RotaryEmbedding.export_rotary_embedding_with_rotary_dimc                  C  s   t jjdg ddgddd} tjdddd	tj}tjd
ddtj	}tjddtj}tjddtj}t
||||ddd}t| ||||g|gdd d S )Nr   r	   r   r   r4   )r   r   r;   r6   r   r   r   r   r   r   )r   r6   r;   1test_rotary_embedding_with_interleaved_rotary_dimr   r   r&   r-   r-   r.   3export_rotary_embedding_with_interleaved_rotary_dim   s2   	

zCRotaryEmbedding.export_rotary_embedding_with_interleaved_rotary_dimc                  C  s   t jjdg ddgd} tjddddtj}tjdddtj}tjdddtj}t|||}t	| |||g|gd	d
 d S )Nr   r
   r   r   r   r   r   r   r   r   %test_rotary_embedding_no_position_idsr   
r   r   r   r   r    r!   r"   r#   r   r   r'   r(   r*   r+   r,   r-   r-   r.   'export_rotary_embedding_no_position_ids   s   
z7RotaryEmbedding.export_rotary_embedding_no_position_idsc                  C  s   t jjdg ddgdd} tjdddd	tj}tjdddtj}tjdddtj}t|||dd
}t	| |||g|gdd d S )Nr   r@   r   r4   r5   r   r   r   r   )r6   1test_rotary_embedding_no_position_ids_interleavedr   rB   rC   r-   r-   r.   3export_rotary_embedding_no_position_ids_interleaved   *   
zCRotaryEmbedding.export_rotary_embedding_no_position_ids_interleavedc                  C  s   t jjdg ddgdd} tjddddtj}tjdddtj}tjdddtj}t|||dd	}t	| |||g|gd
d d S )Nr   r@   r   r   r:   r   r   r   )r;   0test_rotary_embedding_no_position_ids_rotary_dimr   rB   rC   r-   r-   r.   2export_rotary_embedding_no_position_ids_rotary_dim   rG   zBRotaryEmbedding.export_rotary_embedding_no_position_ids_rotary_dimN)r   r   )__name__
__module____qualname__staticmethodr/   r3   r8   r=   r?   rD   rF   rI   r-   r-   r-   r.   r      s"    r   )
__future__r   numpyr   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   &onnx.reference.ops.op_rotary_embeddingr   r   r-   r-   r-   r.   <module>   s   