
    9ie(                         d dl Z d dlZddlmZmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZ  e	       rd dlZd	 Zd
 Zd Zy)    N   ) SAGEMAKER_PARALLEL_EC2_INSTANCESTORCH_DYNAMO_MODES)ComputeEnvironmentSageMakerDistributedType)is_boto3_available   )SageMakerConfig)DYNAMO_BACKENDS
_ask_field_ask_options_convert_dynamo_backend_convert_mixed_precision#_convert_sagemaker_distributed_mode_convert_yes_no_to_boolc                 d   t        j                  d      }ddddiddgd}	 |j                  | t        j                  |d	
             ddg dddgd}|j                  | |  dt        j                  |d	
             y # |j                  j                  $ r t        d|  d       Y y w xY w)Niamz
2012-10-17AllowServicezsagemaker.amazonaws.comzsts:AssumeRole)Effect	PrincipalAction)Version	Statement   )indent)RoleNameAssumeRolePolicyDocument)zsagemaker:*zecr:GetDownloadUrlForLayerzecr:BatchGetImagezecr:BatchCheckLayerAvailabilityzecr:GetAuthorizationTokenzcloudwatch:PutMetricDatazcloudwatch:GetMetricDatazcloudwatch:GetMetricStatisticszcloudwatch:ListMetricszlogs:CreateLogGroupzlogs:CreateLogStreamzlogs:DescribeLogStreamszlogs:PutLogEventszlogs:GetLogEventszs3:CreateBucketzs3:ListBucketzs3:GetBucketLocationzs3:GetObjectzs3:PutObject*)r   r   Resource_policy_permission)r   
PolicyNamePolicyDocumentzrole z# already exists. Using existing one)	boto3clientcreate_rolejsondumpsput_role_policy
exceptionsEntityAlreadyExistsExceptionprint)	role_name
iam_clientsagemaker_trust_policypolicy_documents       n/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/accelerate/commands/config/sagemaker.py_create_iam_role_for_sagemakerr2   &   s    e$J  i9R-S_op
*FDZcd9e 	 	
 $ &* !$/
> 	""#$67::oa@ 	# 	

   == Fi[ CDEFs   A B (B/.B/c                 \    t        j                  d      }|j                  |       d   d   S )Nr   )r   RoleArn)r$   r%   get_role)r-   r.   s     r1   _get_iam_role_arnr7   \   s.    e$J	26:5AA    c                      t        dddgt              } d }| dk(  r!t        dd      }|t        j                  d<   nGt        d	       t        d
      }|t        j                  d<   t        d      }|t        j                  d<   t        dd      }|t        j                  d<   t        dddgt              }|dk(  rt        d      }nd}t        d| d       t        |       t        dt        dd      }d }|rt        dd       }t        dt        dd      }	d }
