o
    8wi                     @   sx   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 dee dedd	fd
dZdededd	fddZd	S )    )IterableMutableMapping)Tensor)	Optimizer)apply_to_collectionmove_data_to_device)_DEVICE
optimizersdevicereturnNc                 C   s   | D ]}t || qdS )zBMoves optimizer states for a sequence of optimizers to the device.N)_optimizer_to_device)r	   r
   opt r   a/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/lightning_fabric/utilities/optimizer.py_optimizers_to_device   s   r   	optimizerc                 C   sd   | j  D ]*\}}t|tst|tt|dd| j |< q| D ]\}}|dkr.t||||< qqdS )z4Moves the state of a single optimizer to the device.T)allow_frozenstepN)stateitems
isinstancer   r   r   r   )r   r
   pvkeyvalr   r   r   r      s   
r   )collections.abcr   r   torchr   torch.optimr   %lightning_fabric.utilities.apply_funcr   r    lightning_fabric.utilities.typesr   r   r   r   r   r   r   <module>   s   