ó
    EñiŒ)  ã                   ó¢   • S SK r S SKrSSKJrJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJrJrJrJrJrJrJr  \	" 5       (       a  S SKrS	 rS
 rS rg)é    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           	      óT  • [         R                  " S5      nSSSS0SS./S.n UR                  U [        R                  " US	S
9S9  SS/ SQSS./S.nUR                  U U  S3[        R                  " US	S
9S9  g ! UR                  R                   a    [        SU  S35         g f = f)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       Úa/home/mande/repo/quber/.venv/lib/python3.13/site-packages/accelerate/commands/config/sagemaker.pyÚ_create_iam_role_for_sagemakerr2   &   så   € Ü—’˜eÓ$€Jð  à¨iÐ9RÐ-SÐ_oÑpð
ñÐð*Fà×ÑØ¼¿ºÐDZÐcdÑ9eð 	ñ 	
ð $ð &òð* !$ñ/ðñ
ˆð> 	×"Ñ"ØØ#˜Ð$6Ð7ÜŸ:š: o¸aÑ@ð 	#ò 	
øð
 × Ñ ×=Ñ=ó FÜ��i�[Ð CÐDÖEðFús   ¤AA; Á;)B'Â&B'c                 óX   • [         R                  " S5      nUR                  U S9S   S   $ )Nr   )r   ÚRoleÚArn)r$   r%   Úget_role)r-   r.   s     r1   Ú_get_iam_role_arnr7   \   s.   € Ü—’˜eÓ$€JØ×Ñ¨	ÐÐ2°6Ñ:¸5ÑAÐAó    c                  ó"  • [        SSS/[        5      n S nU S:X  a  [        SSS9nU[        R                  S'   OG[        S	5        [        S
5      nU[        R                  S'   [        S5      nU[        R                  S'   [        SSS9nU[        R                  S'   [        SSS/[        5      nUS:X  a  [        S5      nOSn[        SU S35        [        U5        [        S[        SSS9nS nU(       a  [        SS 5      n[        S[        SSS9n	S n
U	(       a  [        SS  5      n
[        S![        SSS9nS nU(       a  [        S"S# 5      n[        S$S%S&/[        5      n0 n[        S'[        SSS9nU(       a«  S(n[        S)[         Vs/ s H  nUR                  5       PM     sn[        S*S9UUS+-   '   [        S,[        SSS9nU(       aY  [        S-[        S. SS9UUS/-   '   [        S0[        SSS9UUS1-   '   [        S2[        SSS9UUS3-   '   [        S4[        SSS9UUS5-   '   S6nU[        R                  :w  a  [        U[        S7 5      nOUS8-  n[        US9 S:S9nSnU[        R                  :w  a  [        S;[        SSS9nS<nU[        R                   [        R"                  4;   a  [        S=[        S<S9n[        S>/ S?Q[$        5      nU(       a  US@:X  a  [        SA5        ['        U[(        R*                  USUUUUUUUU
UUSB9$ s  snf )CNz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_PROFILEzºNote 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   • [        U 5      R                  5       $ ©N©ÚstrÚlower©Úxs    r1   Ú<lambda>Ú%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   • [        U 5      R                  5       $ rB   rC   rF   s    r1   rH   rI   ™   ó   € ”c˜!“f—l‘l”nr8   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   • [        U 5      R                  5       $ rB   rC   rF   s    r1   rH   rI   ¦   rK   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                 ó&   • [         [        U 5         $ rB   )r   ÚintrF   s    r1   rH   rI   È   s   € Ô,¬S°«VÒ4r8   Ú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_dynamicz6Do you want to enable regional compilation? [yes/NO]: Úuse_regional_compilationz:Which EC2 instance type you want to use for your training?c                 ó&   • [         [        U 5         $ rB   )r   rP   rF   s    r1   rH   rI   á   s   € ÔLlÔmpÐqrÓmsÒLtr8   z? [ml.p3.2xlarge]:c                 ó4   • [        U 5      R                  5       $ rB   rC   rF   s    r1   rH   rI   å   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Úfp8rW   zŠTorch 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   rP   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_managementrc   Úis_custom_docker_imageÚdocker_imageÚis_sagemaker_inputs_enabledrf   Úis_sagemaker_metrics_enabledrg   r]   r_   Ú
use_dynamoÚprefixrG   Úuse_custom_optionsÚec2_instance_queryr`   rh   re   rd   s                           r1   Úget_sagemaker_inputr}   a   sÐ  € Ü ,Ø'Ø	ÐQÐRÜó!Ðð
 €KØ  AÓ%Ü Ð!JÐT]Ñ^ˆØ$/Œ�
‰
�=Ò!äðVô	
ô 'Ð'<Ó=ÐØ*;Œ�
‰
Ð&Ñ'ä *Ð+DÓ EÐØ.CŒ�
‰
Ð*Ñ+äÐ@È+ÑV€JØ'1„B‡J�JÐ#Ñ$ä"ØWØ	 Ð"IÐJÜó€Oð
 ˜!ÓÜ"Ð#?Ó@‰à=ˆÜÐ4°]°OÐCcÐdÔeÜ& }Ô5ä'Ø<ÜØØ/ñ	Ðð €LÞÜ!Ð"=Ñ?WÓXˆä",ØYÜØØ/ñ	#Ðð !ÐÞ"Ü *ØjÙ$ó!
Ðô
 $.Ø=ÜØØ/ñ	$Ð ð "ÐÞ#Ü!+ØiÙ$ó"
Ðô
 $Ø'Ø	"Ð$6Ð7Ü+óÐð
 €MÜØIÜØØ/ñ	€Jö ØˆÜ,8Ø9Ý /Ó0¢˜1ˆQ�W‰WŽY¡Ñ0Ü#Øñ	-
ˆ�f˜yÑ(Ñ)ô (ØUÜ#ØØ3ñ	
Ðö Ü-9Ø0Ü"Ù4Ø!ñ	.ˆM˜& 6™/Ñ*ô 7AØnÜ'ØØ7ñ	7ˆM˜& ?Ñ2Ñ3ô 5?ØIÜ'ØØ7ñ	5ˆM˜& =Ñ0Ñ1ô BLØHÜ'ØØ7ñ	BˆM˜&Ð#=Ñ=Ñ>ð VÐØÔ3×6Ñ6Ó6Ü(ØÔ @ÑBtó
Ñð 	Ð2Ñ2ÐÜ&Ð'9Ñ;SÐ]lÑmÐà€EØÔ3×6Ñ6Ó6Üð NÜ#ØØ3ñ	
ˆð €LØÔ4×BÑBÔD\×DkÑDkÐlÓlÜ!Ø6ÜØñ
ˆô #Ø<Ú%Ü ó€Oö �o¨Ó-Üð Yô	
ô ØÜ.×?Ñ?Ø)ØØ#Ø+ØØØ#Ø'Ø!Ø3Ø5Øñð ùòU 1s   ÆL
)r'   ri   Ú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„      sI   ðó  Û 	ç Sß MÝ /Ý (÷÷ ñ ñ ×ÑÛò3FòlBó
qr8   