|	rt        dd        }
t        d!t        dd      }d }|rt        d"d#       }t        d$d%d&gt              }i }t        d't        dd      }|rd(}t        d)t        D cg c]  }|j                          c}t        d*      ||d+z   <   t        d,t        dd      }|rLt        d-t        d. d      ||d/z   <   t        d0t        dd      ||d1z   <   t        d2t        dd      ||d3z   <   d4}|t        j                  k7  rt        |t        d5       }n|d6z  }t        |d7 d8      }d}|t        j                  k7  rt        d9t        dd      }d:}|t        j                   t        j"                  fv rt        d;t        d:      }t        d<g d=t$              }|r|d>k(  rt        d?       t'        |t(        j*                  |d||||||||
||@      S c c}w )ANzHow do you want to authorize?zAWS Profilez7Credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) r   z'Enter your AWS Profile name: [default] default)r:   AWS_PROFILEzNote you will need to provide AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY when you launch you training script with,`accelerate launch --aws_access_key_id XXX --aws_secret_access_key YYY`zAWS Access Key ID: AWS_ACCESS_KEY_IDzAWS Secret Access Key: AWS_SECRET_ACCESS_KEYz"Enter your AWS Region: [us-east-1]z	us-east-1AWS_DEFAULT_REGIONzMDo you already have an IAM Role for executing Amazon SageMaker Training Jobs?zProvide IAM Role namez%Create new IAM role using credentialszEnter your IAM role name: #accelerate_sagemaker_execution_rolez$Accelerate will create an iam role "z " using the provided credentialsz2Do you want to use custom Docker image? [yes/NO]: FzPlease enter yes or no.)r:   error_messagezEnter your Docker image: c                 4    t        |       j                         S Nstrlowerxs    r1   <lambda>z%get_sagemaker_input.<locals>.<lambda>   s    Q r8   zODo you want to provide SageMaker input channels with data locations? [yes/NO]: z\Enter the path to the SageMaker inputs TSV file with columns (channel_name, data_location): c                 4    t        |       j                         S rB   rC   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>       c!flln r8   z3Do you want to enable SageMaker metrics? [yes/NO]: z[Enter the path to the SageMaker metrics TSV file with columns (metric_name, metric_regex): c                 4    t        |       j                         S rB   rC   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>   rJ   r8   zWhat is the distributed mode?zNo distributed trainingzData parallelismz?Do you wish to optimize your script with torch dynamo?[yes/NO]:dynamo_z+Which dynamo backend would you like to use?r   backendzGDo you want to customize the defaults sent to torch.compile? [yes/NO]: zWhich mode do you want to use?c                 &    t         t        |          S rB   )r   intrF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>   s    ,SV4 r8   modez\Do you want the fullgraph mode or it is ok to break model into several subgraphs? [yes/NO]: use_fullgraphz7Do you want to enable dynamic shape tracing? [yes/NO]: use_dynamicz:Which EC2 instance type you want to use for your training?c                 &    t         t        |          S rB   )r   rO   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>   s    LlmpqrmsLt r8   z? [ml.p3.2xlarge]:c                 4    t        |       j                         S rB   rC   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>   s    SV\\^ r8   zml.p3.2xlargezShould distributed operations be checked while running for errors? This can avoid timeout issues but will be slower. [yes/NO]: r	   z(How many machines do you want use? [1]: z2Do you wish to use FP16 or BF16 (mixed precision)?)nofp16bf16fp8rU   zTorch dynamo used without mixed precision requires TF32 to be efficient. Accelerate will enable it by default when launching your scripts.)	image_uricompute_environmentdistributed_typeuse_cpudynamo_configec2_instance_typeprofileregioniam_role_namemixed_precisionnum_machinessagemaker_inputs_filesagemaker_metrics_filedebug)r   rO   r   osenvironr,   r2   r   r   r   rE   r   r   r   NOr   DATA_PARALLELMODEL_PARALLELr   r
   r   AMAZON_SAGEMAKER)credentials_configurationaws_profileaws_access_key_idaws_secret_access_key
aws_regionrole_managementra   is_custom_docker_imagedocker_imageis_sagemaker_inputs_enabledrd   is_sagemaker_metrics_enabledre   r[   r]   
use_dynamoprefixrG   use_custom_optionsec2_instance_queryr^   rf   rc   rb   s                           r1   get_sagemaker_inputr{   a   s    ,'	QR!
 K A% !JT]^$/

=!V	
 ''<=*;

&' *+D E.C

*+@+VJ'1BJJ#$"W	 "IJO
 !"#?@=4]OCcde&}5'</	 L!"=?WX",Y/	# !" *j$!

 $.=/	$  "#!+i$"

 $'	"$67+
 MI/	J ,89 /01QWWY0#	-
fy() (U#3	
 -90"4!	.M&6/* 7An'7	7M&?23 5?I'7	5M&=01 V3666( @Bt
 	22&'9;S]lmE3666 N#3	
 L4BBD\DkDkll!6
 #<% O o- Y	
 .??)#+#'!35 G 1s   	K;
)r'   rg   utils.constantsr   r   utils.dataclassesr   r   utils.importsr   config_argsr
   config_utilsr   r   r   r   r   r   r   r$   r2   r7   r{    r8   r1   <module>r      sF      	 S M / (   3FlB
jr8   