�
%�g�� � �N � d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl m
Z
d dlmZm
Z
d dlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, e%� � r d dl-m.c m/Z0 e d �
� � rd dl1Z1 e$d �
� � rd dl2Z2 e"d �
� � rd dl3Z3 e#d �
� � rd dl4Z4 ej5 e6� � Z7dd
�Z8d� Z9 G d� dej: � � Z; e%� � se<ne;Z= G d� d� � Z> G d� d� � Z? G d� d� � Z@dS )� )�annotationsN)�contextmanager)�partial)�Any�Callable� )�DistributedType�
DynamoBackend�GradientAccumulationPlugin�check_cuda_fp8_capability�check_cuda_p2p_ib_support�deepspeed_required�get_ccl_version�get_cpu_distributed_information�get_int_from_env�is_ccl_available�is_datasets_available�is_deepspeed_available�is_fp8_available�is_habana_gaudi1�is_hpu_available�is_ipex_available�is_mlu_available�is_mps_available�is_musa_available�is_npu_available�is_sdaa_available�is_torch_xla_available�is_xccl_available�is_xpu_available�parse_choice_from_env�parse_flag_from_env�set_numa_affinity)�SageMakerDistributedTypeF)�check_device�return�boolc �"