�
%�g�y �
� � d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm Z d dl
Z
ddlmZ ddl
mZmZmZmZmZmZmZmZmZmZmZ ddlmZ dd lmZmZ dd
lmZ ddl m!Z!m"Z" g fd
�Z#d� Z$de j% de&e'e'f fd�Z(de j% de)e*e' e&e'e'f f fd�Z+de j% de&e'e'f fd�Z,de j% de)e*e' e&e'e'f f fd�Z- d de j% de&e'e'f de.de)e j% e&e'e'f f fd�Z/de*e' de&e'e'f fd�Z0dede j% de)e j% e&e'e f f fd�Z1d� Z2 G d� d� � Z3dS )!� N��literal_eval��which)�Any� )�SageMakerConfig)�
DynamoBackend�
PrecisionType�is_fp8_available�is_hpu_available�is_ipex_available�is_mlu_available�is_musa_available�is_npu_available�is_sdaa_available�is_torch_xla_available�is_xpu_available)�DEEPSPEED_MULTINODE_LAUNCHERS)�is_port_in_use�merge_dicts)�compare_versions� )�DistributedType�SageMakerDistributedTypec �� � |� |� � \ }}t | � � � � � D ]9\ }}|t |� � � � � v rt |||� � �:|S )z4
Filters out all `accelerate` specific args
)�parse_known_args�vars�items�keys�setattr)�args�parser�default_args�new_args�_�key�values �g/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/accelerate/utils/launch.py�_filter_argsr* - su � � �)�)�,�7�7�K�H�a��4�j�j�&�&�(�(� *� *�
��U��$�x�.�.�%�%�'�'�'�'��H�c�5�)�)�)���O� c � � d� dD � � } t | � � dk rt d� � �| d }t j |dg� � }d|v r|ddd d
fS |dddd
fS )a
Determines the executable and argument names for mpirun, based on the type of install. The supported MPI programs
are: OpenMPI, Intel MPI, or MVAPICH.
Returns: Program name and arg names for hostfile, num processes, and processes per node
c �0 � g | ]}t |� � �|��S � r )�.0�xs r) �
<listcomp>z$_get_mpirun_args.<locals>.<listcomp>@ s# � �=�=�=�a�E�!�H�H�=��=�=�=r+ )�mpirun�mpiexecr z\mpirun or mpiexec were not found. Ensure that Intel MPI, Open MPI, or MVAPICH are installed.z --versions Open MPI�
--hostfilez-nz
--npernodez --bind-toz-fz-ppn� )�len�OSError�
subprocess�check_output)�mpi_apps�mpi_app�mpirun_versions r) �_get_mpirun_argsr= 8 s� � � >�=�0�=�=�=�H�
�8�}�}�����t�u�u�u� �q�k�G��,�g�{�-C�D�D�N��n�$�$���d�L�+�E�E� ��d�F�B�.�.r+ r"